texlive[57727] icu-68.2
commits+karl at tug.org
commits+karl at tug.org
Sat Feb 13 18:46:16 CET 2021
Revision: 57727
http://tug.org/svn/texlive?view=revision&revision=57727
Author: karl
Date: 2021-02-13 18:46:14 +0100 (Sat, 13 Feb 2021)
Log Message:
-----------
icu-68.2
Modified Paths:
--------------
trunk/Build/source/libs/README
trunk/Build/source/libs/icu/ChangeLog
trunk/Build/source/libs/icu/TLpatches/TL-Changes
trunk/Build/source/libs/icu/TLpatches/patch-01-configure-gcc
trunk/Build/source/libs/icu/TLpatches/patch-02-configure-solaris
trunk/Build/source/libs/icu/TLpatches/patch-10-ES
trunk/Build/source/libs/icu/TLpatches/patch-12-mingw
trunk/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX
trunk/Build/source/libs/icu/TLpatches/patch-14-xopen
trunk/Build/source/libs/icu/TLpatches/patch-19-netbsd
trunk/Build/source/libs/icu/TLpatches/patch-20-private
trunk/Build/source/libs/icu/configure
trunk/Build/source/libs/icu/icu-src/APIChangeReport.html
trunk/Build/source/libs/icu/icu-src/APIChangeReport.md
trunk/Build/source/libs/icu/icu-src/LICENSE
trunk/Build/source/libs/icu/icu-src/readme.html
trunk/Build/source/libs/icu/icu-src/source/Doxyfile.in
trunk/Build/source/libs/icu/icu-src/source/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.PlatformToolset.props
trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.ProjectConfiguration.props
trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
trunk/Build/source/libs/icu/icu-src/source/common/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/common/bmpset.h
trunk/Build/source/libs/icu/icu-src/source/common/brkeng.h
trunk/Build/source/libs/icu/icu-src/source/common/brkiter.cpp
trunk/Build/source/libs/icu/icu-src/source/common/bytesinkutil.h
trunk/Build/source/libs/icu/icu-src/source/common/charstr.cpp
trunk/Build/source/libs/icu/icu-src/source/common/charstr.h
trunk/Build/source/libs/icu/icu-src/source/common/cmemory.h
trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj
trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters
trunk/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj
trunk/Build/source/libs/icu/icu-src/source/common/cstring.h
trunk/Build/source/libs/icu/icu-src/source/common/dictbe.cpp
trunk/Build/source/libs/icu/icu-src/source/common/dictbe.h
trunk/Build/source/libs/icu/icu-src/source/common/icuplug.cpp
trunk/Build/source/libs/icu/icu-src/source/common/icuplugimp.h
trunk/Build/source/libs/icu/icu-src/source/common/localematcher.cpp
trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.cpp
trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.h
trunk/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp
trunk/Build/source/libs/icu/icu-src/source/common/locdistance.cpp
trunk/Build/source/libs/icu/icu-src/source/common/locdistance.h
trunk/Build/source/libs/icu/icu-src/source/common/locid.cpp
trunk/Build/source/libs/icu/icu-src/source/common/loclikely.cpp
trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp
trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h
trunk/Build/source/libs/icu/icu-src/source/common/locmap.cpp
trunk/Build/source/libs/icu/icu-src/source/common/lsr.cpp
trunk/Build/source/libs/icu/icu-src/source/common/lsr.h
trunk/Build/source/libs/icu/icu-src/source/common/messageimpl.h
trunk/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h
trunk/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h
trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp
trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h
trunk/Build/source/libs/icu/icu-src/source/common/patternprops.h
trunk/Build/source/libs/icu/icu-src/source/common/pluralmap.h
trunk/Build/source/libs/icu/icu-src/source/common/propname_data.h
trunk/Build/source/libs/icu/icu-src/source/common/punycode.cpp
trunk/Build/source/libs/icu/icu-src/source/common/punycode.h
trunk/Build/source/libs/icu/icu-src/source/common/putil.cpp
trunk/Build/source/libs/icu/icu-src/source/common/putilimp.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbi.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbi_cache.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbicst.pl
trunk/Build/source/libs/icu/icu-src/source/common/rbbidata.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbidata.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbinode.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbirb.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbirpt.txt
trunk/Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbiscan.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbisetb.h
trunk/Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp
trunk/Build/source/libs/icu/icu-src/source/common/rbbitblb.h
trunk/Build/source/libs/icu/icu-src/source/common/resource.h
trunk/Build/source/libs/icu/icu-src/source/common/ruleiter.h
trunk/Build/source/libs/icu/icu-src/source/common/serv.h
trunk/Build/source/libs/icu/icu-src/source/common/servnotf.h
trunk/Build/source/libs/icu/icu-src/source/common/sharedobject.h
trunk/Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp
trunk/Build/source/libs/icu/icu-src/source/common/stringpiece.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uarrsort.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uassert.h
trunk/Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h
trunk/Build/source/libs/icu/icu-src/source/common/ubidiimp.h
trunk/Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucase.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucase.h
trunk/Build/source/libs/icu/icu-src/source/common/ucase_props_data.h
trunk/Build/source/libs/icu/icu-src/source/common/ucasemap.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h
trunk/Build/source/libs/icu/icu-src/source/common/uchar.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uchar_props_data.h
trunk/Build/source/libs/icu/icu-src/source/common/ucln_cmn.h
trunk/Build/source/libs/icu/icu-src/source/common/ucln_imp.h
trunk/Build/source/libs/icu/icu-src/source/common/ucnv.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucnv_bld.h
trunk/Build/source/libs/icu/icu-src/source/common/ucnv_cnv.h
trunk/Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ucnvmbcs.h
trunk/Build/source/libs/icu/icu-src/source/common/ucol_swp.h
trunk/Build/source/libs/icu/icu-src/source/common/ucurr.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uelement.h
trunk/Build/source/libs/icu/icu-src/source/common/uinvchar.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uinvchar.h
trunk/Build/source/libs/icu/icu-src/source/common/uloc.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ulocimp.h
trunk/Build/source/libs/icu/icu-src/source/common/umutex.h
trunk/Build/source/libs/icu/icu-src/source/common/unames.cpp
trunk/Build/source/libs/icu/icu-src/source/common/unicode/appendable.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/bytestream.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/bytestriebuilder.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/caniter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/chariter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/docmain.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/dtintrv.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/edits.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/filteredbrk.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/icudataver.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/idna.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/localebuilder.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/locid.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/platform.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/putil.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/resbund.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/strenum.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/stringpiece.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ubidi.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ubiditransform.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ubrk.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucasemap.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucat.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uchar.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucharstriebuilder.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uchriter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uclean.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucnv.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucnv_cb.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucnv_err.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucnvsel.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucptrie.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ucurr.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/udata.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/udisplaycontext.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uenum.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uidna.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uiter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uldnames.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uloc.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/umachine.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/umutablecptrie.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/unimatch.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uniset.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/unistr.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/unorm.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/urename.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ures.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uscript.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uset.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ushape.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/usprep.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/ustring.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utext.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utf.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utf16.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utf8.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utf_old.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utrace.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/utypes.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h
trunk/Build/source/libs/icu/icu-src/source/common/unicode/uversion.h
trunk/Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp
trunk/Build/source/libs/icu/icu-src/source/common/unifiedcache.h
trunk/Build/source/libs/icu/icu-src/source/common/unisetspan.h
trunk/Build/source/libs/icu/icu-src/source/common/unistr.cpp
trunk/Build/source/libs/icu/icu-src/source/common/unormimp.h
trunk/Build/source/libs/icu/icu-src/source/common/uposixdefs.h
trunk/Build/source/libs/icu/icu-src/source/common/uprops.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uprops.h
trunk/Build/source/libs/icu/icu-src/source/common/uresbund.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uresdata.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uresdata.h
trunk/Build/source/libs/icu/icu-src/source/common/uresimp.h
trunk/Build/source/libs/icu/icu-src/source/common/uscript.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uscript_props.cpp
trunk/Build/source/libs/icu/icu-src/source/common/ustr_imp.h
trunk/Build/source/libs/icu/icu-src/source/common/ustring.cpp
trunk/Build/source/libs/icu/icu-src/source/common/utext.cpp
trunk/Build/source/libs/icu/icu-src/source/common/util.h
trunk/Build/source/libs/icu/icu-src/source/common/utrie.h
trunk/Build/source/libs/icu/icu-src/source/common/utrie2.h
trunk/Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uts46.cpp
trunk/Build/source/libs/icu/icu-src/source/common/utypes.cpp
trunk/Build/source/libs/icu/icu-src/source/common/uvector.h
trunk/Build/source/libs/icu/icu-src/source/common/uvectr32.h
trunk/Build/source/libs/icu/icu-src/source/common/uvectr64.h
trunk/Build/source/libs/icu/icu-src/source/common/wintz.cpp
trunk/Build/source/libs/icu/icu-src/source/common/wintz.h
trunk/Build/source/libs/icu/icu-src/source/config/dist.mk
trunk/Build/source/libs/icu/icu-src/source/config/icu-config-bottom
trunk/Build/source/libs/icu/icu-src/source/config/mh-cygwin
trunk/Build/source/libs/icu/icu-src/source/config/mh-cygwin64
trunk/Build/source/libs/icu/icu-src/source/config/mh-mingw
trunk/Build/source/libs/icu/icu-src/source/config/mh-mingw64
trunk/Build/source/libs/icu/icu-src/source/configure
trunk/Build/source/libs/icu/icu-src/source/configure.ac
trunk/Build/source/libs/icu/icu-src/source/data/BUILDRULES.py
trunk/Build/source/libs/icu/icu-src/source/data/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/data/build.xml
trunk/Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt
trunk/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/nfc.nrm
trunk/Build/source/libs/icu/icu-src/source/data/in/nfkc.nrm
trunk/Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrm
trunk/Build/source/libs/icu/icu-src/source/data/in/pnames.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/ubidi.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/ucase.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/ulayout.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/unames.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/uprops.icu
trunk/Build/source/libs/icu/icu-src/source/data/in/uts46.nrm
trunk/Build/source/libs/icu/icu-src/source/data/makedata.mak
trunk/Build/source/libs/icu/icu-src/source/data/makedata.vcxproj
trunk/Build/source/libs/icu/icu-src/source/data/makedata_uwp.vcxproj
trunk/Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/changes.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt
trunk/Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt
trunk/Build/source/libs/icu/icu-src/source/extra/scrptrun/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/extra/uconv/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp
trunk/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.vcxproj
trunk/Build/source/libs/icu/icu-src/source/extra/uconv/uwmsg.c
trunk/Build/source/libs/icu/icu-src/source/i18n/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/i18n/buddhcal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/calendar.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/cecal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/cecal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/chnsecal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collation.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationbuilder.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationfcd.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/collationfcd.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationiterator.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationkeys.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h
trunk/Build/source/libs/icu/icu-src/source/i18n/collationweights.h
trunk/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h
trunk/Build/source/libs/icu/icu-src/source/i18n/csrecog.h
trunk/Build/source/libs/icu/icu-src/source/i18n/currunit.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.h
trunk/Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/decContext.h
trunk/Build/source/libs/icu/icu-src/source/i18n/decNumber.h
trunk/Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/double-conversion-ieee.h
trunk/Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/double-conversion-strtod.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/double-conversion-utils.h
trunk/Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/fmtable_cnv.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/format.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/formatted_string_builder.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/formatted_string_builder.h
trunk/Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/formattedval_sbimpl.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h
trunk/Build/source/libs/icu/icu-src/source/i18n/gender.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/gregoimp.h
trunk/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj
trunk/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters
trunk/Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj
trunk/Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/indiancal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/islamcal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/japancal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/measunit.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/measure.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/nfrs.h
trunk/Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/nfrule.h
trunk/Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_affixutils.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_asformat.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_asformat.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_compact.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_currencysymbols.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_currencysymbols.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_decnum.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_integerwidth.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_longnames.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_mapper.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_mapper.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_microprops.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_padding.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_roundingutils.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_scientific.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_scientific.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_types.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_utils.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_utils.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_utypes.h
trunk/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h
trunk/Build/source/libs/icu/icu-src/source/i18n/numparse_impl.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/numparse_types.h
trunk/Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/numsys.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/olsontz.h
trunk/Build/source/libs/icu/icu-src/source/i18n/persncal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/persncal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/quant.h
trunk/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/rbt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h
trunk/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h
trunk/Build/source/libs/icu/icu-src/source/i18n/rbt_set.h
trunk/Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/regexcmp.h
trunk/Build/source/libs/icu/icu-src/source/i18n/regexcst.h
trunk/Build/source/libs/icu/icu-src/source/i18n/regexcst.pl
trunk/Build/source/libs/icu/icu-src/source/i18n/regexst.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/regexst.h
trunk/Build/source/libs/icu/icu-src/source/i18n/regextxt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/region.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/rematch.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/scriptset.h
trunk/Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/strmatch.h
trunk/Build/source/libs/icu/icu-src/source/i18n/taiwncal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/timezone.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/translit.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/transreg.h
trunk/Build/source/libs/icu/icu-src/source/i18n/tridpars.h
trunk/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/ucal.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/ucln_in.h
trunk/Build/source/libs/icu/icu-src/source/i18n/ucol_imp.h
trunk/Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/udat.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h
trunk/Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/formattedvalue.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/fpositer.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/nounit.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/search.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/tmutamt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ucoleitr.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ucsdet.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/udat.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/udateintervalformat.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ufieldpositer.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/uformattable.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/uformattedvalue.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ugender.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ulistformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ulocdata.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/umsg.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/unirepl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/unumsys.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/upluralrules.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/uregex.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/uregion.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/usearch.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/utmscale.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/utrans.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h
trunk/Build/source/libs/icu/icu-src/source/i18n/unum.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/uregex.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/usrchimp.h
trunk/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h
trunk/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h
trunk/Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/vzone.h
trunk/Build/source/libs/icu/icu-src/source/i18n/zonemeta.h
trunk/Build/source/libs/icu/icu-src/source/icudefs.mk.in
trunk/Build/source/libs/icu/icu-src/source/io/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/io/io.vcxproj
trunk/Build/source/libs/icu/icu-src/source/io/ucln_io.cpp
trunk/Build/source/libs/icu/icu-src/source/io/ufile.cpp
trunk/Build/source/libs/icu/icu-src/source/io/ufile.h
trunk/Build/source/libs/icu/icu-src/source/io/ufmt_cmn.h
trunk/Build/source/libs/icu/icu-src/source/io/unicode/ustdio.h
trunk/Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp
trunk/Build/source/libs/icu/icu-src/source/layoutex/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp
trunk/Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h
trunk/Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h
trunk/Build/source/libs/icu/icu-src/source/layoutex/layout/playout.h
trunk/Build/source/libs/icu/icu-src/source/layoutex/layout/plruns.h
trunk/Build/source/libs/icu/icu-src/source/layoutex/layoutex.vcxproj
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration_schema.json
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/renderers/common_exec.py
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/filtration_test.py
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/utils.py
trunk/Build/source/libs/icu/icu-src/source/runConfigureICU
trunk/Build/source/libs/icu/icu-src/source/samples/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/samples/all/samplecheck.bat
trunk/Build/source/libs/icu/icu-src/source/samples/break/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/break/break.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/break/break.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/break/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/break/ubreak.c
trunk/Build/source/libs/icu/icu-src/source/samples/cal/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/samples/cal/cal.c
trunk/Build/source/libs/icu/icu-src/source/samples/cal/cal.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/cal/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/cal/uprint.c
trunk/Build/source/libs/icu/icu-src/source/samples/cal/uprint.h
trunk/Build/source/libs/icu/icu-src/source/samples/case/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/case/case.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/case/case.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/case/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/case/ucase.c
trunk/Build/source/libs/icu/icu-src/source/samples/citer/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/citer/citer.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/citer/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/coll/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/coll/coll.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/coll/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/csdet/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/csdet/csdet.c
trunk/Build/source/libs/icu/icu-src/source/samples/csdet/csdet.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/csdet/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/date/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/samples/date/date.c
trunk/Build/source/libs/icu/icu-src/source/samples/date/date.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/date/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/date/uprint.c
trunk/Build/source/libs/icu/icu-src/source/samples/date/uprint.h
trunk/Build/source/libs/icu/icu-src/source/samples/datecal/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datecal/ccal.c
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/README.TXT
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/answers/main_0.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/answers/main_1.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/answers/main_2.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/answers/main_3.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/datefmt.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/main.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/datefmt/util.h
trunk/Build/source/libs/icu/icu-src/source/samples/defs.mk
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.GDI
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.Gnome
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GUISupport.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/LayoutSample.rc
trunk/Build/source/libs/icu/icu-src/source/samples/layout/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/samples/layout/RenderingSurface.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/Surface.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/Surface.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/arraymem.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/cgnomelayout.c
trunk/Build/source/libs/icu/icu-src/source/samples/layout/clayout.c
trunk/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gdiglue.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gdiglue.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gnomeglue.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gnomeglue.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/gsupport.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/layout.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/pflow.c
trunk/Build/source/libs/icu/icu-src/source/samples/layout/pflow.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/readme.html
trunk/Build/source/libs/icu/icu-src/source/samples/layout/resource.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/rsurface.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/rsurface.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/sfnt.h
trunk/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/README
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/README.TXT
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/answers/main_0.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/answers/main_1.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/answers/main_2.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/answers/main_3.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/main.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/msgfmt.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.h
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/capi.c
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/numfmt.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/numfmt/util.h
trunk/Build/source/libs/icu/icu-src/source/samples/plurfmtsample/plurfmtsample.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/props/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/props/props.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/props/props.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/props/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/rules.mk
trunk/Build/source/libs/icu/icu-src/source/samples/strsrch/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/strsrch/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/translit/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/translit/README.TXT
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/main_1.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/main_2.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/main_3.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/main_4.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h
trunk/Build/source/libs/icu/icu-src/source/samples/translit/main.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/translit.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h
trunk/Build/source/libs/icu/icu-src/source/samples/translit/util.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/translit/util.h
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/uciter8.c
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/uciter8.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/uit_len8.c
trunk/Build/source/libs/icu/icu-src/source/samples/uciter8/uit_len8.h
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/data06.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/flagcb.c
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/flagcb.h
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ucnv/ucnv.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/udata/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/udata/reader.c
trunk/Build/source/libs/icu/icu-src/source/samples/udata/reader.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/udata/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/udata/writer.c
trunk/Build/source/libs/icu/icu-src/source/samples/udata/writer.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/fortunedefs.mk
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/resources/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/resources/es.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/resources/fortune_resources.mak
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/resources/root.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/ufortune.c
trunk/Build/source/libs/icu/icu-src/source/samples/ufortune/ufortune.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/ugrep/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/ugrep/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/en.txt
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/resources.mak
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/resources.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/root.txt
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/sr.txt
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/uresb.c
trunk/Build/source/libs/icu/icu-src/source/samples/uresb/uresb.vcxproj
trunk/Build/source/libs/icu/icu-src/source/samples/ustring/Makefile
trunk/Build/source/libs/icu/icu-src/source/samples/ustring/readme.txt
trunk/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp
trunk/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.vcxproj
trunk/Build/source/libs/icu/icu-src/source/stubdata/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/stubdata/stubdata.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/ccapitst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cformtst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.h
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cmsccoll.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cnmdptst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cpluralrulestest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cstrtest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/custrtst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/udatpg_test.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/ulistfmttest.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/utf8tst.c
trunk/Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt
trunk/Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/fuzzer/fuzzer_driver.cpp
trunk/Build/source/libs/icu/icu-src/source/test/hdrtst/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/hdrtst/testinternalheaders.sh
trunk/Build/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh
trunk/Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/caltest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/convtest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/formatted_string_builder_test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/formattedvaluetest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/intltest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters
trunk/Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/itformat.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/loctest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_decimalquantity.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_modifiers.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_parse.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_patternmodifier.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_range.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/plurults.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/regextst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/strtest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/transtst.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h
trunk/Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/iotest/filetst.c
trunk/Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp
trunk/Build/source/libs/icu/icu-src/source/test/iotest/iotest.h
trunk/Build/source/libs/icu/icu-src/source/test/iotest/iotest.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/letest/gendata.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/letest/letest.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/ReadMe.txt
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/breakdata.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/collationdata.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/datedata.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/README
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/CharPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/CharPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/collationperf/CollPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/collationperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/collationperf/readme.html
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf/CollPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf/CollPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf2/CollPerf2_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf2/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/ConvPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf_ansi.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf_iml.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/convperf/data.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/readme.txt
trunk/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/icuperf2report.xsl
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/cfonts.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/cfonts.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/sfnt.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/NormPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/NormPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/perldriver/Common.pl.template
trunk/Build/source/libs/icu/icu-src/source/test/perf/perldriver/Dataset.pm
trunk/Build/source/libs/icu/icu-src/source/test/perf/perldriver/Format.pm
trunk/Build/source/libs/icu/icu-src/source/test/perf/perldriver/Output.pm
trunk/Build/source/libs/icu/icu-src/source/test/perf/perldriver/PerfFramework.pm
trunk/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/StrSrchPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/UBrkPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/contperf.bat
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/contperf.sh
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/span16perf.bat
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/span16perf.sh
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/span8perf.bat
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/span8perf.sh
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/UsetPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/bitset.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/bitset.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/StringPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/StringPerf_r.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h
trunk/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/utfperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/utfperf/UtfPerf.pl
trunk/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.bat
trunk/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.sh
trunk/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.vcxproj
trunk/Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py
trunk/Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/sentence.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word_POSIX.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/calendar.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/collationtest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/encoded.utf16be
trunk/Build/source/libs/icu/icu-src/source/test/testdata/localeMatcherTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/numberpermutationtest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/regextst.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/root.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctestfw.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/ctest.h
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testtype.h
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h
trunk/Build/source/libs/icu/icu-src/source/tools/genbrk/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/genccode/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c
trunk/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gencfu/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gencmn/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gencmn/gencmn.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gencnval/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gencnval/gencnval.c
trunk/Build/source/libs/icu/icu-src/source/tools/gencnval/gencnval.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gendict/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gendict/gendict.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gennorm2/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/derb.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/errmsg.c
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/genrb.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/read.c
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/rle.c
trunk/Build/source/libs/icu/icu-src/source/tools/genren/Makefile
trunk/Build/source/libs/icu/icu-src/source/tools/gensprep/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gensprep/gensprep.c
trunk/Build/source/libs/icu/icu-src/source/tools/gensprep/gensprep.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/gensprep/store.c
trunk/Build/source/libs/icu/icu-src/source/tools/gentest/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/gentest/gentest.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/testplug.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/icupkg/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/icuswap/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/makeconv/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/makeconv/ucnvstat.c
trunk/Build/source/libs/icu/icu-src/source/tools/pkgdata/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.c
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.h
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/package.h
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.vcxproj
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.h
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/tzcode/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzones
trunk/Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp
trunk/Build/source/libs/icu/version.ac
Added Paths:
-----------
trunk/Build/source/libs/icu/TLpatches/patch-22-max_align_t
trunk/Build/source/libs/icu/icu-src/source/.clang-format
trunk/Build/source/libs/icu/icu-src/source/common/charstrmap.h
trunk/Build/source/libs/icu/icu-src/source/common/sources.txt
trunk/Build/source/libs/icu/icu-src/source/common/uniquecharstr.h
trunk/Build/source/libs/icu/icu-src/source/config/dist-data.sh
trunk/Build/source/libs/icu/icu-src/source/data/in/icudt68l.dat
trunk/Build/source/libs/icu/icu-src/source/extra/scrptrun/sources.txt
trunk/Build/source/libs/icu/icu-src/source/extra/uconv/sources.txt
trunk/Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/measunit_impl.h
trunk/Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h
trunk/Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/pluralranges.h
trunk/Build/source/libs/icu/icu-src/source/i18n/sources.txt
trunk/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberrangeformatter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/units_converter.h
trunk/Build/source/libs/icu/icu-src/source/i18n/units_data.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/units_data.h
trunk/Build/source/libs/icu/icu-src/source/i18n/units_router.cpp
trunk/Build/source/libs/icu/icu-src/source/i18n/units_router.h
trunk/Build/source/libs/icu/icu-src/source/io/sources.txt
trunk/Build/source/libs/icu/icu-src/source/layoutex/sources.txt
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/brkitr/
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/locales/
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/rbnf/
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json
trunk/Build/source/libs/icu/icu-src/source/stubdata/sources.txt
trunk/Build/source/libs/icu/icu-src/source/test/cintltst/unumberrangeformattertst.c
trunk/Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/localecanperf/
trunk/Build/source/libs/icu/icu-src/source/test/perf/localecanperf/Makefile.in
trunk/Build/source/libs/icu/icu-src/source/test/perf/localecanperf/localecanperf.cpp
trunk/Build/source/libs/icu/icu-src/source/test/perf/localecanperf/runTest.sh
trunk/Build/source/libs/icu/icu-src/source/test/testdata/cldr/
trunk/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/
trunk/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/_readme.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt
trunk/Build/source/libs/icu/icu-src/source/test/testdata/localeCanonicalization.txt
trunk/Build/source/libs/icu/icu-src/source/tools/ctestfw/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/genbrk/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/genccode/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gencfu/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gencmn/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gencnval/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gendict/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gennorm2/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/genrb/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gensprep/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/gentest/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/plugin_sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/icuinfo/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/icupkg/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/icuswap/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/makeconv/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/pkgdata/sources.txt
trunk/Build/source/libs/icu/icu-src/source/tools/toolutil/sources.txt
Removed Paths:
-------------
trunk/Build/source/libs/icu/TLpatches/patch-04-data-makefile
trunk/Build/source/libs/icu/icu-src/source/data/icu-coll-deprecates.xml
trunk/Build/source/libs/icu/icu-src/source/data/icu-config.xml
trunk/Build/source/libs/icu/icu-src/source/data/icu-locale-deprecates.xml
trunk/Build/source/libs/icu/icu-src/source/data/icu-rbnf-deprecates.xml
trunk/Build/source/libs/icu/icu-src/source/data/in/icudt65l.dat
trunk/Build/source/libs/icu/icu-src/source/i18n/nounit.cpp
trunk/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/locale_dependencies.py
trunk/Build/source/libs/icu/icu-src/source/test/intltest/numberformat2test.cpp
trunk/Build/source/libs/icu/icu-src/source/tools/icu-file-utf8-check.py
Property Changed:
----------------
trunk/Build/source/libs/icu/version.ac
Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/README 2021-02-13 17:46:14 UTC (rev 57727)
@@ -28,7 +28,7 @@
harfbuzz 2.7.4 - checked 27dec20
https://github.com/harfbuzz/harfbuzz/releases/download/2.7.4/
-icu 63.1 - checked 8jan19
+icu 68.2 - checked 13feb21
http://download.icu-project.org/files/icu4c/
libpaper 1.1.24+nmu2 - checked 24oct13
Modified: trunk/Build/source/libs/icu/ChangeLog
===================================================================
--- trunk/Build/source/libs/icu/ChangeLog 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/ChangeLog 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,3 +1,7 @@
+2021-02-13 Karl Berry <karl at freefriends.org>
+
+ * Import icu-68.2, with new pain for max_align_t.
+
2019-12-12 Karl Berry <karl at freefriends.org>
* Import icu-65.1, now requiring -lpthread, at least by upmendex.
Modified: trunk/Build/source/libs/icu/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/TL-Changes 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/TL-Changes 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,10 +1,10 @@
Changes applied to the icu tree as obtained from:
- https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz
- and icu4c-65_1-data.zip
+ https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-src.tgz
+ and icu4c-68_2-data.zip
cd $Build/source/libs/icu # for whatever $Build directory
# update version.ac
-tar xf /tmp/icu4c-*-src.tgz # should unpack into icu/*
+tar xf /tmp/icu4c-*-src.tgz # check that unpacks into icu/*
mv icu-src icu-prev
mv icu icu-src
cd icu-src
@@ -24,8 +24,9 @@
aux=$Build/source/build-aux
cp -p $aux/config.guess $aux/config.sub $aux/install-sh source
-# patch -p0 for all ../TLpatches/patch-* files, as needed.
-# Save original and diff after each, update patch-* file.
+# patch --backup -p0 for all ../TLpatches/patch-* files.
+# Save original (since not committed yet)
+# and diff after each to update patch-* file.
# Don't lose our leading comments.
# autoreconf in the TL directory (Build/source/libs/icu); don't run
@@ -35,12 +36,12 @@
#
# rebuild; must rerun configure (not just config.status),
# so easiest is to just do a whole new build.
-# That will also test use of the new icu version by our programs.
+# Besides, that also tests use of the new icu version by our programs.
# Assuming all seems ok, reduce size of source/data/in/icudt*.dat
# to decrease data segment size, e.g., for old BSD. First, check
# that we successfully built the full .dat:
-ver=65
+ver=68
srcdat=$Build/source/libs/icu/icu-src/source/data/in/icudt${ver}l.dat
cd $Work/libs/icu/icu-build/data/out/build/icudt${ver}l
indat=../../tmp/icudt${ver}l.dat
Modified: trunk/Build/source/libs/icu/TLpatches/patch-01-configure-gcc
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-01-configure-gcc 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-01-configure-gcc 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,9 +1,9 @@
For TL, we do not want to prefer clang(++) for ICU
when the whole rest of the tree prefers gcc.
---- source/configure~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/configure 2019-12-11 15:28:59.429357803 -0800
-@@ -2911,5 +2911,5 @@
+--- source/configure~ 2020-12-17 11:34:38.000000000 -0800
++++ source/configure 2021-02-13 08:16:36.271761526 -0800
+@@ -2913,5 +2913,5 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
- for ac_prog in clang gcc cc c99 c89 xlc_r xlc cl.exe icc
@@ -10,7 +10,7 @@
+ for ac_prog in gcc cc clang c99 c89 xlc_r xlc cl.exe icc
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-@@ -2955,5 +2955,5 @@
+@@ -2957,5 +2957,5 @@
if test -z "$CC"; then
ac_ct_CC=$CC
- for ac_prog in clang gcc cc c99 c89 xlc_r xlc cl.exe icc
@@ -17,7 +17,7 @@
+ for ac_prog in gcc cc clang c99 c89 xlc_r xlc cl.exe icc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
-@@ -3514,5 +3514,5 @@
+@@ -3516,5 +3516,5 @@
else
if test -n "$ac_tool_prefix"; then
- for ac_prog in clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
@@ -24,7 +24,7 @@
+ for ac_prog in g++ c++ clang++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-@@ -3558,5 +3558,5 @@
+@@ -3560,5 +3560,5 @@
if test -z "$CXX"; then
ac_ct_CXX=$CXX
- for ac_prog in clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC
Modified: trunk/Build/source/libs/icu/TLpatches/patch-02-configure-solaris
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-02-configure-solaris 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-02-configure-solaris 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,8 +1,8 @@
Do not disable C++11 on Solaris, since we don't use the Sun compiler.
---- source/configure~ 2019-12-11 15:28:59.429357803 -0800
-+++ source/configure 2019-12-11 15:30:37.229105055 -0800
-@@ -6147,9 +6147,10 @@
+--- source/configure~ 2021-02-13 08:16:36.271761526 -0800
++++ source/configure 2021-02-13 08:18:10.826136078 -0800
+@@ -6149,9 +6149,10 @@
CXXFLAGS="$OLD_CXXFLAGS"
fi
- case "${host}" in
Deleted: trunk/Build/source/libs/icu/TLpatches/patch-04-data-makefile
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-04-data-makefile 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-04-data-makefile 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,15 +0,0 @@
- This is needed on Solaris.
- https://unicode-org.atlassian.net/browse/ICU-20852
-
---- source/data/Makefile.in (revision 53392)
-+++ source/data/Makefile.in (working copy)
-@@ -148,7 +148,8 @@ ICUDATA_ARCHIVE = $(firstword $(wildcard $(srcdir)
- # and convert it to the current type.
- ifneq ($(ICUDATA_ARCHIVE),)
- ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
--$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
-+$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE)
-+ $(MKINSTALLDIRS) $(OUTDIR)
- $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
- endif
- else
Modified: trunk/Build/source/libs/icu/TLpatches/patch-10-ES
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-10-ES 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-10-ES 2021-02-13 17:46:14 UTC (rev 57727)
@@ -3,10 +3,9 @@
https://tug.org/pipermail/tlbuild/2020q1/004599.html
https://tug.org/pipermail/tlbuild/2020q1/004599.html
---- ubidiimp.h (revision 53315)
-+++ ubidiimp.h (working copy)
-@@ -33,6 +33,8 @@ typedef uint32_t Flags;
- is easier with the same names for the BiDi types in the code as there.
+--- source/common/ubidiimp.h~ 2020-12-17 11:34:38.000000000 -0800
++++ source/common/ubidiimp.h 2021-02-13 08:20:09.076105678 -0800
+@@ -42,4 +42,6 @@
See UCharDirection in uchar.h .
*/
+#undef ES
@@ -13,4 +12,3 @@
+#undef CS
enum {
L= U_LEFT_TO_RIGHT, /* 0 */
- R= U_RIGHT_TO_LEFT, /* 1 */
Modified: trunk/Build/source/libs/icu/TLpatches/patch-12-mingw
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-12-mingw 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-12-mingw 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,8 +1,8 @@
We don't want this for TeX Live cross compilation.
---- source/config/mh-mingw~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/config/mh-mingw 2019-12-11 15:34:02.831473103 -0800
-@@ -71,25 +71,7 @@
+--- source/config/mh-mingw~ 2020-12-17 11:34:38.000000000 -0800
++++ source/config/mh-mingw 2021-02-13 08:20:54.167330952 -0800
+@@ -76,25 +76,7 @@
STATIC_O = ao
-ifeq ($(ENABLE_SHARED),YES)
Modified: trunk/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,7 +1,7 @@
No `s' for STATIC_PREFIX.
---- source/config/Makefile.inc.in~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/config/Makefile.inc.in 2019-12-11 15:36:12.724809309 -0800
+--- source/config/Makefile.inc.in~ 2020-12-17 11:34:38.000000000 -0800
++++ source/config/Makefile.inc.in 2021-02-13 08:22:35.895582151 -0800
@@ -47,5 +47,5 @@
# Static library prefix and file extension
@@ -9,8 +9,8 @@
+STATIC_PREFIX =
LIBSICU = lib$(STATIC_PREFIX)$(ICUPREFIX)
A = a
---- source/icudefs.mk.in~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/icudefs.mk.in 2019-12-11 15:36:12.725809296 -0800
+--- source/icudefs.mk.in~ 2020-12-17 11:34:38.000000000 -0800
++++ source/icudefs.mk.in 2021-02-13 08:22:35.895582151 -0800
@@ -214,5 +214,5 @@
## If we can't use the shared libraries, use the static libraries
ifneq ($(ENABLE_SHARED),YES)
Modified: trunk/Build/source/libs/icu/TLpatches/patch-14-xopen
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-14-xopen 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-14-xopen 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,8 +1,8 @@
Do not define _XOPEN_SOURCE_EXTENDED on Solaris,
notwithstanding comments in icu source.
---- source/common/uposixdefs.h~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/common/uposixdefs.h 2019-12-11 15:37:42.741655847 -0800
+--- source/common/uposixdefs.h~ 2020-12-17 11:34:38.000000000 -0800
++++ source/common/uposixdefs.h 2021-02-13 08:29:38.779298547 -0800
@@ -52,8 +52,11 @@
* Poorly upgraded Solaris machines can't have this defined.
* Cleanly installed Solaris can use this #define.
Modified: trunk/Build/source/libs/icu/TLpatches/patch-19-netbsd
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-19-netbsd 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-19-netbsd 2021-02-13 17:46:14 UTC (rev 57727)
@@ -2,9 +2,9 @@
From: Marc Baudoin <babafou at babafou.eu.org>
tlbuild
---- source/common/uposixdefs.h~ 2019-12-11 15:37:42.741655847 -0800
-+++ source/common/uposixdefs.h 2019-12-11 15:38:16.991216886 -0800
-@@ -72,3 +72,7 @@
+--- source/common/uposixdefs.h~ 2021-02-13 08:29:38.779298547 -0800
++++ source/common/uposixdefs.h 2021-02-13 08:30:06.076827650 -0800
+@@ -78,3 +78,7 @@
#endif
+#if defined(__cplusplus) && defined(__NetBSD__)
Modified: trunk/Build/source/libs/icu/TLpatches/patch-20-private
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-20-private 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/TLpatches/patch-20-private 2021-02-13 17:46:14 UTC (rev 57727)
@@ -5,8 +5,8 @@
http://tug.org/pipermail/tlbuild/2016q1/003438.html
(and starting at http://tug.org/pipermail/tlbuild/2016q1/003433.html)
---- source/i18n/dayperiodrules.h~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/i18n/dayperiodrules.h 2019-12-11 15:38:52.103766812 -0800
+--- source/i18n/dayperiodrules.h~ 2020-12-17 11:34:38.000000000 -0800
++++ source/i18n/dayperiodrules.h 2021-02-13 08:30:53.116015999 -0800
@@ -56,5 +56,5 @@
double getMidPointForDayPeriod(DayPeriod dayPeriod, UErrorCode &errorCode) const;
@@ -14,8 +14,8 @@
+/* nothing private to placate old compilers --karl/koch private: */
DayPeriodRules();
---- source/i18n/unicode/dtitvinf.h~ 2019-10-03 04:16:41.000000000 -0700
-+++ source/i18n/unicode/dtitvinf.h 2019-12-11 15:38:52.103766812 -0800
+--- source/i18n/unicode/dtitvinf.h~ 2020-12-17 11:34:38.000000000 -0800
++++ source/i18n/unicode/dtitvinf.h 2021-02-13 08:30:53.116015999 -0800
@@ -330,5 +330,5 @@
@@ -23,7 +23,7 @@
+/* nothing private to placate old compilers --karl/koch private: */
/**
* DateIntervalFormat will need access to
-@@ -364,5 +364,6 @@
+@@ -365,5 +365,6 @@
};
public:
-#ifndef U_HIDE_INTERNAL_API
@@ -31,7 +31,7 @@
+/* ifndef U_HIDE_INTERNAL_API */
/**
* Max index for stored interval patterns
-@@ -372,6 +373,6 @@
+@@ -373,6 +374,6 @@
kMaxIntervalPatternIndex = kIPI_MAX_INDEX
};
-#endif /* U_HIDE_INTERNAL_API */
Added: trunk/Build/source/libs/icu/TLpatches/patch-22-max_align_t
===================================================================
--- trunk/Build/source/libs/icu/TLpatches/patch-22-max_align_t (rev 0)
+++ trunk/Build/source/libs/icu/TLpatches/patch-22-max_align_t 2021-02-13 17:46:14 UTC (rev 57727)
@@ -0,0 +1,51 @@
+ As of ICU 68.2, they required max_align_t to be in the std::
+ namespace, which it isn't with the CentOS 7 g++.
+
+--- icu/source/tools/toolutil/toolutil.cpp 2020-12-17 11:34:38.000000000 -0800
++++ icu-src/source/tools/toolutil/toolutil.cpp 2021-02-13 09:21:20.320506318 -0800
+@@ -243,5 +243,5 @@
+ int32_t capacity, maxCapacity, size, idx;
+ void *array;
+- alignas(std::max_align_t) char staticArray[1];
++ alignas(max_align_t) char staticArray[1];
+ };
+
+--- icu/source/common/utext.cpp 2020-12-17 11:34:38.000000000 -0800
++++ icu-src/source/common/utext.cpp 2021-02-13 09:15:58.637913024 -0800
+@@ -570,5 +570,5 @@
+ struct ExtendedUText {
+ UText ut;
+- std::max_align_t extension;
++ max_align_t extension;
+ };
+
+@@ -585,5 +585,5 @@
+ int32_t spaceRequired = sizeof(UText);
+ if (extraSpace > 0) {
+- spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(std::max_align_t);
++ spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(max_align_t);
+ }
+ ut = (UText *)uprv_malloc(spaceRequired);
+--- icu/source/common/uarrsort.cpp 2020-12-17 11:34:38.000000000 -0800
++++ icu-src/source/common/uarrsort.cpp 2021-02-13 09:14:58.120928533 -0800
+@@ -38,5 +38,5 @@
+
+ static constexpr int32_t sizeInMaxAlignTs(int32_t sizeInBytes) {
+- return (sizeInBytes + sizeof(std::max_align_t) - 1) / sizeof(std::max_align_t);
++ return (sizeInBytes + sizeof(max_align_t) - 1) / sizeof(max_align_t);
+ }
+
+@@ -142,5 +142,5 @@
+ UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
+
+- icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
++ icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
+ if (sizeInMaxAlignTs(itemSize) > v.getCapacity() &&
+ v.resize(sizeInMaxAlignTs(itemSize)) == nullptr) {
+@@ -236,5 +236,5 @@
+ UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
+ /* allocate two intermediate item variables (x and w) */
+- icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
++ icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
+ if(sizeInMaxAlignTs(itemSize)*2 > xw.getCapacity() &&
+ xw.resize(sizeInMaxAlignTs(itemSize) * 2) == nullptr) {
Modified: trunk/Build/source/libs/icu/configure
===================================================================
--- trunk/Build/source/libs/icu/configure 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/configure 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for icu (TeX Live) 65.1.
+# Generated by GNU Autoconf 2.69 for icu (TeX Live) 68.2.
#
# Report bugs to <tex-k at tug.org>.
#
@@ -579,8 +579,8 @@
# Identity of this package.
PACKAGE_NAME='icu (TeX Live)'
PACKAGE_TARNAME='icu--tex-live-'
-PACKAGE_VERSION='65.1'
-PACKAGE_STRING='icu (TeX Live) 65.1'
+PACKAGE_VERSION='68.2'
+PACKAGE_STRING='icu (TeX Live) 68.2'
PACKAGE_BUGREPORT='tex-k at tug.org'
PACKAGE_URL=''
@@ -1258,7 +1258,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures icu (TeX Live) 65.1 to adapt to many kinds of systems.
+\`configure' configures icu (TeX Live) 68.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1328,7 +1328,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of icu (TeX Live) 65.1:";;
+ short | recursive ) echo "Configuration of icu (TeX Live) 68.2:";;
esac
cat <<\_ACEOF
@@ -1426,7 +1426,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-icu (TeX Live) configure 65.1
+icu (TeX Live) configure 68.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1565,7 +1565,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by icu (TeX Live) $as_me 65.1, which was
+It was created by icu (TeX Live) $as_me 68.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3484,7 +3484,7 @@
# Define the identity of the package.
PACKAGE='icu--tex-live-'
- VERSION='65.1'
+ VERSION='68.2'
cat >>confdefs.h <<_ACEOF
@@ -4862,7 +4862,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by icu (TeX Live) $as_me 65.1, which was
+This file was extended by icu (TeX Live) $as_me 68.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -4919,7 +4919,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-icu (TeX Live) config.status 65.1
+icu (TeX Live) config.status 68.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Modified: trunk/Build/source/libs/icu/icu-src/APIChangeReport.html
===================================================================
--- trunk/Build/source/libs/icu/icu-src/APIChangeReport.html 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/APIChangeReport.html 2021-02-13 17:46:14 UTC (rev 57727)
@@ -5,31 +5,31 @@
-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65</title>
+<title>ICU4C API Comparison: ICU 67 with ICU 68</title>
<link type="text/css" href="icu4c.css" rel="stylesheet">
</head>
<body>
<a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65</h1>
+<h1>ICU4C API Comparison: ICU 67 with ICU 68</h1>
<div id="toc">
<ul>
<li>
-<a href="#removed">Removed from ICU 64</a>
+<a href="#removed">Removed from ICU 67</a>
</li>
<li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 65</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 68</a>
</li>
<li>
-<a href="#changed">Changed in ICU 65</a>
+<a href="#changed">Changed in ICU 68</a>
</li>
<li>
-<a href="#promoted">Promoted to stable in ICU 65</a>
+<a href="#promoted">Promoted to stable in ICU 68</a>
</li>
<li>
-<a href="#added">Added in ICU 65</a>
+<a href="#added">Added in ICU 68</a>
</li>
<li>
-<a href="#other">Other existing drafts in ICU 65</a>
+<a href="#other">Other existing drafts in ICU 68</a>
</li>
<li>
<a href="#simplifications">Signature Simplifications</a>
@@ -38,2949 +38,1130 @@
<hr>
</div>
<a name="removed"></a>
-<h2>Removed from ICU 64</h2>
+<h2>Removed from ICU 67</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">const number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() const</td><td class="">Deprecated<br>ICU 64</td><td>(missing)<br>
+<td class="file">fmtable.h</td><td class="proto">const UFormattable* icu::Formattable::toUFormattable()</td><td class="stabchange">Stable<br>ICU 52</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&)</td><td class="stabchange">Stable<br>ICU 59</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto">LocalArray<MeasureUnit> icu::MeasureUnit::splitToSingleUnits(int32_t&, UErrorCode&) const</td><td class="">Internal<br>ICU 67</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_attribute</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getIndex() const</td><td class="">Internal</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_builtin</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&, const MeasureUnit&, bool*)</td><td class="">Internal</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_cpp_attribute</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::getIndexCount()</td><td class="">Internal</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_declspec_attribute</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*)</td><td class="">Internal</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_extension</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto">UClassID icu::NoUnit::getDynamicClassID() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_feature</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto">icu::NoUnit::NoUnit(const NoUnit&)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> __has_warning</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto">icu::NoUnit::~NoUnit()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">uversion.h</td><td class="proto"><tt>#define</tt> U_NAMESPACE_BEGIN</td><td class="stabchange">Stable<br>ICU 2.4</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::base()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">uversion.h</td><td class="proto"><tt>#define</tt> U_NAMESPACE_END</td><td class="stabchange">Stable<br>ICU 2.4</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::percent()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">uversion.h</td><td class="proto"><tt>#define</tt> U_NAMESPACE_QUALIFIER</td><td class="stabchange">Stable<br>ICU 2.4</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::permille()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">uversion.h</td><td class="proto"><tt>#define</tt> U_NAMESPACE_USE</td><td class="stabchange">Stable<br>ICU 2.4</td><td>(missing)<br>
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
<span class=""><span></span></span></td>
</tr>
+<tr class="row0">
+<td class="file">nounit.h</td><td class="proto">void* icu::NoUnit::clone() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">const USet* icu::UnicodeSet::toUSet()</td><td class="stabchange">Stable<br>ICU 4.2</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 65</h2>
+<h2>Deprecated or Obsoleted in ICU 68</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
+<tr class="row1">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="changed"></a>
-<h2>Changed in ICU 65 (old, new)</h2>
+<h2>Changed in ICU 68 (old, new)</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">int32_t icu::DecimalFormat::getMultiplierScale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">bytestrie.h</td><td class="proto">BytesTrie& icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setMultiplierScale(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">Locale& icu::Locale::operator=(Locale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&, UListFormatterType, UListFormatterWidth, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::toLanguageTag(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::operator=(Builder&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">icu::Locale::Locale(Locale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto"><tt>static</tt> Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::addLikelySubtags(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::minimizeSubtags(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result& icu::LocaleMatcher::Result::operator=(Result&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator< Iter >::hasNext() const override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::RangeIterator< Iter >::next() override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMinDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Scale& icu::number::Scale::operator=(Scale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Scale& icu::number::Scale::operator=(const Scale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::~FormattedNumber()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::Scale(Scale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::Scale(const Scale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::~Scale()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CompactNotation icu::number::Notation::compactLong()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CompactNotation icu::number::Notation::compactShort()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::fixedFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::integer()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::maxFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::minFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IncrementPrecision icu::number::Precision::increment(double)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Precision icu::number::Precision::unlimited()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDecimal(StringPiece)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDouble(double)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::none()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::powerOfTen(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> ScientificNotation icu::number::Notation::engineering()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> ScientificNotation icu::number::Notation::scientific()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SimpleNotation icu::number::Notation::simple()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::with()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::~FormattedNumberRange()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>static</tt> LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto">const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto">const USet* u_getBinaryPropertySet(UProperty, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto">UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_NORMAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto">uint32_t ucpmap_get(const UCPMap*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_16</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_32</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_8</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_ASCII_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_BMP_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_SUPP_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U16_NEXT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U16_PREV</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U8_NEXT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U8_PREV</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_SMALL_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrieType ucptrie_getType(const UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_ANY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_FAST</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_SMALL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">uint32_t ucptrie_get(const UCPTrie*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">void ucptrie_close(UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_close(UMutableCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_MIN2</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_OFF</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEVER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_HIDDEN_OVERLAY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">utf_old.h</td><td class="proto"><tt>#define</tt> U_HIDE_OBSOLETE_UTF_OLD_H</td><td class="">Deprecated<br>ICU 2.4</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="promoted"></a>
-<h2>Promoted to stable in ICU 65</h2>
+<h2>Promoted to stable in ICU 68</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">basictz.h</td><td class="proto">void* icu::BasicTimeZone::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 3.8</span></span></td>
+<td class="file">bytestrie.h</td><td class="proto">BytesTrie& icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">datefmt.h</td><td class="proto">void* icu::DateFormat::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">int32_t icu::DecimalFormat::getMultiplierScale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 52</span></span></td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setMultiplierScale(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&, UListFormatterType, UListFormatterWidth, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&) const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">Locale& icu::Locale::operator=(Locale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::operator=(Builder&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">StringClass icu::Locale::toLanguageTag(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">icu::Locale::Locale(Locale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto"><tt>static</tt> Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::addLikelySubtags(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::minimizeSubtags(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">Result& icu::LocaleMatcher::Result::operator=(Result&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator< Iter >::hasNext() const override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::RangeIterator< Iter >::next() override</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMinDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Scale& icu::number::Scale::operator=(Scale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Scale& icu::number::Scale::operator=(const Scale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::~FormattedNumber()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::Scale(Scale&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::Scale(const Scale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::Scale::~Scale()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.2</span></span></td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CompactNotation icu::number::Notation::compactLong()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CompactNotation icu::number::Notation::compactShort()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 65</td>
</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::fixedFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::integer()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::maxFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::minFraction(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IncrementPrecision icu::number::Precision::increment(double)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Precision icu::number::Precision::unlimited()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDecimal(StringPiece)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDouble(double)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::none()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Scale icu::number::Scale::powerOfTen(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> ScientificNotation icu::number::Notation::engineering()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> ScientificNotation icu::number::Notation::scientific()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> SimpleNotation icu::number::Notation::simple()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::with()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::~FormattedNumberRange()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>static</tt> LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">void* icu::NumberFormat::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto">const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto">const USet* u_getBinaryPropertySet(UProperty, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto">UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucpmap.h</td><td class="proto"><tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_NORMAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucpmap.h</td><td class="proto">uint32_t ucpmap_get(const UCPMap*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_16</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_32</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_8</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_ASCII_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_BMP_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_SUPP_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U16_NEXT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U16_PREV</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U8_NEXT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_FAST_U8_PREV</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>#define</tt> UCPTRIE_SMALL_GET</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrieType ucptrie_getType(const UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_ANY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_FAST</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_SMALL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto"><tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ucptrie.h</td><td class="proto">uint32_t ucptrie_get(const UCPTrie*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ucptrie.h</td><td class="proto">void ucptrie_close(UCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_close(UMutableCPTrie*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">umutablecptrie.h</td><td class="proto">void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">unifilt.h</td><td class="proto">void* icu::UnicodeFilter::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.4</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_MIN2</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_OFF</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ALWAYS</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 61</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEVER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">uspoof.h</td><td class="proto"><tt>enum</tt> USpoofChecks::USPOOF_HIDDEN_OVERLAY</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 62</td>
-</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="added"></a>
-<h2>Added in ICU 65</h2>
+<h2>Added in ICU 68</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">basictz.h</td><td class="proto">void* icu::BasicTimeZone::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 3.8</span></span></td>
+<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">bytestrie.h</td><td class="proto">BytesTrie& icu::BytesTrie::resetToState64(uint64_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&, UErrorCode&)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">datefmt.h</td><td class="proto">void* icu::DateFormat::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 52</span></span></td>
</tr>
<tr class="row1">
-<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&) const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 59</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::operator=(Builder&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Result& icu::LocaleMatcher::Result::operator=(Result&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">double icu::LocaleMatcher::internalMatch(const Locale&, const Locale&, UErrorCode&) const</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getOffset() const</td><td class="">(missing)</td><td>Internal<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator< Iter >::hasNext() const override</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::Iterator::next()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">const Locale& icu::Locale::RangeIterator< Iter >::next() override</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">measunit.h</td><td class="proto">std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const&</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&&</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">Usage& icu::number::impl::Usage::operator=(Usage&&)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">Usage& icu::number::impl::Usage::operator=(const Usage&)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::Usage::isSet() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(Usage&&)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(const Usage&)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::~Usage()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::Usage::length() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::Usage::set(StringPiece)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">numberrangeformatter.h</td><td class="proto">std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto">void* icu::NumberFormat::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_ATTRIBUTE</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&) const</td><td class="">(missing)</td><td>Internal<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_BUILTIN</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">plurrule.h</td><td class="proto">int32_t icu::PluralRules::getSamples(const UnicodeString&, FixedDecimal*, int32_t, UErrorCode&)</td><td class="">(missing)</td><td>Internal<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_CPP_ATTRIBUTE</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&)</td><td class="">(missing)</td><td>Internal<br>
<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_DECLSPEC_ATTRIBUTE</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_EXTENSION</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_FEATURE</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> UPRV_HAS_WARNING</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_PF_EMSCRIPTEN</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> U_DEFINE_FALSE_AND_TRUE</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 4.2</span></span></td>
</tr>
<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_COUNT</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> UPRV_BLOCK_MACRO_BEGIN</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> UPRV_BLOCK_MACRO_END</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">unifilt.h</td><td class="proto">void* icu::UnicodeFilter::clone() const</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 2.4</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_RES_DATA_LIMIT</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RESOURCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 65</span></span></td>
-</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="other"></a>
-<h2>Other existing drafts in ICU 65</h2>
+<h2>Other existing drafts in ICU 68</h2>
<div class="other">
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 64</th><th>ICU 65</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">currunit.h</td><td class="proto">icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseCaseSensitive() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseNoExponent() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isSignAlwaysShown() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">int32_t icu::DecimalFormat::getMinimumGroupingDigits() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setMinimumGroupingDigits(int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseCaseSensitive(UBool)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseNoExponent(UBool)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setSignAlwaysShown(UBool)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">Appendable& icu::FormattedDateInterval::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&, Calendar&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval& icu::FormattedDateInterval::operator=(FormattedDateInterval&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::~FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">Appendable& icu::FormattedValue::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::~ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::FormattedValue::~FormattedValue()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getCategory() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getField() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getLimit() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getStart() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainCategory(int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::reset()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">Appendable& icu::FormattedList::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">FormattedList& icu::FormattedList::operator=(FormattedList&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString& icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&, FieldPositionIterator*, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList(FormattedList&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::~FormattedList()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">Locale icu::LocaleBuilder::build(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::clear()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::clearExtensions()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setExtension(char, StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setLanguage(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setLanguageTag(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setLocale(const Locale&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setRegion(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setScript(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder& icu::LocaleBuilder::setVariant(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::LocaleBuilder()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::~LocaleBuilder()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">LocalArray<T>& icu::LocalArray< T >::operator=(std::unique_ptr< T[]>&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">LocalPointer<T>& icu::LocalPointer< T >::operator=(std::unique_ptr< T >&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray< T >::LocalArray(std::unique_ptr< T[]>&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray< T >::operator std::unique_ptr< T[]>() &&</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer< T >::LocalPointer(std::unique_ptr< T >&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer< T >::operator std::unique_ptr< T >() &&</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit& icu::MeasureUnit::operator=(MeasureUnit&&) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&&) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getByte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCup()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDay()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGram()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHour()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLux()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMile()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMole()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPint()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPound()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getStone()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTon()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYard()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYear()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto">UClassID icu::NoUnit::getDynamicClassID() const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::NoUnit(const NoUnit&)</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::~NoUnit()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::base()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::percent()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::permille()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto">void* icu::NoUnit::clone() const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() &&</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() const &</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::FormattedNumber()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UParseError&, UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() &&</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() const &</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">void icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::EAlignmentFields::kCompactField</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::EAlignmentFields::kMeasureUnitField</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumber&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">Appendable& icu::FormattedRelativeDateTime::appendTo(Appendable&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&&)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::~FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_closeResult(UFormattedDateInterval*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">UConstrainedFieldPosition* ucfpos_open(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_close(UConstrainedFieldPosition*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">UFormattedList* ulistfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_closeResult(UFormattedList*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto">const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_closeResult(UFormattedRelativeDateTime*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 64</td>
-</tr>
</table>
</div>
<P></P>
@@ -2991,146 +1172,13 @@
<i>This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
all possible variations in "original" form.</i>
<div class="other">
-<ul>
-<li>
-<b>void* icu::ChoiceFormat::clone() const</b>
-<br>ChoiceFormat* icu::ChoiceFormat::clone() const<br>Format* icu::ChoiceFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::CompactDecimalFormat::clone() const</b>
-<br>CompactDecimalFormat* icu::CompactDecimalFormat::clone() const U_OVERRIDE<br>Format* icu::CompactDecimalFormat::clone() const U_OVERRIDE<br>
-</li>
-<li>
-<b>void* icu::CurrencyAmount::clone() const</b>
-<br>CurrencyAmount* icu::CurrencyAmount::clone() const<br>UObject* icu::CurrencyAmount::clone() const<br>
-</li>
-<li>
-<b>void* icu::CurrencyUnit::clone() const</b>
-<br>CurrencyUnit* icu::CurrencyUnit::clone() const<br>UObject* icu::CurrencyUnit::clone() const<br>
-</li>
-<li>
-<b>void* icu::DateIntervalFormat::clone() const</b>
-<br>DateIntervalFormat* icu::DateIntervalFormat::clone() const<br>Format* icu::DateIntervalFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::DecimalFormat::clone() const</b>
-<br>DecimalFormat* icu::DecimalFormat::clone() const U_OVERRIDE<br>Format* icu::DecimalFormat::clone() const U_OVERRIDE<br>
-</li>
-<li>
-<b>void* icu::GregorianCalendar::clone() const</b>
-<br>Calendar* icu::GregorianCalendar::clone() const<br>GregorianCalendar* icu::GregorianCalendar::clone() const<br>
-</li>
-<li>
-<b>void* icu::Measure::clone() const</b>
-<br>Measure* icu::Measure::clone() const<br>UObject* icu::Measure::clone() const<br>
-</li>
-<li>
-<b>void* icu::MeasureFormat::clone() const</b>
-<br>Format* icu::MeasureFormat::clone() const<br>MeasureFormat* icu::MeasureFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::MeasureUnit::clone() const</b>
-<br>MeasureUnit* icu::MeasureUnit::clone() const<br>UObject* icu::MeasureUnit::clone() const<br>
-</li>
-<li>
-<b>void* icu::MessageFormat::clone() const</b>
-<br>Format* icu::MessageFormat::clone() const<br>MessageFormat* icu::MessageFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::NoUnit::clone() const</b>
-<br>NoUnit* icu::NoUnit::clone() const<br>UObject* icu::NoUnit::clone() const<br>
-</li>
-<li>
-<b>void* icu::PluralFormat::clone() const</b>
-<br>Format* icu::PluralFormat::clone() const<br>PluralFormat* icu::PluralFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::RuleBasedBreakIterator::clone() const</b>
-<br>BreakIterator* icu::RuleBasedBreakIterator::clone() const<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const<br>
-</li>
-<li>
-<b>void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)</b>
-<br>BreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)<br>
-</li>
-<li>
-<b>void* icu::RuleBasedCollator::clone() const</b>
-<br>Collator* icu::RuleBasedCollator::clone() const<br>RuleBasedCollator* icu::RuleBasedCollator::clone() const<br>
-</li>
-<li>
-<b>void* icu::RuleBasedNumberFormat::clone() const</b>
-<br>Format* icu::RuleBasedNumberFormat::clone() const<br>RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::RuleBasedTimeZone::clone() const</b>
-<br>RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const<br>TimeZone* icu::RuleBasedTimeZone::clone() const<br>
-</li>
-<li>
-<b>void* icu::SelectFormat::clone() const</b>
-<br>Format* icu::SelectFormat::clone() const<br>SelectFormat* icu::SelectFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::SimpleDateFormat::clone() const</b>
-<br>Format* icu::SimpleDateFormat::clone() const<br>SimpleDateFormat* icu::SimpleDateFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::SimpleTimeZone::clone() const</b>
-<br>SimpleTimeZone* icu::SimpleTimeZone::clone() const<br>TimeZone* icu::SimpleTimeZone::clone() const<br>
-</li>
-<li>
-<b>void* icu::StringCharacterIterator::clone() const</b>
-<br>CharacterIterator* icu::StringCharacterIterator::clone() const<br>StringCharacterIterator* icu::StringCharacterIterator::clone() const<br>
-</li>
-<li>
-<b>void* icu::StringSearch::safeClone() const</b>
-<br>SearchIterator* icu::StringSearch::safeClone() const<br>StringSearch* icu::StringSearch::safeClone() const<br>
-</li>
-<li>
-<b>void* icu::TimeUnit::clone() const</b>
-<br>TimeUnit* icu::TimeUnit::clone() const<br>UObject* icu::TimeUnit::clone() const<br>
-</li>
-<li>
-<b>void* icu::TimeUnitAmount::clone() const</b>
-<br>TimeUnitAmount* icu::TimeUnitAmount::clone() const<br>UObject* icu::TimeUnitAmount::clone() const<br>
-</li>
-<li>
-<b>void* icu::TimeUnitFormat::clone() const</b>
-<br>Format* icu::TimeUnitFormat::clone() const<br>TimeUnitFormat* icu::TimeUnitFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::TimeZoneFormat::clone() const</b>
-<br>Format* icu::TimeZoneFormat::clone() const<br>TimeZoneFormat* icu::TimeZoneFormat::clone() const<br>
-</li>
-<li>
-<b>void* icu::UCharCharacterIterator::clone() const</b>
-<br>CharacterIterator* icu::UCharCharacterIterator::clone() const<br>UCharCharacterIterator* icu::UCharCharacterIterator::clone() const<br>
-</li>
-<li>
-<b>void* icu::UnicodeSet::clone() const</b>
-<br>UnicodeFunctor* icu::UnicodeSet::clone() const<br>UnicodeSet* icu::UnicodeSet::clone() const<br>
-</li>
-<li>
-<b>void* icu::UnicodeSet::cloneAsThawed() const</b>
-<br>UnicodeFunctor* icu::UnicodeSet::cloneAsThawed() const<br>UnicodeSet* icu::UnicodeSet::cloneAsThawed() const<br>
-</li>
-<li>
-<b>void* icu::UnicodeSet::freeze()</b>
-<br>UnicodeFunctor* icu::UnicodeSet::freeze()<br>UnicodeSet* icu::UnicodeSet::freeze()<br>
-</li>
-<li>
-<b>void* icu::UnicodeString::clone() const</b>
-<br>Replaceable* icu::UnicodeString::clone() const<br>UnicodeString* icu::UnicodeString::clone() const<br>
-</li>
-<li>
-<b>void* icu::VTimeZone::clone() const</b>
-<br>TimeZone* icu::VTimeZone::clone() const<br>VTimeZone* icu::VTimeZone::clone() const<br>
-</li>
-</ul>
+<ul></ul>
</div>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<p>
-<i><font size="-1">Contents generated by StableAPI tool on Wed Oct 02 10:22:29 PDT 2019<br>
+<i><font size="-1">Contents generated by StableAPI tool on Fri Oct 23 11:35:16 PDT 2020<br>
Copyright © 2017 and later: Unicode, Inc. and others.<br>
License & terms of use: http://www.unicode.org/copyright.html
</font></i>
Modified: trunk/Build/source/libs/icu/icu-src/APIChangeReport.md
===================================================================
--- trunk/Build/source/libs/icu/icu-src/APIChangeReport.md 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/APIChangeReport.md 2021-02-13 17:46:14 UTC (rev 57727)
@@ -5,979 +5,381 @@
License & terms of use: http://www.unicode.org/copyright.html
-->
-# ICU4C API Comparison: ICU 64 (update #1: 64.2) with ICU 65
+# ICU4C API Comparison: ICU 67 with ICU 68
> _Note_ Markdown format of this document is new for ICU 65.
-- [Removed from ICU 64](#removed)
-- [Deprecated or Obsoleted in ICU 65](#deprecated)
-- [Changed in ICU 65](#changed)
-- [Promoted to stable in ICU 65](#promoted)
-- [Added in ICU 65](#added)
-- [Other existing drafts in ICU 65](#other)
+- [Removed from ICU 67](#removed)
+- [Deprecated or Obsoleted in ICU 68](#deprecated)
+- [Changed in ICU 68](#changed)
+- [Promoted to stable in ICU 68](#promoted)
+- [Added in ICU 68](#added)
+- [Other existing drafts in ICU 68](#other)
- [Signature Simplifications](#simplifications)
## Removed
-Removed from ICU 64
+Removed from ICU 67
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
-| decimfmt.h | const number::LocalizedNumberFormatter& icu::DecimalFormat::toNumberFormatter() const | DeprecatedICU 64 | (missing)
-| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) | StableICU 59 | (missing)
-| platform.h | <tt>#define</tt> __has_attribute | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_builtin | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_cpp_attribute | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_declspec_attribute | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_extension | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_feature | Internal | (missing)
-| platform.h | <tt>#define</tt> __has_warning | Internal | (missing)
-| uversion.h | <tt>#define</tt> U_NAMESPACE_BEGIN | StableICU 2.4 | (missing)
-| uversion.h | <tt>#define</tt> U_NAMESPACE_END | StableICU 2.4 | (missing)
-| uversion.h | <tt>#define</tt> U_NAMESPACE_QUALIFIER | StableICU 2.4 | (missing)
-| uversion.h | <tt>#define</tt> U_NAMESPACE_USE | StableICU 2.4 | (missing)
+| fmtable.h | const UFormattable* icu::Formattable::toUFormattable() | StableICU 52 | (missing)
+| measunit.h | LocalArray<MeasureUnit> icu::MeasureUnit::splitToSingleUnits(int32_t&, UErrorCode&) const | InternalICU 67 | (missing)
+| measunit.h | int32_t icu::MeasureUnit::getIndex() const | Internal | (missing)
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&, const MeasureUnit&, bool*) | Internal | (missing)
+| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::getIndexCount() | Internal | (missing)
+| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*) | Internal | (missing)
+| nounit.h | UClassID icu::NoUnit::getDynamicClassID() const | DraftICU 60 | (missing)
+| nounit.h | icu::NoUnit::NoUnit(const NoUnit&) | DraftICU 60 | (missing)
+| nounit.h | icu::NoUnit::~NoUnit() | DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::base() | DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::percent() | DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::permille() | DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> UClassID icu::NoUnit::getStaticClassID() | DraftICU 60 | (missing)
+| nounit.h | void* icu::NoUnit::clone() const | DraftICU 60 | (missing)
+| uniset.h | const USet* icu::UnicodeSet::toUSet() | StableICU 4.2 | (missing)
## Deprecated
-Deprecated or Obsoleted in ICU 65
+Deprecated or Obsoleted in ICU 68
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const | DraftICU 63 | DeprecatedICU 68
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const | DraftICU 63 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> FALSE | StableICU 2.0 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> TRUE | StableICU 2.0 | DeprecatedICU 68
## Changed
-Changed in ICU 65 (old, new)
+Changed in ICU 68 (old, new)
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
-| decimfmt.h | int32_t icu::DecimalFormat::getMultiplierScale() const | Draft→StableICU 62
-| decimfmt.h | void icu::DecimalFormat::setMultiplierScale(int32_t) | Draft→StableICU 62
-| locid.h | Locale& icu::Locale::operator=(Locale&&) | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::toLanguageTag(UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const | Draft→StableICU 63
-| locid.h | icu::Locale::Locale(Locale&&) | Draft→StableICU 63
-| locid.h | <tt>static</tt> Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::addLikelySubtags(UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::minimizeSubtags(UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&) | Draft→StableICU 63
-| numberformatter.h | Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&& | Draft→StableICU 62
-| numberformatter.h | Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&) | Draft→StableICU 62
-| numberformatter.h | IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t) | Draft→StableICU 60
-| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const& | Draft→StableICU 60
-| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&& | Draft→StableICU 62
-| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&) | Draft→StableICU 62
-| numberformatter.h | Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::FractionPrecision::withMinDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Scale& icu::number::Scale::operator=(Scale&&) | Draft→StableICU 62
-| numberformatter.h | Scale& icu::number::Scale::operator=(const Scale&) | Draft→StableICU 62
-| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const | Draft→StableICU 60
-| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&) | Draft→StableICU 62
-| numberformatter.h | icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::FormattedNumber::~FormattedNumber() | Draft→StableICU 60
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default | Draft→StableICU 62
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&) | Draft→StableICU 60
-| numberformatter.h | icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter() | Draft→StableICU 60
-| numberformatter.h | icu::number::Scale::Scale(Scale&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::Scale::Scale(const Scale&) | Draft→StableICU 62
-| numberformatter.h | icu::number::Scale::~Scale() | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CompactNotation icu::number::Notation::compactLong() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CompactNotation icu::number::Notation::compactShort() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::fixedFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::integer() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::maxFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::minFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> IncrementPrecision icu::number::Precision::increment(double) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> Precision icu::number::Precision::unlimited() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDecimal(StringPiece) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDouble(double) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::none() | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::powerOfTen(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> ScientificNotation icu::number::Notation::engineering() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> ScientificNotation icu::number::Notation::scientific() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SimpleNotation icu::number::Notation::simple() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::with() | Draft→StableICU 60
-| numberrangeformatter.h | Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&) | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const& | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&& | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::FormattedNumberRange::~FormattedNumberRange() | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter() | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>static</tt> LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>static</tt> UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with() | Draft→StableICU 63
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER | Draft→StableICU 63
-| uchar.h | const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*) | Draft→StableICU 63
-| uchar.h | const USet* u_getBinaryPropertySet(UProperty, UErrorCode*) | Draft→StableICU 63
-| ucpmap.h | UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_NORMAL | Draft→StableICU 63
-| ucpmap.h | uint32_t ucpmap_get(const UCPMap*, UChar32) | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_16 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_32 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_8 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_ASCII_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_BMP_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_SUPP_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U16_NEXT | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U16_PREV | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U8_NEXT | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U8_PREV | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_SMALL_GET | Draft→StableICU 63
-| ucptrie.h | UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*) | Draft→StableICU 63
-| ucptrie.h | UCPTrieType ucptrie_getType(const UCPTrie*) | Draft→StableICU 63
-| ucptrie.h | UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*) | Draft→StableICU 63
-| ucptrie.h | UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_ANY | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_FAST | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_SMALL | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY | Draft→StableICU 63
-| ucptrie.h | int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*) | Draft→StableICU 63
-| ucptrie.h | uint32_t ucptrie_get(const UCPTrie*, UChar32) | Draft→StableICU 63
-| ucptrie.h | void ucptrie_close(UCPTrie*) | Draft→StableICU 63
-| umutablecptrie.h | UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| umutablecptrie.h | uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_close(UMutableCPTrie*) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63
-| unumberformatter.h | <tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_AUTO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_MIN2 | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_OFF | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_AUTO | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEVER | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT | Draft→StableICU 60
-| uspoof.h | <tt>enum</tt> USpoofChecks::USPOOF_HIDDEN_OVERLAY | Draft→StableICU 62
-| utf_old.h | <tt>#define</tt> U_HIDE_OBSOLETE_UTF_OLD_H | DeprecatedICU 2.4 | Internal
+| bytestrie.h | BytesTrie& icu::BytesTrie::resetToState64(uint64_t) | Draft→StableICU 65
+| bytestrie.h | uint64_t icu::BytesTrie::getState64() const | Draft→StableICU 65
+| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&, UListFormatterType, UListFormatterWidth, UErrorCode&) | Draft→StableICU 67
+| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::operator=(Builder&&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) | Draft→StableICU 65
+| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&) | Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Result& icu::LocaleMatcher::Result::operator=(Result&&) | Draft→StableICU 65
+| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::~Builder() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::Result(Result&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::~Result() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() | Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const | Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const | Draft→StableICU 65
+| locid.h | UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override | Draft→StableICU 65
+| locid.h | UBool icu::Locale::Iterator::hasNext() const | Draft→StableICU 65
+| locid.h | UBool icu::Locale::RangeIterator< Iter >::hasNext() const override | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::Iterator::next() | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::RangeIterator< Iter >::next() override | Draft→StableICU 65
+| locid.h | icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv) | Draft→StableICU 65
+| locid.h | icu::Locale::Iterator::~Iterator() | Draft→StableICU 65
+| locid.h | icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&) | Draft→StableICU 65
+| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const | Draft→StableICU 65
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const | DraftICU 63 | DeprecatedICU 68
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const | DraftICU 63 | DeprecatedICU 68
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR | Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE | Draft→StableICU 65
+| stringpiece.h | icu::StringPiece::StringPiece(T) | Draft→StableICU 65
+| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) | Draft→StableICU 65
+| ucharstrie.h | UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t) | Draft→StableICU 65
+| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const | Draft→StableICU 65
+| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE | Draft→StableICU 67
+| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES | Draft→StableICU 65
+| umachine.h | <tt>#define</tt> FALSE | StableICU 2.0 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> TRUE | StableICU 2.0 | DeprecatedICU 68
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START | Draft→StableICU 65
## Promoted
-Promoted to stable in ICU 65
+Promoted to stable in ICU 68
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
-| basictz.h | void* icu::BasicTimeZone::clone() const | (missing) | StableICU 3.8
-| datefmt.h | void* icu::DateFormat::clone() const | (missing) | StableICU 2.0
-| decimfmt.h | int32_t icu::DecimalFormat::getMultiplierScale() const | Draft→StableICU 62
-| decimfmt.h | void icu::DecimalFormat::setMultiplierScale(int32_t) | Draft→StableICU 62
-| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) const | (missing) | StableICU 59
-| locid.h | Locale& icu::Locale::operator=(Locale&&) | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::getKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::getUnicodeKeywordValue(StringPiece, UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringClass icu::Locale::toLanguageTag(UErrorCode&) const | Draft→StableICU 63
-| locid.h | StringEnumeration* icu::Locale::createUnicodeKeywords(UErrorCode&) const | Draft→StableICU 63
-| locid.h | icu::Locale::Locale(Locale&&) | Draft→StableICU 63
-| locid.h | <tt>static</tt> Locale icu::Locale::forLanguageTag(StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::addLikelySubtags(UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::getKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getUnicodeKeywordValue(StringPiece, ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::getUnicodeKeywords(OutputIterator, UErrorCode&) const | Draft→StableICU 63
-| locid.h | void icu::Locale::minimizeSubtags(UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::setKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::setUnicodeKeywordValue(StringPiece, StringPiece, UErrorCode&) | Draft→StableICU 63
-| locid.h | void icu::Locale::toLanguageTag(ByteSink&, UErrorCode&) const | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createAtmosphere(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPercent(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermille(UErrorCode&) | Draft→StableICU 63
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPetabyte(UErrorCode&) | Draft→StableICU 63
-| numberformatter.h | Appendable& icu::number::FormattedNumber::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::decimal(UNumberDecimalSeparatorDisplay)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::grouping(UNumberGroupingStrategy)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&) const& | Draft→StableICU 61
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::precision(const Precision&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::roundingMode(UNumberFormatRoundingMode)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&) const& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::scale(const Scale&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::sign(UNumberSignDisplay)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)&& | Draft→StableICU 62
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth) const& | Draft→StableICU 60
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::unitWidth(UNumberUnitWidth)&& | Draft→StableICU 62
-| numberformatter.h | Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | FormattedNumber& icu::number::FormattedNumber::operator=(FormattedNumber&&) | Draft→StableICU 62
-| numberformatter.h | IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t) | Draft→StableICU 60
-| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&) const& | Draft→StableICU 60
-| numberformatter.h | LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)&& | Draft→StableICU 62
-| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | LocalizedNumberFormatter& icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&) | Draft→StableICU 62
-| numberformatter.h | Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::FractionPrecision::withMinDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const | Draft→StableICU 60
-| numberformatter.h | Scale& icu::number::Scale::operator=(Scale&&) | Draft→StableICU 62
-| numberformatter.h | Scale& icu::number::Scale::operator=(const Scale&) | Draft→StableICU 62
-| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const | Draft→StableICU 60
-| numberformatter.h | ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const | Draft→StableICU 60
-| numberformatter.h | UBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 60
-| numberformatter.h | UnicodeString icu::number::FormattedNumber::toString(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | UnicodeString icu::number::NumberFormatterSettings< Derived >::toSkeleton(UErrorCode&) const | Draft→StableICU 62
-| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(UnlocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | UnlocalizedNumberFormatter& icu::number::UnlocalizedNumberFormatter::operator=(const UnlocalizedNumberFormatter&) | Draft→StableICU 62
-| numberformatter.h | icu::number::FormattedNumber::FormattedNumber(FormattedNumber&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::FormattedNumber::~FormattedNumber() | Draft→StableICU 60
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter()=default | Draft→StableICU 62
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&) | Draft→StableICU 60
-| numberformatter.h | icu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter() | Draft→StableICU 60
-| numberformatter.h | icu::number::Scale::Scale(Scale&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::Scale::Scale(const Scale&) | Draft→StableICU 62
-| numberformatter.h | icu::number::Scale::~Scale() | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter()=default | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&&) | Draft→StableICU 62
-| numberformatter.h | icu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CompactNotation icu::number::Notation::compactLong() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CompactNotation icu::number::Notation::compactShort() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> CurrencyPrecision icu::number::Precision::currency(UCurrencyUsage) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::fixedFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::integer() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::maxFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::minFraction(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> FractionPrecision icu::number::Precision::minMaxFraction(int32_t, int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> IncrementPrecision icu::number::Precision::increment(double) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&) | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> Precision icu::number::Precision::unlimited() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDecimal(StringPiece) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDouble(double) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::byDoubleAndPowerOfTen(double, int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::none() | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> Scale icu::number::Scale::powerOfTen(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> ScientificNotation icu::number::Notation::engineering() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> ScientificNotation icu::number::Notation::scientific() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::fixedSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::maxSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minMaxSignificantDigits(int32_t, int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SignificantDigitsPrecision icu::number::Precision::minSignificantDigits(int32_t) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> SimpleNotation icu::number::Notation::simple() | Draft→StableICU 60
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UErrorCode&) | Draft→StableICU 62
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::with() | Draft→StableICU 60
-| numberrangeformatter.h | Appendable& icu::number::FormattedNumberRange::appendTo(Appendable&, UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::collapse(UNumberRangeCollapse)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::identityFallback(UNumberRangeIdentityFallback)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterBoth(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterFirst(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(UnlocalizedNumberFormatter&&)&& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&) const& | Draft→StableICU 63
-| numberrangeformatter.h | Derived icu::number::NumberRangeFormatterSettings< Derived >::numberFormatterSecond(const UnlocalizedNumberFormatter&)&& | Draft→StableICU 63
-| numberrangeformatter.h | FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&, const Formattable&, UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | FormattedNumberRange& icu::number::FormattedNumberRange::operator=(FormattedNumberRange&&) | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&) const& | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&)&& | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | LocalizedNumberRangeFormatter& icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | UBool icu::number::NumberRangeFormatterSettings< Derived >::copyErrorTo(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&) const | Draft→StableICU 63
-| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | UnlocalizedNumberRangeFormatter& icu::number::UnlocalizedNumberRangeFormatter::operator=(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_ALL | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_AUTO | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_NONE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeCollapse::UNUM_RANGE_COLLAPSE_UNIT | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_APPROXIMATELY | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_RANGE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityFallback::UNUM_IDENTITY_FALLBACK_SINGLE_VALUE | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING | Draft→StableICU 63
-| numberrangeformatter.h | <tt>enum</tt> UNumberRangeIdentityResult::UNUM_IDENTITY_RESULT_NOT_EQUAL | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange(FormattedNumberRange&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::FormattedNumberRange::~FormattedNumberRange() | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter()=default | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const LocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::LocalizedNumberRangeFormatter::~LocalizedNumberRangeFormatter() | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter()=default | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&&) | Draft→StableICU 63
-| numberrangeformatter.h | icu::number::UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const UnlocalizedNumberRangeFormatter&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>static</tt> LocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::withLocale(const Locale&) | Draft→StableICU 63
-| numberrangeformatter.h | <tt>static</tt> UnlocalizedNumberRangeFormatter icu::number::NumberRangeFormatter::with() | Draft→StableICU 63
-| numfmt.h | void* icu::NumberFormat::clone() const | (missing) | StableICU 2.0
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_QUARTER | Draft→StableICU 63
-| uchar.h | const UCPMap* u_getIntPropertyMap(UProperty, UErrorCode*) | Draft→StableICU 63
-| uchar.h | const USet* u_getBinaryPropertySet(UProperty, UErrorCode*) | Draft→StableICU 63
-| ucpmap.h | UChar32 ucpmap_getRange(const UCPMap*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_ALL_SURROGATES | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_FIXED_LEAD_SURROGATES | Draft→StableICU 63
-| ucpmap.h | <tt>enum</tt> UCPMapRangeOption::UCPMAP_RANGE_NORMAL | Draft→StableICU 63
-| ucpmap.h | uint32_t ucpmap_get(const UCPMap*, UChar32) | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_16 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_32 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_8 | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_ASCII_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_BMP_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_SUPP_GET | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U16_NEXT | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U16_PREV | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U8_NEXT | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_FAST_U8_PREV | Draft→StableICU 63
-| ucptrie.h | <tt>#define</tt> UCPTRIE_SMALL_GET | Draft→StableICU 63
-| ucptrie.h | UCPTrie* ucptrie_openFromBinary(UCPTrieType, UCPTrieValueWidth, const void*, int32_t, int32_t*, UErrorCode*) | Draft→StableICU 63
-| ucptrie.h | UCPTrieType ucptrie_getType(const UCPTrie*) | Draft→StableICU 63
-| ucptrie.h | UCPTrieValueWidth ucptrie_getValueWidth(const UCPTrie*) | Draft→StableICU 63
-| ucptrie.h | UChar32 ucptrie_getRange(const UCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_ANY | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_FAST | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieType::UCPTRIE_TYPE_SMALL | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_16 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_32 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_8 | Draft→StableICU 63
-| ucptrie.h | <tt>enum</tt> UCPTrieValueWidth::UCPTRIE_VALUE_BITS_ANY | Draft→StableICU 63
-| ucptrie.h | int32_t ucptrie_toBinary(const UCPTrie*, void*, int32_t, UErrorCode*) | Draft→StableICU 63
-| ucptrie.h | uint32_t ucptrie_get(const UCPTrie*, UChar32) | Draft→StableICU 63
-| ucptrie.h | void ucptrie_close(UCPTrie*) | Draft→StableICU 63
-| umutablecptrie.h | UCPTrie* umutablecptrie_buildImmutable(UMutableCPTrie*, UCPTrieType, UCPTrieValueWidth, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_clone(const UMutableCPTrie*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPMap(const UCPMap*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_fromUCPTrie(const UCPTrie*, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UMutableCPTrie* umutablecptrie_open(uint32_t, uint32_t, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | UChar32 umutablecptrie_getRange(const UMutableCPTrie*, UChar32, UCPMapRangeOption, uint32_t, UCPMapValueFilter*, const void*, uint32_t*) | Draft→StableICU 63
-| umutablecptrie.h | uint32_t umutablecptrie_get(const UMutableCPTrie*, UChar32) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_close(UMutableCPTrie*) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_set(UMutableCPTrie*, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63
-| umutablecptrie.h | void umutablecptrie_setRange(UMutableCPTrie*, UChar32, UChar32, uint32_t, UErrorCode*) | Draft→StableICU 63
-| unifilt.h | void* icu::UnicodeFilter::clone() const | (missing) | StableICU 2.4
-| unumberformatter.h | <tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_AUTO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_MIN2 | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_OFF | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_ON_ALIGNED | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberGroupingStrategy::UNUM_GROUPING_THOUSANDS | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ALWAYS | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_AUTO | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO | Draft→StableICU 61
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEVER | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW | Draft→StableICU 60
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT | Draft→StableICU 60
-| uspoof.h | <tt>enum</tt> USpoofChecks::USPOOF_HIDDEN_OVERLAY | Draft→StableICU 62
+| bytestrie.h | BytesTrie& icu::BytesTrie::resetToState64(uint64_t) | Draft→StableICU 65
+| bytestrie.h | uint64_t icu::BytesTrie::getState64() const | Draft→StableICU 65
+| fmtable.h | UFormattable* icu::Formattable::toUFormattable() | (missing) | StableICU 52
+| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&, UListFormatterType, UListFormatterWidth, UErrorCode&) | Draft→StableICU 67
+| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::operator=(Builder&&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) | Draft→StableICU 65
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) | Draft→StableICU 65
+| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&) | Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | Result& icu::LocaleMatcher::Result::operator=(Result&&) | Draft→StableICU 65
+| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE | Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::~Builder() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::Result(Result&&) | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::~Result() | Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() | Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const | Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const | Draft→StableICU 65
+| locid.h | UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override | Draft→StableICU 65
+| locid.h | UBool icu::Locale::Iterator::hasNext() const | Draft→StableICU 65
+| locid.h | UBool icu::Locale::RangeIterator< Iter >::hasNext() const override | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::Iterator::next() | Draft→StableICU 65
+| locid.h | const Locale& icu::Locale::RangeIterator< Iter >::next() override | Draft→StableICU 65
+| locid.h | icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv) | Draft→StableICU 65
+| locid.h | icu::Locale::Iterator::~Iterator() | Draft→StableICU 65
+| locid.h | icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&) | Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&) | Draft→StableICU 65
+| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const | Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR | Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE | Draft→StableICU 65
+| stringpiece.h | icu::StringPiece::StringPiece(T) | Draft→StableICU 65
+| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) | Draft→StableICU 65
+| ucharstrie.h | UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t) | Draft→StableICU 65
+| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const | Draft→StableICU 65
+| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT | Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE | Draft→StableICU 67
+| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES | Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES | Draft→StableICU 65
+| uniset.h | USet* icu::UnicodeSet::toUSet() | (missing) | StableICU 4.2
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE | Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START | Draft→StableICU 65
## Added
-Added in ICU 65
+Added in ICU 68
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
-| basictz.h | void* icu::BasicTimeZone::clone() const | (missing) | StableICU 3.8
-| bytestrie.h | BytesTrie& icu::BytesTrie::resetToState64(uint64_t) | (missing) | DraftICU 65
-| bytestrie.h | uint64_t icu::BytesTrie::getState64() const | (missing) | DraftICU 65
-| datefmt.h | void* icu::DateFormat::clone() const | (missing) | StableICU 2.0
-| edits.h | UBool icu::Edits::copyErrorTo(UErrorCode&) const | (missing) | StableICU 59
-| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::operator=(Builder&&) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) | (missing) | DraftICU 65
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) | (missing) | DraftICU 65
-| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | LocaleMatcher& icu::LocaleMatcher::operator=(LocaleMatcher&&) | (missing) | DraftICU 65
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&, UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&, UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | Result& icu::LocaleMatcher::Result::operator=(Result&&) | (missing) | DraftICU 65
-| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const | (missing) | DraftICU 65
-| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const | (missing) | DraftICU 65
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&, UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&, UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&) const | (missing) | DraftICU 65
-| localematcher.h | double icu::LocaleMatcher::internalMatch(const Locale&, const Locale&, UErrorCode&) const | (missing) | Internal
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE | (missing) | DraftICU 65
-| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION | (missing) | DraftICU 65
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE | (missing) | DraftICU 65
-| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::Builder::Builder() | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&&) | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::Builder::~Builder() | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&&) | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::Result::Result(Result&&) | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::Result::~Result() | (missing) | DraftICU 65
-| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() | (missing) | DraftICU 65
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const | (missing) | DraftICU 65
-| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const | (missing) | DraftICU 65
-| locid.h | UBool icu::Locale::ConvertingIterator< Iter, Conv >::hasNext() const override | (missing) | DraftICU 65
-| locid.h | UBool icu::Locale::Iterator::hasNext() const | (missing) | DraftICU 65
-| locid.h | UBool icu::Locale::RangeIterator< Iter >::hasNext() const override | (missing) | DraftICU 65
-| locid.h | const Locale& icu::Locale::ConvertingIterator< Iter, Conv >::next() override | (missing) | DraftICU 65
-| locid.h | const Locale& icu::Locale::Iterator::next() | (missing) | DraftICU 65
-| locid.h | const Locale& icu::Locale::RangeIterator< Iter >::next() override | (missing) | DraftICU 65
-| locid.h | icu::Locale::ConvertingIterator< Iter, Conv >::ConvertingIterator(Iter, Iter, Conv) | (missing) | DraftICU 65
-| locid.h | icu::Locale::Iterator::~Iterator() | (missing) | DraftICU 65
-| locid.h | icu::Locale::RangeIterator< Iter >::RangeIterator(Iter, Iter) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&) | (missing) | DraftICU 65
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&) | (missing) | DraftICU 65
-| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&) const | (missing) | DraftICU 65
-| numfmt.h | void* icu::NumberFormat::clone() const | (missing) | StableICU 2.0
-| platform.h | <tt>#define</tt> UPRV_HAS_ATTRIBUTE | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_BUILTIN | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_CPP_ATTRIBUTE | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_DECLSPEC_ATTRIBUTE | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_EXTENSION | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_FEATURE | (missing) | Internal
-| platform.h | <tt>#define</tt> UPRV_HAS_WARNING | (missing) | Internal
-| platform.h | <tt>#define</tt> U_PF_EMSCRIPTEN | (missing) | Internal
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR | (missing) | DraftICU 65
-| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE | (missing) | DraftICU 65
-| stringpiece.h | icu::StringPiece::StringPiece(T) | (missing) | DraftICU 65
-| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 65
-| ucharstrie.h | UCharsTrie& icu::UCharsTrie::resetToState64(uint64_t) | (missing) | DraftICU 65
-| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const | (missing) | DraftICU 65
-| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) | (missing) | DraftICU 65
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_COUNT | (missing) | Internal
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT | (missing) | DraftICU 65
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES | (missing) | DraftICU 65
-| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES | (missing) | DraftICU 65
-| umachine.h | <tt>#define</tt> UPRV_BLOCK_MACRO_BEGIN | (missing) | Internal
-| umachine.h | <tt>#define</tt> UPRV_BLOCK_MACRO_END | (missing) | Internal
-| unifilt.h | void* icu::UnicodeFilter::clone() const | (missing) | StableICU 2.4
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_RES_DATA_LIMIT | (missing) | Internal
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE | (missing) | DraftICU 65
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE | (missing) | DraftICU 65
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RESOURCE | (missing) | DraftICU 65
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE | (missing) | DraftICU 65
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START | (missing) | DraftICU 65
+| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const | (missing) | DraftICU 68
+| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&) | (missing) | DraftICU 68
+| dtptngen.h | <tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&, UErrorCode&) | (missing) | Internal
+| fmtable.h | UFormattable* icu::Formattable::toUFormattable() | (missing) | StableICU 52
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&) | (missing) | DraftICU 68
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale() | (missing) | DraftICU 68
+| localematcher.h | UBool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const | (missing) | DraftICU 68
+| measunit.h | int32_t icu::MeasureUnit::getOffset() const | (missing) | Internal
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&) | (missing) | DraftICU 68
+| measunit.h | std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const | (missing) | DraftICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const& | (missing) | DraftICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&& | (missing) | DraftICU 68
+| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const | (missing) | DraftICU 68
+| numberformatter.h | Usage& icu::number::impl::Usage::operator=(Usage&&) | (missing) | Internal
+| numberformatter.h | Usage& icu::number::impl::Usage::operator=(const Usage&) | (missing) | Internal
+| numberformatter.h | bool icu::number::impl::Usage::isSet() const | (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::Usage(Usage&&) | (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::Usage(const Usage&) | (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::~Usage() | (missing) | Internal
+| numberformatter.h | int16_t icu::number::impl::Usage::length() const | (missing) | Internal
+| numberformatter.h | void icu::number::impl::Usage::set(StringPiece) | (missing) | Internal
+| numberrangeformatter.h | std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const | (missing) | DraftICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const | (missing) | DraftICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&) const | (missing) | Internal
+| plurrule.h | int32_t icu::PluralRules::getSamples(const UnicodeString&, FixedDecimal*, int32_t, UErrorCode&) | (missing) | Internal
+| timezone.h | <tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&) | (missing) | Internal
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME | (missing) | DraftICU 68
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME | (missing) | DraftICU 68
+| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) | (missing) | DraftICU 68
+| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) | (missing) | DraftICU 68
+| umachine.h | <tt>#define</tt> U_DEFINE_FALSE_AND_TRUE | (missing) | InternalICU 68
+| uniset.h | USet* icu::UnicodeSet::toUSet() | (missing) | StableICU 4.2
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO | (missing) | DraftICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 | (missing) | DraftICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL | (missing) | DraftICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT | (missing) | DraftICU 68
+| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) | (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) | (missing) | DraftICU 68
+| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 68
## Other
-Other existing drafts in ICU 65
+Other existing drafts in ICU 68
-| File | API | ICU 64 | ICU 65 |
+| File | API | ICU 67 | ICU 68 |
|---|---|---|---|
-| currunit.h | icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&) | DraftICU 64 |
-| decimfmt.h | UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const | DraftICU 64 |
-| decimfmt.h | UBool icu::DecimalFormat::isParseCaseSensitive() const | DraftICU 64 |
-| decimfmt.h | UBool icu::DecimalFormat::isParseNoExponent() const | DraftICU 64 |
-| decimfmt.h | UBool icu::DecimalFormat::isSignAlwaysShown() const | DraftICU 64 |
-| decimfmt.h | const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&) const | DraftICU 64 |
-| decimfmt.h | int32_t icu::DecimalFormat::getMinimumGroupingDigits() const | DraftICU 64 |
-| decimfmt.h | void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool) | DraftICU 64 |
-| decimfmt.h | void icu::DecimalFormat::setMinimumGroupingDigits(int32_t) | DraftICU 64 |
-| decimfmt.h | void icu::DecimalFormat::setParseCaseSensitive(UBool) | DraftICU 64 |
-| decimfmt.h | void icu::DecimalFormat::setParseNoExponent(UBool) | DraftICU 64 |
-| decimfmt.h | void icu::DecimalFormat::setSignAlwaysShown(UBool) | DraftICU 64 |
-| dtitvfmt.h | Appendable& icu::FormattedDateInterval::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&, Calendar&, UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&, UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | FormattedDateInterval& icu::FormattedDateInterval::operator=(FormattedDateInterval&&) | DraftICU 64 |
-| dtitvfmt.h | UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toString(UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&) const | DraftICU 64 |
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval() | DraftICU 64 |
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&&) | DraftICU 64 |
-| dtitvfmt.h | icu::FormattedDateInterval::~FormattedDateInterval() | DraftICU 64 |
-| formattedvalue.h | Appendable& icu::FormattedValue::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 |
-| formattedvalue.h | UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const | DraftICU 64 |
-| formattedvalue.h | UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| formattedvalue.h | UnicodeString icu::FormattedValue::toString(UErrorCode&) const | DraftICU 64 |
-| formattedvalue.h | UnicodeString icu::FormattedValue::toTempString(UErrorCode&) const | DraftICU 64 |
-| formattedvalue.h | icu::ConstrainedFieldPosition::ConstrainedFieldPosition() | DraftICU 64 |
-| formattedvalue.h | icu::ConstrainedFieldPosition::~ConstrainedFieldPosition() | DraftICU 64 |
-| formattedvalue.h | icu::FormattedValue::~FormattedValue() | DraftICU 64 |
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getCategory() const | DraftICU 64 |
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getField() const | DraftICU 64 |
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getLimit() const | DraftICU 64 |
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getStart() const | DraftICU 64 |
-| formattedvalue.h | int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const | DraftICU 64 |
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainCategory(int32_t) | DraftICU 64 |
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t) | DraftICU 64 |
-| formattedvalue.h | void icu::ConstrainedFieldPosition::reset() | DraftICU 64 |
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t) | DraftICU 64 |
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t) | DraftICU 64 |
-| listformatter.h | Appendable& icu::FormattedList::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 |
-| listformatter.h | FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&) const | DraftICU 64 |
-| listformatter.h | FormattedList& icu::FormattedList::operator=(FormattedList&&) | DraftICU 64 |
-| listformatter.h | UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| listformatter.h | UnicodeString icu::FormattedList::toString(UErrorCode&) const | DraftICU 64 |
-| listformatter.h | UnicodeString icu::FormattedList::toTempString(UErrorCode&) const | DraftICU 64 |
-| listformatter.h | UnicodeString& icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&, FieldPositionIterator*, UErrorCode&) const | DraftICU 63 |
-| listformatter.h | icu::FormattedList::FormattedList() | DraftICU 64 |
-| listformatter.h | icu::FormattedList::FormattedList(FormattedList&&) | DraftICU 64 |
-| listformatter.h | icu::FormattedList::~FormattedList() | DraftICU 64 |
-| localebuilder.h | Locale icu::LocaleBuilder::build(UErrorCode&) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::clear() | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::clearExtensions() | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setExtension(char, StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLanguage(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLanguageTag(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setLocale(const Locale&) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setRegion(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setScript(StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece) | DraftICU 64 |
-| localebuilder.h | LocaleBuilder& icu::LocaleBuilder::setVariant(StringPiece) | DraftICU 64 |
-| localebuilder.h | icu::LocaleBuilder::LocaleBuilder() | DraftICU 64 |
-| localebuilder.h | icu::LocaleBuilder::~LocaleBuilder() | DraftICU 64 |
-| localpointer.h | LocalArray<T>& icu::LocalArray< T >::operator=(std::unique_ptr< T[]>&&) | DraftICU 64 |
-| localpointer.h | LocalPointer<T>& icu::LocalPointer< T >::operator=(std::unique_ptr< T >&&) | DraftICU 64 |
-| localpointer.h | icu::LocalArray< T >::LocalArray(std::unique_ptr< T[]>&&) | DraftICU 64 |
-| localpointer.h | icu::LocalArray< T >::operator std::unique_ptr< T[]>() && | DraftICU 64 |
-| localpointer.h | icu::LocalPointer< T >::LocalPointer(std::unique_ptr< T >&&) | DraftICU 64 |
-| localpointer.h | icu::LocalPointer< T >::operator std::unique_ptr< T >() && | DraftICU 64 |
+| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) | DraftICU 67 |
+| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) | DraftICU 67 |
+| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&) const | DraftICU 67 |
+| localematcher.h | Builder& icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) | DraftICU 67 |
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY | DraftICU 67 |
+| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY | DraftICU 67 |
+| locid.h | void icu::Locale::canonicalize(UErrorCode&) | DraftICU 67 |
| measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | DraftICU 53 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getByte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCup() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDay() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGram() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHour() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInch() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLux() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMile() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMole() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPint() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPound() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getStone() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTon() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYard() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYear() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson() | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&) | DraftICU 64 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&) | DraftICU 64 |
-| nounit.h | UClassID icu::NoUnit::getDynamicClassID() const | DraftICU 60 |
-| nounit.h | icu::NoUnit::NoUnit(const NoUnit&) | DraftICU 60 |
-| nounit.h | icu::NoUnit::~NoUnit() | DraftICU 60 |
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::base() | DraftICU 60 |
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::percent() | DraftICU 60 |
-| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::permille() | DraftICU 60 |
-| nounit.h | <tt>static</tt> UClassID icu::NoUnit::getStaticClassID() | DraftICU 60 |
-| nounit.h | void* icu::NoUnit::clone() const | DraftICU 60 |
-| numberformatter.h | LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() && | DraftICU 64 |
-| numberformatter.h | LocalPointer<Derived> icu::number::NumberFormatterSettings< Derived >::clone() const & | DraftICU 64 |
-| numberformatter.h | UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&, UErrorCode&) const | DraftICU 62 |
-| numberformatter.h | UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| numberformatter.h | UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&) const | DraftICU 64 |
-| numberformatter.h | icu::number::FormattedNumber::FormattedNumber() | DraftICU 64 |
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&, UParseError&, UErrorCode&) | DraftICU 64 |
-| numberformatter.h | void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const | DraftICU 62 |
-| numberrangeformatter.h | LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() && | DraftICU 64 |
-| numberrangeformatter.h | LocalPointer<Derived> icu::number::NumberRangeFormatterSettings< Derived >::clone() const & | DraftICU 64 |
-| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&, UErrorCode&) const | DraftICU 63 |
-| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&) const | DraftICU 63 |
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&) const | DraftICU 63 |
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&) const | DraftICU 64 |
-| numberrangeformatter.h | void icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&, UErrorCode&) const | DraftICU 63 |
-| numfmt.h | <tt>enum</tt> icu::NumberFormat::EAlignmentFields::kCompactField | DraftICU 64 |
-| numfmt.h | <tt>enum</tt> icu::NumberFormat::EAlignmentFields::kMeasureUnitField | DraftICU 64 |
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumber&, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | Appendable& icu::FormattedRelativeDateTime::appendTo(Appendable&, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | FormattedRelativeDateTime& icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&&) | DraftICU 64 |
-| reldatefmt.h | UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&) const | DraftICU 64 |
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime() | DraftICU 64 |
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&&) | DraftICU 64 |
-| reldatefmt.h | icu::FormattedRelativeDateTime::~FormattedRelativeDateTime() | DraftICU 64 |
-| udateintervalformat.h | UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*) | DraftICU 64 |
-| udateintervalformat.h | const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*) | DraftICU 64 |
-| udateintervalformat.h | void udtitvfmt_closeResult(UFormattedDateInterval*) | DraftICU 64 |
-| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | UConstrainedFieldPosition* ucfpos_open(UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME | DraftICU 64 |
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED | DraftICU 64 |
-| uformattedvalue.h | int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_close(UConstrainedFieldPosition*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*) | DraftICU 64 |
-| uformattedvalue.h | void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*) | DraftICU 64 |
-| ulistformatter.h | UFormattedList* ulistfmt_openResult(UErrorCode*) | DraftICU 64 |
-| ulistformatter.h | const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*) | DraftICU 64 |
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD | DraftICU 63 |
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD | DraftICU 63 |
-| ulistformatter.h | void ulistfmt_closeResult(UFormattedList*) | DraftICU 64 |
-| ulistformatter.h | void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*) | DraftICU 64 |
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS | DraftICU 64 |
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE | DraftICU 64 |
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN | DraftICU 64 |
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD | DraftICU 64 |
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD | DraftICU 64 |
-| unumberformatter.h | UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*) | DraftICU 64 |
-| unumberformatter.h | const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*) | DraftICU 64 |
-| upluralrules.h | int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*) | DraftICU 64 |
+| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&, UErrorCode&) const | DraftICU 67 |
+| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&) const | DraftICU 67 |
+| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&) const | DraftICU 67 |
+| measunit.h | MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&) const | DraftICU 67 |
+| measunit.h | MeasureUnit& icu::MeasureUnit::operator=(MeasureUnit&&) noexcept | DraftICU 67 |
+| measunit.h | UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&) const | DraftICU 67 |
+| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&) const | DraftICU 67 |
+| measunit.h | const char* icu::MeasureUnit::getIdentifier() const | DraftICU 67 |
+| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&&) noexcept | DraftICU 67 |
+| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&) const | DraftICU 67 |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&) | DraftICU 67 |
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) | DraftICU 67 |
+| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) | DraftICU 67 |
+| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&) | DraftICU 67 |
+| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) | DraftICU 67 |
+| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) | DraftICU 67 |
+| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) | DraftICU 67 |
+| stringpiece.h | void icu::StringPiece::set(const char8_t*) | DraftICU 67 |
+| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) | DraftICU 67 |
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 | DraftICU 67 |
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 | DraftICU 67 |
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 | DraftICU 67 |
+| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 | DraftICU 67 |
+| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 |
+| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 |
+| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) | DraftICU 67 |
| uregex.h | <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 |
-| ureldatefmt.h | UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*) | DraftICU 64 |
-| ureldatefmt.h | const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 |
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD | DraftICU 64 |
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD | DraftICU 64 |
-| ureldatefmt.h | void ureldatefmt_closeResult(UFormattedRelativeDateTime*) | DraftICU 64 |
-| ureldatefmt.h | void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 |
-| ureldatefmt.h | void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) | DraftICU 64 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD | DraftICU 67 |
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START | DraftICU 67 |
## Simplifications
@@ -984,109 +386,10 @@
This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
all possible variations in "original" form.
-- **`void* icu::ChoiceFormat::clone() const`**
- - `ChoiceFormat* icu::ChoiceFormat::clone() const`
- - `Format* icu::ChoiceFormat::clone() const`
-- **`void* icu::CompactDecimalFormat::clone() const`**
- - `CompactDecimalFormat* icu::CompactDecimalFormat::clone() const U_OVERRIDE`
- - `Format* icu::CompactDecimalFormat::clone() const U_OVERRIDE`
-- **`void* icu::CurrencyAmount::clone() const`**
- - `CurrencyAmount* icu::CurrencyAmount::clone() const`
- - `UObject* icu::CurrencyAmount::clone() const`
-- **`void* icu::CurrencyUnit::clone() const`**
- - `CurrencyUnit* icu::CurrencyUnit::clone() const`
- - `UObject* icu::CurrencyUnit::clone() const`
-- **`void* icu::DateIntervalFormat::clone() const`**
- - `DateIntervalFormat* icu::DateIntervalFormat::clone() const`
- - `Format* icu::DateIntervalFormat::clone() const`
-- **`void* icu::DecimalFormat::clone() const`**
- - `DecimalFormat* icu::DecimalFormat::clone() const U_OVERRIDE`
- - `Format* icu::DecimalFormat::clone() const U_OVERRIDE`
-- **`void* icu::GregorianCalendar::clone() const`**
- - `Calendar* icu::GregorianCalendar::clone() const`
- - `GregorianCalendar* icu::GregorianCalendar::clone() const`
-- **`void* icu::Measure::clone() const`**
- - `Measure* icu::Measure::clone() const`
- - `UObject* icu::Measure::clone() const`
-- **`void* icu::MeasureFormat::clone() const`**
- - `Format* icu::MeasureFormat::clone() const`
- - `MeasureFormat* icu::MeasureFormat::clone() const`
-- **`void* icu::MeasureUnit::clone() const`**
- - `MeasureUnit* icu::MeasureUnit::clone() const`
- - `UObject* icu::MeasureUnit::clone() const`
-- **`void* icu::MessageFormat::clone() const`**
- - `Format* icu::MessageFormat::clone() const`
- - `MessageFormat* icu::MessageFormat::clone() const`
-- **`void* icu::NoUnit::clone() const`**
- - `NoUnit* icu::NoUnit::clone() const`
- - `UObject* icu::NoUnit::clone() const`
-- **`void* icu::PluralFormat::clone() const`**
- - `Format* icu::PluralFormat::clone() const`
- - `PluralFormat* icu::PluralFormat::clone() const`
-- **`void* icu::RuleBasedBreakIterator::clone() const`**
- - `BreakIterator* icu::RuleBasedBreakIterator::clone() const`
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const`
-- **`void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`**
- - `BreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`
-- **`void* icu::RuleBasedCollator::clone() const`**
- - `Collator* icu::RuleBasedCollator::clone() const`
- - `RuleBasedCollator* icu::RuleBasedCollator::clone() const`
-- **`void* icu::RuleBasedNumberFormat::clone() const`**
- - `Format* icu::RuleBasedNumberFormat::clone() const`
- - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const`
-- **`void* icu::RuleBasedTimeZone::clone() const`**
- - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const`
- - `TimeZone* icu::RuleBasedTimeZone::clone() const`
-- **`void* icu::SelectFormat::clone() const`**
- - `Format* icu::SelectFormat::clone() const`
- - `SelectFormat* icu::SelectFormat::clone() const`
-- **`void* icu::SimpleDateFormat::clone() const`**
- - `Format* icu::SimpleDateFormat::clone() const`
- - `SimpleDateFormat* icu::SimpleDateFormat::clone() const`
-- **`void* icu::SimpleTimeZone::clone() const`**
- - `SimpleTimeZone* icu::SimpleTimeZone::clone() const`
- - `TimeZone* icu::SimpleTimeZone::clone() const`
-- **`void* icu::StringCharacterIterator::clone() const`**
- - `CharacterIterator* icu::StringCharacterIterator::clone() const`
- - `StringCharacterIterator* icu::StringCharacterIterator::clone() const`
-- **`void* icu::StringSearch::safeClone() const`**
- - `SearchIterator* icu::StringSearch::safeClone() const`
- - `StringSearch* icu::StringSearch::safeClone() const`
-- **`void* icu::TimeUnit::clone() const`**
- - `TimeUnit* icu::TimeUnit::clone() const`
- - `UObject* icu::TimeUnit::clone() const`
-- **`void* icu::TimeUnitAmount::clone() const`**
- - `TimeUnitAmount* icu::TimeUnitAmount::clone() const`
- - `UObject* icu::TimeUnitAmount::clone() const`
-- **`void* icu::TimeUnitFormat::clone() const`**
- - `Format* icu::TimeUnitFormat::clone() const`
- - `TimeUnitFormat* icu::TimeUnitFormat::clone() const`
-- **`void* icu::TimeZoneFormat::clone() const`**
- - `Format* icu::TimeZoneFormat::clone() const`
- - `TimeZoneFormat* icu::TimeZoneFormat::clone() const`
-- **`void* icu::UCharCharacterIterator::clone() const`**
- - `CharacterIterator* icu::UCharCharacterIterator::clone() const`
- - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const`
-- **`void* icu::UnicodeSet::clone() const`**
- - `UnicodeFunctor* icu::UnicodeSet::clone() const`
- - `UnicodeSet* icu::UnicodeSet::clone() const`
-- **`void* icu::UnicodeSet::cloneAsThawed() const`**
- - `UnicodeFunctor* icu::UnicodeSet::cloneAsThawed() const`
- - `UnicodeSet* icu::UnicodeSet::cloneAsThawed() const`
-- **`void* icu::UnicodeSet::freeze()`**
- - `UnicodeFunctor* icu::UnicodeSet::freeze()`
- - `UnicodeSet* icu::UnicodeSet::freeze()`
-- **`void* icu::UnicodeString::clone() const`**
- - `Replaceable* icu::UnicodeString::clone() const`
- - `UnicodeString* icu::UnicodeString::clone() const`
-- **`void* icu::VTimeZone::clone() const`**
- - `TimeZone* icu::VTimeZone::clone() const`
- - `VTimeZone* icu::VTimeZone::clone() const`
## Colophon
-Contents generated by StableAPI tool on Wed Oct 02 10:22:36 PDT 2019
+Contents generated by StableAPI tool on Fri Oct 23 11:32:42 PDT 2020
Copyright © 2019 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html
Modified: trunk/Build/source/libs/icu/icu-src/LICENSE
===================================================================
--- trunk/Build/source/libs/icu/icu-src/LICENSE 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/LICENSE 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,6 +1,6 @@
COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
-Copyright © 1991-2019 Unicode, Inc. All rights reserved.
+Copyright © 1991-2020 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
@@ -284,9 +284,9 @@
# Copyright (c) 2013 International Business Machines Corporation
# and others. All Rights Reserved.
#
- # Project: http://code.google.com/p/lao-dictionary/
- # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ # Project: https://github.com/veer66/lao-dictionary
+ # Dictionary: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary.txt
+ # License: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary-LICENSE.txt
# (copied below)
#
# This file is derived from the above dictionary, with slight
Modified: trunk/Build/source/libs/icu/icu-src/readme.html
===================================================================
--- trunk/Build/source/libs/icu/icu-src/readme.html 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/readme.html 2021-02-13 17:46:14 UTC (rev 57727)
@@ -3,7 +3,7 @@
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
- <title>ReadMe for ICU 65.1</title>
+ <title>ReadMe for ICU 68.2</title>
<meta name="COPYRIGHT" content=
"Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html"/>
<!-- meta name="COPYRIGHT" content=
@@ -31,13 +31,16 @@
<span class="only-draft">DRAFT</span>
International Components for Unicode<br/>
<span class="only-rc">Release Candidate</span>
- <span class="only-milestone">(Milestone Release)</span>
- <abbr title="International Components for Unicode">ICU</abbr> 65.1 ReadMe
+ <!-- <span class="only-milestone">(Milestone Release)</span> -->
+ <span class="only-milestone">(Preview Release)</span>
+ <abbr title="International Components for Unicode">ICU</abbr> 68.2 ReadMe
</h1>
- <!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
- <p class="note only-milestone">This is a development milestone release of ICU
+ <!-- Most of the time we shouldn't need to comment/uncomment this paragraph, just change the body class -->
+ <!-- <p class="note only-milestone">This is a development milestone release of ICU
This milestone is intended for those wishing to get an early look at new features and API changes.
+ It is not recommended for production use.</p> -->
+ <p class="note only-milestone">This is a preview release of ICU.
It is not recommended for production use.</p>
<!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
@@ -44,7 +47,7 @@
<p class="note only-rc">This is a release candidate version of ICU4C.
It is not recommended for production use.</p>
- <p>Last updated: 2019-Sept-16<br/>
+ <p>Last updated: 2020-Dec-02<br/>
Copyright © 2016 and later: Unicode, Inc. and others. License & terms of use:
<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
Copyright © 1997-2016 International Business Machines Corporation and others.
@@ -182,7 +185,7 @@
<td>FAQ - Frequently Asked Questions about ICU</td>
<td><a href=
- "http://userguide.icu-project.org/icufaq">http://userguide.icu-project.org/icufaq</a></td>
+ "https://unicode-org.github.io/icu/userguide/icufaq">https://unicode-org.github.io/icu/userguide/icufaq</a></td>
</tr>
<tr>
@@ -189,13 +192,14 @@
<td>ICU User's Guide</td>
<td><a href=
- "http://userguide.icu-project.org/">http://userguide.icu-project.org/</a></td>
+ "https://unicode-org.github.io/icu/userguide/">https://unicode-org.github.io/icu/userguide/</a></td>
</tr>
<tr>
<td>How To Use ICU</td>
- <td><a href="http://userguide.icu-project.org/howtouseicu">http://userguide.icu-project.org/howtouseicu</a></td>
+ <td><a href=
+ "https://unicode-org.github.io/icu/userguide/howtouseicu">https://unicode-org.github.io/icu/userguide/howtouseicu</a></td>
</tr>
<tr>
@@ -233,8 +237,8 @@
<h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
- <p>See the <a href="http://site.icu-project.org/download/65">ICU 65 download page</a>
- for an overview of this release, important changes, new features, bug fixes, known issues,
+ <p>See the <a href="http://site.icu-project.org/download/68">ICU 68 download page</a>
+ for more information on this release, including any other changes, bug fixes, known issues,
changes to supported platforms and build environments,
and migration issues for existing applications migrating from previous ICU releases.</p>
@@ -281,7 +285,7 @@
<p>In the descriptions below, <strong><i><ICU></i></strong> is the full
path name of the ICU directory (the top level directory from the distribution
archives) in your file system. You can also view the <a href=
- "http://userguide.icu-project.org/design">ICU Architectural
+ "https://unicode-org.github.io/icu/userguide/design">ICU Architectural
Design</a> section of the User's Guide to see which libraries you need for
your software product. You need at least the data (<code>[lib]icudt</code>)
and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
@@ -440,7 +444,7 @@
environment variable to the out/ or the out/build/ directories, but
this is generally discouraged because most people set it incorrectly.
You can view the <a href=
- "http://userguide.icu-project.org/icudata">ICU Data
+ "https://unicode-org.github.io/icu/userguide/icudata">ICU Data
Management</a> section of the ICU User's Guide for details.</p>
</td>
</tr>
@@ -684,7 +688,7 @@
It may be hard if ICU is shipped with
another shared library (such as the Xerces-C++ XML parser)
which does not control <code>main()</code>.<br />
- See the <a href="http://userguide.icu-project.org/icudata">User Guide ICU Data</a>
+ See the <a href="https://unicode-org.github.io/icu/userguide/icudata">User Guide ICU Data</a>
chapter for more details.<br />
If possible, we recommend building the .dat package.
Specify <code>--with-data-packaging=archive</code>
@@ -720,7 +724,7 @@
<p>If ICU is installed as a system-level library, there are further
opportunities and restrictions to consider.
For details, see the <em>Using ICU as an Operating System Level Library</em>
- section of the <a href="http://userguide.icu-project.org/design">User Guide ICU Architectural Design</a> chapter.</p>
+ section of the <a href="https://unicode-org.github.io/icu/userguide/design">User Guide ICU Architectural Design</a> chapter.</p>
<ul>
<li><b>Data path:</b> For a system-level library, it is best to load
ICU data from the .dat package file because the file system path
@@ -1504,7 +1508,7 @@
operating systems that do not have a standard C++ ABI (name mangling) for
compilers, it is recommended to do this special packaging anyway. More
details on customizing ICU are available in the <a href=
- "http://userguide.icu-project.org/">User's Guide</a>. The <a href=
+ "https://unicode-org.github.io/icu/userguide/">User's Guide</a>. The <a href=
"#SourceCode">ICU Source Code Organization</a> section of this readme.html
gives a more complete description of the libraries.</p>
@@ -1533,7 +1537,7 @@
<td>Data required by the Common and I18n libraries. There are many ways
to package and <a href=
- "http://userguide.icu-project.org/icudata">customize this
+ "https://unicode-org.github.io/icu/userguide/icudata">customize this
data</a>, but by default this is all you need.</td>
</tr>
@@ -1787,7 +1791,7 @@
<p>Data files can be built on a different platform when both platforms share
the same endianness and the same charset family. This assertion does not
include platform dependent DLLs/shared/static libraries. For details see the
- User Guide <a href="http://userguide.icu-project.org/icudata">ICU
+ User Guide <a href="https://unicode-org.github.io/icu/userguide/icudata">ICU
Data</a> chapter.</p>
<p>ICU 3.6 removes the requirement that ICU be completely built in the native
Added: trunk/Build/source/libs/icu/icu-src/source/.clang-format
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/.clang-format (rev 0)
+++ trunk/Build/source/libs/icu/icu-src/source/.clang-format 2021-02-13 17:46:14 UTC (rev 57727)
@@ -0,0 +1,11 @@
+# © 2020 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+
+---
+Language: Cpp
+BasedOnStyle: LLVM
+IndentWidth: 4
+ColumnLimit: 105
+AllowShortBlocksOnASingleLine: false
+AllowShortIfStatementsOnASingleLine: true
+...
Modified: trunk/Build/source/libs/icu/icu-src/source/Doxyfile.in
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/Doxyfile.in 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/Doxyfile.in 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1310,7 +1310,7 @@
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
+# (YES) or that it should be included in the primary .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
Modified: trunk/Build/source/libs/icu/icu-src/source/Makefile.in
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/Makefile.in 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/Makefile.in 2021-02-13 17:46:14 UTC (rev 57727)
@@ -38,7 +38,7 @@
@TOOLS_TRUE@@TESTS_TRUE at TEST = test
@SAMPLES_TRUE at SAMPLE = samples
@TOOLS_TRUE at TOOLS = tools
- at TOOLS_TRUE@DATASUBDIR = data
+ at DATA_TRUE@DATASUBDIR = data
## pkgconfig setup. Always have uc and i18n. Others are optional.
ALL_PKGCONFIG_SUFFIX=uc i18n
Modified: trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.PlatformToolset.props
===================================================================
(Binary files differ)
Modified: trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.ProjectConfiguration.props
===================================================================
(Binary files differ)
Modified: trunk/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
===================================================================
(Binary files differ)
Modified: trunk/Build/source/libs/icu/icu-src/source/common/Makefile.in
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/Makefile.in 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/Makefile.in 2021-02-13 17:46:14 UTC (rev 57727)
@@ -79,45 +79,8 @@
# $(LIBICUDT) is either stub data or the real DLL common data.
LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
-OBJECTS = errorcode.o putil.o umath.o utypes.o uinvchar.o umutex.o ucln_cmn.o \
-uinit.o uobject.o cmemory.o charstr.o cstr.o \
-udata.o ucmndata.o udatamem.o umapfile.o udataswp.o utrie_swap.o ucol_swp.o utrace.o \
-uhash.o uhash_us.o uenum.o ustrenum.o uvector.o ustack.o uvectr32.o uvectr64.o \
-ucnv.o ucnv_bld.o ucnv_cnv.o ucnv_io.o ucnv_cb.o ucnv_err.o ucnvlat1.o \
-ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
-ucnv_ext.o ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o ucnvdisp.o ucnv_set.o ucnv_ct.o \
-resource.o uresbund.o ures_cnv.o uresdata.o resbund.o resbund_cnv.o \
-ucurr.o \
-localebuilder.o localeprioritylist.o \
-messagepattern.o ucat.o locmap.o uloc.o locid.o locutil.o locavailable.o locdispnames.o locdspnm.o loclikely.o locresdata.o \
-lsr.o loclikelysubtags.o locdistance.o localematcher.o \
-bytestream.o stringpiece.o bytesinkutil.o \
-stringtriebuilder.o bytestriebuilder.o \
-bytestrie.o bytestrieiterator.o \
-ucharstrie.o ucharstriebuilder.o ucharstrieiterator.o \
-dictionarydata.o \
-edits.o \
-appendable.o ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
-utf_impl.o ustring.o ustrcase.o ucasemap.o ucasemap_titlecase_brkiter.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
-unistr_case_locale.o ustrcase_locale.o unistr_titlecase_brkiter.o ustr_titlecase_brkiter.o \
-normalizer2impl.o normalizer2.o filterednormalizer2.o normlzr.o unorm.o unormcmp.o loadednormalizer2impl.o \
-chariter.o schriter.o uchriter.o uiter.o \
-patternprops.o uchar.o uprops.o ucase.o propname.o ubidi_props.o characterproperties.o \
-ubidi.o ubidiwrt.o ubidiln.o ushape.o \
-uscript.o uscript_props.o usc_impl.o unames.o \
-utrie.o utrie2.o utrie2_builder.o ucptrie.o umutablecptrie.o \
-bmpset.o unisetspan.o uset_props.o uniset_props.o uniset_closure.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \
-uarrsort.o brkiter.o ubrk.o brkeng.o dictbe.o filteredbrk.o \
-rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o rbbi_cache.o \
-serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \
-uidna.o usprep.o uts46.o punycode.o \
-util.o util_props.o parsepos.o locbased.o cwchar.o wintz.o dtintrv.o ucnvsel.o propsvec.o \
-ulist.o uloc_tag.o icudataver.o icuplug.o \
-sharedobject.o simpleformatter.o unifiedcache.o uloc_keytype.o \
-ubiditransform.o \
-pluralmap.o \
-static_unicode_sets.o \
-restrace.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
## Header files to install
HEADERS = $(srcdir)/unicode/*.h
@@ -159,6 +122,11 @@
$(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)
endif
ifneq ($(ENABLE_SHARED),)
+# For MinGW, do we want the DLL to go in the bin location?
+ifeq ($(MINGW_MOVEDLLSTOBINDIR),YES)
+ $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ $(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(bindir)
+else
$(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)
ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(SO_TARGET))
@@ -166,6 +134,7 @@
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(MIDDLE_SO_TARGET))
endif
endif
+endif
ifneq ($(IMPORT_LIB_EXT),)
$(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)
ifneq ($(IMPORT_LIB),$(FINAL_IMPORT_LIB))
Modified: trunk/Build/source/libs/icu/icu-src/source/common/bmpset.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/bmpset.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/bmpset.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -101,7 +101,7 @@
*/
UBool latin1Contains[0x100];
- /* TRUE if contains(U+FFFD). */
+ /* true if contains(U+FFFD). */
UBool containsFFFD;
/*
Modified: trunk/Build/source/libs/icu/icu-src/source/common/brkeng.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/brkeng.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/brkeng.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -54,7 +54,7 @@
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
- * @return TRUE if this engine handles the particular character and break
+ * @return true if this engine handles the particular character and break
* type.
*/
virtual UBool handles(UChar32 c) const = 0;
@@ -171,7 +171,7 @@
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
- * @return TRUE if this engine handles the particular character and break
+ * @return true if this engine handles the particular character and break
* type.
*/
virtual UBool handles(UChar32 c) const;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/brkiter.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/brkiter.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/brkiter.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -38,6 +38,7 @@
#include "uresimp.h"
#include "uassert.h"
#include "ubrkimpl.h"
+#include "utracimp.h"
#include "charstr.h"
// *****************************************************************************
@@ -412,14 +413,23 @@
BreakIterator *result = NULL;
switch (kind) {
case UBRK_CHARACTER:
- result = BreakIterator::buildInstance(loc, "grapheme", status);
+ {
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_CHARACTER);
+ result = BreakIterator::buildInstance(loc, "grapheme", status);
+ UTRACE_EXIT_STATUS(status);
+ }
break;
case UBRK_WORD:
- result = BreakIterator::buildInstance(loc, "word", status);
+ {
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_WORD);
+ result = BreakIterator::buildInstance(loc, "word", status);
+ UTRACE_EXIT_STATUS(status);
+ }
break;
case UBRK_LINE:
- uprv_strcpy(lbType, "line");
{
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_LINE);
+ uprv_strcpy(lbType, "line");
char lbKeyValue[kKeyValueLenMax] = {0};
UErrorCode kvStatus = U_ZERO_ERROR;
int32_t kLen = loc.getKeywordValue("lb", lbKeyValue, kKeyValueLenMax, kvStatus);
@@ -427,13 +437,17 @@
uprv_strcat(lbType, "_");
uprv_strcat(lbType, lbKeyValue);
}
+ result = BreakIterator::buildInstance(loc, lbType, status);
+
+ UTRACE_DATA1(UTRACE_INFO, "lb=%s", lbKeyValue);
+ UTRACE_EXIT_STATUS(status);
}
- result = BreakIterator::buildInstance(loc, lbType, status);
break;
case UBRK_SENTENCE:
- result = BreakIterator::buildInstance(loc, "sentence", status);
+ {
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_SENTENCE);
+ result = BreakIterator::buildInstance(loc, "sentence", status);
#if !UCONFIG_NO_FILTERED_BREAK_ITERATION
- {
char ssKeyValue[kKeyValueLenMax] = {0};
UErrorCode kvStatus = U_ZERO_ERROR;
int32_t kLen = loc.getKeywordValue("ss", ssKeyValue, kKeyValueLenMax, kvStatus);
@@ -444,11 +458,16 @@
delete fbiBuilder;
}
}
+#endif
+ UTRACE_EXIT_STATUS(status);
}
-#endif
break;
case UBRK_TITLE:
- result = BreakIterator::buildInstance(loc, "title", status);
+ {
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_TITLE);
+ result = BreakIterator::buildInstance(loc, "title", status);
+ UTRACE_EXIT_STATUS(status);
+ }
break;
default:
status = U_ILLEGAL_ARGUMENT_ERROR;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/bytesinkutil.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/bytesinkutil.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/bytesinkutil.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -45,9 +45,9 @@
static UBool appendUnchanged(const uint8_t *s, int32_t length,
ByteSink &sink, uint32_t options, Edits *edits,
UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return FALSE; }
+ if (U_FAILURE(errorCode)) { return false; }
if (length > 0) { appendNonEmptyUnchanged(s, length, sink, options, edits); }
- return TRUE;
+ return true;
}
static UBool appendUnchanged(const uint8_t *s, const uint8_t *limit,
Modified: trunk/Build/source/libs/icu/icu-src/source/common/charstr.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/charstr.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/charstr.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -20,6 +20,7 @@
#include "cmemory.h"
#include "cstring.h"
#include "uinvchar.h"
+#include "ustr_imp.h"
U_NAMESPACE_BEGIN
@@ -46,6 +47,19 @@
return p;
}
+int32_t CharString::extract(char *dest, int32_t capacity, UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) { return len; }
+ if (capacity < 0 || (capacity > 0 && dest == nullptr)) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return len;
+ }
+ const char *src = buffer.getAlias();
+ if (0 < len && len <= capacity && src != dest) {
+ uprv_memcpy(dest, src, len);
+ }
+ return u_terminateChars(dest, capacity, len, &errorCode);
+}
+
CharString &CharString::copyFrom(const CharString &s, UErrorCode &errorCode) {
if(U_SUCCESS(errorCode) && this!=&s && ensureCapacity(s.len+1, 0, errorCode)) {
len=s.len;
@@ -197,7 +211,7 @@
}
char c;
if(len>0 && (c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
- append(U_FILE_SEP_CHAR, errorCode);
+ append(getDirSepChar(), errorCode);
}
append(s, errorCode);
return *this;
@@ -207,9 +221,19 @@
char c;
if(U_SUCCESS(errorCode) && len>0 &&
(c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
- append(U_FILE_SEP_CHAR, errorCode);
+ append(getDirSepChar(), errorCode);
}
return *this;
}
+char CharString::getDirSepChar() const {
+ char dirSepChar = U_FILE_SEP_CHAR;
+#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
+ // We may need to return a different directory separator when building for Cygwin or MSYS2.
+ if(len>0 && !uprv_strchr(data(), U_FILE_SEP_CHAR) && uprv_strchr(data(), U_FILE_ALT_SEP_CHAR))
+ dirSepChar = U_FILE_ALT_SEP_CHAR;
+#endif
+ return dirSepChar;
+}
+
U_NAMESPACE_END
Modified: trunk/Build/source/libs/icu/icu-src/source/common/charstr.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/charstr.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/charstr.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -87,6 +87,22 @@
* The caller must uprv_free() the result.
*/
char *cloneData(UErrorCode &errorCode) const;
+ /**
+ * Copies the contents of the string into dest.
+ * Checks if there is enough space in dest, extracts the entire string if possible,
+ * and NUL-terminates dest if possible.
+ *
+ * If the string fits into dest but cannot be NUL-terminated (length()==capacity),
+ * then the error code is set to U_STRING_NOT_TERMINATED_WARNING.
+ * If the string itself does not fit into dest (length()>capacity),
+ * then the error code is set to U_BUFFER_OVERFLOW_ERROR.
+ *
+ * @param dest Destination string buffer.
+ * @param capacity Size of the dest buffer (number of chars).
+ * @param errorCode ICU error code.
+ * @return length()
+ */
+ int32_t extract(char *dest, int32_t capacity, UErrorCode &errorCode) const;
bool operator==(StringPiece other) const {
return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
@@ -141,13 +157,13 @@
/**
* Appends a filename/path part, e.g., a directory name.
- * First appends a U_FILE_SEP_CHAR if necessary.
+ * First appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if necessary.
* Does nothing if s is empty.
*/
CharString &appendPathPart(StringPiece s, UErrorCode &errorCode);
/**
- * Appends a U_FILE_SEP_CHAR if this string is not empty
+ * Appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if this string is not empty
* and does not already end with a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR.
*/
CharString &ensureEndsWithFileSeparator(UErrorCode &errorCode);
@@ -160,6 +176,12 @@
CharString(const CharString &other); // forbid copying of this class
CharString &operator=(const CharString &other); // forbid copying of this class
+
+ /**
+ * Returns U_FILE_ALT_SEP_CHAR if found in string, and U_FILE_SEP_CHAR is not found.
+ * Otherwise returns U_FILE_SEP_CHAR.
+ */
+ char getDirSepChar() const;
};
U_NAMESPACE_END
Added: trunk/Build/source/libs/icu/icu-src/source/common/charstrmap.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/charstrmap.h (rev 0)
+++ trunk/Build/source/libs/icu/icu-src/source/common/charstrmap.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -0,0 +1,55 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// charstrmap.h
+// created: 2020sep01 Frank Yung-Fong Tang
+
+#ifndef __CHARSTRMAP_H__
+#define __CHARSTRMAP_H__
+
+#include <utility>
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "uhash.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Map of const char * keys & values.
+ * Stores pointers as is: Does not own/copy/adopt/release strings.
+ */
+class CharStringMap final : public UMemory {
+public:
+ /** Constructs an unusable non-map. */
+ CharStringMap() : map(nullptr) {}
+ CharStringMap(int32_t size, UErrorCode &errorCode) {
+ map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
+ size, &errorCode);
+ }
+ CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
+ other.map = nullptr;
+ }
+ CharStringMap(const CharStringMap &other) = delete;
+ ~CharStringMap() {
+ uhash_close(map);
+ }
+
+ CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
+ map = other.map;
+ other.map = nullptr;
+ return *this;
+ }
+ CharStringMap &operator=(const CharStringMap &other) = delete;
+
+ const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
+ void put(const char *key, const char *value, UErrorCode &errorCode) {
+ uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
+ }
+
+private:
+ UHashtable *map;
+};
+
+U_NAMESPACE_END
+
+#endif // __CHARSTRMAP_H__
Property changes on: trunk/Build/source/libs/icu/icu-src/source/common/charstrmap.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/libs/icu/icu-src/source/common/cmemory.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/cmemory.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/cmemory.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -274,7 +274,10 @@
*
* WARNING: MaybeStackArray only works with primitive (plain-old data) types.
* It does NOT know how to call a destructor! If you work with classes with
- * destructors, consider LocalArray in localpointer.h or MemoryPool.
+ * destructors, consider:
+ *
+ * - LocalArray in localpointer.h if you know the length ahead of time
+ * - MaybeStackVector if you know the length at runtime
*/
template<typename T, int32_t stackCapacity>
class MaybeStackArray {
@@ -289,14 +292,21 @@
/**
* Default constructor initializes with internal T[stackCapacity] buffer.
*/
- MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(FALSE) {}
+ MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(false) {}
/**
* Automatically allocates the heap array if the argument is larger than the stack capacity.
* Intended for use when an approximate capacity is known at compile time but the true
* capacity is not known until runtime.
*/
- MaybeStackArray(int32_t newCapacity) : MaybeStackArray() {
- if (capacity < newCapacity) { resize(newCapacity); }
+ MaybeStackArray(int32_t newCapacity, UErrorCode status) : MaybeStackArray() {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (capacity < newCapacity) {
+ if (resize(newCapacity) == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ }
}
/**
* Destructor deletes the array (if owned).
@@ -352,7 +362,7 @@
releaseArray();
ptr=otherArray;
capacity=otherCapacity;
- needToRelease=FALSE;
+ needToRelease=false;
}
}
/**
@@ -377,6 +387,20 @@
* caller becomes responsible for deleting the array
*/
inline T *orphanOrClone(int32_t length, int32_t &resultCapacity);
+
+protected:
+ // Resizes the array to the size of src, then copies the contents of src.
+ void copyFrom(const MaybeStackArray &src, UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (this->resize(src.capacity, 0) == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ uprv_memcpy(this->ptr, src.ptr, (size_t)capacity * sizeof(T));
+ }
+
private:
T *ptr;
int32_t capacity;
@@ -390,14 +414,14 @@
void resetToStackArray() {
ptr=stackArray;
capacity=stackCapacity;
- needToRelease=FALSE;
+ needToRelease=false;
}
/* No comparison operators with other MaybeStackArray's. */
- bool operator==(const MaybeStackArray & /*other*/) {return FALSE;}
- bool operator!=(const MaybeStackArray & /*other*/) {return TRUE;}
+ bool operator==(const MaybeStackArray & /*other*/) = delete;
+ bool operator!=(const MaybeStackArray & /*other*/) = delete;
/* No ownership transfer: No copy constructor, no assignment operator. */
- MaybeStackArray(const MaybeStackArray & /*other*/) {}
- void operator=(const MaybeStackArray & /*other*/) {}
+ MaybeStackArray(const MaybeStackArray & /*other*/) = delete;
+ void operator=(const MaybeStackArray & /*other*/) = delete;
};
template<typename T, int32_t stackCapacity>
@@ -432,7 +456,7 @@
inline T *MaybeStackArray<T, stackCapacity>::resize(int32_t newCapacity, int32_t length) {
if(newCapacity>0) {
#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
- ::fprintf(::stderr,"MaybeStacArray (resize) alloc %d * %lu\n", newCapacity,sizeof(T));
+ ::fprintf(::stderr, "MaybeStackArray (resize) alloc %d * %lu\n", newCapacity, sizeof(T));
#endif
T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
if(p!=NULL) {
@@ -448,7 +472,7 @@
releaseArray();
ptr=p;
capacity=newCapacity;
- needToRelease=TRUE;
+ needToRelease=true;
}
return p;
} else {
@@ -504,7 +528,7 @@
/**
* Default constructor initializes with internal H+T[stackCapacity] buffer.
*/
- MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(FALSE) {}
+ MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(false) {}
/**
* Destructor deletes the memory (if owned).
*/
@@ -553,7 +577,7 @@
releaseMemory();
ptr=otherMemory;
capacity=otherCapacity;
- needToRelease=FALSE;
+ needToRelease=false;
}
}
/**
@@ -592,8 +616,8 @@
}
}
/* No comparison operators with other MaybeStackHeaderAndArray's. */
- bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return FALSE;}
- bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return TRUE;}
+ bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return false;}
+ bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return true;}
/* No ownership transfer: No copy constructor, no assignment operator. */
MaybeStackHeaderAndArray(const MaybeStackHeaderAndArray & /*other*/) {}
void operator=(const MaybeStackHeaderAndArray & /*other*/) {}
@@ -622,7 +646,7 @@
releaseMemory();
ptr=p;
capacity=newCapacity;
- needToRelease=TRUE;
+ needToRelease=true;
}
return p;
} else {
@@ -654,7 +678,7 @@
resultCapacity=length;
ptr=&stackHeader;
capacity=stackCapacity;
- needToRelease=FALSE;
+ needToRelease=false;
return p;
}
@@ -684,11 +708,11 @@
template<typename T, int32_t stackCapacity = 8>
class MemoryPool : public UMemory {
public:
- MemoryPool() : count(0), pool() {}
+ MemoryPool() : fCount(0), fPool() {}
~MemoryPool() {
- for (int32_t i = 0; i < count; ++i) {
- delete pool[i];
+ for (int32_t i = 0; i < fCount; ++i) {
+ delete fPool[i];
}
}
@@ -695,15 +719,20 @@
MemoryPool(const MemoryPool&) = delete;
MemoryPool& operator=(const MemoryPool&) = delete;
- MemoryPool(MemoryPool&& other) U_NOEXCEPT : count(other.count),
- pool(std::move(other.pool)) {
- other.count = 0;
+ MemoryPool(MemoryPool&& other) U_NOEXCEPT : fCount(other.fCount),
+ fPool(std::move(other.fPool)) {
+ other.fCount = 0;
}
MemoryPool& operator=(MemoryPool&& other) U_NOEXCEPT {
- count = other.count;
- pool = std::move(other.pool);
- other.count = 0;
+ // Since `this` may contain instances that need to be deleted, we can't
+ // just throw them away and replace them with `other`. The normal way of
+ // dealing with this in C++ is to swap `this` and `other`, rather than
+ // simply overwrite: the destruction of `other` can then take care of
+ // running MemoryPool::~MemoryPool() over the still-to-be-deallocated
+ // instances.
+ std::swap(fCount, other.fCount);
+ std::swap(fPool, other.fPool);
return *this;
}
@@ -716,20 +745,106 @@
*/
template<typename... Args>
T* create(Args&&... args) {
- int32_t capacity = pool.getCapacity();
- if (count == capacity &&
- pool.resize(capacity == stackCapacity ? 4 * capacity : 2 * capacity,
- capacity) == nullptr) {
+ int32_t capacity = fPool.getCapacity();
+ if (fCount == capacity &&
+ fPool.resize(capacity == stackCapacity ? 4 * capacity : 2 * capacity,
+ capacity) == nullptr) {
return nullptr;
}
- return pool[count++] = new T(std::forward<Args>(args)...);
+ return fPool[fCount++] = new T(std::forward<Args>(args)...);
}
-private:
- int32_t count;
- MaybeStackArray<T*, stackCapacity> pool;
+ template <typename... Args>
+ T* createAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ T *pointer = this->create(args...);
+ if (U_SUCCESS(status) && pointer == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return pointer;
+ }
+
+ /**
+ * @return Number of elements that have been allocated.
+ */
+ int32_t count() const {
+ return fCount;
+ }
+
+protected:
+ int32_t fCount;
+ MaybeStackArray<T*, stackCapacity> fPool;
};
+/**
+ * An internal Vector-like implementation based on MemoryPool.
+ *
+ * Heap-allocates each element and stores pointers.
+ *
+ * To append an item to the vector, use emplaceBack.
+ *
+ * MaybeStackVector<MyType> vector;
+ * MyType* element = vector.emplaceBack();
+ * if (!element) {
+ * status = U_MEMORY_ALLOCATION_ERROR;
+ * }
+ * // do stuff with element
+ *
+ * To loop over the vector, use a for loop with indices:
+ *
+ * for (int32_t i = 0; i < vector.length(); i++) {
+ * MyType* element = vector[i];
+ * }
+ */
+template<typename T, int32_t stackCapacity = 8>
+class MaybeStackVector : protected MemoryPool<T, stackCapacity> {
+public:
+ template<typename... Args>
+ T* emplaceBack(Args&&... args) {
+ return this->create(args...);
+ }
+
+ template <typename... Args>
+ T *emplaceBackAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+ return this->createAndCheckErrorCode(status, args...);
+ }
+
+ int32_t length() const {
+ return this->fCount;
+ }
+
+ T** getAlias() {
+ return this->fPool.getAlias();
+ }
+
+ const T *const *getAlias() const {
+ return this->fPool.getAlias();
+ }
+
+ /**
+ * Array item access (read-only).
+ * No index bounds check.
+ * @param i array index
+ * @return reference to the array item
+ */
+ const T* operator[](ptrdiff_t i) const {
+ return this->fPool[i];
+ }
+
+ /**
+ * Array item access (writable).
+ * No index bounds check.
+ * @param i array index
+ * @return reference to the array item
+ */
+ T* operator[](ptrdiff_t i) {
+ return this->fPool[i];
+ }
+};
+
+
U_NAMESPACE_END
#endif /* __cplusplus */
Modified: trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj 2021-02-13 17:46:14 UTC (rev 57727)
@@ -16,22 +16,6 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
- </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -74,7 +58,7 @@
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
- <OutputFile>..\..\$(IcuBinOutputDir)\icuuc65d.dll</OutputFile>
+ <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>
</Link>
@@ -86,7 +70,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<Link>
- <OutputFile>..\..\$(IcuBinOutputDir)\icuuc65.dll</OutputFile>
+ <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>
</Link>
@@ -357,7 +341,9 @@
<ClInclude Include="localeprioritylist.h" />
<ClInclude Include="locbased.h" />
<ClInclude Include="locdistance.h" />
+ <ClInclude Include="charstrmap.h" />
<ClInclude Include="loclikelysubtags.h" />
+ <ClInclude Include="uniquecharstr.h" />
<ClInclude Include="locutil.h" />
<ClInclude Include="lsr.h" />
<ClInclude Include="sharedobject.h" />
Modified: trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters 2021-02-13 17:46:14 UTC (rev 57727)
@@ -840,6 +840,12 @@
<ClInclude Include="locdistance.h">
<Filter>locales & resources</Filter>
</ClInclude>
+ <ClInclude Include="charstrmap.h">
+ <Filter>locales & resources</Filter>
+ </ClInclude>
+ <ClInclude Include="uniquecharstr.h">
+ <Filter>locales & resources</Filter>
+ </ClInclude>
<ClInclude Include="loclikelysubtags.h">
<Filter>locales & resources</Filter>
</ClInclude>
Modified: trunk/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj
===================================================================
(Binary files differ)
Modified: trunk/Build/source/libs/icu/icu-src/source/common/cstring.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/cstring.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/cstring.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -52,6 +52,8 @@
U_CAPI UBool U_EXPORT2
uprv_isASCIILetter(char c);
+// NOTE: For u_asciiToUpper that takes a UChar, see ustr_imp.h
+
U_CAPI char U_EXPORT2
uprv_toupper(char c);
Modified: trunk/Build/source/libs/icu/icu-src/source/common/dictbe.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/dictbe.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/dictbe.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -18,6 +18,7 @@
#include "unicode/uniset.h"
#include "unicode/chariter.h"
#include "unicode/ubrk.h"
+#include "utracimp.h"
#include "uvectr32.h"
#include "uvector.h"
#include "uassert.h"
@@ -194,6 +195,8 @@
: DictionaryBreakEngine(),
fDictionary(adoptDictionary)
{
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
+ UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Thai");
fThaiWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Thai:]&[:LineBreak=SA:]]"), status);
if (U_SUCCESS(status)) {
setCharacters(fThaiWordSet);
@@ -213,6 +216,7 @@
fEndWordSet.compact();
fBeginWordSet.compact();
fSuffixSet.compact();
+ UTRACE_EXIT_STATUS(status);
}
ThaiBreakEngine::~ThaiBreakEngine() {
@@ -436,6 +440,8 @@
: DictionaryBreakEngine(),
fDictionary(adoptDictionary)
{
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
+ UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Laoo");
fLaoWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Laoo:]&[:LineBreak=SA:]]"), status);
if (U_SUCCESS(status)) {
setCharacters(fLaoWordSet);
@@ -452,6 +458,7 @@
fMarkSet.compact();
fEndWordSet.compact();
fBeginWordSet.compact();
+ UTRACE_EXIT_STATUS(status);
}
LaoBreakEngine::~LaoBreakEngine() {
@@ -632,6 +639,8 @@
: DictionaryBreakEngine(),
fDictionary(adoptDictionary)
{
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
+ UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Mymr");
fBurmeseWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Mymr:]&[:LineBreak=SA:]]"), status);
if (U_SUCCESS(status)) {
setCharacters(fBurmeseWordSet);
@@ -645,6 +654,7 @@
fMarkSet.compact();
fEndWordSet.compact();
fBeginWordSet.compact();
+ UTRACE_EXIT_STATUS(status);
}
BurmeseBreakEngine::~BurmeseBreakEngine() {
@@ -825,6 +835,8 @@
: DictionaryBreakEngine(),
fDictionary(adoptDictionary)
{
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
+ UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Khmr");
fKhmerWordSet.applyPattern(UNICODE_STRING_SIMPLE("[[:Khmr:]&[:LineBreak=SA:]]"), status);
if (U_SUCCESS(status)) {
setCharacters(fKhmerWordSet);
@@ -850,6 +862,7 @@
fEndWordSet.compact();
fBeginWordSet.compact();
// fSuffixSet.compact();
+ UTRACE_EXIT_STATUS(status);
}
KhmerBreakEngine::~KhmerBreakEngine() {
@@ -1045,6 +1058,8 @@
static const uint32_t kuint32max = 0xFFFFFFFF;
CjkBreakEngine::CjkBreakEngine(DictionaryMatcher *adoptDictionary, LanguageType type, UErrorCode &status)
: DictionaryBreakEngine(), fDictionary(adoptDictionary) {
+ UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
+ UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Hani");
// Korean dictionary only includes Hangul syllables
fHangulWordSet.applyPattern(UNICODE_STRING_SIMPLE("[\\uac00-\\ud7a3]"), status);
fHanWordSet.applyPattern(UNICODE_STRING_SIMPLE("[:Han:]"), status);
@@ -1066,6 +1081,7 @@
setCharacters(cjSet);
}
}
+ UTRACE_EXIT_STATUS(status);
}
CjkBreakEngine::~CjkBreakEngine(){
Modified: trunk/Build/source/libs/icu/icu-src/source/common/dictbe.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/dictbe.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/dictbe.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -59,7 +59,7 @@
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
- * @return TRUE if this engine handles the particular character and break
+ * @return true if this engine handles the particular character and break
* type.
*/
virtual UBool handles(UChar32 c) const;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/icuplug.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/icuplug.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/icuplug.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -145,7 +145,7 @@
return -1;
}
-U_INTERNAL char * U_EXPORT2
+U_CAPI char * U_EXPORT2
uplug_findLibrary(void *lib, UErrorCode *status) {
int32_t libEnt;
char *ret = NULL;
@@ -161,7 +161,7 @@
return ret;
}
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
uplug_openLibrary(const char *libName, UErrorCode *status) {
int32_t libEntry = -1;
void *lib = NULL;
@@ -209,7 +209,7 @@
return lib;
}
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
uplug_closeLibrary(void *lib, UErrorCode *status) {
int32_t i;
@@ -507,7 +507,7 @@
return data->config;
}
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
uplug_getPlugInternal(int32_t n) {
if(n <0 || n >= pluginCount) {
return NULL;
@@ -707,7 +707,7 @@
static char plugin_file[2048] = "";
#endif
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
uplug_getPluginFile() {
#if U_ENABLE_DYLOAD && !UCONFIG_NO_FILE_IO
return plugin_file;
@@ -782,8 +782,8 @@
/* plugin_file is not used for processing - it is only used
so that uplug_getPluginFile() works (i.e. icuinfo)
*/
- uprv_strncpy(plugin_file, pluginFile.data(), sizeof(plugin_file));
-
+ pluginFile.extract(plugin_file, sizeof(plugin_file), *status);
+
#if UPLUG_TRACE
DBG((stderr, "pluginfile= %s len %d/%d\n", plugin_file, (int)strlen(plugin_file), (int)sizeof(plugin_file)));
#endif
Modified: trunk/Build/source/libs/icu/icu-src/source/common/icuplugimp.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/icuplugimp.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/icuplugimp.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -36,7 +36,7 @@
* @return the library pointer, or NULL
* @internal internal use only
*/
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
uplug_openLibrary(const char *libName, UErrorCode *status);
/**
@@ -45,7 +45,7 @@
* @param status error code
* @internal internal use only
*/
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
uplug_closeLibrary(void *lib, UErrorCode *status);
/**
@@ -55,7 +55,7 @@
* @return the library name, or NULL if not found.
* @internal internal use only
*/
-U_INTERNAL char * U_EXPORT2
+U_CAPI char * U_EXPORT2
uplug_findLibrary(void *lib, UErrorCode *status);
/** @} */
@@ -69,7 +69,7 @@
* @param status error result
* @internal - Internal use only.
*/
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
uplug_init(UErrorCode *status);
/**
@@ -76,7 +76,7 @@
* Get raw plug N
* @internal - Internal use only
*/
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
uplug_getPlugInternal(int32_t n);
/**
@@ -83,7 +83,7 @@
* Get the name of the plugin file.
* @internal - Internal use only.
*/
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
uplug_getPluginFile(void);
/** @} */
Modified: trunk/Build/source/libs/icu/icu-src/source/common/localematcher.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/localematcher.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/localematcher.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,17 +1,15 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// localematcher.cpp
// created: 2019may08 Markus W. Scherer
-#ifndef __LOCMATCHER_H__
-#define __LOCMATCHER_H__
-
#include "unicode/utypes.h"
#include "unicode/localebuilder.h"
#include "unicode/localematcher.h"
#include "unicode/locid.h"
#include "unicode/stringpiece.h"
+#include "unicode/uloc.h"
#include "unicode/uobject.h"
#include "cstring.h"
#include "localeprioritylist.h"
@@ -20,9 +18,10 @@
#include "lsr.h"
#include "uassert.h"
#include "uhash.h"
+#include "ustr_imp.h"
#include "uvector.h"
-#define UND_LSR LSR("und", "", "")
+#define UND_LSR LSR("und", "", "", LSR::EXPLICIT_LSR)
/**
* Indicator for the lifetime of desired-locale objects passed into the LocaleMatcher.
@@ -129,7 +128,9 @@
thresholdDistance_(src.thresholdDistance_),
demotion_(src.demotion_),
defaultLocale_(src.defaultLocale_),
- favor_(src.favor_) {
+ withDefault_(src.withDefault_),
+ favor_(src.favor_),
+ direction_(src.direction_) {
src.supportedLocales_ = nullptr;
src.defaultLocale_ = nullptr;
}
@@ -137,6 +138,8 @@
LocaleMatcher::Builder::~Builder() {
delete supportedLocales_;
delete defaultLocale_;
+ delete maxDistanceDesired_;
+ delete maxDistanceSupported_;
}
LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) U_NOEXCEPT {
@@ -147,7 +150,9 @@
thresholdDistance_ = src.thresholdDistance_;
demotion_ = src.demotion_;
defaultLocale_ = src.defaultLocale_;
+ withDefault_ = src.withDefault_,
favor_ = src.favor_;
+ direction_ = src.direction_;
src.supportedLocales_ = nullptr;
src.defaultLocale_ = nullptr;
@@ -225,6 +230,14 @@
return *this;
}
+LocaleMatcher::Builder &LocaleMatcher::Builder::setNoDefaultLocale() {
+ if (U_FAILURE(errorCode_)) { return *this; }
+ delete defaultLocale_;
+ defaultLocale_ = nullptr;
+ withDefault_ = false;
+ return *this;
+}
+
LocaleMatcher::Builder &LocaleMatcher::Builder::setDefaultLocale(const Locale *defaultLocale) {
if (U_FAILURE(errorCode_)) { return *this; }
Locale *clone = nullptr;
@@ -237,6 +250,7 @@
}
delete defaultLocale_;
defaultLocale_ = clone;
+ withDefault_ = true;
return *this;
}
@@ -252,6 +266,24 @@
return *this;
}
+LocaleMatcher::Builder &LocaleMatcher::Builder::setMaxDistance(const Locale &desired,
+ const Locale &supported) {
+ if (U_FAILURE(errorCode_)) { return *this; }
+ Locale *desiredClone = desired.clone();
+ Locale *supportedClone = supported.clone();
+ if (desiredClone == nullptr || supportedClone == nullptr) {
+ delete desiredClone; // in case only one could not be allocated
+ delete supportedClone;
+ errorCode_ = U_MEMORY_ALLOCATION_ERROR;
+ return *this;
+ }
+ delete maxDistanceDesired_;
+ delete maxDistanceSupported_;
+ maxDistanceDesired_ = desiredClone;
+ maxDistanceSupported_ = supportedClone;
+ return *this;
+}
+
#if 0
/**
* <i>Internal only!</i>
@@ -308,20 +340,22 @@
return *lsr1 == *lsr2;
}
-bool putIfAbsent(UHashtable *lsrToIndex, const LSR &lsr, int32_t i, UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return false; }
- U_ASSERT(i > 0);
- int32_t index = uhash_geti(lsrToIndex, &lsr);
- if (index != 0) {
- return false;
- } else {
- uhash_puti(lsrToIndex, const_cast<LSR *>(&lsr), i, &errorCode);
- return U_SUCCESS(errorCode);
+} // namespace
+
+int32_t LocaleMatcher::putIfAbsent(const LSR &lsr, int32_t i, int32_t suppLength,
+ UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return suppLength; }
+ int32_t index = uhash_geti(supportedLsrToIndex, &lsr);
+ if (index == 0) {
+ uhash_puti(supportedLsrToIndex, const_cast<LSR *>(&lsr), i + 1, &errorCode);
+ if (U_SUCCESS(errorCode)) {
+ supportedLSRs[suppLength] = &lsr;
+ supportedIndexes[suppLength++] = i;
+ }
}
+ return suppLength;
}
-} // namespace
-
LocaleMatcher::LocaleMatcher(const Builder &builder, UErrorCode &errorCode) :
likelySubtags(*XLikelySubtags::getSingleton(errorCode)),
localeDistance(*LocaleDistance::getSingleton(errorCode)),
@@ -328,18 +362,28 @@
thresholdDistance(builder.thresholdDistance_),
demotionPerDesiredLocale(0),
favorSubtag(builder.favor_),
+ direction(builder.direction_),
supportedLocales(nullptr), lsrs(nullptr), supportedLocalesLength(0),
supportedLsrToIndex(nullptr),
supportedLSRs(nullptr), supportedIndexes(nullptr), supportedLSRsLength(0),
- ownedDefaultLocale(nullptr), defaultLocale(nullptr), defaultLocaleIndex(-1) {
+ ownedDefaultLocale(nullptr), defaultLocale(nullptr) {
if (U_FAILURE(errorCode)) { return; }
- if (thresholdDistance < 0) {
- thresholdDistance = localeDistance.getDefaultScriptDistance();
+ const Locale *def = builder.defaultLocale_;
+ LSR builderDefaultLSR;
+ const LSR *defLSR = nullptr;
+ if (def != nullptr) {
+ ownedDefaultLocale = def->clone();
+ if (ownedDefaultLocale == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ def = ownedDefaultLocale;
+ builderDefaultLSR = getMaximalLsrOrUnd(likelySubtags, *def, errorCode);
+ if (U_FAILURE(errorCode)) { return; }
+ defLSR = &builderDefaultLSR;
}
supportedLocalesLength = builder.supportedLocales_ != nullptr ?
builder.supportedLocales_->size() : 0;
- const Locale *def = builder.defaultLocale_;
- int32_t idef = -1;
if (supportedLocalesLength > 0) {
// Store the supported locales in input order,
// so that when different types are used (e.g., language tag strings)
@@ -356,15 +400,6 @@
}
// If the constructor fails partway, we need null pointers for destructibility.
uprv_memset(supportedLocales, 0, supportedLocalesLength * sizeof(const Locale *));
- // Also find the first supported locale whose LSR is
- // the same as that for the default locale.
- LSR builderDefaultLSR;
- const LSR *defLSR = nullptr;
- if (def != nullptr) {
- builderDefaultLSR = getMaximalLsrOrUnd(likelySubtags, *def, errorCode);
- if (U_FAILURE(errorCode)) { return; }
- defLSR = &builderDefaultLSR;
- }
for (int32_t i = 0; i < supportedLocalesLength; ++i) {
const Locale &locale = *static_cast<Locale *>(builder.supportedLocales_->elementAt(i));
supportedLocales[i] = locale.clone();
@@ -376,107 +411,95 @@
LSR &lsr = lsrs[i] = getMaximalLsrOrUnd(likelySubtags, supportedLocale, errorCode);
lsr.setHashCode();
if (U_FAILURE(errorCode)) { return; }
- if (idef < 0 && defLSR != nullptr && lsr == *defLSR) {
- idef = i;
- defLSR = &lsr; // owned pointer to put into supportedLsrToIndex
- if (*def == supportedLocale) {
- def = &supportedLocale; // owned pointer to keep
- }
- }
}
// We need an unordered map from LSR to first supported locale with that LSR,
- // and an ordered list of (LSR, supported index).
- // We insert the supported locales in the following order:
+ // and an ordered list of (LSR, supported index) for
+ // the supported locales in the following order:
// 1. Default locale, if it is supported.
// 2. Priority locales (aka "paradigm locales") in builder order.
// 3. Remaining locales in builder order.
- // In Java, we use a LinkedHashMap for both map & ordered lists.
- // In C++, we use separate structures.
- // We over-allocate arrays of LSRs and indexes for simplicity.
- // We reserve slots at the array starts for the default and paradigm locales,
- // plus enough for all supported locales.
- // If there are few paradigm locales and few duplicate supported LSRs,
- // then the amount of wasted space is small.
supportedLsrToIndex = uhash_openSize(hashLSR, compareLSRs, uhash_compareLong,
supportedLocalesLength, &errorCode);
if (U_FAILURE(errorCode)) { return; }
- int32_t paradigmLimit = 1 + localeDistance.getParadigmLSRsLength();
- int32_t suppLSRsCapacity = paradigmLimit + supportedLocalesLength;
supportedLSRs = static_cast<const LSR **>(
- uprv_malloc(suppLSRsCapacity * sizeof(const LSR *)));
+ uprv_malloc(supportedLocalesLength * sizeof(const LSR *)));
supportedIndexes = static_cast<int32_t *>(
- uprv_malloc(suppLSRsCapacity * sizeof(int32_t)));
+ uprv_malloc(supportedLocalesLength * sizeof(int32_t)));
if (supportedLSRs == nullptr || supportedIndexes == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
- int32_t paradigmIndex = 0;
- int32_t otherIndex = paradigmLimit;
- if (idef >= 0) {
- uhash_puti(supportedLsrToIndex, const_cast<LSR *>(defLSR), idef + 1, &errorCode);
- supportedLSRs[0] = defLSR;
- supportedIndexes[0] = idef;
- paradigmIndex = 1;
- }
+ int32_t suppLength = 0;
+ // Determine insertion order.
+ // Add locales immediately that are equivalent to the default.
+ MaybeStackArray<int8_t, 100> order(supportedLocalesLength, errorCode);
+ if (U_FAILURE(errorCode)) { return; }
+ int32_t numParadigms = 0;
for (int32_t i = 0; i < supportedLocalesLength; ++i) {
- if (i == idef) { continue; }
const Locale &locale = *supportedLocales[i];
const LSR &lsr = lsrs[i];
- if (defLSR == nullptr) {
+ if (defLSR == nullptr && builder.withDefault_) {
+ // Implicit default locale = first supported locale, if not turned off.
U_ASSERT(i == 0);
def = &locale;
defLSR = &lsr;
- idef = 0;
- uhash_puti(supportedLsrToIndex, const_cast<LSR *>(&lsr), 0 + 1, &errorCode);
- supportedLSRs[0] = &lsr;
- supportedIndexes[0] = 0;
- paradigmIndex = 1;
- } else if (idef >= 0 && lsr == *defLSR) {
- // lsr == *defLSR means that this supported locale is
- // a duplicate of the default locale.
- // Either an explicit default locale is supported, and we added it before the loop,
- // or there is no explicit default locale, and this is
- // a duplicate of the first supported locale.
- // In both cases, idef >= 0 now, so otherwise we can skip the comparison.
- // For a duplicate, putIfAbsent() is a no-op, so nothing to do.
+ order[i] = 1;
+ suppLength = putIfAbsent(lsr, 0, suppLength, errorCode);
+ } else if (defLSR != nullptr && lsr.isEquivalentTo(*defLSR)) {
+ order[i] = 1;
+ suppLength = putIfAbsent(lsr, i, suppLength, errorCode);
+ } else if (localeDistance.isParadigmLSR(lsr)) {
+ order[i] = 2;
+ ++numParadigms;
} else {
- if (putIfAbsent(supportedLsrToIndex, lsr, i + 1, errorCode)) {
- if (localeDistance.isParadigmLSR(lsr)) {
- supportedLSRs[paradigmIndex] = &lsr;
- supportedIndexes[paradigmIndex++] = i;
- } else {
- supportedLSRs[otherIndex] = &lsr;
- supportedIndexes[otherIndex++] = i;
- }
- }
+ order[i] = 3;
}
if (U_FAILURE(errorCode)) { return; }
}
- // Squeeze out unused array slots.
- if (paradigmIndex < paradigmLimit && paradigmLimit < otherIndex) {
- uprv_memmove(supportedLSRs + paradigmIndex, supportedLSRs + paradigmLimit,
- (otherIndex - paradigmLimit) * sizeof(const LSR *));
- uprv_memmove(supportedIndexes + paradigmIndex, supportedIndexes + paradigmLimit,
- (otherIndex - paradigmLimit) * sizeof(int32_t));
+ // Add supported paradigm locales.
+ int32_t paradigmLimit = suppLength + numParadigms;
+ for (int32_t i = 0; i < supportedLocalesLength && suppLength < paradigmLimit; ++i) {
+ if (order[i] == 2) {
+ suppLength = putIfAbsent(lsrs[i], i, suppLength, errorCode);
+ }
}
- supportedLSRsLength = otherIndex - (paradigmLimit - paradigmIndex);
+ // Add remaining supported locales.
+ for (int32_t i = 0; i < supportedLocalesLength; ++i) {
+ if (order[i] == 3) {
+ suppLength = putIfAbsent(lsrs[i], i, suppLength, errorCode);
+ }
+ }
+ supportedLSRsLength = suppLength;
+ // If supportedLSRsLength < supportedLocalesLength then
+ // we waste as many array slots as there are duplicate supported LSRs,
+ // but the amount of wasted space is small as long as there are few duplicates.
}
- if (def != nullptr && (idef < 0 || def != supportedLocales[idef])) {
- ownedDefaultLocale = def->clone();
- if (ownedDefaultLocale == nullptr) {
- errorCode = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
- def = ownedDefaultLocale;
- }
defaultLocale = def;
- defaultLocaleIndex = idef;
if (builder.demotion_ == ULOCMATCH_DEMOTION_REGION) {
demotionPerDesiredLocale = localeDistance.getDefaultDemotionPerDesiredLocale();
}
+
+ if (thresholdDistance >= 0) {
+ // already copied
+ } else if (builder.maxDistanceDesired_ != nullptr) {
+ LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, *builder.maxDistanceSupported_, errorCode);
+ const LSR *pSuppLSR = &suppLSR;
+ int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
+ getMaximalLsrOrUnd(likelySubtags, *builder.maxDistanceDesired_, errorCode),
+ &pSuppLSR, 1,
+ LocaleDistance::shiftDistance(100), favorSubtag, direction);
+ if (U_SUCCESS(errorCode)) {
+ // +1 for an exclusive threshold from an inclusive max.
+ thresholdDistance = LocaleDistance::getDistanceFloor(indexAndDistance) + 1;
+ } else {
+ thresholdDistance = 0;
+ }
+ } else {
+ thresholdDistance = localeDistance.getDefaultScriptDistance();
+ }
}
LocaleMatcher::LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT :
@@ -485,6 +508,7 @@
thresholdDistance(src.thresholdDistance),
demotionPerDesiredLocale(src.demotionPerDesiredLocale),
favorSubtag(src.favorSubtag),
+ direction(src.direction),
supportedLocales(src.supportedLocales), lsrs(src.lsrs),
supportedLocalesLength(src.supportedLocalesLength),
supportedLsrToIndex(src.supportedLsrToIndex),
@@ -491,8 +515,7 @@
supportedLSRs(src.supportedLSRs),
supportedIndexes(src.supportedIndexes),
supportedLSRsLength(src.supportedLSRsLength),
- ownedDefaultLocale(src.ownedDefaultLocale), defaultLocale(src.defaultLocale),
- defaultLocaleIndex(src.defaultLocaleIndex) {
+ ownedDefaultLocale(src.ownedDefaultLocale), defaultLocale(src.defaultLocale) {
src.supportedLocales = nullptr;
src.lsrs = nullptr;
src.supportedLocalesLength = 0;
@@ -502,7 +525,6 @@
src.supportedLSRsLength = 0;
src.ownedDefaultLocale = nullptr;
src.defaultLocale = nullptr;
- src.defaultLocaleIndex = -1;
}
LocaleMatcher::~LocaleMatcher() {
@@ -523,6 +545,7 @@
thresholdDistance = src.thresholdDistance;
demotionPerDesiredLocale = src.demotionPerDesiredLocale;
favorSubtag = src.favorSubtag;
+ direction = src.direction;
supportedLocales = src.supportedLocales;
lsrs = src.lsrs;
supportedLocalesLength = src.supportedLocalesLength;
@@ -532,7 +555,6 @@
supportedLSRsLength = src.supportedLSRsLength;
ownedDefaultLocale = src.ownedDefaultLocale;
defaultLocale = src.defaultLocale;
- defaultLocaleIndex = src.defaultLocaleIndex;
src.supportedLocales = nullptr;
src.lsrs = nullptr;
@@ -543,7 +565,6 @@
src.supportedLSRsLength = 0;
src.ownedDefaultLocale = nullptr;
src.defaultLocale = nullptr;
- src.defaultLocaleIndex = -1;
return *this;
}
@@ -630,13 +651,13 @@
LocaleMatcher::Result LocaleMatcher::getBestMatchResult(
const Locale &desiredLocale, UErrorCode &errorCode) const {
if (U_FAILURE(errorCode)) {
- return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE);
+ return Result(nullptr, defaultLocale, -1, -1, FALSE);
}
int32_t suppIndex = getBestSuppIndex(
getMaximalLsrOrUnd(likelySubtags, desiredLocale, errorCode),
nullptr, errorCode);
if (U_FAILURE(errorCode) || suppIndex < 0) {
- return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE);
+ return Result(nullptr, defaultLocale, -1, -1, FALSE);
} else {
return Result(&desiredLocale, supportedLocales[suppIndex], 0, suppIndex, FALSE);
}
@@ -645,12 +666,12 @@
LocaleMatcher::Result LocaleMatcher::getBestMatchResult(
Locale::Iterator &desiredLocales, UErrorCode &errorCode) const {
if (U_FAILURE(errorCode) || !desiredLocales.hasNext()) {
- return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE);
+ return Result(nullptr, defaultLocale, -1, -1, FALSE);
}
LocaleLsrIterator lsrIter(likelySubtags, desiredLocales, ULOCMATCH_TEMPORARY_LOCALES);
int32_t suppIndex = getBestSuppIndex(lsrIter.next(errorCode), &lsrIter, errorCode);
if (U_FAILURE(errorCode) || suppIndex < 0) {
- return Result(nullptr, defaultLocale, -1, defaultLocaleIndex, FALSE);
+ return Result(nullptr, defaultLocale, -1, -1, FALSE);
} else {
return Result(lsrIter.orphanRemembered(), supportedLocales[suppIndex],
lsrIter.getBestDesiredIndex(), suppIndex, TRUE);
@@ -662,7 +683,7 @@
if (U_FAILURE(errorCode)) { return -1; }
int32_t desiredIndex = 0;
int32_t bestSupportedLsrIndex = -1;
- for (int32_t bestDistance = thresholdDistance;;) {
+ for (int32_t bestShiftedDistance = LocaleDistance::shiftDistance(thresholdDistance);;) {
// Quick check for exact maximized LSR.
// Returns suppIndex+1 where 0 means not found.
if (supportedLsrToIndex != nullptr) {
@@ -677,16 +698,17 @@
}
}
int32_t bestIndexAndDistance = localeDistance.getBestIndexAndDistance(
- desiredLSR, supportedLSRs, supportedLSRsLength, bestDistance, favorSubtag);
+ desiredLSR, supportedLSRs, supportedLSRsLength,
+ bestShiftedDistance, favorSubtag, direction);
if (bestIndexAndDistance >= 0) {
- bestDistance = bestIndexAndDistance & 0xff;
+ bestShiftedDistance = LocaleDistance::getShiftedDistance(bestIndexAndDistance);
if (remainingIter != nullptr) {
remainingIter->rememberCurrent(desiredIndex, errorCode);
if (U_FAILURE(errorCode)) { return -1; }
}
- bestSupportedLsrIndex = bestIndexAndDistance >= 0 ? bestIndexAndDistance >> 8 : -1;
+ bestSupportedLsrIndex = LocaleDistance::getIndex(bestIndexAndDistance);
}
- if ((bestDistance -= demotionPerDesiredLocale) <= 0) {
+ if ((bestShiftedDistance -= LocaleDistance::shiftDistance(demotionPerDesiredLocale)) <= 0) {
break;
}
if (remainingIter == nullptr || !remainingIter->hasNext()) {
@@ -703,18 +725,122 @@
return supportedIndexes[bestSupportedLsrIndex];
}
+UBool LocaleMatcher::isMatch(const Locale &desired, const Locale &supported,
+ UErrorCode &errorCode) const {
+ LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
+ if (U_FAILURE(errorCode)) { return 0; }
+ const LSR *pSuppLSR = &suppLSR;
+ int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
+ getMaximalLsrOrUnd(likelySubtags, desired, errorCode),
+ &pSuppLSR, 1,
+ LocaleDistance::shiftDistance(thresholdDistance), favorSubtag, direction);
+ return indexAndDistance >= 0;
+}
+
double LocaleMatcher::internalMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const {
// Returns the inverse of the distance: That is, 1-distance(desired, supported).
LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
if (U_FAILURE(errorCode)) { return 0; }
const LSR *pSuppLSR = &suppLSR;
- int32_t distance = localeDistance.getBestIndexAndDistance(
+ int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
getMaximalLsrOrUnd(likelySubtags, desired, errorCode),
&pSuppLSR, 1,
- thresholdDistance, favorSubtag) & 0xff;
- return (100 - distance) / 100.0;
+ LocaleDistance::shiftDistance(thresholdDistance), favorSubtag, direction);
+ double distance = LocaleDistance::getDistanceDouble(indexAndDistance);
+ return (100.0 - distance) / 100.0;
}
U_NAMESPACE_END
-#endif // __LOCMATCHER_H__
+// uloc_acceptLanguage() --------------------------------------------------- ***
+
+U_NAMESPACE_USE
+
+namespace {
+
+class LocaleFromTag {
+public:
+ LocaleFromTag() : locale(Locale::getRoot()) {}
+ const Locale &operator()(const char *tag) { return locale = Locale(tag); }
+
+private:
+ // Store the locale in the converter, rather than return a reference to a temporary,
+ // or a value which could go out of scope with the caller's reference to it.
+ Locale locale;
+};
+
+int32_t acceptLanguage(UEnumeration &supportedLocales, Locale::Iterator &desiredLocales,
+ char *dest, int32_t capacity, UAcceptResult *acceptResult,
+ UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return 0; }
+ LocaleMatcher::Builder builder;
+ const char *locString;
+ while ((locString = uenum_next(&supportedLocales, nullptr, &errorCode)) != nullptr) {
+ Locale loc(locString);
+ if (loc.isBogus()) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ builder.addSupportedLocale(loc);
+ }
+ LocaleMatcher matcher = builder.build(errorCode);
+ LocaleMatcher::Result result = matcher.getBestMatchResult(desiredLocales, errorCode);
+ if (U_FAILURE(errorCode)) { return 0; }
+ if (result.getDesiredIndex() >= 0) {
+ if (acceptResult != nullptr) {
+ *acceptResult = *result.getDesiredLocale() == *result.getSupportedLocale() ?
+ ULOC_ACCEPT_VALID : ULOC_ACCEPT_FALLBACK;
+ }
+ const char *bestStr = result.getSupportedLocale()->getName();
+ int32_t bestLength = (int32_t)uprv_strlen(bestStr);
+ if (bestLength <= capacity) {
+ uprv_memcpy(dest, bestStr, bestLength);
+ }
+ return u_terminateChars(dest, capacity, bestLength, &errorCode);
+ } else {
+ if (acceptResult != nullptr) {
+ *acceptResult = ULOC_ACCEPT_FAILED;
+ }
+ return u_terminateChars(dest, capacity, 0, &errorCode);
+ }
+}
+
+} // namespace
+
+U_CAPI int32_t U_EXPORT2
+uloc_acceptLanguage(char *result, int32_t resultAvailable,
+ UAcceptResult *outResult,
+ const char **acceptList, int32_t acceptListCount,
+ UEnumeration *availableLocales,
+ UErrorCode *status) {
+ if (U_FAILURE(*status)) { return 0; }
+ if ((result == nullptr ? resultAvailable != 0 : resultAvailable < 0) ||
+ (acceptList == nullptr ? acceptListCount != 0 : acceptListCount < 0) ||
+ availableLocales == nullptr) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ LocaleFromTag converter;
+ Locale::ConvertingIterator<const char **, LocaleFromTag> desiredLocales(
+ acceptList, acceptList + acceptListCount, converter);
+ return acceptLanguage(*availableLocales, desiredLocales,
+ result, resultAvailable, outResult, *status);
+}
+
+U_CAPI int32_t U_EXPORT2
+uloc_acceptLanguageFromHTTP(char *result, int32_t resultAvailable,
+ UAcceptResult *outResult,
+ const char *httpAcceptLanguage,
+ UEnumeration *availableLocales,
+ UErrorCode *status) {
+ if (U_FAILURE(*status)) { return 0; }
+ if ((result == nullptr ? resultAvailable != 0 : resultAvailable < 0) ||
+ httpAcceptLanguage == nullptr || availableLocales == nullptr) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ LocalePriorityList list(httpAcceptLanguage, *status);
+ LocalePriorityList::Iterator desiredLocales = list.iterator();
+ return acceptLanguage(*availableLocales, desiredLocales,
+ result, resultAvailable, outResult, *status);
+}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// localeprioritylist.cpp
// created: 2019jul11 Markus W. Scherer
@@ -133,7 +133,7 @@
if (U_FAILURE(errorCode)) { return; }
Locale locale = Locale(tag.data());
if (locale.isBogus()) {
- errorCode = U_MEMORY_ALLOCATION_ERROR;
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
int32_t weight = WEIGHT_ONE;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/localeprioritylist.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// localeprioritylist.h
// created: 2019jul11 Markus W. Scherer
Modified: trunk/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -26,6 +26,8 @@
#include "unicode/uloc.h"
#include "unicode/ures.h"
#include "unicode/ustring.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "putilimp.h"
@@ -406,20 +408,26 @@
UChar *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
- UErrorCode err = U_ZERO_ERROR;
- int32_t res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
+ UErrorCode err = U_ZERO_ERROR;
+ int32_t res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
uloc_getScript, _kScriptsStandAlone, &err);
-
- if ( err == U_USING_DEFAULT_WARNING ) {
+
+ if (destCapacity == 0 && err == U_BUFFER_OVERFLOW_ERROR) {
+ // For preflight, return the max of the value and the fallback.
+ int32_t fallback_res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
+ uloc_getScript, _kScripts, pErrorCode);
+ return (fallback_res > res) ? fallback_res : res;
+ }
+ if ( err == U_USING_DEFAULT_WARNING ) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
- uloc_getScript, _kScripts, pErrorCode);
- } else {
- *pErrorCode = err;
- return res;
- }
+ uloc_getScript, _kScripts, pErrorCode);
+ } else {
+ *pErrorCode = err;
+ return res;
+ }
}
-U_INTERNAL int32_t U_EXPORT2
+static int32_t
uloc_getDisplayScriptInContext(const char* locale,
const char* displayLocale,
UChar *dest, int32_t destCapacity,
@@ -727,7 +735,7 @@
int32_t padLen;
patPos+=subLen;
padLen=(subi==0 ? sub1Pos : patLen)-patPos;
- if(length+padLen < destCapacity) {
+ if(length+padLen <= destCapacity) {
p=dest+length;
for(int32_t i=0;i<padLen;++i) {
*p++=pattern[patPos++];
@@ -805,10 +813,6 @@
UErrorCode* status){
- char keywordValue[ULOC_FULLNAME_CAPACITY*4];
- int32_t capacity = ULOC_FULLNAME_CAPACITY*4;
- int32_t keywordValueLen =0;
-
/* argument checking */
if(status==NULL || U_FAILURE(*status)) {
return 0;
@@ -820,10 +824,11 @@
}
/* get the keyword value */
- keywordValue[0]=0;
- keywordValueLen = uloc_getKeywordValue(locale, keyword, keywordValue, capacity, status);
- if (*status == U_STRING_NOT_TERMINATED_WARNING)
- *status = U_BUFFER_OVERFLOW_ERROR;
+ CharString keywordValue;
+ {
+ CharStringByteSink sink(&keywordValue);
+ ulocimp_getKeywordValue(locale, keyword, sink, status);
+ }
/*
* if the keyword is equal to currency .. then to get the display name
@@ -839,7 +844,7 @@
icu::LocalUResourceBundlePointer currencies(
ures_getByKey(bundle.getAlias(), _kCurrencies, NULL, status));
icu::LocalUResourceBundlePointer currency(
- ures_getByKeyWithFallback(currencies.getAlias(), keywordValue, NULL, status));
+ ures_getByKeyWithFallback(currencies.getAlias(), keywordValue.data(), NULL, status));
dispName = ures_getStringByIndex(currency.getAlias(), UCURRENCY_DISPLAY_NAME_INDEX, &dispNameLen, status);
@@ -863,12 +868,12 @@
}
}else{
/* we have not found the display name for the value .. just copy over */
- if(keywordValueLen <= destCapacity){
- u_charsToUChars(keywordValue, dest, keywordValueLen);
- return u_terminateUChars(dest, destCapacity, keywordValueLen, status);
+ if(keywordValue.length() <= destCapacity){
+ u_charsToUChars(keywordValue.data(), dest, keywordValue.length());
+ return u_terminateUChars(dest, destCapacity, keywordValue.length(), status);
}else{
*status = U_BUFFER_OVERFLOW_ERROR;
- return keywordValueLen;
+ return keywordValue.length();
}
}
@@ -877,8 +882,8 @@
return _getStringOrCopyKey(U_ICUDATA_LANG, displayLocale,
_kTypes, keyword,
- keywordValue,
- keywordValue,
+ keywordValue.data(),
+ keywordValue.data(),
dest, destCapacity,
status);
}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/locdistance.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/locdistance.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/locdistance.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// locdistance.cpp
// created: 2019may08 Markus W. Scherer
@@ -69,7 +69,7 @@
errorCode = U_MISSING_RESOURCE_ERROR;
return;
}
- gLocaleDistance = new LocaleDistance(data);
+ gLocaleDistance = new LocaleDistance(data, likely);
if (gLocaleDistance == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -83,7 +83,8 @@
return gLocaleDistance;
}
-LocaleDistance::LocaleDistance(const LocaleDistanceData &data) :
+LocaleDistance::LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely) :
+ likelySubtags(likely),
trie(data.distanceTrieBytes),
regionToPartitionsIndex(data.regionToPartitions), partitionArrays(data.partitions),
paradigmLSRs(data.paradigms), paradigmLSRsLength(data.paradigmsLength),
@@ -97,17 +98,19 @@
// a mere region difference for one desired locale
// is as good as a perfect match for the next following desired locale.
// As of CLDR 36, we have <languageMatch desired="en_*_*" supported="en_*_*" distance="5"/>.
- LSR en("en", "Latn", "US");
- LSR enGB("en", "Latn", "GB");
+ LSR en("en", "Latn", "US", LSR::EXPLICIT_LSR);
+ LSR enGB("en", "Latn", "GB", LSR::EXPLICIT_LSR);
const LSR *p_enGB = &enGB;
- defaultDemotionPerDesiredLocale = getBestIndexAndDistance(en, &p_enGB, 1,
- 50, ULOCMATCH_FAVOR_LANGUAGE) & 0xff;
+ int32_t indexAndDistance = getBestIndexAndDistance(en, &p_enGB, 1,
+ shiftDistance(50), ULOCMATCH_FAVOR_LANGUAGE, ULOCMATCH_DIRECTION_WITH_ONE_WAY);
+ defaultDemotionPerDesiredLocale = getDistanceFloor(indexAndDistance);
}
int32_t LocaleDistance::getBestIndexAndDistance(
const LSR &desired,
const LSR **supportedLSRs, int32_t supportedLSRsLength,
- int32_t threshold, ULocMatchFavorSubtag favorSubtag) const {
+ int32_t shiftedThreshold,
+ ULocMatchFavorSubtag favorSubtag, ULocMatchDirection direction) const {
BytesTrie iter(trie);
// Look up the desired language only once for all supported LSRs.
// Its "distance" is either a match point value of 0, or a non-match negative value.
@@ -116,6 +119,8 @@
uint64_t desLangState = desLangDistance >= 0 && supportedLSRsLength > 1 ? iter.getState64() : 0;
// Index of the supported LSR with the lowest distance.
int32_t bestIndex = -1;
+ // Cached lookup info from XLikelySubtags.compareLikely().
+ int32_t bestLikelyInfo = -1;
for (int32_t slIndex = 0; slIndex < supportedLSRsLength; ++slIndex) {
const LSR &supported = *supportedLSRs[slIndex];
bool star = false;
@@ -145,6 +150,11 @@
star = true;
}
U_ASSERT(0 <= distance && distance <= 100);
+ // Round up the shifted threshold (if fraction bits are not 0)
+ // for comparison with un-shifted distances until we need fraction bits.
+ // (If we simply shifted non-zero fraction bits away, then we might ignore a language
+ // when it's really still a micro distance below the threshold.)
+ int32_t roundedThreshold = (shiftedThreshold + DISTANCE_FRACTION_MASK) >> DISTANCE_SHIFT;
// We implement "favor subtag" by reducing the language subtag distance
// (unscientifically reducing it to a quarter of the normal value),
// so that the script distance is relatively more important.
@@ -153,7 +163,9 @@
if (favorSubtag == ULOCMATCH_FAVOR_SCRIPT) {
distance >>= 2;
}
- if (distance >= threshold) {
+ // Let distance == roundedThreshold pass until the tie-breaker logic
+ // at the end of the loop.
+ if (distance > roundedThreshold) {
continue;
}
@@ -171,7 +183,7 @@
scriptDistance &= ~DISTANCE_IS_FINAL;
}
distance += scriptDistance;
- if (distance >= threshold) {
+ if (distance > roundedThreshold) {
continue;
}
@@ -180,8 +192,8 @@
} else if (star || (flags & DISTANCE_IS_FINAL) != 0) {
distance += defaultRegionDistance;
} else {
- int32_t remainingThreshold = threshold - distance;
- if (minRegionDistance >= remainingThreshold) {
+ int32_t remainingThreshold = roundedThreshold - distance;
+ if (minRegionDistance > remainingThreshold) {
continue;
}
@@ -196,15 +208,51 @@
partitionsForRegion(supported),
remainingThreshold);
}
- if (distance < threshold) {
- if (distance == 0) {
- return slIndex << 8;
+ int32_t shiftedDistance = shiftDistance(distance);
+ if (shiftedDistance == 0) {
+ // Distinguish between equivalent but originally unequal locales via an
+ // additional micro distance.
+ shiftedDistance |= (desired.flags ^ supported.flags);
+ if (shiftedDistance < shiftedThreshold) {
+ if (direction != ULOCMATCH_DIRECTION_ONLY_TWO_WAY ||
+ // Is there also a match when we swap desired/supported?
+ isMatch(supported, desired, shiftedThreshold, favorSubtag)) {
+ if (shiftedDistance == 0) {
+ return slIndex << INDEX_SHIFT;
+ }
+ bestIndex = slIndex;
+ shiftedThreshold = shiftedDistance;
+ bestLikelyInfo = -1;
+ }
}
- bestIndex = slIndex;
- threshold = distance;
+ } else {
+ if (shiftedDistance < shiftedThreshold) {
+ if (direction != ULOCMATCH_DIRECTION_ONLY_TWO_WAY ||
+ // Is there also a match when we swap desired/supported?
+ isMatch(supported, desired, shiftedThreshold, favorSubtag)) {
+ bestIndex = slIndex;
+ shiftedThreshold = shiftedDistance;
+ bestLikelyInfo = -1;
+ }
+ } else if (shiftedDistance == shiftedThreshold && bestIndex >= 0) {
+ if (direction != ULOCMATCH_DIRECTION_ONLY_TWO_WAY ||
+ // Is there also a match when we swap desired/supported?
+ isMatch(supported, desired, shiftedThreshold, favorSubtag)) {
+ bestLikelyInfo = likelySubtags.compareLikely(
+ supported, *supportedLSRs[bestIndex], bestLikelyInfo);
+ if ((bestLikelyInfo & 1) != 0) {
+ // This supported locale matches as well as the previous best match,
+ // and neither matches perfectly,
+ // but this one is "more likely" (has more-default subtags).
+ bestIndex = slIndex;
+ }
+ }
+ }
}
}
- return bestIndex >= 0 ? (bestIndex << 8) | threshold : 0xffffff00 | ABOVE_THRESHOLD;
+ return bestIndex >= 0 ?
+ (bestIndex << INDEX_SHIFT) | shiftedThreshold :
+ INDEX_NEG_1 | shiftDistance(ABOVE_THRESHOLD);
}
int32_t LocaleDistance::getDesSuppScriptDistance(
@@ -273,7 +321,7 @@
d = getFallbackRegionDistance(iter, startState);
star = true;
}
- if (d >= threshold) {
+ if (d > threshold) {
return d;
} else if (regionDistance < d) {
regionDistance = d;
@@ -286,7 +334,7 @@
}
} else if (!star) {
int32_t d = getFallbackRegionDistance(iter, startState);
- if (d >= threshold) {
+ if (d > threshold) {
return d;
} else if (regionDistance < d) {
regionDistance = d;
@@ -352,11 +400,14 @@
}
UBool LocaleDistance::isParadigmLSR(const LSR &lsr) const {
- // Linear search for a very short list (length 6 as of 2019).
- // If there are many paradigm LSRs we should use a hash set.
+ // Linear search for a very short list (length 6 as of 2019),
+ // because we look for equivalence not equality, and
+ // because it's easy.
+ // If there are many paradigm LSRs we should use a hash set
+ // with custom comparator and hasher.
U_ASSERT(paradigmLSRsLength <= 15);
for (int32_t i = 0; i < paradigmLSRsLength; ++i) {
- if (lsr == paradigmLSRs[i]) { return true; }
+ if (lsr.isEquivalentTo(paradigmLSRs[i])) { return true; }
}
return false;
}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/locdistance.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/locdistance.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/locdistance.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// locdistance.h
// created: 2019may08 Markus W. Scherer
@@ -26,20 +26,42 @@
public:
static const LocaleDistance *getSingleton(UErrorCode &errorCode);
+ static int32_t shiftDistance(int32_t distance) {
+ return distance << DISTANCE_SHIFT;
+ }
+
+ static int32_t getShiftedDistance(int32_t indexAndDistance) {
+ return indexAndDistance & DISTANCE_MASK;
+ }
+
+ static double getDistanceDouble(int32_t indexAndDistance) {
+ double shiftedDistance = getShiftedDistance(indexAndDistance);
+ return shiftedDistance / (1 << DISTANCE_SHIFT);
+ }
+
+ static int32_t getDistanceFloor(int32_t indexAndDistance) {
+ return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
+ }
+
+ static int32_t getIndex(int32_t indexAndDistance) {
+ // assert indexAndDistance >= 0;
+ return indexAndDistance >> INDEX_SHIFT;
+ }
+
/**
* Finds the supported LSR with the smallest distance from the desired one.
* Equivalent LSR subtags must be normalized into a canonical form.
*
- * <p>Returns the index of the lowest-distance supported LSR in bits 31..8
+ * <p>Returns the index of the lowest-distance supported LSR in the high bits
* (negative if none has a distance below the threshold),
- * and its distance (0..ABOVE_THRESHOLD) in bits 7..0.
+ * and its distance (0..ABOVE_THRESHOLD) in the low bits.
*/
int32_t getBestIndexAndDistance(const LSR &desired,
const LSR **supportedLSRs, int32_t supportedLSRsLength,
- int32_t threshold, ULocMatchFavorSubtag favorSubtag) const;
+ int32_t shiftedThreshold,
+ ULocMatchFavorSubtag favorSubtag,
+ ULocMatchDirection direction) const;
- int32_t getParadigmLSRsLength() const { return paradigmLSRsLength; }
-
UBool isParadigmLSR(const LSR &lsr) const;
int32_t getDefaultScriptDistance() const {
@@ -51,12 +73,30 @@
}
private:
- LocaleDistance(const LocaleDistanceData &data);
+ // The distance is shifted left to gain some fraction bits.
+ static constexpr int32_t DISTANCE_SHIFT = 3;
+ static constexpr int32_t DISTANCE_FRACTION_MASK = 7;
+ // 7 bits for 0..100
+ static constexpr int32_t DISTANCE_INT_SHIFT = 7;
+ static constexpr int32_t INDEX_SHIFT = DISTANCE_INT_SHIFT + DISTANCE_SHIFT;
+ static constexpr int32_t DISTANCE_MASK = 0x3ff;
+ // tic constexpr int32_t MAX_INDEX = 0x1fffff; // avoids sign bit
+ static constexpr int32_t INDEX_NEG_1 = 0xfffffc00;
+
+ LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely);
LocaleDistance(const LocaleDistance &other) = delete;
LocaleDistance &operator=(const LocaleDistance &other) = delete;
static void initLocaleDistance(UErrorCode &errorCode);
+ UBool isMatch(const LSR &desired, const LSR &supported,
+ int32_t shiftedThreshold, ULocMatchFavorSubtag favorSubtag) const {
+ const LSR *pSupp = &supported;
+ return getBestIndexAndDistance(
+ desired, &pSupp, 1,
+ shiftedThreshold, favorSubtag, ULOCMATCH_DIRECTION_WITH_ONE_WAY) >= 0;
+ }
+
static int32_t getDesSuppScriptDistance(BytesTrie &iter, uint64_t startState,
const char *desired, const char *supported);
@@ -79,6 +119,8 @@
return defaultRegionDistance;
}
+ const XLikelySubtags &likelySubtags;
+
// The trie maps each dlang+slang+dscript+sscript+dregion+sregion
// (encoded in ASCII with bit 7 set on the last character of each subtag) to a distance.
// There is also a trie value for each subsequence of whole subtags.
Modified: trunk/Build/source/libs/icu/icu-src/source/common/locid.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/locid.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/locid.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -35,12 +35,15 @@
#include "unicode/bytestream.h"
#include "unicode/locid.h"
+#include "unicode/localebuilder.h"
#include "unicode/strenum.h"
#include "unicode/stringpiece.h"
#include "unicode/uloc.h"
+#include "unicode/ures.h"
#include "bytesinkutil.h"
#include "charstr.h"
+#include "charstrmap.h"
#include "cmemory.h"
#include "cstring.h"
#include "mutex.h"
@@ -50,7 +53,9 @@
#include "uhash.h"
#include "ulocimp.h"
#include "umutex.h"
+#include "uniquecharstr.h"
#include "ustr_imp.h"
+#include "uvector.h"
U_CDECL_BEGIN
static UBool U_CALLCONV locale_cleanup(void);
@@ -101,13 +106,6 @@
eMAX_LOCALES
} ELocalePos;
-U_CFUNC int32_t locale_getKeywords(const char *localeID,
- char prev,
- char *keywords, int32_t keywordCapacity,
- char *values, int32_t valuesCapacity, int32_t *valLen,
- UBool valuesToo,
- UErrorCode *status);
-
U_CDECL_BEGIN
//
// Deleter function for Locales owned by the default Locale hash table/
@@ -184,17 +182,16 @@
canonicalize = TRUE; // always canonicalize host ID
}
- char localeNameBuf[512];
+ CharString localeNameBuf;
+ {
+ CharStringByteSink sink(&localeNameBuf);
+ if (canonicalize) {
+ ulocimp_canonicalize(id, sink, &status);
+ } else {
+ ulocimp_getName(id, sink, &status);
+ }
+ }
- if (canonicalize) {
- uloc_canonicalize(id, localeNameBuf, sizeof(localeNameBuf)-1, &status);
- } else {
- uloc_getName(id, localeNameBuf, sizeof(localeNameBuf)-1, &status);
- }
- localeNameBuf[sizeof(localeNameBuf)-1] = 0; // Force null termination in event of
- // a long name filling the buffer.
- // (long names are truncated.)
- //
if (U_FAILURE(status)) {
return gDefaultLocale;
}
@@ -208,7 +205,7 @@
ucln_common_registerCleanup(UCLN_COMMON_LOCALE, locale_cleanup);
}
- Locale *newDefault = (Locale *)uhash_get(gDefaultLocalesHashT, localeNameBuf);
+ Locale *newDefault = (Locale *)uhash_get(gDefaultLocalesHashT, localeNameBuf.data());
if (newDefault == NULL) {
newDefault = new Locale(Locale::eBOGUS);
if (newDefault == NULL) {
@@ -215,7 +212,7 @@
status = U_MEMORY_ALLOCATION_ERROR;
return gDefaultLocale;
}
- newDefault->init(localeNameBuf, FALSE);
+ newDefault->init(localeNameBuf.data(), FALSE);
uhash_put(gDefaultLocalesHashT, (char*) newDefault->getName(), newDefault, &status);
if (U_FAILURE(status)) {
return gDefaultLocale;
@@ -253,6 +250,7 @@
// '_'
// In the platform codepage.
#define SEP_CHAR '_'
+#define NULL_CHAR '\0'
Locale::~Locale()
{
@@ -507,8 +505,1132 @@
return (uprv_strcmp(other.fullName, fullName) == 0);
}
-#define ISASCIIALPHA(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z'))
+namespace {
+UInitOnce gKnownCanonicalizedInitOnce = U_INITONCE_INITIALIZER;
+UHashtable *gKnownCanonicalized = nullptr;
+
+static const char* const KNOWN_CANONICALIZED[] = {
+ "c",
+ // Commonly used locales known are already canonicalized
+ "af", "af_ZA", "am", "am_ET", "ar", "ar_001", "as", "as_IN", "az", "az_AZ",
+ "be", "be_BY", "bg", "bg_BG", "bn", "bn_IN", "bs", "bs_BA", "ca", "ca_ES",
+ "cs", "cs_CZ", "cy", "cy_GB", "da", "da_DK", "de", "de_DE", "el", "el_GR",
+ "en", "en_GB", "en_US", "es", "es_419", "es_ES", "et", "et_EE", "eu",
+ "eu_ES", "fa", "fa_IR", "fi", "fi_FI", "fil", "fil_PH", "fr", "fr_FR",
+ "ga", "ga_IE", "gl", "gl_ES", "gu", "gu_IN", "he", "he_IL", "hi", "hi_IN",
+ "hr", "hr_HR", "hu", "hu_HU", "hy", "hy_AM", "id", "id_ID", "is", "is_IS",
+ "it", "it_IT", "ja", "ja_JP", "jv", "jv_ID", "ka", "ka_GE", "kk", "kk_KZ",
+ "km", "km_KH", "kn", "kn_IN", "ko", "ko_KR", "ky", "ky_KG", "lo", "lo_LA",
+ "lt", "lt_LT", "lv", "lv_LV", "mk", "mk_MK", "ml", "ml_IN", "mn", "mn_MN",
+ "mr", "mr_IN", "ms", "ms_MY", "my", "my_MM", "nb", "nb_NO", "ne", "ne_NP",
+ "nl", "nl_NL", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",
+ "pt", "pt_BR", "pt_PT", "ro", "ro_RO", "ru", "ru_RU", "sd", "sd_IN", "si",
+ "si_LK", "sk", "sk_SK", "sl", "sl_SI", "so", "so_SO", "sq", "sq_AL", "sr",
+ "sr_Cyrl_RS", "sr_Latn", "sr_RS", "sv", "sv_SE", "sw", "sw_TZ", "ta",
+ "ta_IN", "te", "te_IN", "th", "th_TH", "tk", "tk_TM", "tr", "tr_TR", "uk",
+ "uk_UA", "ur", "ur_PK", "uz", "uz_UZ", "vi", "vi_VN", "yue", "yue_Hant",
+ "yue_Hant_HK", "yue_HK", "zh", "zh_CN", "zh_Hans", "zh_Hans_CN", "zh_Hant",
+ "zh_Hant_TW", "zh_TW", "zu", "zu_ZA"
+};
+
+static UBool U_CALLCONV cleanupKnownCanonicalized() {
+ gKnownCanonicalizedInitOnce.reset();
+ if (gKnownCanonicalized) { uhash_close(gKnownCanonicalized); }
+ return TRUE;
+}
+
+static void U_CALLCONV loadKnownCanonicalized(UErrorCode &status) {
+ ucln_common_registerCleanup(UCLN_COMMON_LOCALE_KNOWN_CANONICALIZED,
+ cleanupKnownCanonicalized);
+ LocalUHashtablePointer newKnownCanonicalizedMap(
+ uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status));
+ for (int32_t i = 0;
+ U_SUCCESS(status) && i < UPRV_LENGTHOF(KNOWN_CANONICALIZED);
+ i++) {
+ uhash_puti(newKnownCanonicalizedMap.getAlias(),
+ (void*)KNOWN_CANONICALIZED[i],
+ 1, &status);
+ }
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ gKnownCanonicalized = newKnownCanonicalizedMap.orphan();
+}
+
+class AliasData;
+
+/**
+ * A Builder class to build the alias data.
+ */
+class AliasDataBuilder {
+public:
+ AliasDataBuilder() {
+ }
+
+ // Build the AliasData from resource.
+ AliasData* build(UErrorCode &status);
+
+private:
+ void readAlias(UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ void (*checkType)(const char* type),
+ void (*checkReplacement)(const UnicodeString& replacement),
+ UErrorCode &status);
+
+ // Read the languageAlias data from alias to
+ // strings+types+replacementIndexes
+ // The number of record will be stored into length.
+ // Allocate length items for types, to store the type field.
+ // Allocate length items for replacementIndexes,
+ // to store the index in the strings for the replacement script.
+ void readLanguageAlias(UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ UErrorCode &status);
+
+ // Read the scriptAlias data from alias to
+ // strings+types+replacementIndexes
+ // Allocate length items for types, to store the type field.
+ // Allocate length items for replacementIndexes,
+ // to store the index in the strings for the replacement script.
+ void readScriptAlias(UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length, UErrorCode &status);
+
+ // Read the territoryAlias data from alias to
+ // strings+types+replacementIndexes
+ // Allocate length items for types, to store the type field.
+ // Allocate length items for replacementIndexes,
+ // to store the index in the strings for the replacement script.
+ void readTerritoryAlias(UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length, UErrorCode &status);
+
+ // Read the variantAlias data from alias to
+ // strings+types+replacementIndexes
+ // Allocate length items for types, to store the type field.
+ // Allocate length items for replacementIndexes,
+ // to store the index in the strings for the replacement variant.
+ void readVariantAlias(UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length, UErrorCode &status);
+};
+
+/**
+ * A class to hold the Alias Data.
+ */
+class AliasData : public UMemory {
+public:
+ static const AliasData* singleton(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ // Do not get into loadData if the status already has error.
+ return nullptr;
+ }
+ umtx_initOnce(AliasData::gInitOnce, &AliasData::loadData, status);
+ return gSingleton;
+ }
+
+ const CharStringMap& languageMap() const { return language; }
+ const CharStringMap& scriptMap() const { return script; }
+ const CharStringMap& territoryMap() const { return territory; }
+ const CharStringMap& variantMap() const { return variant; }
+
+ static void U_CALLCONV loadData(UErrorCode &status);
+ static UBool U_CALLCONV cleanup();
+
+ static UInitOnce gInitOnce;
+
+private:
+ AliasData(CharStringMap languageMap,
+ CharStringMap scriptMap,
+ CharStringMap territoryMap,
+ CharStringMap variantMap,
+ CharString* strings)
+ : language(std::move(languageMap)),
+ script(std::move(scriptMap)),
+ territory(std::move(territoryMap)),
+ variant(std::move(variantMap)),
+ strings(strings) {
+ }
+
+ ~AliasData() {
+ delete strings;
+ }
+
+ static const AliasData* gSingleton;
+
+ CharStringMap language;
+ CharStringMap script;
+ CharStringMap territory;
+ CharStringMap variant;
+ CharString* strings;
+
+ friend class AliasDataBuilder;
+};
+
+
+const AliasData* AliasData::gSingleton = nullptr;
+UInitOnce AliasData::gInitOnce = U_INITONCE_INITIALIZER;
+
+UBool U_CALLCONV
+AliasData::cleanup()
+{
+ gInitOnce.reset();
+ delete gSingleton;
+ return TRUE;
+}
+
+void
+AliasDataBuilder::readAlias(
+ UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ void (*checkType)(const char* type),
+ void (*checkReplacement)(const UnicodeString& replacement),
+ UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ length = ures_getSize(alias);
+ const char** rawTypes = types.allocateInsteadAndCopy(length);
+ if (rawTypes == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ int32_t* rawIndexes = replacementIndexes.allocateInsteadAndCopy(length);
+ if (rawIndexes == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ int i = 0;
+ while (ures_hasNext(alias)) {
+ LocalUResourceBundlePointer res(
+ ures_getNextResource(alias, nullptr, &status));
+ const char* aliasFrom = ures_getKey(res.getAlias());
+ UnicodeString aliasTo =
+ ures_getUnicodeStringByKey(res.getAlias(), "replacement", &status);
+
+ checkType(aliasFrom);
+ checkReplacement(aliasTo);
+
+ rawTypes[i] = aliasFrom;
+ rawIndexes[i] = strings->add(aliasTo, status);
+ i++;
+ }
+}
+
+/**
+ * Read the languageAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement language.
+ */
+void
+AliasDataBuilder::readLanguageAlias(
+ UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ UErrorCode &status)
+{
+ return readAlias(
+ alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+ [](const char* type) {
+ // Assert the aliasFrom only contains the following possibilties
+ // language_REGION_variant
+ // language_REGION
+ // language_variant
+ // language
+ // und_variant
+ Locale test(type);
+ // Assert no script in aliasFrom
+ U_ASSERT(test.getScript()[0] == '\0');
+ // Assert when language is und, no REGION in aliasFrom.
+ U_ASSERT(test.getLanguage()[0] != '\0' || test.getCountry()[0] == '\0');
+ },
+#else
+ [](const char*) {},
+#endif
+ [](const UnicodeString&) {}, status);
+}
+
+/**
+ * Read the scriptAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement script.
+ */
+void
+AliasDataBuilder::readScriptAlias(
+ UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ UErrorCode &status)
+{
+ return readAlias(
+ alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+ [](const char* type) {
+ U_ASSERT(uprv_strlen(type) == 4);
+ },
+ [](const UnicodeString& replacement) {
+ U_ASSERT(replacement.length() == 4);
+ },
+#else
+ [](const char*) {},
+ [](const UnicodeString&) { },
+#endif
+ status);
+}
+
+/**
+ * Read the territoryAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement regions.
+ */
+void
+AliasDataBuilder::readTerritoryAlias(
+ UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ UErrorCode &status)
+{
+ return readAlias(
+ alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+ [](const char* type) {
+ U_ASSERT(uprv_strlen(type) == 2 || uprv_strlen(type) == 3);
+ },
+#else
+ [](const char*) {},
+#endif
+ [](const UnicodeString&) { },
+ status);
+}
+
+/**
+ * Read the variantAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement variant.
+ */
+void
+AliasDataBuilder::readVariantAlias(
+ UResourceBundle* alias,
+ UniqueCharStrings* strings,
+ LocalMemory<const char*>& types,
+ LocalMemory<int32_t>& replacementIndexes,
+ int32_t &length,
+ UErrorCode &status)
+{
+ return readAlias(
+ alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+ [](const char* type) {
+ U_ASSERT(uprv_strlen(type) >= 4 && uprv_strlen(type) <= 8);
+ U_ASSERT(uprv_strlen(type) != 4 ||
+ (type[0] >= '0' && type[0] <= '9'));
+ },
+ [](const UnicodeString& replacement) {
+ U_ASSERT(replacement.length() >= 4 && replacement.length() <= 8);
+ U_ASSERT(replacement.length() != 4 ||
+ (replacement.charAt(0) >= u'0' &&
+ replacement.charAt(0) <= u'9'));
+ },
+#else
+ [](const char*) {},
+ [](const UnicodeString&) { },
+#endif
+ status);
+}
+
+/**
+ * Initializes the alias data from the ICU resource bundles. The alias data
+ * contains alias of language, country, script and variants.
+ *
+ * If the alias data has already loaded, then this method simply returns without
+ * doing anything meaningful.
+ */
+void U_CALLCONV
+AliasData::loadData(UErrorCode &status)
+{
+#ifdef LOCALE_CANONICALIZATION_DEBUG
+ UDate start = uprv_getRawUTCtime();
+#endif // LOCALE_CANONICALIZATION_DEBUG
+ ucln_common_registerCleanup(UCLN_COMMON_LOCALE_ALIAS, cleanup);
+ AliasDataBuilder builder;
+ gSingleton = builder.build(status);
+#ifdef LOCALE_CANONICALIZATION_DEBUG
+ UDate end = uprv_getRawUTCtime();
+ printf("AliasData::loadData took total %f ms\n", end - start);
+#endif // LOCALE_CANONICALIZATION_DEBUG
+}
+
+/**
+ * Build the alias data from resources.
+ */
+AliasData*
+AliasDataBuilder::build(UErrorCode &status) {
+ LocalUResourceBundlePointer metadata(
+ ures_openDirect(nullptr, "metadata", &status));
+ LocalUResourceBundlePointer metadataAlias(
+ ures_getByKey(metadata.getAlias(), "alias", nullptr, &status));
+ LocalUResourceBundlePointer languageAlias(
+ ures_getByKey(metadataAlias.getAlias(), "language", nullptr, &status));
+ LocalUResourceBundlePointer scriptAlias(
+ ures_getByKey(metadataAlias.getAlias(), "script", nullptr, &status));
+ LocalUResourceBundlePointer territoryAlias(
+ ures_getByKey(metadataAlias.getAlias(), "territory", nullptr, &status));
+ LocalUResourceBundlePointer variantAlias(
+ ures_getByKey(metadataAlias.getAlias(), "variant", nullptr, &status));
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ int32_t languagesLength = 0, scriptLength = 0, territoryLength = 0,
+ variantLength = 0;
+
+ // Read the languageAlias into languageTypes, languageReplacementIndexes
+ // and strings
+ UniqueCharStrings strings(status);
+ LocalMemory<const char*> languageTypes;
+ LocalMemory<int32_t> languageReplacementIndexes;
+ readLanguageAlias(languageAlias.getAlias(),
+ &strings,
+ languageTypes,
+ languageReplacementIndexes,
+ languagesLength,
+ status);
+
+ // Read the scriptAlias into scriptTypes, scriptReplacementIndexes
+ // and strings
+ LocalMemory<const char*> scriptTypes;
+ LocalMemory<int32_t> scriptReplacementIndexes;
+ readScriptAlias(scriptAlias.getAlias(),
+ &strings,
+ scriptTypes,
+ scriptReplacementIndexes,
+ scriptLength,
+ status);
+
+ // Read the territoryAlias into territoryTypes, territoryReplacementIndexes
+ // and strings
+ LocalMemory<const char*> territoryTypes;
+ LocalMemory<int32_t> territoryReplacementIndexes;
+ readTerritoryAlias(territoryAlias.getAlias(),
+ &strings,
+ territoryTypes,
+ territoryReplacementIndexes,
+ territoryLength, status);
+
+ // Read the variantAlias into variantTypes, variantReplacementIndexes
+ // and strings
+ LocalMemory<const char*> variantTypes;
+ LocalMemory<int32_t> variantReplacementIndexes;
+ readVariantAlias(variantAlias.getAlias(),
+ &strings,
+ variantTypes,
+ variantReplacementIndexes,
+ variantLength, status);
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ // We can only use strings after freeze it.
+ strings.freeze();
+
+ // Build the languageMap from languageTypes & languageReplacementIndexes
+ CharStringMap languageMap(490, status);
+ for (int32_t i = 0; U_SUCCESS(status) && i < languagesLength; i++) {
+ languageMap.put(languageTypes[i],
+ strings.get(languageReplacementIndexes[i]),
+ status);
+ }
+
+ // Build the scriptMap from scriptTypes & scriptReplacementIndexes
+ CharStringMap scriptMap(1, status);
+ for (int32_t i = 0; U_SUCCESS(status) && i < scriptLength; i++) {
+ scriptMap.put(scriptTypes[i],
+ strings.get(scriptReplacementIndexes[i]),
+ status);
+ }
+
+ // Build the territoryMap from territoryTypes & territoryReplacementIndexes
+ CharStringMap territoryMap(650, status);
+ for (int32_t i = 0; U_SUCCESS(status) && i < territoryLength; i++) {
+ territoryMap.put(territoryTypes[i],
+ strings.get(territoryReplacementIndexes[i]),
+ status);
+ }
+
+ // Build the variantMap from variantTypes & variantReplacementIndexes.
+ CharStringMap variantMap(2, status);
+ for (int32_t i = 0; U_SUCCESS(status) && i < variantLength; i++) {
+ variantMap.put(variantTypes[i],
+ strings.get(variantReplacementIndexes[i]),
+ status);
+ }
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ // copy hashtables
+ auto *data = new AliasData(
+ std::move(languageMap),
+ std::move(scriptMap),
+ std::move(territoryMap),
+ std::move(variantMap),
+ strings.orphanCharStrings());
+
+ if (data == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return data;
+}
+
+/**
+ * A class that find the replacement values of locale fields by using AliasData.
+ */
+class AliasReplacer {
+public:
+ AliasReplacer(UErrorCode status) :
+ language(nullptr), script(nullptr), region(nullptr),
+ extensions(nullptr), variants(status),
+ data(nullptr) {
+ }
+ ~AliasReplacer() {
+ }
+
+ // Check the fields inside locale, if need to replace fields,
+ // place the the replaced locale ID in out and return true.
+ // Otherwise return false for no replacement or error.
+ bool replace(
+ const Locale& locale, CharString& out, UErrorCode& status);
+
+private:
+ const char* language;
+ const char* script;
+ const char* region;
+ const char* extensions;
+ UVector variants;
+
+ const AliasData* data;
+
+ inline bool notEmpty(const char* str) {
+ return str && str[0] != NULL_CHAR;
+ }
+
+ /**
+ * If replacement is neither null nor empty and input is either null or empty,
+ * return replacement.
+ * If replacement is neither null nor empty but input is not empty, return input.
+ * If replacement is either null or empty and type is either null or empty,
+ * return input.
+ * Otherwise return null.
+ * replacement input type return
+ * AAA nullptr * AAA
+ * AAA BBB * BBB
+ * nullptr || "" CCC nullptr CCC
+ * nullptr || "" * DDD nullptr
+ */
+ inline const char* deleteOrReplace(
+ const char* input, const char* type, const char* replacement) {
+ return notEmpty(replacement) ?
+ ((input == nullptr) ? replacement : input) :
+ ((type == nullptr) ? input : nullptr);
+ }
+
+ inline bool same(const char* a, const char* b) {
+ if (a == nullptr && b == nullptr) {
+ return true;
+ }
+ if ((a == nullptr && b != nullptr) ||
+ (a != nullptr && b == nullptr)) {
+ return false;
+ }
+ return uprv_strcmp(a, b) == 0;
+ }
+
+ // Gather fields and generate locale ID into out.
+ CharString& outputToString(CharString& out, UErrorCode status);
+
+ // Generate the lookup key.
+ CharString& generateKey(const char* language, const char* region,
+ const char* variant, CharString& out,
+ UErrorCode status);
+
+ void parseLanguageReplacement(const char* replacement,
+ const char*& replaceLanguage,
+ const char*& replaceScript,
+ const char*& replaceRegion,
+ const char*& replaceVariant,
+ const char*& replaceExtensions,
+ UVector& toBeFreed,
+ UErrorCode& status);
+
+ // Replace by using languageAlias.
+ bool replaceLanguage(bool checkLanguage, bool checkRegion,
+ bool checkVariants, UVector& toBeFreed,
+ UErrorCode& status);
+
+ // Replace by using territoryAlias.
+ bool replaceTerritory(UVector& toBeFreed, UErrorCode& status);
+
+ // Replace by using scriptAlias.
+ bool replaceScript(UErrorCode& status);
+
+ // Replace by using variantAlias.
+ bool replaceVariant(UErrorCode& status);
+};
+
+CharString&
+AliasReplacer::generateKey(
+ const char* language, const char* region, const char* variant,
+ CharString& out, UErrorCode status)
+{
+ out.append(language, status);
+ if (notEmpty(region)) {
+ out.append(SEP_CHAR, status)
+ .append(region, status);
+ }
+ if (notEmpty(variant)) {
+ out.append(SEP_CHAR, status)
+ .append(variant, status);
+ }
+ return out;
+}
+
+void
+AliasReplacer::parseLanguageReplacement(
+ const char* replacement,
+ const char*& replacedLanguage,
+ const char*& replacedScript,
+ const char*& replacedRegion,
+ const char*& replacedVariant,
+ const char*& replacedExtensions,
+ UVector& toBeFreed,
+ UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+ replacedScript = replacedRegion = replacedVariant
+ = replacedExtensions = nullptr;
+ if (uprv_strchr(replacement, '_') == nullptr) {
+ replacedLanguage = replacement;
+ // reach the end, just return it.
+ return;
+ }
+ // We have multiple field so we have to allocate and parse
+ CharString* str = new CharString(
+ replacement, (int32_t)uprv_strlen(replacement), status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (str == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ toBeFreed.addElement(str, status);
+ char* data = str->data();
+ replacedLanguage = (const char*) data;
+ char* endOfField = uprv_strchr(data, '_');
+ *endOfField = '\0'; // null terminiate it.
+ endOfField++;
+ const char* start = endOfField;
+ endOfField = (char*) uprv_strchr(start, '_');
+ size_t len = 0;
+ if (endOfField == nullptr) {
+ len = uprv_strlen(start);
+ } else {
+ len = endOfField - start;
+ *endOfField = '\0'; // null terminiate it.
+ }
+ if (len == 4 && uprv_isASCIILetter(*start)) {
+ // Got a script
+ replacedScript = start;
+ if (endOfField == nullptr) {
+ return;
+ }
+ start = endOfField++;
+ endOfField = (char*)uprv_strchr(start, '_');
+ if (endOfField == nullptr) {
+ len = uprv_strlen(start);
+ } else {
+ len = endOfField - start;
+ *endOfField = '\0'; // null terminiate it.
+ }
+ }
+ if (len >= 2 && len <= 3) {
+ // Got a region
+ replacedRegion = start;
+ if (endOfField == nullptr) {
+ return;
+ }
+ start = endOfField++;
+ endOfField = (char*)uprv_strchr(start, '_');
+ if (endOfField == nullptr) {
+ len = uprv_strlen(start);
+ } else {
+ len = endOfField - start;
+ *endOfField = '\0'; // null terminiate it.
+ }
+ }
+ if (len >= 4) {
+ // Got a variant
+ replacedVariant = start;
+ if (endOfField == nullptr) {
+ return;
+ }
+ start = endOfField++;
+ }
+ replacedExtensions = start;
+}
+
+bool
+AliasReplacer::replaceLanguage(
+ bool checkLanguage, bool checkRegion,
+ bool checkVariants, UVector& toBeFreed, UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ if ( (checkRegion && region == nullptr) ||
+ (checkVariants && variants.size() == 0)) {
+ // Nothing to search.
+ return false;
+ }
+ int32_t variant_size = checkVariants ? variants.size() : 1;
+ // Since we may have more than one variant, we need to loop through them.
+ const char* searchLanguage = checkLanguage ? language : "und";
+ const char* searchRegion = checkRegion ? region : nullptr;
+ const char* searchVariant = nullptr;
+ for (int32_t variant_index = 0;
+ variant_index < variant_size;
+ variant_index++) {
+ if (checkVariants) {
+ U_ASSERT(variant_index < variant_size);
+ searchVariant = (const char*)(variants.elementAt(variant_index));
+ }
+
+ if (searchVariant != nullptr && uprv_strlen(searchVariant) < 4) {
+ // Do not consider ill-formed variant subtag.
+ searchVariant = nullptr;
+ }
+ CharString typeKey;
+ generateKey(searchLanguage, searchRegion, searchVariant, typeKey,
+ status);
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ const char *replacement = data->languageMap().get(typeKey.data());
+ if (replacement == nullptr) {
+ // Found no replacement data.
+ continue;
+ }
+
+ const char* replacedLanguage = nullptr;
+ const char* replacedScript = nullptr;
+ const char* replacedRegion = nullptr;
+ const char* replacedVariant = nullptr;
+ const char* replacedExtensions = nullptr;
+ parseLanguageReplacement(replacement,
+ replacedLanguage,
+ replacedScript,
+ replacedRegion,
+ replacedVariant,
+ replacedExtensions,
+ toBeFreed,
+ status);
+ replacedLanguage =
+ (replacedLanguage != nullptr && uprv_strcmp(replacedLanguage, "und") == 0) ?
+ language : replacedLanguage;
+ replacedScript = deleteOrReplace(script, nullptr, replacedScript);
+ replacedRegion = deleteOrReplace(region, searchRegion, replacedRegion);
+ replacedVariant = deleteOrReplace(
+ searchVariant, searchVariant, replacedVariant);
+
+ if ( same(language, replacedLanguage) &&
+ same(script, replacedScript) &&
+ same(region, replacedRegion) &&
+ same(searchVariant, replacedVariant) &&
+ replacedExtensions == nullptr) {
+ // Replacement produce no changes.
+ continue;
+ }
+
+ language = replacedLanguage;
+ region = replacedRegion;
+ script = replacedScript;
+ if (searchVariant != nullptr) {
+ if (notEmpty(replacedVariant)) {
+ variants.setElementAt((void*)replacedVariant, variant_index);
+ } else {
+ variants.removeElementAt(variant_index);
+ }
+ }
+ if (replacedExtensions != nullptr) {
+ // TODO(ICU-21292)
+ // DO NOTHING
+ // UTS35 does not specifiy what should we do if we have extensions in the
+ // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have
+ // extensions in them languageAlias:
+ // i_default => en_x_i_default
+ // i_enochian => und_x_i_enochian
+ // i_mingo => see_x_i_mingo
+ // zh_min => nan_x_zh_min
+ // But all of them are already changed by code inside ultag_parse() before
+ // hitting this code.
+ }
+
+ // Something changed by language alias data.
+ return true;
+ }
+ // Nothing changed by language alias data.
+ return false;
+}
+
+bool
+AliasReplacer::replaceTerritory(UVector& toBeFreed, UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ if (region == nullptr) {
+ // No region to search.
+ return false;
+ }
+ const char *replacement = data->territoryMap().get(region);
+ if (replacement == nullptr) {
+ // Found no replacement data for this region.
+ return false;
+ }
+ const char* replacedRegion = replacement;
+ const char* firstSpace = uprv_strchr(replacement, ' ');
+ if (firstSpace != nullptr) {
+ // If there are are more than one region in the replacement.
+ // We need to check which one match based on the language.
+ // Cannot use nullptr for language because that will construct
+ // the default locale, in that case, use "und" to get the correct
+ // locale.
+ Locale l = LocaleBuilder()
+ .setLanguage(language == nullptr ? "und" : language)
+ .setScript(script)
+ .build(status);
+ l.addLikelySubtags(status);
+ const char* likelyRegion = l.getCountry();
+ LocalPointer<CharString> item;
+ if (likelyRegion != nullptr && uprv_strlen(likelyRegion) > 0) {
+ size_t len = uprv_strlen(likelyRegion);
+ const char* foundInReplacement = uprv_strstr(replacement,
+ likelyRegion);
+ if (foundInReplacement != nullptr) {
+ // Assuming the case there are no three letter region code in
+ // the replacement of territoryAlias
+ U_ASSERT(foundInReplacement == replacement ||
+ *(foundInReplacement-1) == ' ');
+ U_ASSERT(foundInReplacement[len] == ' ' ||
+ foundInReplacement[len] == '\0');
+ item.adoptInsteadAndCheckErrorCode(
+ new CharString(foundInReplacement, (int32_t)len, status), status);
+ }
+ }
+ if (item.isNull() && U_SUCCESS(status)) {
+ item.adoptInsteadAndCheckErrorCode(
+ new CharString(replacement,
+ (int32_t)(firstSpace - replacement), status), status);
+ }
+ if (U_FAILURE(status)) { return false; }
+ if (item.isNull()) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return false;
+ }
+ replacedRegion = item->data();
+ toBeFreed.addElement(item.orphan(), status);
+ }
+ U_ASSERT(!same(region, replacedRegion));
+ region = replacedRegion;
+ // The region is changed by data in territory alias.
+ return true;
+}
+
+bool
+AliasReplacer::replaceScript(UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ if (script == nullptr) {
+ // No script to search.
+ return false;
+ }
+ const char *replacement = data->scriptMap().get(script);
+ if (replacement == nullptr) {
+ // Found no replacement data for this script.
+ return false;
+ }
+ U_ASSERT(!same(script, replacement));
+ script = replacement;
+ // The script is changed by data in script alias.
+ return true;
+}
+
+bool
+AliasReplacer::replaceVariant(UErrorCode& status)
+{
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ // Since we may have more than one variant, we need to loop through them.
+ for (int32_t i = 0; i < variants.size(); i++) {
+ const char *variant = (const char*)(variants.elementAt(i));
+ const char *replacement = data->variantMap().get(variant);
+ if (replacement == nullptr) {
+ // Found no replacement data for this variant.
+ continue;
+ }
+ U_ASSERT((uprv_strlen(replacement) >= 5 &&
+ uprv_strlen(replacement) <= 8) ||
+ (uprv_strlen(replacement) == 4 &&
+ replacement[0] >= '0' &&
+ replacement[0] <= '9'));
+ if (!same(variant, replacement)) {
+ variants.setElementAt((void*)replacement, i);
+ // Special hack to handle hepburn-heploc => alalc97
+ if (uprv_strcmp(variant, "heploc") == 0) {
+ for (int32_t j = 0; j < variants.size(); j++) {
+ if (uprv_strcmp((const char*)(variants.elementAt(j)),
+ "hepburn") == 0) {
+ variants.removeElementAt(j);
+ }
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
+CharString&
+AliasReplacer::outputToString(
+ CharString& out, UErrorCode status)
+{
+ out.append(language, status);
+ if (notEmpty(script)) {
+ out.append(SEP_CHAR, status)
+ .append(script, status);
+ }
+ if (notEmpty(region)) {
+ out.append(SEP_CHAR, status)
+ .append(region, status);
+ }
+ if (variants.size() > 0) {
+ if (!notEmpty(script) && !notEmpty(region)) {
+ out.append(SEP_CHAR, status);
+ }
+ variants.sort([](UElement e1, UElement e2) -> int8_t {
+ return uprv_strcmp(
+ (const char*)e1.pointer, (const char*)e2.pointer);
+ }, status);
+ int32_t variantsStart = out.length();
+ for (int32_t i = 0; i < variants.size(); i++) {
+ out.append(SEP_CHAR, status)
+ .append((const char*)(variants.elementAt(i)),
+ status);
+ }
+ T_CString_toUpperCase(out.data() + variantsStart);
+ }
+ if (notEmpty(extensions)) {
+ CharString tmp("und_", status);
+ tmp.append(extensions, status);
+ Locale tmpLocale(tmp.data());
+ // only support x extension inside CLDR for now.
+ U_ASSERT(extensions[0] == 'x');
+ out.append(tmpLocale.getName() + 1, status);
+ }
+ return out;
+}
+
+bool
+AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status)
+{
+ data = AliasData::singleton(status);
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ U_ASSERT(data != nullptr);
+ out.clear();
+ language = locale.getLanguage();
+ if (!notEmpty(language)) {
+ language = nullptr;
+ }
+ script = locale.getScript();
+ if (!notEmpty(script)) {
+ script = nullptr;
+ }
+ region = locale.getCountry();
+ if (!notEmpty(region)) {
+ region = nullptr;
+ }
+ const char* variantsStr = locale.getVariant();
+ const char* extensionsStr = locale_getKeywordsStart(locale.getName());
+ CharString variantsBuff(variantsStr, -1, status);
+ if (!variantsBuff.isEmpty()) {
+ if (U_FAILURE(status)) { return false; }
+ char* start = variantsBuff.data();
+ T_CString_toLowerCase(start);
+ char* end;
+ while ((end = uprv_strchr(start, SEP_CHAR)) != nullptr &&
+ U_SUCCESS(status)) {
+ *end = NULL_CHAR; // null terminate inside variantsBuff
+ variants.addElement(start, status);
+ start = end + 1;
+ }
+ variants.addElement(start, status);
+ }
+ if (U_FAILURE(status)) { return false; }
+
+ // Sort the variants
+ variants.sort([](UElement e1, UElement e2) -> int8_t {
+ return uprv_strcmp(
+ (const char*)e1.pointer, (const char*)e2.pointer);
+ }, status);
+
+ // A changed count to assert when loop too many times.
+ int changed = 0;
+ // A UVector to to hold CharString allocated by the replace* method
+ // and freed when out of scope from his function.
+ UVector stringsToBeFreed([](void *obj){ delete ((CharString*) obj); },
+ nullptr, 10, status);
+ while (U_SUCCESS(status)) {
+ // Something wrong with the data cause looping here more than 10 times
+ // already.
+ U_ASSERT(changed < 5);
+ // From observation of key in data/misc/metadata.txt
+ // we know currently we only need to search in the following combination
+ // of fields for type in languageAlias:
+ // * lang_region_variant
+ // * lang_region
+ // * lang_variant
+ // * lang
+ // * und_variant
+ // This assumption is ensured by the U_ASSERT in readLanguageAlias
+ //
+ // lang REGION variant
+ if ( replaceLanguage(true, true, true, stringsToBeFreed, status) ||
+ replaceLanguage(true, true, false, stringsToBeFreed, status) ||
+ replaceLanguage(true, false, true, stringsToBeFreed, status) ||
+ replaceLanguage(true, false, false, stringsToBeFreed, status) ||
+ replaceLanguage(false,false, true, stringsToBeFreed, status) ||
+ replaceTerritory(stringsToBeFreed, status) ||
+ replaceScript(status) ||
+ replaceVariant(status)) {
+ // Some values in data is changed, try to match from the beginning
+ // again.
+ changed++;
+ continue;
+ }
+ // Nothing changed. Break out.
+ break;
+ } // while(1)
+
+ if (U_FAILURE(status)) { return false; }
+ // Nothing changed and we know the order of the vaiants are not change
+ // because we have no variant or only one.
+ if (changed == 0 && variants.size() <= 1) {
+ return false;
+ }
+ outputToString(out, status);
+ if (extensionsStr != nullptr) {
+ out.append(extensionsStr, status);
+ }
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ // If the tag is not changed, return.
+ if (uprv_strcmp(out.data(), locale.getName()) == 0) {
+ U_ASSERT(changed == 0);
+ U_ASSERT(variants.size() > 1);
+ out.clear();
+ return false;
+ }
+ return true;
+}
+
+// Return true if the locale is changed during canonicalization.
+// The replaced value then will be put into out.
+bool
+canonicalizeLocale(const Locale& locale, CharString& out, UErrorCode& status)
+{
+ AliasReplacer replacer(status);
+ return replacer.replace(locale, out, status);
+}
+
+// Function to optimize for known cases without so we can skip the loading
+// of resources in the startup time until we really need it.
+bool
+isKnownCanonicalizedLocale(const char* locale, UErrorCode& status)
+{
+ if ( uprv_strcmp(locale, "c") == 0 ||
+ uprv_strcmp(locale, "en") == 0 ||
+ uprv_strcmp(locale, "en_US") == 0) {
+ return true;
+ }
+
+ // common well-known Canonicalized.
+ umtx_initOnce(gKnownCanonicalizedInitOnce,
+ &loadKnownCanonicalized, status);
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ U_ASSERT(gKnownCanonicalized != nullptr);
+ return uhash_geti(gKnownCanonicalized, locale) != 0;
+}
+
+} // namespace
+
+// Function for testing.
+U_CAPI const char* const*
+ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length)
+{
+ *length = UPRV_LENGTHOF(KNOWN_CANONICALIZED);
+ return KNOWN_CANONICALIZED;
+}
+
+// Function for testing.
+U_CAPI bool
+ulocimp_isCanonicalizedLocaleForTest(const char* localeName)
+{
+ Locale l(localeName);
+ UErrorCode status = U_ZERO_ERROR;
+ CharString temp;
+ return !canonicalizeLocale(l, temp, status) && U_SUCCESS(status);
+}
+
/*This function initializes a Locale from a C locale ID*/
Locale& Locale::init(const char* localeID, UBool canonicalize)
{
@@ -603,9 +1725,9 @@
uprv_memcpy(language, fullName, fieldLen[0]);
language[fieldLen[0]] = 0;
}
- if (fieldLen[1] == 4 && ISASCIIALPHA(field[1][0]) &&
- ISASCIIALPHA(field[1][1]) && ISASCIIALPHA(field[1][2]) &&
- ISASCIIALPHA(field[1][3])) {
+ if (fieldLen[1] == 4 && uprv_isASCIILetter(field[1][0]) &&
+ uprv_isASCIILetter(field[1][1]) && uprv_isASCIILetter(field[1][2]) &&
+ uprv_isASCIILetter(field[1][3])) {
/* We have at least a script */
uprv_memcpy(script, field[1], fieldLen[1]);
script[fieldLen[1]] = 0;
@@ -632,6 +1754,21 @@
break;
}
+ if (canonicalize) {
+ if (!isKnownCanonicalizedLocale(fullName, err)) {
+ CharString replaced;
+ // Not sure it is already canonicalized
+ if (canonicalizeLocale(*this, replaced, err)) {
+ U_ASSERT(U_SUCCESS(err));
+ // If need replacement, call init again.
+ init(replaced.data(), false);
+ }
+ if (U_FAILURE(err)) {
+ break;
+ }
+ }
+ } // if (canonicalize) {
+
// successful end of init()
return *this;
} while(0); /*loop doesn't iterate*/
@@ -778,6 +1915,25 @@
}
}
+void
+Locale::canonicalize(UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (isBogus()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ CharString uncanonicalized(fullName, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ init(uncanonicalized.data(), /*canonicalize=*/TRUE);
+ if (isBogus()) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+}
+
Locale U_EXPORT2
Locale::forLanguageTag(StringPiece tag, UErrorCode& status)
{
@@ -787,13 +1943,14 @@
return result;
}
- // If a BCP-47 language tag is passed as the language parameter to the
+ // If a BCP 47 language tag is passed as the language parameter to the
// normal Locale constructor, it will actually fall back to invoking
// uloc_forLanguageTag() to parse it if it somehow is able to detect that
- // the string actually is BCP-47. This works well for things like strings
- // using BCP-47 extensions, but it does not at all work for things like
- // BCP-47 grandfathered tags (eg. "en-GB-oed") which are possible to also
- // interpret as ICU locale IDs and because of that won't trigger the BCP-47
+ // the string actually is BCP 47. This works well for things like strings
+ // using BCP 47 extensions, but it does not at all work for things like
+ // legacy language tags (marked as “Type: grandfathered” in BCP 47,
+ // e.g., "en-GB-oed") which are possible to also
+ // interpret as ICU locale IDs and because of that won't trigger the BCP 47
// parsing. Therefore the code here explicitly calls uloc_forLanguageTag()
// and then Locale::init(), instead of just calling the normal constructor.
@@ -1177,8 +2334,6 @@
StringEnumeration *
Locale::createKeywords(UErrorCode &status) const
{
- char keywords[256];
- int32_t keywordCapacity = sizeof keywords;
StringEnumeration *result = NULL;
if (U_FAILURE(status)) {
@@ -1189,9 +2344,11 @@
const char* assignment = uprv_strchr(fullName, '=');
if(variantStart) {
if(assignment > variantStart) {
- int32_t keyLen = locale_getKeywords(variantStart+1, '@', keywords, keywordCapacity, NULL, 0, NULL, FALSE, &status);
- if(U_SUCCESS(status) && keyLen) {
- result = new KeywordEnumeration(keywords, keyLen, 0, status);
+ CharString keywords;
+ CharStringByteSink sink(&keywords);
+ ulocimp_getKeywords(variantStart+1, '@', sink, FALSE, &status);
+ if (U_SUCCESS(status) && !keywords.isEmpty()) {
+ result = new KeywordEnumeration(keywords.data(), keywords.length(), 0, status);
if (!result) {
status = U_MEMORY_ALLOCATION_ERROR;
}
@@ -1206,8 +2363,6 @@
StringEnumeration *
Locale::createUnicodeKeywords(UErrorCode &status) const
{
- char keywords[256];
- int32_t keywordCapacity = sizeof keywords;
StringEnumeration *result = NULL;
if (U_FAILURE(status)) {
@@ -1218,9 +2373,11 @@
const char* assignment = uprv_strchr(fullName, '=');
if(variantStart) {
if(assignment > variantStart) {
- int32_t keyLen = locale_getKeywords(variantStart+1, '@', keywords, keywordCapacity, NULL, 0, NULL, FALSE, &status);
- if(U_SUCCESS(status) && keyLen) {
- result = new UnicodeKeywordEnumeration(keywords, keyLen, 0, status);
+ CharString keywords;
+ CharStringByteSink sink(&keywords);
+ ulocimp_getKeywords(variantStart+1, '@', sink, FALSE, &status);
+ if (U_SUCCESS(status) && !keywords.isEmpty()) {
+ result = new UnicodeKeywordEnumeration(keywords.data(), keywords.length(), 0, status);
if (!result) {
status = U_MEMORY_ALLOCATION_ERROR;
}
@@ -1255,48 +2412,7 @@
return;
}
- LocalMemory<char> scratch;
- int32_t scratch_capacity = 16; // Arbitrarily chosen default size.
-
- char* buffer;
- int32_t result_capacity, reslen;
-
- for (;;) {
- if (scratch.allocateInsteadAndReset(scratch_capacity) == nullptr) {
- status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
-
- buffer = sink.GetAppendBuffer(
- /*min_capacity=*/scratch_capacity,
- /*desired_capacity_hint=*/scratch_capacity,
- scratch.getAlias(),
- scratch_capacity,
- &result_capacity);
-
- reslen = uloc_getKeywordValue(
- fullName,
- keywordName_nul.data(),
- buffer,
- result_capacity,
- &status);
-
- if (status != U_BUFFER_OVERFLOW_ERROR) {
- break;
- }
-
- scratch_capacity = reslen;
- status = U_ZERO_ERROR;
- }
-
- if (U_FAILURE(status)) {
- return;
- }
-
- sink.Append(buffer, reslen);
- if (status == U_STRING_NOT_TERMINATED_WARNING) {
- status = U_ZERO_ERROR; // Terminators not used.
- }
+ ulocimp_getKeywordValue(fullName, keywordName_nul.data(), sink, &status);
}
void
@@ -1340,7 +2456,36 @@
void
Locale::setKeywordValue(const char* keywordName, const char* keywordValue, UErrorCode &status)
{
- uloc_setKeywordValue(keywordName, keywordValue, fullName, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (status == U_STRING_NOT_TERMINATED_WARNING) {
+ status = U_ZERO_ERROR;
+ }
+ int32_t bufferLength = uprv_max((int32_t)(uprv_strlen(fullName) + 1), ULOC_FULLNAME_CAPACITY);
+ int32_t newLength = uloc_setKeywordValue(keywordName, keywordValue, fullName,
+ bufferLength, &status) + 1;
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
+ /* Handle the case the current buffer is not enough to hold the new id */
+ if (status == U_BUFFER_OVERFLOW_ERROR) {
+ U_ASSERT(newLength > bufferLength);
+ char* newFullName = (char *)uprv_malloc(newLength);
+ if (newFullName == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ uprv_strcpy(newFullName, fullName);
+ if (fullName != fullNameBuffer) {
+ // if full Name is already on the heap, need to free it.
+ uprv_free(fullName);
+ }
+ fullName = newFullName;
+ status = U_ZERO_ERROR;
+ uloc_setKeywordValue(keywordName, keywordValue, fullName, newLength, &status);
+ U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
+ } else {
+ U_ASSERT(newLength <= bufferLength);
+ }
if (U_SUCCESS(status) && baseName == fullName) {
// May have added the first keyword, meaning that the fullName is no longer also the baseName.
initBaseName(status);
Modified: trunk/Build/source/libs/icu/icu-src/source/common/loclikely.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/loclikely.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/loclikely.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -464,8 +464,7 @@
goto error;
}
- subtagLength = ulocimp_getLanguage(position, lang, *langLength, &position);
- u_terminateChars(lang, *langLength, subtagLength, err);
+ subtagLength = ulocimp_getLanguage(position, &position, *err).extract(lang, *langLength, *err);
/*
* Note that we explicit consider U_STRING_NOT_TERMINATED_WARNING
@@ -486,8 +485,7 @@
++position;
}
- subtagLength = ulocimp_getScript(position, script, *scriptLength, &position);
- u_terminateChars(script, *scriptLength, subtagLength, err);
+ subtagLength = ulocimp_getScript(position, &position, *err).extract(script, *scriptLength, *err);
if(U_FAILURE(*err)) {
goto error;
@@ -511,8 +509,7 @@
}
}
- subtagLength = ulocimp_getCountry(position, region, *regionLength, &position);
- u_terminateChars(region, *regionLength, subtagLength, err);
+ subtagLength = ulocimp_getCountry(position, &position, *err).extract(region, *regionLength, *err);
if(U_FAILURE(*err)) {
goto error;
@@ -826,7 +823,7 @@
} \
} UPRV_BLOCK_MACRO_END
-static void
+static UBool
_uloc_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
UErrorCode* err) {
@@ -897,7 +894,7 @@
sink.Append(localeID, localIDLength);
}
- return;
+ return success;
error:
@@ -904,8 +901,15 @@
if (!U_FAILURE(*err)) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
}
+ return FALSE;
}
+// Add likely subtags to the sink
+// return true if the value in the sink is produced by a match during the lookup
+// return false if the value in the sink is the same as input because there are
+// no match after the lookup.
+static UBool _ulocimp_addLikelySubtags(const char*, icu::ByteSink&, UErrorCode*);
+
static void
_uloc_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
@@ -921,6 +925,7 @@
const char* trailing = "";
int32_t trailingLength = 0;
int32_t trailingIndex = 0;
+ UBool successGetMax = FALSE;
if(U_FAILURE(*err)) {
goto error;
@@ -961,7 +966,7 @@
{
icu::CharString base;
{
- icu::CharStringByteSink sink(&base);
+ icu::CharStringByteSink baseSink(&base);
createTagString(
lang,
langLength,
@@ -971,7 +976,7 @@
regionLength,
NULL,
0,
- sink,
+ baseSink,
err);
}
@@ -980,8 +985,8 @@
* from AddLikelySubtags.
**/
{
- icu::CharStringByteSink sink(&maximizedTagBuffer);
- ulocimp_addLikelySubtags(base.data(), sink, err);
+ icu::CharStringByteSink maxSink(&maximizedTagBuffer);
+ successGetMax = _ulocimp_addLikelySubtags(base.data(), maxSink, err);
}
}
@@ -989,6 +994,33 @@
goto error;
}
+ if (!successGetMax) {
+ /**
+ * If we got here, return the locale ID parameter unchanged.
+ **/
+ const int32_t localeIDLength = (int32_t)uprv_strlen(localeID);
+ sink.Append(localeID, localeIDLength);
+ return;
+ }
+
+ // In the following, the lang, script, region are referring to those in
+ // the maximizedTagBuffer, not the one in the localeID.
+ langLength = sizeof(lang);
+ scriptLength = sizeof(script);
+ regionLength = sizeof(region);
+ parseTagString(
+ maximizedTagBuffer.data(),
+ lang,
+ &langLength,
+ script,
+ &scriptLength,
+ region,
+ ®ionLength,
+ err);
+ if(U_FAILURE(*err)) {
+ goto error;
+ }
+
/**
* Start first with just the language.
**/
@@ -995,7 +1027,7 @@
{
icu::CharString tagBuffer;
{
- icu::CharStringByteSink sink(&tagBuffer);
+ icu::CharStringByteSink tagSink(&tagBuffer);
createLikelySubtagsString(
lang,
langLength,
@@ -1005,7 +1037,7 @@
0,
NULL,
0,
- sink,
+ tagSink,
err);
}
@@ -1012,7 +1044,8 @@
if(U_FAILURE(*err)) {
goto error;
}
- else if (!tagBuffer.isEmpty() && uprv_strnicmp(
+ else if (!tagBuffer.isEmpty() &&
+ uprv_strnicmp(
maximizedTagBuffer.data(),
tagBuffer.data(),
tagBuffer.length()) == 0) {
@@ -1039,7 +1072,7 @@
icu::CharString tagBuffer;
{
- icu::CharStringByteSink sink(&tagBuffer);
+ icu::CharStringByteSink tagSink(&tagBuffer);
createLikelySubtagsString(
lang,
langLength,
@@ -1049,7 +1082,7 @@
regionLength,
NULL,
0,
- sink,
+ tagSink,
err);
}
@@ -1056,7 +1089,8 @@
if(U_FAILURE(*err)) {
goto error;
}
- else if (uprv_strnicmp(
+ else if (!tagBuffer.isEmpty() &&
+ uprv_strnicmp(
maximizedTagBuffer.data(),
tagBuffer.data(),
tagBuffer.length()) == 0) {
@@ -1081,10 +1115,10 @@
* since trying with all three subtags would only yield the
* maximal version that we already have.
**/
- if (scriptLength > 0 && regionLength > 0) {
+ if (scriptLength > 0) {
icu::CharString tagBuffer;
{
- icu::CharStringByteSink sink(&tagBuffer);
+ icu::CharStringByteSink tagSink(&tagBuffer);
createLikelySubtagsString(
lang,
langLength,
@@ -1094,7 +1128,7 @@
0,
NULL,
0,
- sink,
+ tagSink,
err);
}
@@ -1101,7 +1135,8 @@
if(U_FAILURE(*err)) {
goto error;
}
- else if (uprv_strnicmp(
+ else if (!tagBuffer.isEmpty() &&
+ uprv_strnicmp(
maximizedTagBuffer.data(),
tagBuffer.data(),
tagBuffer.length()) == 0) {
@@ -1123,10 +1158,19 @@
{
/**
- * If we got here, return the locale ID parameter.
+ * If we got here, return the max + trail.
**/
- const int32_t localeIDLength = (int32_t)uprv_strlen(localeID);
- sink.Append(localeID, localeIDLength);
+ createTagString(
+ lang,
+ langLength,
+ script,
+ scriptLength,
+ region,
+ regionLength,
+ trailing,
+ trailingLength,
+ sink,
+ err);
return;
}
@@ -1193,17 +1237,25 @@
return reslen;
}
-U_CAPI void U_EXPORT2
-ulocimp_addLikelySubtags(const char* localeID,
- icu::ByteSink& sink,
- UErrorCode* status) {
+static UBool
+_ulocimp_addLikelySubtags(const char* localeID,
+ icu::ByteSink& sink,
+ UErrorCode* status) {
char localeBuffer[ULOC_FULLNAME_CAPACITY];
if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) {
- _uloc_addLikelySubtags(localeBuffer, sink, status);
+ return _uloc_addLikelySubtags(localeBuffer, sink, status);
}
+ return FALSE;
}
+U_CAPI void U_EXPORT2
+ulocimp_addLikelySubtags(const char* localeID,
+ icu::ByteSink& sink,
+ UErrorCode* status) {
+ _ulocimp_addLikelySubtags(localeID, sink, status);
+}
+
U_CAPI int32_t U_EXPORT2
uloc_minimizeSubtags(const char* localeID,
char* minimizedLocaleID,
Modified: trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// loclikelysubtags.cpp
// created: 2019may08 Markus W. Scherer
@@ -20,6 +20,7 @@
#include "uhash.h"
#include "uinvchar.h"
#include "umutex.h"
+#include "uniquecharstr.h"
#include "uresdata.h"
#include "uresimp.h"
@@ -31,71 +32,6 @@
constexpr char PSEUDO_BIDI_PREFIX = '+'; // -XB, -PSBIDI
constexpr char PSEUDO_CRACKED_PREFIX = ','; // -XC, -PSCRACK
-/**
- * Stores NUL-terminated strings with duplicate elimination.
- * Checks for unique UTF-16 string pointers and converts to invariant characters.
- */
-class UniqueCharStrings {
-public:
- UniqueCharStrings(UErrorCode &errorCode) : strings(nullptr) {
- uhash_init(&map, uhash_hashUChars, uhash_compareUChars, uhash_compareLong, &errorCode);
- if (U_FAILURE(errorCode)) { return; }
- strings = new CharString();
- if (strings == nullptr) {
- errorCode = U_MEMORY_ALLOCATION_ERROR;
- }
- }
- ~UniqueCharStrings() {
- uhash_close(&map);
- delete strings;
- }
-
- /** Returns/orphans the CharString that contains all strings. */
- CharString *orphanCharStrings() {
- CharString *result = strings;
- strings = nullptr;
- return result;
- }
-
- /** Adds a string and returns a unique number for it. */
- int32_t add(const UnicodeString &s, UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return 0; }
- if (isFrozen) {
- errorCode = U_NO_WRITE_PERMISSION;
- return 0;
- }
- // The string points into the resource bundle.
- const char16_t *p = s.getBuffer();
- int32_t oldIndex = uhash_geti(&map, p);
- if (oldIndex != 0) { // found duplicate
- return oldIndex;
- }
- // Explicit NUL terminator for the previous string.
- // The strings object is also terminated with one implicit NUL.
- strings->append(0, errorCode);
- int32_t newIndex = strings->length();
- strings->appendInvariantChars(s, errorCode);
- uhash_puti(&map, const_cast<char16_t *>(p), newIndex, &errorCode);
- return newIndex;
- }
-
- void freeze() { isFrozen = true; }
-
- /**
- * Returns a string pointer for its unique number, if this object is frozen.
- * Otherwise nullptr.
- */
- const char *get(int32_t i) const {
- U_ASSERT(isFrozen);
- return isFrozen && i > 0 ? strings->data() + i : nullptr;
- }
-
-private:
- UHashtable map;
- CharString *strings;
- bool isFrozen = false;
-};
-
} // namespace
LocaleDistanceData::LocaleDistanceData(LocaleDistanceData &&data) :
@@ -250,7 +186,8 @@
for (int32_t i = 0, j = 0; i < lsrSubtagsLength; i += 3, ++j) {
lsrs[j] = LSR(strings.get(lsrSubtagIndexes[i]),
strings.get(lsrSubtagIndexes[i + 1]),
- strings.get(lsrSubtagIndexes[i + 2]));
+ strings.get(lsrSubtagIndexes[i + 2]),
+ LSR::IMPLICIT_LSR);
}
if (partitionsLength > 0) {
@@ -275,7 +212,8 @@
for (int32_t i = 0, j = 0; i < paradigmSubtagsLength; i += 3, ++j) {
paradigms[j] = LSR(strings.get(paradigmSubtagIndexes[i]),
strings.get(paradigmSubtagIndexes[i + 1]),
- strings.get(paradigmSubtagIndexes[i + 2]));
+ strings.get(paradigmSubtagIndexes[i + 2]),
+ LSR::DONT_CARE_FLAGS);
}
distanceData.paradigms = paradigms;
}
@@ -383,7 +321,7 @@
const char *name = locale.getName();
if (uprv_isAtSign(name[0]) && name[1] == 'x' && name[2] == '=') { // name.startsWith("@x=")
// Private use language tag x-subtag-subtag...
- return LSR(name, "", "");
+ return LSR(name, "", "", LSR::EXPLICIT_LSR);
}
return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
locale.getVariant(), errorCode);
@@ -407,11 +345,14 @@
if (region[0] == 'X' && (c1 = region[1]) != 0 && region[2] == 0) {
switch (c1) {
case 'A':
- return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region, errorCode);
+ return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
case 'B':
- return LSR(PSEUDO_BIDI_PREFIX, language, script, region, errorCode);
+ return LSR(PSEUDO_BIDI_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
case 'C':
- return LSR(PSEUDO_CRACKED_PREFIX, language, script, region, errorCode);
+ return LSR(PSEUDO_CRACKED_PREFIX, language, script, region,
+ LSR::EXPLICIT_LSR, errorCode);
default: // normal locale
break;
}
@@ -418,15 +359,17 @@
}
if (variant[0] == 'P' && variant[1] == 'S') {
+ int32_t lsrFlags = *region == 0 ?
+ LSR::EXPLICIT_LANGUAGE | LSR::EXPLICIT_SCRIPT : LSR::EXPLICIT_LSR;
if (uprv_strcmp(variant, "PSACCENT") == 0) {
return LSR(PSEUDO_ACCENTS_PREFIX, language, script,
- *region == 0 ? "XA" : region, errorCode);
+ *region == 0 ? "XA" : region, lsrFlags, errorCode);
} else if (uprv_strcmp(variant, "PSBIDI") == 0) {
return LSR(PSEUDO_BIDI_PREFIX, language, script,
- *region == 0 ? "XB" : region, errorCode);
+ *region == 0 ? "XB" : region, lsrFlags, errorCode);
} else if (uprv_strcmp(variant, "PSCRACK") == 0) {
return LSR(PSEUDO_CRACKED_PREFIX, language, script,
- *region == 0 ? "XC" : region, errorCode);
+ *region == 0 ? "XC" : region, lsrFlags, errorCode);
}
// else normal locale
}
@@ -448,7 +391,7 @@
region = "";
}
if (*script != 0 && *region != 0 && *language != 0) {
- return LSR(language, script, region); // already maximized
+ return LSR(language, script, region, LSR::EXPLICIT_LSR); // already maximized
}
uint32_t retainOldMask = 0;
@@ -535,7 +478,7 @@
if (retainOldMask == 0) {
// Quickly return a copy of the lookup-result LSR
// without new allocation of the subtags.
- return LSR(result.language, result.script, result.region);
+ return LSR(result.language, result.script, result.region, result.flags);
}
if ((retainOldMask & 4) == 0) {
language = result.language;
@@ -546,9 +489,110 @@
if ((retainOldMask & 1) == 0) {
region = result.region;
}
- return LSR(language, script, region);
+ // retainOldMask flags = LSR explicit-subtag flags
+ return LSR(language, script, region, retainOldMask);
}
+int32_t XLikelySubtags::compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const {
+ // If likelyInfo >= 0:
+ // likelyInfo bit 1 is set if the previous comparison with lsr
+ // was for equal language and script.
+ // Otherwise the scripts differed.
+ if (uprv_strcmp(lsr.language, other.language) != 0) {
+ return 0xfffffffc; // negative, lsr not better than other
+ }
+ if (uprv_strcmp(lsr.script, other.script) != 0) {
+ int32_t index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) == 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, "");
+ likelyInfo = index << 2;
+ }
+ const LSR &likely = lsrs[index];
+ if (uprv_strcmp(lsr.script, likely.script) == 0) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ if (uprv_strcmp(lsr.region, other.region) != 0) {
+ int32_t index;
+ if (likelyInfo >= 0 && (likelyInfo & 2) != 0) {
+ index = likelyInfo >> 2;
+ } else {
+ index = getLikelyIndex(lsr.language, lsr.region);
+ likelyInfo = (index << 2) | 2;
+ }
+ const LSR &likely = lsrs[index];
+ if (uprv_strcmp(lsr.region, likely.region) == 0) {
+ return likelyInfo | 1;
+ } else {
+ return likelyInfo & ~1;
+ }
+ }
+ return likelyInfo & ~1; // lsr not better than other
+}
+
+// Subset of maximize().
+int32_t XLikelySubtags::getLikelyIndex(const char *language, const char *script) const {
+ if (uprv_strcmp(language, "und") == 0) {
+ language = "";
+ }
+ if (uprv_strcmp(script, "Zzzz") == 0) {
+ script = "";
+ }
+
+ BytesTrie iter(trie);
+ uint64_t state;
+ int32_t value;
+ // Small optimization: Array lookup for first language letter.
+ int32_t c0;
+ if (0 <= (c0 = uprv_lowerOrdinal(language[0])) && c0 <= 25 &&
+ language[1] != 0 && // language.length() >= 2
+ (state = trieFirstLetterStates[c0]) != 0) {
+ value = trieNext(iter.resetToState64(state), language, 1);
+ } else {
+ value = trieNext(iter, language, 0);
+ }
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ iter.resetToState64(trieUndState); // "und" ("*")
+ state = 0;
+ }
+
+ if (value > 0) {
+ // Intermediate or final value from just language.
+ if (value == SKIP_SCRIPT) {
+ value = 0;
+ }
+ } else {
+ value = trieNext(iter, script, 0);
+ if (value >= 0) {
+ state = iter.getState64();
+ } else {
+ if (state == 0) {
+ iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
+ } else {
+ iter.resetToState64(state);
+ value = trieNext(iter, "", 0);
+ U_ASSERT(value >= 0);
+ state = iter.getState64();
+ }
+ }
+ }
+
+ if (value > 0) {
+ // Final value from just language or language+script.
+ } else {
+ value = trieNext(iter, "", 0);
+ U_ASSERT(value > 0);
+ }
+ U_ASSERT(value < lsrsLength);
+ return value;
+}
+
int32_t XLikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) {
UStringTrieResult result;
uint8_t c;
@@ -615,9 +659,9 @@
boolean favorRegionOk = false;
if (result.script.equals(value00.script)) { //script is default
if (result.region.equals(value00.region)) {
- return new LSR(result.language, "", "");
+ return new LSR(result.language, "", "", LSR.DONT_CARE_FLAGS);
} else if (fieldToFavor == ULocale.Minimize.FAVOR_REGION) {
- return new LSR(result.language, "", result.region);
+ return new LSR(result.language, "", result.region, LSR.DONT_CARE_FLAGS);
} else {
favorRegionOk = true;
}
@@ -627,9 +671,9 @@
// Maybe do later, but for now use the straightforward code.
LSR result2 = maximize(languageIn, scriptIn, "");
if (result2.equals(result)) {
- return new LSR(result.language, result.script, "");
+ return new LSR(result.language, result.script, "", LSR.DONT_CARE_FLAGS);
} else if (favorRegionOk) {
- return new LSR(result.language, "", result.region);
+ return new LSR(result.language, "", result.region, LSR.DONT_CARE_FLAGS);
}
return result;
}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// loclikelysubtags.h
// created: 2019may08 Markus W. Scherer
@@ -13,49 +13,13 @@
#include "unicode/locid.h"
#include "unicode/uobject.h"
#include "unicode/ures.h"
+#include "charstrmap.h"
#include "lsr.h"
-#include "uhash.h"
U_NAMESPACE_BEGIN
struct XLikelySubtagsData;
-/**
- * Map of const char * keys & values.
- * Stores pointers as is: Does not own/copy/adopt/release strings.
- */
-class CharStringMap final : public UMemory {
-public:
- /** Constructs an unusable non-map. */
- CharStringMap() : map(nullptr) {}
- CharStringMap(int32_t size, UErrorCode &errorCode) {
- map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
- size, &errorCode);
- }
- CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
- other.map = nullptr;
- }
- CharStringMap(const CharStringMap &other) = delete;
- ~CharStringMap() {
- uhash_close(map);
- }
-
- CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
- map = other.map;
- other.map = nullptr;
- return *this;
- }
- CharStringMap &operator=(const CharStringMap &other) = delete;
-
- const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
- void put(const char *key, const char *value, UErrorCode &errorCode) {
- uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
- }
-
-private:
- UHashtable *map;
-};
-
struct LocaleDistanceData {
LocaleDistanceData() = default;
LocaleDistanceData(LocaleDistanceData &&data);
@@ -85,6 +49,18 @@
// VisibleForTesting
LSR makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const;
+ /**
+ * Tests whether lsr is "more likely" than other.
+ * For example, fr-Latn-FR is more likely than fr-Latn-CH because
+ * FR is the default region for fr-Latn.
+ *
+ * The likelyInfo caches lookup information between calls.
+ * The return value is an updated likelyInfo value,
+ * with bit 0 set if lsr is "more likely".
+ * The initial value of likelyInfo must be negative.
+ */
+ int32_t compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const;
+
// TODO(ICU-20777): Switch Locale/uloc_ likely-subtags API from the old code
// in loclikely.cpp to this new code, including activating this
// minimizeSubtags() function. The LocaleMatcher does not minimize.
@@ -111,6 +87,8 @@
*/
LSR maximize(const char *language, const char *script, const char *region) const;
+ int32_t getLikelyIndex(const char *language, const char *script) const;
+
static int32_t trieNext(BytesTrie &iter, const char *s, int32_t i);
UResourceBundle *langInfoBundle;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/locmap.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/locmap.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/locmap.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -28,8 +28,11 @@
*/
#include "locmap.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cstring.h"
#include "cmemory.h"
+#include "ulocimp.h"
#include "unicode/uloc.h"
#if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
@@ -1167,7 +1170,6 @@
// conversion functionality when available.
#if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
int32_t len;
- char collVal[ULOC_KEYWORDS_CAPACITY] = {};
char baseName[ULOC_FULLNAME_CAPACITY] = {};
const char * mylocaleID = localeID;
@@ -1174,9 +1176,13 @@
// Check any for keywords.
if (uprv_strchr(localeID, '@'))
{
- len = uloc_getKeywordValue(localeID, "collation", collVal, UPRV_LENGTHOF(collVal) - 1, status);
- if (U_SUCCESS(*status) && len > 0)
+ icu::CharString collVal;
{
+ icu::CharStringByteSink sink(&collVal);
+ ulocimp_getKeywordValue(localeID, "collation", sink, status);
+ }
+ if (U_SUCCESS(*status) && !collVal.isEmpty())
+ {
// If it contains the keyword collation, return 0 so that the LCID lookup table will be used.
return 0;
}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/lsr.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/lsr.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/lsr.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// lsr.cpp
// created: 2019may08 Markus W. Scherer
@@ -14,9 +14,10 @@
U_NAMESPACE_BEGIN
-LSR::LSR(char prefix, const char *lang, const char *scr, const char *r, UErrorCode &errorCode) :
+LSR::LSR(char prefix, const char *lang, const char *scr, const char *r, int32_t f,
+ UErrorCode &errorCode) :
language(nullptr), script(nullptr), region(r),
- regionIndex(indexForRegion(region)) {
+ regionIndex(indexForRegion(region)), flags(f) {
if (U_SUCCESS(errorCode)) {
CharString langScript;
langScript.append(prefix, errorCode).append(lang, errorCode).append('\0', errorCode);
@@ -32,7 +33,8 @@
LSR::LSR(LSR &&other) U_NOEXCEPT :
language(other.language), script(other.script), region(other.region), owned(other.owned),
- regionIndex(other.regionIndex), hashCode(other.hashCode) {
+ regionIndex(other.regionIndex), flags(other.flags),
+ hashCode(other.hashCode) {
if (owned != nullptr) {
other.language = other.script = "";
other.owned = nullptr;
@@ -50,6 +52,7 @@
script = other.script;
region = other.region;
regionIndex = other.regionIndex;
+ flags = other.flags;
owned = other.owned;
hashCode = other.hashCode;
if (owned != nullptr) {
@@ -60,7 +63,7 @@
return *this;
}
-UBool LSR::operator==(const LSR &other) const {
+UBool LSR::isEquivalentTo(const LSR &other) const {
return
uprv_strcmp(language, other.language) == 0 &&
uprv_strcmp(script, other.script) == 0 &&
@@ -69,6 +72,16 @@
(regionIndex > 0 || uprv_strcmp(region, other.region) == 0);
}
+UBool LSR::operator==(const LSR &other) const {
+ return
+ uprv_strcmp(language, other.language) == 0 &&
+ uprv_strcmp(script, other.script) == 0 &&
+ regionIndex == other.regionIndex &&
+ // Compare regions if both are ill-formed (and their indexes are 0).
+ (regionIndex > 0 || uprv_strcmp(region, other.region) == 0) &&
+ flags == other.flags;
+}
+
int32_t LSR::indexForRegion(const char *region) {
int32_t c = region[0];
int32_t a = c - '0';
@@ -90,10 +103,10 @@
LSR &LSR::setHashCode() {
if (hashCode == 0) {
- hashCode =
- (ustr_hashCharsN(language, static_cast<int32_t>(uprv_strlen(language))) * 37 +
- ustr_hashCharsN(script, static_cast<int32_t>(uprv_strlen(script)))) * 37 +
- regionIndex;
+ uint32_t h = ustr_hashCharsN(language, static_cast<int32_t>(uprv_strlen(language)));
+ h = h * 37 + ustr_hashCharsN(script, static_cast<int32_t>(uprv_strlen(script)));
+ h = h * 37 + regionIndex;
+ hashCode = h * 37 + flags;
}
return *this;
}
Modified: trunk/Build/source/libs/icu/icu-src/source/common/lsr.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/lsr.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/lsr.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -1,5 +1,5 @@
// © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
// lsr.h
// created: 2019may08 Markus W. Scherer
@@ -16,6 +16,13 @@
struct LSR final : public UMemory {
static constexpr int32_t REGION_INDEX_LIMIT = 1001 + 26 * 26;
+ static constexpr int32_t EXPLICIT_LSR = 7;
+ static constexpr int32_t EXPLICIT_LANGUAGE = 4;
+ static constexpr int32_t EXPLICIT_SCRIPT = 2;
+ static constexpr int32_t EXPLICIT_REGION = 1;
+ static constexpr int32_t IMPLICIT_LSR = 0;
+ static constexpr int32_t DONT_CARE_FLAGS = 0;
+
const char *language;
const char *script;
const char *region;
@@ -22,6 +29,7 @@
char *owned = nullptr;
/** Index for region, 0 if ill-formed. @see indexForRegion */
int32_t regionIndex = 0;
+ int32_t flags = 0;
/** Only set for LSRs that will be used in a hash table. */
int32_t hashCode = 0;
@@ -28,14 +36,15 @@
LSR() : language("und"), script(""), region("") {}
/** Constructor which aliases all subtag pointers. */
- LSR(const char *lang, const char *scr, const char *r) :
+ LSR(const char *lang, const char *scr, const char *r, int32_t f) :
language(lang), script(scr), region(r),
- regionIndex(indexForRegion(region)) {}
+ regionIndex(indexForRegion(region)), flags(f) {}
/**
* Constructor which prepends the prefix to the language and script,
* copies those into owned memory, and aliases the region.
*/
- LSR(char prefix, const char *lang, const char *scr, const char *r, UErrorCode &errorCode);
+ LSR(char prefix, const char *lang, const char *scr, const char *r, int32_t f,
+ UErrorCode &errorCode);
LSR(LSR &&other) U_NOEXCEPT;
LSR(const LSR &other) = delete;
inline ~LSR() {
@@ -55,6 +64,7 @@
*/
static int32_t indexForRegion(const char *region);
+ UBool isEquivalentTo(const LSR &other) const;
UBool operator==(const LSR &other) const;
inline UBool operator!=(const LSR &other) const {
Modified: trunk/Build/source/libs/icu/icu-src/source/common/messageimpl.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/messageimpl.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/messageimpl.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -33,7 +33,7 @@
class U_COMMON_API MessageImpl {
public:
/**
- * @return TRUE if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
+ * @return true if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
*/
static UBool jdkAposMode(const MessagePattern &msgPattern) {
return msgPattern.getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED;
Modified: trunk/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -12,14 +12,14 @@
#ifdef INCLUDED_FROM_NORMALIZER2_CPP
static const UVersionInfo norm2_nfc_data_formatVersion={4,0,0,0};
-static const UVersionInfo norm2_nfc_data_dataVersion={0xc,1,0,0};
+static const UVersionInfo norm2_nfc_data_dataVersion={0xd,0,0,0};
static const int32_t norm2_nfc_data_indexes[Normalizer2Impl::IX_COUNT]={
-0x50,0x4ae0,0x8738,0x8838,0x8838,0x8838,0x8838,0x8838,0xc0,0x300,0xadc,0x29d0,0x3c56,0xfc00,0x1282,0x3b8c,
-0x3c24,0x3c56,0x300,0
+0x50,0x4bac,0x8814,0x8914,0x8914,0x8914,0x8914,0x8914,0xc0,0x300,0xae2,0x29e0,0x3c66,0xfc00,0x1288,0x3b9c,
+0x3c34,0x3c66,0x300,0
};
-static const uint16_t norm2_nfc_data_trieIndex[1712]={
+static const uint16_t norm2_nfc_data_trieIndex[1746]={
0,0x40,0x7b,0xbb,0xfb,0x13a,0x17a,0x1b2,0x1f2,0x226,0x254,0x226,0x294,0x2d4,0x313,0x353,
0x393,0x3d2,0x40f,0x44e,0x226,0x226,0x488,0x4c8,0x4f8,0x530,0x226,0x570,0x59f,0x5de,0x226,0x5f3,
0x631,0x65f,0x226,0x68c,0x6cc,0x709,0x729,0x768,0x7a7,0x7e4,0x803,0x840,0x729,0x879,0x8a7,0x8e6,
@@ -26,13 +26,13 @@
0x226,0x920,0x937,0x977,0x98e,0x9cd,0x226,0xa03,0xa23,0xa5e,0xa6a,0xaa5,0xacd,0xb0a,0xb4a,0xb84,
0xb9f,0x226,0xbda,0x226,0xc1a,0xc39,0xc6f,0xcac,0x226,0x226,0x226,0x226,0x226,0xccf,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xcfb,0x226,0x226,0xd30,
-0x226,0x226,0xd4e,0x226,0xd78,0x226,0x226,0x226,0xdb4,0xdd4,0xe14,0x226,0xe52,0xe92,0xec6,0xef2,
-0x808,0x226,0x226,0xf26,0x226,0x226,0x226,0xf66,0xfa6,0xfe6,0x1026,0x1066,0x10a6,0x10e6,0x1126,0x1166,
-0x11a6,0x226,0x226,0x11d6,0x1207,0x226,0x1237,0x126a,0x12a7,0x12e6,0x1326,0x135c,0x138a,0x226,0x226,0x226,
+0x226,0x226,0xd4e,0x226,0xd78,0x226,0x226,0x226,0xdb4,0xdd4,0xe14,0xe53,0xe8e,0xece,0xf02,0xf2e,
+0x808,0x226,0x226,0xf62,0x226,0x226,0x226,0xfa2,0xfe2,0x1022,0x1062,0x10a2,0x10e2,0x1122,0x1162,0x11a2,
+0x11e2,0x226,0x226,0x1212,0x1243,0x226,0x1273,0x12a6,0x12e3,0x1322,0x1362,0x1398,0x13c6,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x13b5,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0xcbd,0x226,0x13d2,0x226,0x1412,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x1452,0x148c,0x14ca,0x150a,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x13f1,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0xcbd,0x226,0x140e,0x226,0x144e,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x148e,0x14c8,0x1506,0x1546,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
@@ -61,20 +61,20 @@
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1549,0x1587,0x15a7,0x226,0x226,0x226,0x226,
-0x15e1,0x226,0x226,0x161d,0x164f,0x167d,0x80c,0x1690,0x226,0x226,0x16a0,0x16e0,0x226,0x226,0x226,0x13e4,
-0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,
-0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,
-0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,
-0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,
-0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,
-0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,
-0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,
-0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,
-0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,
-0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,
-0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x1734,0x1720,0x1728,0x1730,0x1738,0x1724,0x172c,0x176c,0x226,
-0x17ac,0x17e7,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1585,0x15c3,0x15e3,0x226,0x226,0x226,0x226,
+0x161d,0x226,0x226,0x1645,0x1677,0x16a5,0x80c,0x16b8,0x226,0x226,0x16c8,0x1708,0x226,0x226,0x226,0x1420,
+0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,
+0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,
+0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,
+0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,
+0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,
+0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,
+0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,
+0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,
+0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,
+0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,
+0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x1794,0x226,
+0x17d4,0x180f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
@@ -82,54 +82,57 @@
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x1827,0x1867,0x18a7,0x18e7,0x1927,0x1967,0x19a7,0x19e7,0x1a0a,0x1a4a,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1a6a,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x635,0x644,0x65a,0x679,0x68e,0x68e,0x68e,0x692,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x184f,0x188f,0x18cf,0x190f,0x194f,0x198f,0x19cf,0x1a0f,0x1a32,0x1a72,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1a92,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x655,0x664,0x67c,0x69b,0x6b0,0x6b0,0x6b0,0x6b4,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xbda,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x54f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x40c,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1a9d,0x226,0x226,0x1aad,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ac5,0x226,0x226,0x1ad5,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0xdc6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1abd,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ac7,0x54f,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7eb,0x226,0x226,0x9ba,0x226,0x1ad7,
-0x1ae4,0x1af0,0x226,0x226,0x226,0x226,0x414,0x226,0x1afb,0x1b0b,0x226,0x226,0x226,0x7e0,0x226,0x226,
-0x226,0x226,0x1b1b,0x226,0x226,0x226,0x1b26,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x1b2d,0x226,0x226,0x226,0x226,0x1b38,0x1b47,0x8f6,0x1b55,0x412,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x1b63,0x798,0x226,0x226,0x226,0x226,0x226,0x1b73,0x1b82,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x8d6,0x1b8a,0x1b9a,0x226,0x226,0x226,0x9ba,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ba4,0x226,0x226,0x226,0x226,0x226,0x226,0x7e6,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ba1,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ae5,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x15d6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x1aef,0x54f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7eb,0x226,0x226,
+0x9ba,0x226,0x1aff,0x1b0c,0x1b18,0x226,0x226,0x226,0x226,0x414,0x226,0x1b23,0x1b33,0x226,0x226,0x226,
+0x7e0,0x226,0x226,0x226,0x226,0x1b43,0x226,0x226,0x226,0x1b4e,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x1b55,0x226,0x226,0x226,0x226,0x1b60,0x1b6f,0x8f6,0x1b7d,0x412,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x1b8b,0x798,0x226,0x226,0x226,0x226,0x226,0x1b9b,0x1baa,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x8d6,0x1bb2,0x1bc2,0x226,
+0x226,0x226,0x9ba,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bcc,0x226,0x226,0x226,0x226,0x226,
+0x226,0x7e6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bc9,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bdc,
+0x7e0,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x84d,0x226,0x226,0x226,0x7ed,0x7ea,
+0x226,0x226,0x226,0x226,0x7e8,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x9ba,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xbd4,0x226,0x226,0x226,
+0x226,0x7ea,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x1bec,0x226,0x226,0x226,0xefb,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x84d,0x226,0x226,0x226,0x7ed,0x7ea,0x226,0x226,0x226,
-0x226,0x7e8,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x9ba,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xbd4,0x226,0x226,0x226,0x226,0x7ea,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bb4,0x226,
-0x226,0x226,0xebf,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bb9,
+0x226,0x226,0x226,0x226,0x226,0x1bfc,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bfe,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x1bc8,0x1bd8,0x1be6,0x1bf3,0x226,0x1bff,0x1c0d,0x1c1d,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x1c0d,0x1c1d,0x1c2b,0x1c38,0x226,0x1c44,0x1c52,0x1c62,0x226,0x226,
0x226,0x226,0xcea,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c2d,0x1c35,
-0x1c43,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0xebf,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c72,0x1c7a,
+0x1c88,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0xefb,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x4fc,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x1c53,0x226,0x226,0x226,0x226,0x226,0x226,0x1c5f,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x1c6f,0x1c7f,0x1c8f,0x1c9f,0x1caf,0x1cbf,0x1ccf,0x1cdf,0x1cef,0x1cff,0x1d0f,
-0x1d1f,0x1d2f,0x1d3f,0x1d4f,0x1d5f,0x1d6f,0x1d7f,0x1d8f,0x1d9f,0x1daf,0x1dbf,0x1dcf,0x1ddf,0x1def,0x1dff,0x1e0f,
-0x1e1f,0x1e2f,0x1e3f,0x1e4f,0x1e5f,0x1e6f,0x1e7f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x1c98,0x226,0x226,0x226,0x226,0x226,0x226,0x1ca4,0x226,0x226,0x226,0x226,0x226,0x226,
+0x226,0x226,0x226,0x226,0x226,0x1cb4,0x1cc4,0x1cd4,0x1ce4,0x1cf4,0x1d04,0x1d14,0x1d24,0x1d34,0x1d44,0x1d54,
+0x1d64,0x1d74,0x1d84,0x1d94,0x1da4,0x1db4,0x1dc4,0x1dd4,0x1de4,0x1df4,0x1e04,0x1e14,0x1e24,0x1e34,0x1e44,0x1e54,
+0x1e64,0x1e74,0x1e84,0x1e94,0x1ea4,0x1eb4,0x1ec4,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,
-0x226,0x226,0x226,0x226,0x226,0x408,0x428,0xc4,0xc4,0xc4,0x448,0x457,0x46a,0x486,0x4a3,0x4bf,
-0x4dc,0x4f9,0x518,0x535,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
-0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x54f,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+0x226,0x226,0x226,0x226,0x226,0x408,0x428,0xc4,0xc4,0xc4,0x448,0x457,0x46d,0x489,0x4a6,0x4c2,
+0x4df,0x4fc,0x51b,0x538,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x552,0xc4,0x566,0xc4,0xc4,0xc4,0xc4,
0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
-0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x566,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
-0xc4,0x571,0x58e,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5ae,0x5c2,0xc4,0xc4,0x5d5,0xc4,0xc4,
+0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x586,0xc4,0xc4,0xc4,0xc4,0xc4,
+0xc4,0xc4,0xc4,0x591,0x5ae,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5ce,0x5e2,0xc4,0xc4,0x5f5,
0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
-0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5f5,0x615
+0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+0x615,0x635
};
-static const uint16_t norm2_nfc_data_trieData[7824]={
+static const uint16_t norm2_nfc_data_trieData[7892]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
@@ -141,30 +144,30 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0x5e8,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,0x1284,0x128a,0xade,0x1290,0xaf4,
-0xafe,0x5f4,0xb08,0x1296,0x129c,0xb12,0x12a2,0x12a8,0x12ae,0x12b4,0xb28,1,0x12ba,0x12c0,0x12c6,0xb32,
-0xb48,0xb5a,1,0x5fc,0x12cc,0x12d2,0x12d8,0xb64,0x12de,1,1,0x12e4,0x12ea,0xb7a,0x12f0,0xb90,
-0xb9a,0x600,0xba4,0x12f6,0x12fc,0xbae,0x1302,0x1308,0x130e,0x1314,0xbc4,1,0x131a,0x1320,0x1326,0xbce,
-0xbe4,0xbf6,1,0x608,0x132c,0x1332,0x1338,0xc00,0x133e,1,0x1344,0x134a,0x1350,0xc16,0xc2c,0x1357,
-0x135d,0x1362,0x1368,0x136e,0x1374,0x137a,0x1380,0x1386,0x138c,0x1392,0x1398,1,1,0xc42,0xc50,0x139e,
-0x13a4,0x13aa,0x13b0,0x13b7,0x13bd,0x13c2,0x13c8,0x13ce,0x13d4,0x13da,0x13e0,0x13e6,0x13ec,0x13f3,0x13f9,0x13fe,
-0x1404,1,1,0x140a,0x1410,0x1416,0x141c,0x1422,0x1428,0x142f,0x1435,0x143a,1,1,1,0x1441,
-0x1447,0x144d,0x1453,1,0x1458,0x145e,0x1465,0x146b,0x1470,0x1476,1,1,1,0x147c,0x1482,0x1489,
-0x148f,0x1494,0x149a,1,1,1,0xc5e,0xc6c,0x14a0,0x14a6,0x14ac,0x14b2,1,1,0x14b8,0x14be,
-0x14c5,0x14cb,0x14d0,0x14d6,0xc7a,0xc84,0x14dc,0x14e2,0x14e9,0x14ef,0xc8e,0xc98,0x14f5,0x14fb,0x1500,0x1506,
-1,1,0xca2,0xcac,0xcb6,0xcc0,0x150c,0x1512,0x1518,0x151e,0x1524,0x152a,0x1531,0x1537,0x153c,0x1542,
-0x1548,0x154e,0x1554,0x155a,0x1560,0x1566,0x156c,0x1572,0x1578,0x60c,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,0x128a,0x1290,0xae4,0x1296,0xafa,
+0xb04,0x5f4,0xb0e,0x129c,0x12a2,0xb18,0x12a8,0x12ae,0x12b4,0x12ba,0xb2e,1,0x12c0,0x12c6,0x12cc,0xb38,
+0xb4e,0xb60,1,0x5fc,0x12d2,0x12d8,0x12de,0xb6a,0x12e4,1,1,0x12ea,0x12f0,0xb80,0x12f6,0xb96,
+0xba0,0x600,0xbaa,0x12fc,0x1302,0xbb4,0x1308,0x130e,0x1314,0x131a,0xbca,1,0x1320,0x1326,0x132c,0xbd4,
+0xbea,0xbfc,1,0x608,0x1332,0x1338,0x133e,0xc06,0x1344,1,0x134a,0x1350,0x1356,0xc1c,0xc32,0x135d,
+0x1363,0x1368,0x136e,0x1374,0x137a,0x1380,0x1386,0x138c,0x1392,0x1398,0x139e,1,1,0xc48,0xc56,0x13a4,
+0x13aa,0x13b0,0x13b6,0x13bd,0x13c3,0x13c8,0x13ce,0x13d4,0x13da,0x13e0,0x13e6,0x13ec,0x13f2,0x13f9,0x13ff,0x1404,
+0x140a,1,1,0x1410,0x1416,0x141c,0x1422,0x1428,0x142e,0x1435,0x143b,0x1440,1,1,1,0x1447,
+0x144d,0x1453,0x1459,1,0x145e,0x1464,0x146b,0x1471,0x1476,0x147c,1,1,1,0x1482,0x1488,0x148f,
+0x1495,0x149a,0x14a0,1,1,1,0xc64,0xc72,0x14a6,0x14ac,0x14b2,0x14b8,1,1,0x14be,0x14c4,
+0x14cb,0x14d1,0x14d6,0x14dc,0xc80,0xc8a,0x14e2,0x14e8,0x14ef,0x14f5,0xc94,0xc9e,0x14fb,0x1501,0x1506,0x150c,
+1,1,0xca8,0xcb2,0xcbc,0xcc6,0x1512,0x1518,0x151e,0x1524,0x152a,0x1530,0x1537,0x153d,0x1542,0x1548,
+0x154e,0x1554,0x155a,0x1560,0x1566,0x156c,0x1572,0x1578,0x157e,0x60c,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0xcca,0xce4,1,1,1,1,
-1,1,1,1,1,1,1,1,1,0xcfe,0xd18,1,1,1,1,1,
-1,0x610,1,1,1,1,1,1,1,1,1,1,1,1,1,0x157e,
-0x1584,0x158a,0x1590,0x1596,0x159c,0x15a2,0x15a8,0x15b0,0x15ba,0x15c4,0x15ce,0x15d8,0x15e2,0x15ec,0x15f6,1,
-0x1600,0x160a,0x1614,0x161e,0x1627,0x162d,1,1,0x1632,0x1638,0x163e,0x1644,0xd32,0xd3c,0x164d,0x1657,
-0x165f,0x1665,0x166b,1,1,1,0x1670,0x1676,1,1,0x167c,0x1682,0x168a,0x1694,0x169d,0x16a3,
-0x16a9,0x16af,0x16b4,0x16ba,0x16c0,0x16c6,0x16cc,0x16d2,0x16d8,0x16de,0x16e4,0x16ea,0x16f0,0x16f6,0x16fc,0x1702,
-0x1708,0x170e,0x1714,0x171a,0x1720,0x1726,0x172c,0x1732,0x1738,0x173e,0x1744,0x174a,0x1750,0x1756,1,1,
-0x175c,0x1762,1,1,1,1,1,1,0xd46,0xd50,0xd5a,0xd64,0x176a,0x1774,0x177e,0x1788,
-0xd6e,0xd78,0x1792,0x179c,0x17a4,0x17aa,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,0xcd0,0xcea,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0xd04,0xd1e,1,1,1,1,1,
+1,0x610,1,1,1,1,1,1,1,1,1,1,1,1,1,0x1584,
+0x158a,0x1590,0x1596,0x159c,0x15a2,0x15a8,0x15ae,0x15b6,0x15c0,0x15ca,0x15d4,0x15de,0x15e8,0x15f2,0x15fc,1,
+0x1606,0x1610,0x161a,0x1624,0x162d,0x1633,1,1,0x1638,0x163e,0x1644,0x164a,0xd38,0xd42,0x1653,0x165d,
+0x1665,0x166b,0x1671,1,1,1,0x1676,0x167c,1,1,0x1682,0x1688,0x1690,0x169a,0x16a3,0x16a9,
+0x16af,0x16b5,0x16ba,0x16c0,0x16c6,0x16cc,0x16d2,0x16d8,0x16de,0x16e4,0x16ea,0x16f0,0x16f6,0x16fc,0x1702,0x1708,
+0x170e,0x1714,0x171a,0x1720,0x1726,0x172c,0x1732,0x1738,0x173e,0x1744,0x174a,0x1750,0x1756,0x175c,1,1,
+0x1762,0x1768,1,1,1,1,1,1,0xd4c,0xd56,0xd60,0xd6a,0x1770,0x177a,0x1784,0x178e,
+0xd74,0xd7e,0x1798,0x17a2,0x17aa,0x17b0,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
@@ -175,34 +178,34 @@
0xfdcc,0xffcc,0xffcc,0xfdcc,0xffcc,0xfdcc,0xffcc,0xfdcc,0xfdcc,0xffd0,0xffb8,0xffb8,0xffb8,0xffb8,0xffd0,0xfdb0,
0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xff94,0xff94,0xfdb8,0xfdb8,0xfdb8,0xfdb8,0xfd94,0xfd94,0xffb8,0xffb8,0xffb8,
0xffb8,0xfdb8,0xfdb8,0xffb8,0xfdb8,0xfdb8,0xffb8,0xffb8,0xfe02,0xfe02,0xfe02,0xfe02,0xfc02,0xffb8,0xffb8,0xffb8,
-0xffb8,0xffcc,0xffcc,0xffcc,0x3c26,0x3c2c,0xfdcc,0x3c32,0x3c38,0xfde0,0xffcc,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,
+0xffb8,0xffcc,0xffcc,0xffcc,0x3c36,0x3c3c,0xfdcc,0x3c42,0x3c48,0xfde0,0xffcc,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,
0xffcc,0xffb8,0xffb8,1,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,0xffd0,0xffb8,0xffb8,0xffcc,
0xffd2,0xffd4,0xffd4,0xffd2,0xffd4,0xffd4,0xffd2,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,0x29d1,1,1,1,1,1,1,1,
-1,1,0x29d5,1,1,1,1,1,0x17b1,0x17b7,0x29d9,0x17bd,0x17c3,0x17c9,1,0x17cf,
-1,0x17d5,0x17db,0x17e3,0x618,1,1,1,0x634,1,0x644,1,0x658,1,1,1,
-1,1,0x674,1,0x684,1,1,1,0x688,1,1,1,0x6a0,0x17eb,0x17f1,0xd82,
-0x17f7,0xd8c,0x17fd,0x1805,0x6b4,1,1,1,0x6d4,1,0x6e4,1,0x6fc,1,1,1,
-1,1,0x71c,1,0x72c,1,1,1,0x734,1,1,1,0x754,0xd96,0xda8,0x180d,
-0x1813,0xdba,1,1,1,0x76c,0x1819,0x181f,1,1,1,1,1,1,1,1,
+0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,0x29e1,1,1,1,1,1,1,1,
+1,1,0x29e5,1,1,1,1,1,0x17b7,0x17bd,0x29e9,0x17c3,0x17c9,0x17cf,1,0x17d5,
+1,0x17db,0x17e1,0x17e9,0x618,1,1,1,0x634,1,0x644,1,0x658,1,1,1,
+1,1,0x674,1,0x684,1,1,1,0x688,1,1,1,0x6a0,0x17f1,0x17f7,0xd88,
+0x17fd,0xd92,0x1803,0x180b,0x6b4,1,1,1,0x6d4,1,0x6e4,1,0x6fc,1,1,1,
+1,1,0x71c,1,0x72c,1,1,1,0x734,1,1,1,0x754,0xd9c,0xdae,0x1813,
+0x1819,0xdc0,1,1,1,0x76c,0x181f,0x1825,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0x1825,0x182b,1,0x1831,1,1,0x774,0x1837,1,1,1,1,0x183d,
-0x1843,0x1849,1,0x778,1,1,0x780,1,0x784,0x790,0x798,0x79c,0x184f,0x7ac,1,1,
+1,1,1,0x182b,0x1831,1,0x1837,1,1,0x774,0x183d,1,1,1,1,0x1843,
+0x1849,0x184f,1,0x778,1,1,0x780,1,0x784,0x790,0x798,0x79c,0x1855,0x7ac,1,1,
1,0x7b0,1,1,1,1,0x7b4,1,1,1,0x7c4,1,1,1,0x7c8,1,
-0x7cc,1,1,0x7d0,1,1,0x7d8,1,0x7dc,0x7e8,0x7f0,0x7f4,0x1855,0x804,1,1,
+0x7cc,1,1,0x7d0,1,1,0x7d8,1,0x7dc,0x7e8,0x7f0,0x7f4,0x185b,0x804,1,1,
1,0x808,1,1,1,0x80c,1,1,1,0x81c,1,1,1,0x820,1,0x824,
-1,1,0x185b,0x1861,1,0x1867,1,1,0x828,0x186d,1,1,1,1,0x1873,0x1879,
-0x187f,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0x82c,0x830,0x1885,0x188b,1,1,1,1,1,1,
+1,1,0x1861,0x1867,1,0x186d,1,1,0x828,0x1873,1,1,1,1,0x1879,0x187f,
+0x1885,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,0x82c,0x830,0x188b,0x1891,1,1,1,1,1,1,
1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x1891,
-0x1897,1,1,1,1,1,1,1,1,1,1,1,1,1,0x189d,0x18a3,
-0x18a9,0x18af,1,1,0x18b5,0x18bb,0x834,0x838,0x18c1,0x18c7,0x18cd,0x18d3,0x18d9,0x18df,1,1,
-0x18e5,0x18eb,0x18f1,0x18f7,0x18fd,0x1903,0x83c,0x840,0x1909,0x190f,0x1915,0x191b,0x1921,0x1927,0x192d,0x1933,
-0x1939,0x193f,0x1945,0x194b,1,1,0x1951,0x1957,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x1897,
+0x189d,1,1,1,1,1,1,1,1,1,1,1,1,1,0x18a3,0x18a9,
+0x18af,0x18b5,1,1,0x18bb,0x18c1,0x834,0x838,0x18c7,0x18cd,0x18d3,0x18d9,0x18df,0x18e5,1,1,
+0x18eb,0x18f1,0x18f7,0x18fd,0x1903,0x1909,0x83c,0x840,0x190f,0x1915,0x191b,0x1921,0x1927,0x192d,0x1933,0x1939,
+0x193f,0x1945,0x194b,0x1951,1,1,0x1957,0x195d,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,
0xffcc,0xffcc,0xffbc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,
0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffbc,0xffc8,0xffcc,0xfe14,0xfe16,0xfe18,0xfe1a,0xfe1c,0xfe1e,0xfe20,0xfe22,
@@ -211,14 +214,14 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xfe3c,0xfe3e,0xfe40,1,1,1,1,1,1,1,0x195c,0x1962,0x1969,0x196f,0x1975,0x844,
+0xfe3c,0xfe3e,0xfe40,1,1,1,1,1,1,1,0x1962,0x1968,0x196f,0x1975,0x197b,0x844,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0x850,1,0x854,0xfe36,0xfe38,0xfe3a,0xfe3c,0xfe3e,
0xfe40,0xfe42,0xfe44,0xfdcc,0xfdcc,0xfdb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0xfe46,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0x197b,0x858,0x1981,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,0x85c,0x1987,1,0x860,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,0xffcc,
+0x1981,0x858,0x1987,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0x85c,0x198d,1,0x860,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,0xffcc,
0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,1,1,0xffcc,0xffcc,1,0xffb8,0xffcc,0xffcc,0xffb8,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0xfe48,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
@@ -241,24 +244,24 @@
0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,0x864,0x198d,1,1,1,1,1,1,0x868,0x1993,1,0x86c,
-0x1999,1,1,1,1,1,1,1,0xfc0e,1,1,1,1,1,1,1,
+1,1,1,1,0x864,0x1993,1,1,1,1,1,1,0x868,0x1999,1,0x86c,
+0x199f,1,1,1,1,1,1,1,0xfc0e,1,1,1,1,1,1,1,
1,1,1,1,1,1,0xfe12,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,1,1,
-1,0x29dc,0x29e2,0x29e8,0x29ee,0x29f4,0x29fa,0x2a00,0x2a06,1,1,1,1,1,1,1,
+1,0x29ec,0x29f2,0x29f8,0x29fe,0x2a04,0x2a0a,0x2a10,0x2a16,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0xfe0e,1,0xfc00,1,1,1,1,1,1,1,0x870,
-1,1,1,0x199f,0x19a5,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,
-1,1,1,1,0x2a0c,0x2a12,1,0x2a18,1,1,1,1,1,1,1,1,
+1,1,1,0x19a5,0x19ab,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,
+1,1,1,1,0x2a1c,0x2a22,1,0x2a28,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,0xffcc,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0x2a1e,1,1,0x2a24,1,1,
+1,1,1,1,1,1,1,1,1,1,0x2a2e,1,1,0x2a34,1,1,
1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,0x2a2a,0x2a30,0x2a36,
-1,1,0x2a3c,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,0x2a3a,0x2a40,0x2a46,
+1,1,0x2a4c,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe0e,
@@ -266,33 +269,33 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0x878,0x19ab,1,1,0x19b1,0x19b7,0xfe12,1,1,1,1,1,1,1,1,0xfc00,
-0xfc00,1,1,1,1,0x2a42,0x2a48,1,1,1,1,1,1,1,1,1,
+0x878,0x19b1,1,1,0x19b7,0x19bd,0xfe12,1,1,1,1,1,1,1,1,0xfc00,
+0xfc00,1,1,1,1,0x2a52,0x2a58,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,0x884,1,0x19bd,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0x884,1,0x19c3,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0xfc00,1,1,1,1,1,1,0x888,0x890,1,1,
-0x19c3,0x19c9,0x19cf,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,1,1,
+0x19c9,0x19cf,0x19d5,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0x894,1,0x19d5,1,1,1,1,0xfe12,1,1,
+1,1,1,1,1,1,0x894,1,0x19db,1,1,1,1,0xfe12,1,1,
1,1,1,1,1,0xfea8,0xfcb6,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0xfe0e,1,1,0x898,0x19db,1,0xfc00,1,1,1,0x89c,0x19e1,0x19e7,
-1,0xdc4,0x19ef,1,0xfe12,1,1,1,1,1,1,1,0xfc00,0xfc00,1,1,
+1,1,1,0xfe0e,1,1,0x898,0x19e1,1,0xfc00,1,1,1,0x89c,0x19e7,0x19ed,
+1,0xdca,0x19f5,1,0xfe12,1,1,1,1,1,1,1,0xfc00,0xfc00,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1,0xfc00,1,1,1,
-1,1,1,0x8a8,0x8b0,1,1,0x19f7,0x19fd,0x1a03,0xfe12,1,1,1,1,1,
+1,1,1,0x8a8,0x8b0,1,1,0x19fd,0x1a03,0x1a09,0xfe12,1,1,1,1,1,
1,1,1,1,0xfc00,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0xfc12,1,1,
-1,1,0xfc00,1,1,1,1,1,1,1,1,1,0x8b4,0x1a09,1,0xdce,
-0x1a11,0x1a19,0xfc00,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0xfc00,1,1,1,1,1,1,1,1,1,0x8b4,0x1a0f,1,0xdd4,
+0x1a17,0x1a1f,0xfc00,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,0xfece,0xfece,0xfe12,1,1,
@@ -306,19 +309,19 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,0xffb8,1,0xffb8,1,0xffb0,1,1,1,1,1,1,0x2a4f,1,1,
-1,1,1,1,1,1,1,0x2a55,1,1,1,1,0x2a5b,1,1,1,
-1,0x2a61,1,1,1,1,0x2a67,1,1,1,1,1,1,1,1,1,
-1,1,1,0x2a6d,1,1,1,1,1,1,1,0xff02,0xff04,0x3c40,0xff08,0x3c48,
-0x2a72,1,0x2a78,1,0xff04,0xff04,0xff04,0xff04,1,1,0xff04,0x3c50,0xffcc,0xffcc,0xfe12,1,
-0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x2a7f,1,1,
-1,1,1,1,1,1,1,0x2a85,1,1,1,1,0x2a8b,1,1,1,
-1,0x2a91,1,1,1,1,0x2a97,1,1,1,1,1,1,1,1,1,
-1,1,1,0x2a9d,1,1,1,1,1,1,0xffb8,1,1,1,1,1,
+1,1,0xffb8,1,0xffb8,1,0xffb0,1,1,1,1,1,1,0x2a5f,1,1,
+1,1,1,1,1,1,1,0x2a65,1,1,1,1,0x2a6b,1,1,1,
+1,0x2a71,1,1,1,1,0x2a77,1,1,1,1,1,1,1,1,1,
+1,1,1,0x2a7d,1,1,1,1,1,1,1,0xff02,0xff04,0x3c50,0xff08,0x3c58,
+0x2a82,1,0x2a88,1,0xff04,0xff04,0xff04,0xff04,1,1,0xff04,0x3c60,0xffcc,0xffcc,0xfe12,1,
+0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x2a8f,1,1,
+1,1,1,1,1,1,1,0x2a95,1,1,1,1,0x2a9b,1,1,1,
+1,0x2aa1,1,1,1,1,0x2aa7,1,1,1,1,1,1,1,1,1,
+1,1,1,0x2aad,1,1,1,1,1,1,0xffb8,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,0x8c0,0x1a1f,1,1,1,1,1,1,1,0xfc00,1,1,
+1,1,1,1,0x8c0,0x1a25,1,1,1,1,1,1,1,0xfc00,1,1,
1,1,1,1,1,1,0xfe0e,1,0xfe12,0xfe12,1,1,1,1,1,1,
1,1,1,1,1,1,1,0xffb8,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
@@ -359,272 +362,277 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,
-0xffcc,0xffb8,1,1,1,1,1,0x8c4,0x1a25,0x8c8,0x1a2b,0x8cc,0x1a31,0x8d0,0x1a37,0x8d4,
-0x1a3d,1,1,0x8d8,0x1a43,1,1,1,1,1,1,1,1,1,1,1,
+0xffcc,0xffb8,1,0xffb8,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0xfe0e,0xfc00,1,1,1,1,0x8dc,0x1a49,0x8e0,0x1a4f,
-0x8e4,0x8e8,0x1a55,0x1a5b,0x8ec,0x1a61,0xfe12,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,0x8c4,0x1a2b,0x8c8,0x1a31,0x8cc,0x1a37,0x8d0,0x1a3d,0x8d4,0x1a43,1,1,0x8d8,
+0x1a49,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0xfe0e,0xfc00,1,1,1,1,0x8dc,0x1a4f,0x8e0,0x1a55,0x8e4,0x8e8,0x1a5b,0x1a61,
+0x8ec,0x1a67,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,
0xfe12,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0xfe0e,1,1,1,1,1,1,1,
-1,1,1,1,0xfe12,0xfe12,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,1,0xfe02,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,
-0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,1,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,1,
-1,1,1,0xffb8,1,1,1,1,1,1,0xffcc,1,1,1,0xffcc,0xffcc,
-1,1,1,1,1,1,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffb8,0xffcc,0xffcc,0xffd4,0xffac,0xffb8,0xff94,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+1,1,0xffcc,0xffcc,0xffcc,1,0xfe02,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,
+0xffb8,0xffb8,0xffcc,1,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,1,1,1,1,0xffb8,
+1,1,1,1,1,1,0xffcc,1,1,1,0xffcc,0xffcc,1,1,1,1,
+1,1,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffd4,
+0xffac,0xffb8,0xff94,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffd0,0xffc8,0xffc8,0xffb8,
-1,0xffcc,0xffd2,0xffb8,0xffcc,0xffb8,0x1a66,0x1a6c,0x1a72,0x1a78,0x1a7f,0x1a85,0x1a8b,0x1a91,0x1a99,0x1aa3,
-0x1aaa,0x1ab0,0x1ab6,0x1abc,0x1ac2,0x1ac8,0x1acf,0x1ad5,0x1ada,0x1ae0,0x1ae8,0x1af2,0x1afc,0x1b06,0x1b0e,0x1b14,
-0x1b1a,0x1b20,0x1b29,0x1b33,0x1b3b,0x1b41,0x1b46,0x1b4c,0x1b52,0x1b58,0x1b5e,0x1b64,0x1b6a,0x1b70,0x1b77,0x1b7d,
-0x1b82,0x1b88,0x1b8e,0x1b94,0x1b9c,0x1ba6,0x1bae,0x1bb4,0x1bba,0x1bc0,0x1bc6,0x1bcc,0xdd8,0xde2,0x1bd4,0x1bde,
-0x1be6,0x1bec,0x1bf2,0x1bf8,0x1bfe,0x1c04,0x1c0a,0x1c10,0x1c17,0x1c1d,0x1c22,0x1c28,0x1c2e,0x1c34,0x1c3a,0x1c40,
-0x1c46,0x1c4c,0x1c54,0x1c5e,0x1c68,0x1c72,0x1c7c,0x1c86,0x1c90,0x1c9a,0x1ca3,0x1ca9,0x1caf,0x1cb5,0x1cba,0x1cc0,
-0xdec,0xdf6,0x1cc8,0x1cd2,0x1cda,0x1ce0,0x1ce6,0x1cec,0xe00,0xe0a,0x1cf4,0x1cfe,0x1d08,0x1d12,0x1d1c,0x1d26,
-0x1d2e,0x1d34,0x1d3a,0x1d40,0x1d46,0x1d4c,0x1d52,0x1d58,0x1d5e,0x1d64,0x1d6a,0x1d70,0x1d76,0x1d7c,0x1d84,0x1d8e,
-0x1d98,0x1da2,0x1daa,0x1db0,0x1db7,0x1dbd,0x1dc2,0x1dc8,0x1dce,0x1dd4,0x1dda,0x1de0,0x1de6,0x1dec,0x1df3,0x1df9,
-0x1dff,0x1e05,0x1e0b,0x1e11,0x1e16,0x1e1c,0x1e22,0x1e28,0x1e2f,0x1e35,0x1e3b,0x1e41,0x1e46,0x1e4c,0x1e52,0x1e58,
-1,0x1e5f,1,1,1,1,0xe14,0xe22,0x1e64,0x1e6a,0x1e72,0x1e7c,0x1e86,0x1e90,0x1e9a,0x1ea4,
-0x1eae,0x1eb8,0x1ec2,0x1ecc,0x1ed6,0x1ee0,0x1eea,0x1ef4,0x1efe,0x1f08,0x1f12,0x1f1c,0x1f26,0x1f30,0xe30,0xe3a,
-0x1f38,0x1f3e,0x1f44,0x1f4a,0x1f52,0x1f5c,0x1f66,0x1f70,0x1f7a,0x1f84,0x1f8e,0x1f98,0x1fa2,0x1fac,0x1fb4,0x1fba,
-0x1fc0,0x1fc6,0xe44,0xe4e,0x1fcc,0x1fd2,0x1fda,0x1fe4,0x1fee,0x1ff8,0x2002,0x200c,0x2016,0x2020,0x202a,0x2034,
-0x203e,0x2048,0x2052,0x205c,0x2066,0x2070,0x207a,0x2084,0x208e,0x2098,0x20a0,0x20a6,0x20ac,0x20b2,0x20ba,0x20c4,
-0x20ce,0x20d8,0x20e2,0x20ec,0x20f6,0x2100,0x210a,0x2114,0x211c,0x2122,0x2129,0x212f,0x2134,0x213a,0x2140,0x2146,
-1,1,1,1,1,1,0xe58,0xe6e,0xe86,0xe94,0xea2,0xeb0,0xebe,0xecc,0xed8,0xeee,
-0xf06,0xf14,0xf22,0xf30,0xf3e,0xf4c,0xf58,0xf66,0x214f,0x2159,0x2163,0x216d,1,1,0xf74,0xf82,
-0x2177,0x2181,0x218b,0x2195,1,1,0xf90,0xfa6,0xfbe,0xfcc,0xfda,0xfe8,0xff6,0x1004,0x1010,0x1026,
-0x103e,0x104c,0x105a,0x1068,0x1076,0x1084,0x1090,0x10a2,0x219f,0x21a9,0x21b3,0x21bd,0x21c7,0x21d1,0x10b4,0x10c6,
-0x21db,0x21e5,0x21ef,0x21f9,0x2203,0x220d,0x10d8,0x10e6,0x2217,0x2221,0x222b,0x2235,1,1,0x10f4,0x1102,
-0x223f,0x2249,0x2253,0x225d,1,1,0x1110,0x1122,0x2267,0x2271,0x227b,0x2285,0x228f,0x2299,1,0x1134,
-1,0x22a3,1,0x22ad,1,0x22b7,0x1146,0x115c,0x1174,0x1182,0x1190,0x119e,0x11ac,0x11ba,0x11c6,0x11dc,
-0x11f4,0x1202,0x1210,0x121e,0x122c,0x123a,0x1246,0x3b8e,0x22bf,0x3b96,0x1250,0x3b9e,0x22c5,0x3ba6,0x22cb,0x3bae,
-0x22d1,0x3bb6,0x125a,0x3bbe,1,1,0x22d8,0x22e2,0x22f1,0x2301,0x2311,0x2321,0x2331,0x2341,0x234c,0x2356,
-0x2365,0x2375,0x2385,0x2395,0x23a5,0x23b5,0x23c0,0x23ca,0x23d9,0x23e9,0x23f9,0x2409,0x2419,0x2429,0x2434,0x243e,
-0x244d,0x245d,0x246d,0x247d,0x248d,0x249d,0x24a8,0x24b2,0x24c1,0x24d1,0x24e1,0x24f1,0x2501,0x2511,0x251c,0x2526,
-0x2535,0x2545,0x2555,0x2565,0x2575,0x2585,0x258f,0x2595,0x259d,0x25a4,0x25ad,1,0x1264,0x25b7,0x25bf,0x25c5,
-0x25cb,0x3bc6,0x25d0,1,0x2aa2,0x8f0,1,0x25d7,0x25df,0x25e6,0x25ef,1,0x126e,0x25f9,0x2601,0x3bce,
-0x2607,0x3bd6,0x260c,0x2613,0x2619,0x261f,0x2625,0x262b,0x2633,0x3be0,1,1,0x263b,0x2643,0x264b,0x2651,
-0x2657,0x3bea,1,0x265d,0x2663,0x2669,0x266f,0x2675,0x267d,0x3bf4,0x2685,0x268b,0x2691,0x2699,0x26a1,0x26a7,
-0x26ad,0x3bfe,0x26b3,0x26b9,0x3c06,0x2aa7,1,1,0x26c1,0x26c8,0x26d1,1,0x1278,0x26db,0x26e3,0x3c0e,
-0x26e9,0x3c16,0x26ee,0x2aab,0x8fc,1,0xfa09,0xfa09,1,1,1,1,1,1,1,1,
+0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffd0,0xffc8,0xffc8,0xffb8,1,0xffcc,0xffd2,0xffb8,
+0xffcc,0xffb8,0x1a6c,0x1a72,0x1a78,0x1a7e,0x1a85,0x1a8b,0x1a91,0x1a97,0x1a9f,0x1aa9,0x1ab0,0x1ab6,0x1abc,0x1ac2,
+0x1ac8,0x1ace,0x1ad5,0x1adb,0x1ae0,0x1ae6,0x1aee,0x1af8,0x1b02,0x1b0c,0x1b14,0x1b1a,0x1b20,0x1b26,0x1b2f,0x1b39,
+0x1b41,0x1b47,0x1b4c,0x1b52,0x1b58,0x1b5e,0x1b64,0x1b6a,0x1b70,0x1b76,0x1b7d,0x1b83,0x1b88,0x1b8e,0x1b94,0x1b9a,
+0x1ba2,0x1bac,0x1bb4,0x1bba,0x1bc0,0x1bc6,0x1bcc,0x1bd2,0xdde,0xde8,0x1bda,0x1be4,0x1bec,0x1bf2,0x1bf8,0x1bfe,
+0x1c04,0x1c0a,0x1c10,0x1c16,0x1c1d,0x1c23,0x1c28,0x1c2e,0x1c34,0x1c3a,0x1c40,0x1c46,0x1c4c,0x1c52,0x1c5a,0x1c64,
+0x1c6e,0x1c78,0x1c82,0x1c8c,0x1c96,0x1ca0,0x1ca9,0x1caf,0x1cb5,0x1cbb,0x1cc0,0x1cc6,0xdf2,0xdfc,0x1cce,0x1cd8,
+0x1ce0,0x1ce6,0x1cec,0x1cf2,0xe06,0xe10,0x1cfa,0x1d04,0x1d0e,0x1d18,0x1d22,0x1d2c,0x1d34,0x1d3a,0x1d40,0x1d46,
+0x1d4c,0x1d52,0x1d58,0x1d5e,0x1d64,0x1d6a,0x1d70,0x1d76,0x1d7c,0x1d82,0x1d8a,0x1d94,0x1d9e,0x1da8,0x1db0,0x1db6,
+0x1dbd,0x1dc3,0x1dc8,0x1dce,0x1dd4,0x1dda,0x1de0,0x1de6,0x1dec,0x1df2,0x1df9,0x1dff,0x1e05,0x1e0b,0x1e11,0x1e17,
+0x1e1c,0x1e22,0x1e28,0x1e2e,0x1e35,0x1e3b,0x1e41,0x1e47,0x1e4c,0x1e52,0x1e58,0x1e5e,1,0x1e65,1,1,
+1,1,0xe1a,0xe28,0x1e6a,0x1e70,0x1e78,0x1e82,0x1e8c,0x1e96,0x1ea0,0x1eaa,0x1eb4,0x1ebe,0x1ec8,0x1ed2,
+0x1edc,0x1ee6,0x1ef0,0x1efa,0x1f04,0x1f0e,0x1f18,0x1f22,0x1f2c,0x1f36,0xe36,0xe40,0x1f3e,0x1f44,0x1f4a,0x1f50,
+0x1f58,0x1f62,0x1f6c,0x1f76,0x1f80,0x1f8a,0x1f94,0x1f9e,0x1fa8,0x1fb2,0x1fba,0x1fc0,0x1fc6,0x1fcc,0xe4a,0xe54,
+0x1fd2,0x1fd8,0x1fe0,0x1fea,0x1ff4,0x1ffe,0x2008,0x2012,0x201c,0x2026,0x2030,0x203a,0x2044,0x204e,0x2058,0x2062,
+0x206c,0x2076,0x2080,0x208a,0x2094,0x209e,0x20a6,0x20ac,0x20b2,0x20b8,0x20c0,0x20ca,0x20d4,0x20de,0x20e8,0x20f2,
+0x20fc,0x2106,0x2110,0x211a,0x2122,0x2128,0x212f,0x2135,0x213a,0x2140,0x2146,0x214c,1,1,1,1,
+1,1,0xe5e,0xe74,0xe8c,0xe9a,0xea8,0xeb6,0xec4,0xed2,0xede,0xef4,0xf0c,0xf1a,0xf28,0xf36,
+0xf44,0xf52,0xf5e,0xf6c,0x2155,0x215f,0x2169,0x2173,1,1,0xf7a,0xf88,0x217d,0x2187,0x2191,0x219b,
+1,1,0xf96,0xfac,0xfc4,0xfd2,0xfe0,0xfee,0xffc,0x100a,0x1016,0x102c,0x1044,0x1052,0x1060,0x106e,
+0x107c,0x108a,0x1096,0x10a8,0x21a5,0x21af,0x21b9,0x21c3,0x21cd,0x21d7,0x10ba,0x10cc,0x21e1,0x21eb,0x21f5,0x21ff,
+0x2209,0x2213,0x10de,0x10ec,0x221d,0x2227,0x2231,0x223b,1,1,0x10fa,0x1108,0x2245,0x224f,0x2259,0x2263,
+1,1,0x1116,0x1128,0x226d,0x2277,0x2281,0x228b,0x2295,0x229f,1,0x113a,1,0x22a9,1,0x22b3,
+1,0x22bd,0x114c,0x1162,0x117a,0x1188,0x1196,0x11a4,0x11b2,0x11c0,0x11cc,0x11e2,0x11fa,0x1208,0x1216,0x1224,
+0x1232,0x1240,0x124c,0x3b9e,0x22c5,0x3ba6,0x1256,0x3bae,0x22cb,0x3bb6,0x22d1,0x3bbe,0x22d7,0x3bc6,0x1260,0x3bce,
+1,1,0x22de,0x22e8,0x22f7,0x2307,0x2317,0x2327,0x2337,0x2347,0x2352,0x235c,0x236b,0x237b,0x238b,0x239b,
+0x23ab,0x23bb,0x23c6,0x23d0,0x23df,0x23ef,0x23ff,0x240f,0x241f,0x242f,0x243a,0x2444,0x2453,0x2463,0x2473,0x2483,
+0x2493,0x24a3,0x24ae,0x24b8,0x24c7,0x24d7,0x24e7,0x24f7,0x2507,0x2517,0x2522,0x252c,0x253b,0x254b,0x255b,0x256b,
+0x257b,0x258b,0x2595,0x259b,0x25a3,0x25aa,0x25b3,1,0x126a,0x25bd,0x25c5,0x25cb,0x25d1,0x3bd6,0x25d6,1,
+0x2ab2,0x8f0,1,0x25dd,0x25e5,0x25ec,0x25f5,1,0x1274,0x25ff,0x2607,0x3bde,0x260d,0x3be6,0x2612,0x2619,
+0x261f,0x2625,0x262b,0x2631,0x2639,0x3bf0,1,1,0x2641,0x2649,0x2651,0x2657,0x265d,0x3bfa,1,0x2663,
+0x2669,0x266f,0x2675,0x267b,0x2683,0x3c04,0x268b,0x2691,0x2697,0x269f,0x26a7,0x26ad,0x26b3,0x3c0e,0x26b9,0x26bf,
+0x3c16,0x2ab7,1,1,0x26c7,0x26ce,0x26d7,1,0x127e,0x26e1,0x26e9,0x3c1e,0x26ef,0x3c26,0x26f4,0x2abb,
+0x8fc,1,0xfa09,0xfa09,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0xffcc,0xffcc,0xfe02,0xfe02,0xffcc,0xffcc,0xffcc,0xffcc,0xfe02,0xfe02,
-0xfe02,0xffcc,0xffcc,1,1,1,1,0xffcc,1,1,1,0xfe02,0xfe02,0xffcc,0xffb8,0xffcc,
-0xfe02,0xfe02,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,1,1,1,1,1,1,1,1,1,
+1,1,0xffcc,0xffcc,0xfe02,0xfe02,0xffcc,0xffcc,0xffcc,0xffcc,0xfe02,0xfe02,0xfe02,0xffcc,0xffcc,1,
+1,1,1,0xffcc,1,1,1,0xfe02,0xfe02,0xffcc,0xffb8,0xffcc,0xfe02,0xfe02,0xffb8,0xffb8,
+0xffb8,0xffb8,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,0x2aae,1,1,
-1,0x2ab2,0x3c1e,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0x908,1,0x90c,1,0x910,1,1,1,1,
-1,0x26f5,0x26fb,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,0x2701,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0x2707,0x270d,0x2713,0x914,1,0x918,1,0x91c,1,
+1,1,1,1,1,1,1,1,1,0x2abe,1,1,1,0x2ac2,0x3c2e,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,0x908,1,0x90c,1,0x910,1,1,1,1,1,0x26fb,0x2701,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0x920,0x2719,1,1,1,0x924,
-0x271f,1,0x928,0x2725,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0x92c,0x272b,0x930,0x2731,1,1,
+1,0x2707,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,0x270d,0x2713,0x2719,0x914,1,0x918,1,0x91c,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0x934,1,1,1,0x2737,1,0x938,0x273d,0x93c,1,0x2743,0x940,0x2749,
-1,1,1,0x944,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0x274f,0x948,0x2755,1,0x94c,0x950,1,1,1,1,
-1,1,1,0x275b,0x2761,0x2767,0x276d,0x2773,0x954,0x958,0x2779,0x277f,0x95c,0x960,0x2785,0x278b,
-0x964,0x968,0x96c,0x970,1,1,0x2791,0x2797,0x974,0x978,0x279d,0x27a3,0x97c,0x980,0x27a9,0x27af,
-1,1,1,1,1,1,1,0x984,0x988,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0x98c,1,1,1,1,1,0x990,0x994,
-1,0x998,0x27b5,0x27bb,0x27c1,0x27c7,1,1,0x99c,0x9a0,0x9a4,0x9a8,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0x27cd,0x27d3,0x27d9,0x27df,
-1,1,1,1,1,1,0x27e5,0x27eb,0x27f1,0x27f7,1,1,1,1,1,1,
+1,1,1,1,1,1,0x920,0x271f,1,1,1,0x924,0x2725,1,0x928,0x272b,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,0x92c,0x2731,0x930,0x2737,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x934,
+1,1,1,0x273d,1,0x938,0x2743,0x93c,1,0x2749,0x940,0x274f,1,1,1,0x944,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0x2ab7,0x2abb,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0x2755,0x948,0x275b,1,0x94c,0x950,1,1,1,1,1,1,1,0x2761,
+0x2767,0x276d,0x2773,0x2779,0x954,0x958,0x277f,0x2785,0x95c,0x960,0x278b,0x2791,0x964,0x968,0x96c,0x970,
+1,1,0x2797,0x279d,0x974,0x978,0x27a3,0x27a9,0x97c,0x980,0x27af,0x27b5,1,1,1,1,
+1,1,1,0x984,0x988,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0x98c,1,1,1,1,1,0x990,0x994,1,0x998,0x27bb,0x27c1,
+0x27c7,0x27cd,1,1,0x99c,0x9a0,0x9a4,0x9a8,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0x2abf,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0x27d3,0x27d9,0x27df,0x27e5,1,1,1,1,
+1,1,0x27eb,0x27f1,0x27f7,0x27fd,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2ac7,
+0x2acb,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,0x2acf,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,
0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0xffb4,0xffc8,0xffd0,0xffbc,
-0xffc0,0xffc0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,0x9ac,1,1,1,1,0x9b0,0x27fd,0x9b4,0x2803,0x9b8,0x2809,0x9bc,0x280f,0x9c0,
-0x2815,0x9c4,0x281b,0x9c8,0x2821,0x9cc,0x2827,0x9d0,0x282d,0x9d4,0x2833,0x9d8,0x2839,0x9dc,0x283f,1,
-0x9e0,0x2845,0x9e4,0x284b,0x9e8,0x2851,1,1,1,1,1,0x9ec,0x2857,0x285d,0x9f4,0x2863,
-0x2869,0x9fc,0x286f,0x2875,0xa04,0x287b,0x2881,0xa0c,0x2887,0x288d,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2893,1,
-1,1,1,0xfc10,0xfc10,1,1,0xa14,0x2899,1,1,1,1,1,1,1,
-0xa18,1,1,1,1,0xa1c,0x289f,0xa20,0x28a5,0xa24,0x28ab,0xa28,0x28b1,0xa2c,0x28b7,0xa30,
-0x28bd,0xa34,0x28c3,0xa38,0x28c9,0xa3c,0x28cf,0xa40,0x28d5,0xa44,0x28db,0xa48,0x28e1,1,0xa4c,0x28e7,
-0xa50,0x28ed,0xa54,0x28f3,1,1,1,1,1,0xa58,0x28f9,0x28ff,0xa60,0x2905,0x290b,0xa68,
-0x2911,0x2917,0xa70,0x291d,0x2923,0xa78,0x2929,0x292f,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,0xa80,0xa84,0xa88,0xa8c,1,0x2935,1,
-1,0x293b,0x2941,0x2947,0x294d,1,1,0xa90,0x2953,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0xffb4,0xffc8,0xffd0,0xffbc,0xffc0,0xffc0,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x9ac,1,
+1,1,1,0x9b0,0x2803,0x9b4,0x2809,0x9b8,0x280f,0x9bc,0x2815,0x9c0,0x281b,0x9c4,0x2821,0x9c8,
+0x2827,0x9cc,0x282d,0x9d0,0x2833,0x9d4,0x2839,0x9d8,0x283f,0x9dc,0x2845,1,0x9e0,0x284b,0x9e4,0x2851,
+0x9e8,0x2857,1,1,1,1,1,0x9ec,0x285d,0x2863,0x9f4,0x2869,0x286f,0x9fc,0x2875,0x287b,
+0xa04,0x2881,0x2887,0xa0c,0x288d,0x2893,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,0x2899,1,1,1,1,0xfc10,
+0xfc10,1,1,0xa14,0x289f,1,1,1,1,1,1,1,0xa18,1,1,1,
+1,0xa1c,0x28a5,0xa20,0x28ab,0xa24,0x28b1,0xa28,0x28b7,0xa2c,0x28bd,0xa30,0x28c3,0xa34,0x28c9,0xa38,
+0x28cf,0xa3c,0x28d5,0xa40,0x28db,0xa44,0x28e1,0xa48,0x28e7,1,0xa4c,0x28ed,0xa50,0x28f3,0xa54,0x28f9,
+1,1,1,1,1,0xa58,0x28ff,0x2905,0xa60,0x290b,0x2911,0xa68,0x2917,0x291d,0xa70,0x2923,
+0x2929,0xa78,0x292f,0x2935,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,0xa80,0xa84,0xa88,0xa8c,1,0x293b,1,1,0x2941,0x2947,0x294d,
+0x2953,1,1,0xa90,0x2959,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0xffcc,1,1,1,1,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0xffcc,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,
+1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0xffb8,0xffb8,0xffb8,1,1,1,
+1,1,0xffb8,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,0xffcc,1,0xffcc,0xffcc,0xffb8,1,1,0xffcc,
+0xffcc,1,1,1,1,1,0xffcc,0xffcc,1,0xffcc,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-0xffcc,1,0xffcc,0xffcc,0xffb8,1,1,0xffcc,0xffcc,1,1,1,1,1,0xffcc,0xffcc,
-1,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1,
+1,1,1,1,1,1,1,1,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,
+0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,
-0xadc,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0xadc,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0xadc,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0xadc,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
-0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,0x1283,
+1,1,1,1,0x3c66,1,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3c66,0x3c66,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0x3c56,1,0x3c56,0x3c56,
-0x3c56,0x3c56,0x3c56,0x3c56,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0x3c56,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,0x3c56,1,1,1,1,
-0x3c56,1,1,1,0x3c56,1,0x3c56,1,1,1,1,1,1,1,1,1,
+1,1,1,0x3c66,1,1,1,1,0x3c66,1,1,1,0x3c66,1,0x3c66,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,0x3b87,1,0x2ac5,0x2ac9,0x2acd,0x2ad1,0x2ad5,0x2ad9,0x2add,0x2ae1,0x2ae1,
-0x2ae5,0x2ae9,0x2aed,0x2af1,0x2af5,0x2af9,0x2afd,0x2b01,0x2b05,0x2b09,0x2b0d,0x2b11,0x2b15,0x2b19,0x2b1d,0x2b21,
-0x2b25,0x2b29,0x2b2d,0x2b31,0x2b35,0x2b39,0x2b3d,0x2b41,0x2b45,0x2b49,0x2b4d,0x2b51,0x2b55,0x2b59,0x2b5d,0x2b61,
-0x2b65,0x2b69,0x2b6d,0x2b71,0x2b75,0x2b79,0x2b7d,0x2b81,0x2b85,0x2b89,0x2b8d,0x2b91,0x2b95,0x2b99,0x2b9d,0x2ba1,
-0x2ba5,0x2ba9,0x2bad,0x2bb1,0x2bb5,0x2bb9,0x2bbd,0x2bc1,0x2bc5,0x2bc9,0x2bcd,0x2bd1,0x2bd5,0x2bd9,0x2bdd,0x2be1,
-0x2be5,0x2be9,0x2bed,0x2bf1,0x2bf5,0x2bf9,0x2bfd,0x2c01,0x2c05,0x2c09,0x2c0d,0x2c11,0x2c15,0x2c19,0x2c1d,0x2c21,
-0x2c25,0x2c29,0x2c2d,0x2b11,0x2c31,0x2c35,0x2c39,0x2c3d,0x2c41,0x2c45,0x2c49,0x2c4d,0x2c51,0x2c55,0x2c59,0x2c5d,
-0x2c61,0x2c65,0x2c69,0x2c6d,0x2c71,0x2c75,0x2c79,0x2c7d,0x2c81,0x2c85,0x2c89,0x2c8d,0x2c91,0x2c95,0x2c99,0x2c9d,
-0x2ca1,0x2ca5,0x2ca9,0x2cad,0x2cb1,0x2cb5,0x2cb9,0x2cbd,0x2cc1,0x2cc5,0x2cc9,0x2ccd,0x2cd1,0x2cd5,0x2cd9,0x2cdd,
-0x2ce1,0x2ce5,0x2ce9,0x2ced,0x2cf1,0x2cf5,0x2cf9,0x2cfd,0x2d01,0x2d05,0x2d09,0x2d0d,0x2d11,0x2d15,0x2d19,0x2d1d,
-0x2d21,0x2d25,0x2d29,0x2d2d,0x2d31,0x2d35,0x2d39,0x2d3d,0x2c79,0x2d41,0x2d45,0x2d49,0x2d4d,0x2d51,0x2d55,0x2d59,
-0x2d5d,0x2c39,0x2d61,0x2d65,0x2d69,0x2d6d,0x2d71,0x2d75,0x2d79,0x2d7d,0x2d81,0x2d85,0x2d89,0x2d8d,0x2d91,0x2d95,
-0x2d99,0x2d9d,0x2da1,0x2da5,0x2da9,0x2dad,0x2b11,0x2db1,0x2db5,0x2db9,0x2dbd,0x2dc1,0x2dc5,0x2dc9,0x2dcd,0x2dd1,
-0x2dd5,0x2dd9,0x2ddd,0x2de1,0x2de5,0x2de9,0x2ded,0x2df1,0x2df5,0x2df9,0x2dfd,0x2e01,0x2e05,0x2e09,0x2e0d,0x2e11,
-0x2e15,0x2e19,0x2c41,0x2e1d,0x2e21,0x2e25,0x2e29,0x2e2d,0x2e31,0x2e35,0x2e39,0x2e3d,0x2e41,0x2e45,0x2e49,0x2e4d,
-0x2e51,0x2e55,0x2e59,0x2e5d,0x2e61,0x2e65,0x2e69,0x2e6d,0x2e71,0x2e75,0x2e79,0x2e7d,0x2e81,0x2e85,0x2e89,0x2e8d,
-0x2e91,0x2e95,0x2e99,0x2e9d,0x2ea1,0x2ea5,0x2ea9,0x2ead,0x2eb1,0x2eb5,0x2eb9,0x2ebd,0x2ec1,0x2ec5,0x2ec9,0x2ecd,
-0x2ed1,0x2ed5,0x2ed9,0x2edd,0x2ee1,1,1,0x2ee5,1,0x2ee9,1,1,0x2eed,0x2ef1,0x2ef5,0x2ef9,
-0x2efd,0x2f01,0x2f05,0x2f09,0x2f0d,0x2f11,1,0x2f15,1,0x2f19,1,1,0x2f1d,0x2f21,1,1,
-1,0x2f25,0x2f29,0x2f2d,0x2f31,0x2f35,0x2f39,0x2f3d,0x2f41,0x2f45,0x2f49,0x2f4d,0x2f51,0x2f55,0x2f59,0x2f5d,
-0x2f61,0x2f65,0x2f69,0x2f6d,0x2f71,0x2f75,0x2f79,0x2f7d,0x2f81,0x2f85,0x2f89,0x2f8d,0x2f91,0x2f95,0x2f99,0x2f9d,
-0x2fa1,0x2fa5,0x2fa9,0x2fad,0x2fb1,0x2fb5,0x2fb9,0x2fbd,0x2fc1,0x2fc5,0x2fc9,0x2fcd,0x2fd1,0x2fd5,0x2d15,0x2fd9,
-0x2fdd,0x2fe1,0x2fe5,0x2fe9,0x2fed,0x2fed,0x2ff1,0x2ff5,0x2ff9,0x2ffd,0x3001,0x3005,0x3009,0x300d,0x2f1d,0x3011,
-0x3015,0x3019,0x301d,0x3021,0x3027,1,1,0x302b,0x302f,0x3033,0x3037,0x303b,0x303f,0x3043,0x3047,0x2f55,
-0x304b,0x304f,0x3053,0x2ee5,0x3057,0x305b,0x305f,0x3063,0x3067,0x306b,0x306f,0x3073,0x3077,0x307b,0x307f,0x3083,
-0x2f79,0x3087,0x2f7d,0x308b,0x308f,0x3093,0x3097,0x309b,0x2ee9,0x2b65,0x309f,0x30a3,0x30a7,0x2c7d,0x2dd9,0x30ab,
-0x30af,0x2f99,0x30b3,0x2f9d,0x30b7,0x30bb,0x30bf,0x2ef1,0x30c3,0x30c7,0x30cb,0x30cf,0x30d3,0x2ef5,0x30d7,0x30db,
-0x30df,0x30e3,0x30e7,0x30eb,0x2fd5,0x30ef,0x30f3,0x2d15,0x30f7,0x2fe5,0x30fb,0x30ff,0x3103,0x3107,0x310b,0x2ff9,
-0x310f,0x2f19,0x3113,0x2ffd,0x2c31,0x3117,0x3001,0x311b,0x3009,0x311f,0x3123,0x3127,0x312b,0x312f,0x3011,0x2f09,
-0x3133,0x3015,0x3137,0x3019,0x313b,0x2ae1,0x313f,0x3145,0x314b,0x3151,0x3155,0x3159,0x315d,0x3163,0x3169,0x316f,
-0x3173,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,0x3b97,1,0x2ad5,
+0x2ad9,0x2add,0x2ae1,0x2ae5,0x2ae9,0x2aed,0x2af1,0x2af1,0x2af5,0x2af9,0x2afd,0x2b01,0x2b05,0x2b09,0x2b0d,0x2b11,
+0x2b15,0x2b19,0x2b1d,0x2b21,0x2b25,0x2b29,0x2b2d,0x2b31,0x2b35,0x2b39,0x2b3d,0x2b41,0x2b45,0x2b49,0x2b4d,0x2b51,
+0x2b55,0x2b59,0x2b5d,0x2b61,0x2b65,0x2b69,0x2b6d,0x2b71,0x2b75,0x2b79,0x2b7d,0x2b81,0x2b85,0x2b89,0x2b8d,0x2b91,
+0x2b95,0x2b99,0x2b9d,0x2ba1,0x2ba5,0x2ba9,0x2bad,0x2bb1,0x2bb5,0x2bb9,0x2bbd,0x2bc1,0x2bc5,0x2bc9,0x2bcd,0x2bd1,
+0x2bd5,0x2bd9,0x2bdd,0x2be1,0x2be5,0x2be9,0x2bed,0x2bf1,0x2bf5,0x2bf9,0x2bfd,0x2c01,0x2c05,0x2c09,0x2c0d,0x2c11,
+0x2c15,0x2c19,0x2c1d,0x2c21,0x2c25,0x2c29,0x2c2d,0x2c31,0x2c35,0x2c39,0x2c3d,0x2b21,0x2c41,0x2c45,0x2c49,0x2c4d,
+0x2c51,0x2c55,0x2c59,0x2c5d,0x2c61,0x2c65,0x2c69,0x2c6d,0x2c71,0x2c75,0x2c79,0x2c7d,0x2c81,0x2c85,0x2c89,0x2c8d,
+0x2c91,0x2c95,0x2c99,0x2c9d,0x2ca1,0x2ca5,0x2ca9,0x2cad,0x2cb1,0x2cb5,0x2cb9,0x2cbd,0x2cc1,0x2cc5,0x2cc9,0x2ccd,
+0x2cd1,0x2cd5,0x2cd9,0x2cdd,0x2ce1,0x2ce5,0x2ce9,0x2ced,0x2cf1,0x2cf5,0x2cf9,0x2cfd,0x2d01,0x2d05,0x2d09,0x2d0d,
+0x2d11,0x2d15,0x2d19,0x2d1d,0x2d21,0x2d25,0x2d29,0x2d2d,0x2d31,0x2d35,0x2d39,0x2d3d,0x2d41,0x2d45,0x2d49,0x2d4d,
+0x2c89,0x2d51,0x2d55,0x2d59,0x2d5d,0x2d61,0x2d65,0x2d69,0x2d6d,0x2c49,0x2d71,0x2d75,0x2d79,0x2d7d,0x2d81,0x2d85,
+0x2d89,0x2d8d,0x2d91,0x2d95,0x2d99,0x2d9d,0x2da1,0x2da5,0x2da9,0x2dad,0x2db1,0x2db5,0x2db9,0x2dbd,0x2b21,0x2dc1,
+0x2dc5,0x2dc9,0x2dcd,0x2dd1,0x2dd5,0x2dd9,0x2ddd,0x2de1,0x2de5,0x2de9,0x2ded,0x2df1,0x2df5,0x2df9,0x2dfd,0x2e01,
+0x2e05,0x2e09,0x2e0d,0x2e11,0x2e15,0x2e19,0x2e1d,0x2e21,0x2e25,0x2e29,0x2c51,0x2e2d,0x2e31,0x2e35,0x2e39,0x2e3d,
+0x2e41,0x2e45,0x2e49,0x2e4d,0x2e51,0x2e55,0x2e59,0x2e5d,0x2e61,0x2e65,0x2e69,0x2e6d,0x2e71,0x2e75,0x2e79,0x2e7d,
+0x2e81,0x2e85,0x2e89,0x2e8d,0x2e91,0x2e95,0x2e99,0x2e9d,0x2ea1,0x2ea5,0x2ea9,0x2ead,0x2eb1,0x2eb5,0x2eb9,0x2ebd,
+0x2ec1,0x2ec5,0x2ec9,0x2ecd,0x2ed1,0x2ed5,0x2ed9,0x2edd,0x2ee1,0x2ee5,0x2ee9,0x2eed,0x2ef1,1,1,0x2ef5,
+1,0x2ef9,1,1,0x2efd,0x2f01,0x2f05,0x2f09,0x2f0d,0x2f11,0x2f15,0x2f19,0x2f1d,0x2f21,1,0x2f25,
+1,0x2f29,1,1,0x2f2d,0x2f31,1,1,1,0x2f35,0x2f39,0x2f3d,0x2f41,0x2f45,0x2f49,0x2f4d,
+0x2f51,0x2f55,0x2f59,0x2f5d,0x2f61,0x2f65,0x2f69,0x2f6d,0x2f71,0x2f75,0x2f79,0x2f7d,0x2f81,0x2f85,0x2f89,0x2f8d,
+0x2f91,0x2f95,0x2f99,0x2f9d,0x2fa1,0x2fa5,0x2fa9,0x2fad,0x2fb1,0x2fb5,0x2fb9,0x2fbd,0x2fc1,0x2fc5,0x2fc9,0x2fcd,
+0x2fd1,0x2fd5,0x2fd9,0x2fdd,0x2fe1,0x2fe5,0x2d25,0x2fe9,0x2fed,0x2ff1,0x2ff5,0x2ff9,0x2ffd,0x2ffd,0x3001,0x3005,
+0x3009,0x300d,0x3011,0x3015,0x3019,0x301d,0x2f2d,0x3021,0x3025,0x3029,0x302d,0x3031,0x3037,1,1,0x303b,
+0x303f,0x3043,0x3047,0x304b,0x304f,0x3053,0x3057,0x2f65,0x305b,0x305f,0x3063,0x2ef5,0x3067,0x306b,0x306f,0x3073,
+0x3077,0x307b,0x307f,0x3083,0x3087,0x308b,0x308f,0x3093,0x2f89,0x3097,0x2f8d,0x309b,0x309f,0x30a3,0x30a7,0x30ab,
+0x2ef9,0x2b75,0x30af,0x30b3,0x30b7,0x2c8d,0x2de9,0x30bb,0x30bf,0x2fa9,0x30c3,0x2fad,0x30c7,0x30cb,0x30cf,0x2f01,
+0x30d3,0x30d7,0x30db,0x30df,0x30e3,0x2f05,0x30e7,0x30eb,0x30ef,0x30f3,0x30f7,0x30fb,0x2fe5,0x30ff,0x3103,0x2d25,
+0x3107,0x2ff5,0x310b,0x310f,0x3113,0x3117,0x311b,0x3009,0x311f,0x2f29,0x3123,0x300d,0x2c41,0x3127,0x3011,0x312b,
+0x3019,0x312f,0x3133,0x3137,0x313b,0x313f,0x3021,0x2f19,0x3143,0x3025,0x3147,0x3029,0x314b,0x2af1,0x314f,0x3155,
+0x315b,0x3161,0x3165,0x3169,0x316d,0x3173,0x3179,0x317f,0x3183,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0x3176,0xfe34,0x317c,1,1,1,1,1,1,
-1,1,1,1,0x3182,0x3188,0x3190,0x319a,0x31a2,0x31a8,0x31ae,0x31b4,0x31ba,0x31c0,0x31c6,0x31cc,
-0x31d2,1,0x31d8,0x31de,0x31e4,0x31ea,0x31f0,1,0x31f6,1,0x31fc,0x3202,1,0x3208,0x320e,1,
-0x3214,0x321a,0x3220,0x3226,0x322c,0x3232,0x3238,0x323e,0x3244,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3186,
+0xfe34,0x318c,1,1,1,1,1,1,1,1,1,1,0x3192,0x3198,0x31a0,0x31aa,
+0x31b2,0x31b8,0x31be,0x31c4,0x31ca,0x31d0,0x31d6,0x31dc,0x31e2,1,0x31e8,0x31ee,0x31f4,0x31fa,0x3200,1,
+0x3206,1,0x320c,0x3212,1,0x3218,0x321e,1,0x3224,0x322a,0x3230,0x3236,0x323c,0x3242,0x3248,0x324e,
+0x3254,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0xffb8,1,0xffcc,1,1,1,
-1,1,1,1,1,0xffcc,0xfe02,0xffb8,1,1,1,1,0xfe12,1,1,1,
-1,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,0xffb8,0xffb8,0xffcc,
-0xffcc,0xffcc,0xffb8,0xffcc,0xffb8,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,
-0xa94,0x2959,0xa9a,0x2963,1,1,1,1,1,0xaa0,1,1,1,1,1,0x296d,
-1,1,1,1,1,1,1,1,1,0xfe12,0xfc0e,1,1,1,1,1,
-1,1,0xfc00,1,1,1,1,1,1,0x2977,0x2981,1,0xaa6,0xaac,0xfe12,0xfe12,
-1,1,1,1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,
-1,1,1,1,1,0xfe0e,1,1,1,1,1,0xfe12,0xfe0e,1,1,1,
-1,1,1,1,1,1,0xfe0e,0xfe12,1,1,1,1,1,1,1,1,
-1,1,1,0xfe0e,0xfe0e,1,0xfc00,1,1,1,1,1,1,1,0xab2,1,
-1,1,0x298b,0x2995,0xfe12,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,1,1,1,0xfe12,1,1,1,0xfe0e,1,1,1,1,1,1,
-1,1,1,0xfc00,1,1,1,1,1,1,1,1,0xabe,0xfc00,0x299f,0x29a9,
-0xfc00,0x29b3,1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,1,
-1,1,0xad0,0xad6,0x29bd,0x29c7,1,1,1,0xfe12,0xfe0e,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0xfe12,0xfe0e,1,1,1,1,
-1,1,1,1,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0xfe02,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,0x324a,0x3254,0x3268,0x3280,0x3298,0x32b0,0x32c8,0xffb0,0xffb0,0xfe02,
-0xfe02,0xfe02,1,1,1,0xffc4,0xffb0,0xffb0,0xffb0,1,1,1,1,1,1,1,
-1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,1,
-1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,
-1,1,1,1,1,1,1,1,0x32d6,0x32e0,0x32f4,0x330c,0x3324,0x333c,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,
-0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,
-0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,
-1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,1,1,1,1,
-1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e,1,1,1,1,1,0x334b,
-0x334f,0x3353,0x3357,0x335d,0x2f3d,0x3361,0x3365,0x3369,0x336d,0x2f41,0x3371,0x3375,0x3379,0x2f45,0x337f,0x3383,
-0x3387,0x338b,0x3391,0x3395,0x3399,0x339d,0x33a3,0x33a7,0x33ab,0x33af,0x302f,0x33b3,0x33b9,0x33bd,0x33c1,0x33c5,
-0x33c9,0x33cd,0x33d1,0x33d5,0x3043,0x2f49,0x2f4d,0x3047,0x33d9,0x33dd,0x2c49,0x33e1,0x2f51,0x33e5,0x33e9,0x33ed,
-0x33f1,0x33f1,0x33f1,0x33f5,0x33fb,0x33ff,0x3403,0x3407,0x340d,0x3411,0x3415,0x3419,0x341d,0x3421,0x3425,0x3429,
-0x342d,0x3431,0x3435,0x3439,0x343d,0x343d,0x304f,0x3441,0x3445,0x3449,0x344d,0x2f59,0x3451,0x3455,0x3459,0x2ead,
-0x345d,0x3461,0x3465,0x3469,0x346d,0x3471,0x3475,0x3479,0x347d,0x3483,0x3487,0x348b,0x348f,0x3493,0x3497,0x349b,
-0x34a1,0x34a7,0x34ab,0x34af,0x34b3,0x34b7,0x34bb,0x34bf,0x34c3,0x34c7,0x34c7,0x34cb,0x34d1,0x34d5,0x2c39,0x34d9,
-0x34dd,0x34e3,0x34e7,0x34eb,0x34ef,0x34f3,0x34f7,0x2f6d,0x34fb,0x34ff,0x3503,0x3509,0x350d,0x3513,0x3517,0x351b,
-0x351f,0x3523,0x3527,0x352b,0x352f,0x3533,0x3537,0x353b,0x353f,0x3545,0x3549,0x354d,0x3551,0x2b61,0x3555,0x355b,
-0x355f,0x355f,0x3565,0x3569,0x3569,0x356d,0x3571,0x3577,0x357d,0x3581,0x3585,0x3589,0x358d,0x3591,0x3595,0x3599,
-0x359d,0x35a1,0x2f71,0x35a5,0x35ab,0x35af,0x35b3,0x307f,0x35b3,0x35b7,0x2f79,0x35bb,0x35bf,0x35c3,0x35c7,0x2f7d,
-0x2af5,0x35cb,0x35cf,0x35d3,0x35d7,0x35db,0x35df,0x35e3,0x35e9,0x35ed,0x35f1,0x35f5,0x35f9,0x35fd,0x3603,0x3607,
-0x360b,0x360f,0x3613,0x3617,0x361b,0x361f,0x3623,0x2f81,0x3627,0x362b,0x3631,0x3635,0x3639,0x363d,0x2f89,0x3641,
-0x3645,0x3649,0x364d,0x3651,0x3655,0x3659,0x365d,0x2b65,0x309f,0x3661,0x3665,0x3669,0x366d,0x3673,0x3677,0x367b,
-0x367f,0x2f8d,0x3683,0x3689,0x368d,0x3691,0x3151,0x3695,0x3699,0x369d,0x36a1,0x36a5,0x36ab,0x36af,0x36b3,0x36b7,
-0x36bd,0x36c1,0x36c5,0x36c9,0x2c7d,0x36cd,0x36d1,0x36d7,0x36dd,0x36e3,0x36e7,0x36ed,0x36f1,0x36f5,0x36f9,0x36fd,
-0x2f91,0x2dd9,0x3701,0x3705,0x3709,0x370d,0x3713,0x3717,0x371b,0x371f,0x30af,0x3723,0x3727,0x372d,0x3731,0x3735,
-0x373b,0x3741,0x3745,0x30b3,0x3749,0x374d,0x3751,0x3755,0x3759,0x375d,0x3761,0x3767,0x376b,0x3771,0x3775,0x377b,
-0x30bb,0x377f,0x3783,0x3789,0x378d,0x3791,0x3797,0x379d,0x37a1,0x37a5,0x37a9,0x37ad,0x37ad,0x37b1,0x37b5,0x30c3,
-0x37b9,0x37bd,0x37c1,0x37c5,0x37c9,0x37cf,0x37d3,0x2c45,0x37d9,0x37df,0x37e3,0x37e9,0x37ef,0x37f5,0x37f9,0x30db,
-0x37fd,0x3803,0x3809,0x380f,0x3815,0x3819,0x3819,0x30df,0x3159,0x381d,0x3821,0x3825,0x3829,0x382f,0x2bad,0x30e7,
-0x3833,0x3837,0x2fbd,0x383d,0x3843,0x2f05,0x3849,0x384d,0x2fcd,0x3851,0x3855,0x3859,0x385f,0x385f,0x3865,0x3869,
-0x386d,0x3873,0x3877,0x387b,0x387f,0x3885,0x3889,0x388d,0x3891,0x3895,0x3899,0x389f,0x38a3,0x38a7,0x38ab,0x38af,
-0x38b3,0x38b7,0x38bd,0x38c3,0x38c7,0x38cd,0x38d1,0x38d7,0x38db,0x2fe5,0x38df,0x38e5,0x38eb,0x38ef,0x38f5,0x38f9,
-0x38ff,0x3903,0x3907,0x390b,0x390f,0x3913,0x3917,0x391d,0x3923,0x3929,0x3565,0x392f,0x3933,0x3937,0x393b,0x393f,
-0x3943,0x3947,0x394b,0x394f,0x3953,0x3957,0x395b,0x2c8d,0x3961,0x3965,0x3969,0x396d,0x3971,0x3975,0x2ff1,0x3979,
-0x397d,0x3981,0x3985,0x3989,0x398f,0x3995,0x399b,0x399f,0x39a3,0x39a7,0x39ab,0x39b1,0x39b5,0x39bb,0x39bf,0x39c3,
-0x39c9,0x39cf,0x39d3,0x2b99,0x39d7,0x39db,0x39df,0x39e3,0x39e7,0x39eb,0x3103,0x39ef,0x39f3,0x39f7,0x39fb,0x39ff,
-0x3a03,0x3a07,0x3a0b,0x3a0f,0x3a13,0x3a19,0x3a1d,0x3a21,0x3a25,0x3a29,0x3a2d,0x3a33,0x3a39,0x3a3d,0x3a41,0x3117,
-0x311b,0x3a45,0x3a49,0x3a4f,0x3a53,0x3a57,0x3a5b,0x3a5f,0x3a65,0x3a6b,0x3a6f,0x3a73,0x3a77,0x3a7d,0x311f,0x3a81,
-0x3a87,0x3a8d,0x3a91,0x3a95,0x3a99,0x3a9f,0x3aa3,0x3aa7,0x3aab,0x3aaf,0x3ab3,0x3ab7,0x3abb,0x3ac1,0x3ac5,0x3ac9,
-0x3acd,0x3ad3,0x3ad7,0x3adb,0x3adf,0x3ae3,0x3ae9,0x3aef,0x3af3,0x3af7,0x3afb,0x3b01,0x3b05,0x3137,0x3137,0x3b0b,
-0x3b0f,0x3b15,0x3b19,0x3b1d,0x3b21,0x3b25,0x3b29,0x3b2d,0x3b31,0x313b,0x3b37,0x3b3b,0x3b3f,0x3b43,0x3b47,0x3b4b,
-0x3b51,0x3b55,0x3b5b,0x3b61,0x3b67,0x3b6b,0x3b6f,0x3b73,0x3b77,0x3b7b,0x3b7f,0x3b83,0x3b87,1,1,1
+1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,
+0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0xffb8,1,0xffcc,1,1,1,1,1,1,1,1,0xffcc,0xfe02,0xffb8,
+1,1,1,1,0xfe12,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,
+1,1,1,1,1,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffb8,0xffb8,0xffb8,1,
+1,1,1,1,1,1,1,1,0xa94,0x295f,0xa9a,0x2969,1,1,1,1,
+1,0xaa0,1,1,1,1,1,0x2973,1,1,1,1,1,1,1,1,
+1,0xfe12,0xfc0e,1,1,1,1,1,1,1,0xfc00,1,1,1,1,1,
+1,0x297d,0x2987,1,0xaa6,0xaac,0xfe12,0xfe12,1,1,1,1,1,1,1,1,
+1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,0xfe0e,1,1,
+1,1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,0xfe0e,0xfe12,
+1,1,1,1,1,1,1,1,1,1,1,0xfe0e,0xfe0e,1,0xfc00,1,
+1,1,1,1,1,1,0xab2,1,1,1,0x2991,0x299b,0xfe12,1,1,1,
+1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,0xfe12,1,1,
+1,0xfe0e,1,1,1,1,1,1,1,1,1,0xfc00,1,1,1,1,
+1,1,1,1,0xabe,0xfc00,0x29a5,0x29af,0xfc00,0x29b9,1,1,0xfe12,0xfe0e,1,1,
+1,1,1,1,1,1,1,1,1,1,0xad0,0xad6,0x29c3,0x29cd,1,1,
+1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,0xfc00,1,1,1,
+1,0xadc,1,1,0x29d7,1,1,1,1,0xfe12,0xfe12,1,0xfe02,0xfe02,0xfe02,0xfe02,
+0xfe02,1,1,1,1,1,1,1,1,1,1,1,0xfe0c,0xfe0c,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,0xfe02,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,0x325a,0x3264,0x3278,0x3290,0x32a8,
+0x32c0,0x32d8,0xffb0,0xffb0,0xfe02,0xfe02,0xfe02,1,1,1,0xffc4,0xffb0,0xffb0,0xffb0,1,1,
+1,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,0xffcc,0xffcc,0xffcc,
+0xffcc,0xffcc,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,
+0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x32e6,0x32f0,0x3304,
+0x331c,0x3334,0x334c,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,
+0xffcc,0xffcc,0xffcc,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1,0xffcc,0xffcc,
+0xffcc,0xffcc,0xffcc,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,
+1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e,1,
+1,1,1,1,0x335b,0x335f,0x3363,0x3367,0x336d,0x2f4d,0x3371,0x3375,0x3379,0x337d,0x2f51,0x3381,
+0x3385,0x3389,0x2f55,0x338f,0x3393,0x3397,0x339b,0x33a1,0x33a5,0x33a9,0x33ad,0x33b3,0x33b7,0x33bb,0x33bf,0x303f,
+0x33c3,0x33c9,0x33cd,0x33d1,0x33d5,0x33d9,0x33dd,0x33e1,0x33e5,0x3053,0x2f59,0x2f5d,0x3057,0x33e9,0x33ed,0x2c59,
+0x33f1,0x2f61,0x33f5,0x33f9,0x33fd,0x3401,0x3401,0x3401,0x3405,0x340b,0x340f,0x3413,0x3417,0x341d,0x3421,0x3425,
+0x3429,0x342d,0x3431,0x3435,0x3439,0x343d,0x3441,0x3445,0x3449,0x344d,0x344d,0x305f,0x3451,0x3455,0x3459,0x345d,
+0x2f69,0x3461,0x3465,0x3469,0x2ebd,0x346d,0x3471,0x3475,0x3479,0x347d,0x3481,0x3485,0x3489,0x348d,0x3493,0x3497,
+0x349b,0x349f,0x34a3,0x34a7,0x34ab,0x34b1,0x34b7,0x34bb,0x34bf,0x34c3,0x34c7,0x34cb,0x34cf,0x34d3,0x34d7,0x34d7,
+0x34db,0x34e1,0x34e5,0x2c49,0x34e9,0x34ed,0x34f3,0x34f7,0x34fb,0x34ff,0x3503,0x3507,0x2f7d,0x350b,0x350f,0x3513,
+0x3519,0x351d,0x3523,0x3527,0x352b,0x352f,0x3533,0x3537,0x353b,0x353f,0x3543,0x3547,0x354b,0x354f,0x3555,0x3559,
+0x355d,0x3561,0x2b71,0x3565,0x356b,0x356f,0x356f,0x3575,0x3579,0x3579,0x357d,0x3581,0x3587,0x358d,0x3591,0x3595,
+0x3599,0x359d,0x35a1,0x35a5,0x35a9,0x35ad,0x35b1,0x2f81,0x35b5,0x35bb,0x35bf,0x35c3,0x308f,0x35c3,0x35c7,0x2f89,
+0x35cb,0x35cf,0x35d3,0x35d7,0x2f8d,0x2b05,0x35db,0x35df,0x35e3,0x35e7,0x35eb,0x35ef,0x35f3,0x35f9,0x35fd,0x3601,
+0x3605,0x3609,0x360d,0x3613,0x3617,0x361b,0x361f,0x3623,0x3627,0x362b,0x362f,0x3633,0x2f91,0x3637,0x363b,0x3641,
+0x3645,0x3649,0x364d,0x2f99,0x3651,0x3655,0x3659,0x365d,0x3661,0x3665,0x3669,0x366d,0x2b75,0x30af,0x3671,0x3675,
+0x3679,0x367d,0x3683,0x3687,0x368b,0x368f,0x2f9d,0x3693,0x3699,0x369d,0x36a1,0x3161,0x36a5,0x36a9,0x36ad,0x36b1,
+0x36b5,0x36bb,0x36bf,0x36c3,0x36c7,0x36cd,0x36d1,0x36d5,0x36d9,0x2c8d,0x36dd,0x36e1,0x36e7,0x36ed,0x36f3,0x36f7,
+0x36fd,0x3701,0x3705,0x3709,0x370d,0x2fa1,0x2de9,0x3711,0x3715,0x3719,0x371d,0x3723,0x3727,0x372b,0x372f,0x30bf,
+0x3733,0x3737,0x373d,0x3741,0x3745,0x374b,0x3751,0x3755,0x30c3,0x3759,0x375d,0x3761,0x3765,0x3769,0x376d,0x3771,
+0x3777,0x377b,0x3781,0x3785,0x378b,0x30cb,0x378f,0x3793,0x3799,0x379d,0x37a1,0x37a7,0x37ad,0x37b1,0x37b5,0x37b9,
+0x37bd,0x37bd,0x37c1,0x37c5,0x30d3,0x37c9,0x37cd,0x37d1,0x37d5,0x37d9,0x37df,0x37e3,0x2c55,0x37e9,0x37ef,0x37f3,
+0x37f9,0x37ff,0x3805,0x3809,0x30eb,0x380d,0x3813,0x3819,0x381f,0x3825,0x3829,0x3829,0x30ef,0x3169,0x382d,0x3831,
+0x3835,0x3839,0x383f,0x2bbd,0x30f7,0x3843,0x3847,0x2fcd,0x384d,0x3853,0x2f15,0x3859,0x385d,0x2fdd,0x3861,0x3865,
+0x3869,0x386f,0x386f,0x3875,0x3879,0x387d,0x3883,0x3887,0x388b,0x388f,0x3895,0x3899,0x389d,0x38a1,0x38a5,0x38a9,
+0x38af,0x38b3,0x38b7,0x38bb,0x38bf,0x38c3,0x38c7,0x38cd,0x38d3,0x38d7,0x38dd,0x38e1,0x38e7,0x38eb,0x2ff5,0x38ef,
+0x38f5,0x38fb,0x38ff,0x3905,0x3909,0x390f,0x3913,0x3917,0x391b,0x391f,0x3923,0x3927,0x392d,0x3933,0x3939,0x3575,
+0x393f,0x3943,0x3947,0x394b,0x394f,0x3953,0x3957,0x395b,0x395f,0x3963,0x3967,0x396b,0x2c9d,0x3971,0x3975,0x3979,
+0x397d,0x3981,0x3985,0x3001,0x3989,0x398d,0x3991,0x3995,0x3999,0x399f,0x39a5,0x39ab,0x39af,0x39b3,0x39b7,0x39bb,
+0x39c1,0x39c5,0x39cb,0x39cf,0x39d3,0x39d9,0x39df,0x39e3,0x2ba9,0x39e7,0x39eb,0x39ef,0x39f3,0x39f7,0x39fb,0x3113,
+0x39ff,0x3a03,0x3a07,0x3a0b,0x3a0f,0x3a13,0x3a17,0x3a1b,0x3a1f,0x3a23,0x3a29,0x3a2d,0x3a31,0x3a35,0x3a39,0x3a3d,
+0x3a43,0x3a49,0x3a4d,0x3a51,0x3127,0x312b,0x3a55,0x3a59,0x3a5f,0x3a63,0x3a67,0x3a6b,0x3a6f,0x3a75,0x3a7b,0x3a7f,
+0x3a83,0x3a87,0x3a8d,0x312f,0x3a91,0x3a97,0x3a9d,0x3aa1,0x3aa5,0x3aa9,0x3aaf,0x3ab3,0x3ab7,0x3abb,0x3abf,0x3ac3,
+0x3ac7,0x3acb,0x3ad1,0x3ad5,0x3ad9,0x3add,0x3ae3,0x3ae7,0x3aeb,0x3aef,0x3af3,0x3af9,0x3aff,0x3b03,0x3b07,0x3b0b,
+0x3b11,0x3b15,0x3147,0x3147,0x3b1b,0x3b1f,0x3b25,0x3b29,0x3b2d,0x3b31,0x3b35,0x3b39,0x3b3d,0x3b41,0x314b,0x3b47,
+0x3b4b,0x3b4f,0x3b53,0x3b57,0x3b5b,0x3b61,0x3b65,0x3b6b,0x3b71,0x3b77,0x3b7b,0x3b7f,0x3b83,0x3b87,0x3b8b,0x3b8f,
+0x3b93,0x3b97,1,1
};
static const UCPTrie norm2_nfc_data_trie={
norm2_nfc_data_trieIndex,
{ norm2_nfc_data_trieData },
- 1712, 7824,
+ 1746, 7892,
0x2fc00, 0x30,
0, 0,
0, 0,
@@ -632,7 +640,7 @@
0x1,
};
-static const uint16_t norm2_nfc_data_extraData[7724]={
+static const uint16_t norm2_nfc_data_extraData[7732]={
0xffff,0xffff,0x8670,0x44dc,0x8670,0x44c0,0x8670,0x44de,0x600,0x180,0x602,0x182,0x604,0x185,0x606,0x186,
0x608,0x200,0x60c,0x205,0x60e,0x44d,0x610,0x189,0x612,0x3d44,0x614,0x18b,0x618,0x39a,0x61e,0x400,
0x622,0x404,0x646,0x3d41,0x64a,0x3c00,0x8650,0x208,0x60e,0x3c04,0x646,0x3c08,0x8662,0x3c0c,0x602,0x20c,
@@ -719,408 +727,409 @@
0x6132,0x61a6,0xe134,0x61a8,0x6132,0x61ac,0xe134,0x61ae,0x6132,0x61b2,0xe134,0x61b4,0x6132,0x61b8,0xe134,0x61ba,
0xe132,0x61ee,0xe132,0x61f0,0xe132,0x61f2,0xe132,0x61f4,0xe132,0x61fc,0xb489,0x2e82,0x2134,0xb489,0x2e82,0x2138,
0xb489,0x2e82,0x2156,0xb489,0x49c2,0x225c,0xb489,0x49c2,0x225e,0x3489,0xcf82,0x2696,0xb489,0xd5c2,0x2698,0x348b,
-0x2c02,0x2978,0x348b,0x2e82,0x2976,0xb48b,0x2f42,0x297c,0xb48b,0x6bc2,0x2b74,0xb48b,0x6bc2,0x2b76,2,0xe602,
-0x41,0x302,0x600,0x3d4c,0x602,0x3d48,0x606,0x3d54,0x8612,0x3d50,0xe602,0x41,0x308,0x8608,0x3bc,0xe602,
-0x41,0x30a,0x8602,0x3f4,0xca02,0x43,0x327,0x8602,0x3c10,0xe602,0x45,0x302,0x600,0x3d80,0x602,0x3d7c,
-0x606,0x3d88,0x8612,0x3d84,0xe602,0x49,0x308,0x8602,0x3c5c,0xe602,0x4f,0x302,0x600,0x3da4,0x602,0x3da0,
-0x606,0x3dac,0x8612,0x3da8,0xe602,0x4f,0x303,0x602,0x3c98,0x608,0x458,0x8610,0x3c9c,0xe602,0x4f,0x308,
-0x8608,0x454,0xe602,0x55,0x308,0x600,0x3b6,0x602,0x3ae,0x608,0x3aa,0x8618,0x3b2,0xe602,0x61,0x302,
-0x600,0x3d4e,0x602,0x3d4a,0x606,0x3d56,0x8612,0x3d52,0xe602,0x61,0x308,0x8608,0x3be,0xe602,0x61,0x30a,
-0x8602,0x3f6,0xca02,0x63,0x327,0x8602,0x3c12,0xe602,0x65,0x302,0x600,0x3d82,0x602,0x3d7e,0x606,0x3d8a,
-0x8612,0x3d86,0xe602,0x69,0x308,0x8602,0x3c5e,0xe602,0x6f,0x302,0x600,0x3da6,0x602,0x3da2,0x606,0x3dae,
-0x8612,0x3daa,0xe602,0x6f,0x303,0x602,0x3c9a,0x608,0x45a,0x8610,0x3c9e,0xe602,0x6f,0x308,0x8608,0x456,
-0xe602,0x75,0x308,0x600,0x3b8,0x602,0x3b0,0x608,0x3ac,0x8618,0x3b4,0xe602,0x41,0x306,0x600,0x3d60,
-0x602,0x3d5c,0x606,0x3d68,0x8612,0x3d64,0xe602,0x61,0x306,0x600,0x3d62,0x602,0x3d5e,0x606,0x3d6a,0x8612,
-0x3d66,0xe602,0x45,0x304,0x600,0x3c28,0x8602,0x3c2c,0xe602,0x65,0x304,0x600,0x3c2a,0x8602,0x3c2e,0xe602,
-0x4f,0x304,0x600,0x3ca0,0x8602,0x3ca4,0xe602,0x6f,0x304,0x600,0x3ca2,0x8602,0x3ca6,0xe602,0x53,0x301,
-0x860e,0x3cc8,0xe602,0x73,0x301,0x860e,0x3cca,0xe602,0x53,0x30c,0x860e,0x3ccc,0xe602,0x73,0x30c,0x860e,
-0x3cce,0xe602,0x55,0x303,0x8602,0x3cf0,0xe602,0x75,0x303,0x8602,0x3cf2,0xe602,0x55,0x304,0x8610,0x3cf4,
-0xe602,0x75,0x304,0x8610,0x3cf6,0xd802,0x4f,0x31b,0x600,0x3db8,0x602,0x3db4,0x606,0x3dc0,0x612,0x3dbc,
-0x8646,0x3dc4,0xd802,0x6f,0x31b,0x600,0x3dba,0x602,0x3db6,0x606,0x3dc2,0x612,0x3dbe,0x8646,0x3dc6,0xd802,
-0x55,0x31b,0x600,0x3dd4,0x602,0x3dd0,0x606,0x3ddc,0x612,0x3dd8,0x8646,0x3de0,0xd802,0x75,0x31b,0x600,
-0x3dd6,0x602,0x3dd2,0x606,0x3dde,0x612,0x3dda,0x8646,0x3de2,0xca02,0x4f,0x328,0x8608,0x3d8,0xca02,0x6f,
-0x328,0x8608,0x3da,0xe602,0x41,0x307,0x8608,0x3c0,0xe602,0x61,0x307,0x8608,0x3c2,0xca02,0x45,0x327,
-0x860c,0x3c38,0xca02,0x65,0x327,0x860c,0x3c3a,0xe602,0x4f,0x307,0x8608,0x460,0xe602,0x6f,0x307,0x8608,
-0x462,0xe602,0x3b1,0x301,0x868a,0x3f68,0xe602,0x3b7,0x301,0x868a,0x3f88,0xe602,0x3b9,0x308,0x600,0x3fa4,
-0x602,0x720,0x8684,0x3fae,0xe602,0x3c5,0x308,0x600,0x3fc4,0x602,0x760,0x8684,0x3fce,0xe602,0x3c9,0x301,
-0x868a,0x3fe8,2,0xcc6,0xcc2,0x99aa,0x1996,2,0xdd9,0xdcf,0x9b94,0x1bba,0xdc02,0x4c,0x323,0x8608,
-0x3c70,0xdc02,0x6c,0x323,0x8608,0x3c72,0xdc02,0x52,0x323,0x8608,0x3cb8,0xdc02,0x72,0x323,0x8608,0x3cba,
-0xdc02,0x53,0x323,0x860e,0x3cd0,0xdc02,0x73,0x323,0x860e,0x3cd2,0xdc02,0x41,0x323,0x604,0x3d58,0x860c,
-0x3d6c,0xdc02,0x61,0x323,0x604,0x3d5a,0x860c,0x3d6e,0xdc02,0x45,0x323,0x8604,0x3d8c,0xdc02,0x65,0x323,
-0x8604,0x3d8e,0xdc02,0x4f,0x323,0x8604,0x3db0,0xdc02,0x6f,0x323,0x8604,0x3db2,0xe602,0x3b1,0x313,0x600,
-0x3e05,0x602,0x3e09,0x684,0x3e0d,0x868a,0x3f00,0xe602,0x3b1,0x314,0x600,0x3e07,0x602,0x3e0b,0x684,0x3e0f,
-0x868a,0x3f02,0x1f00,0xe643,0x3b1,0x313,0x300,0x868a,0x3f04,0x1f01,0xe643,0x3b1,0x314,0x300,0x868a,0x3f06,
-0x1f00,0xe643,0x3b1,0x313,0x301,0x868a,0x3f08,0x1f01,0xe643,0x3b1,0x314,0x301,0x868a,0x3f0a,0x1f00,0xe643,
-0x3b1,0x313,0x342,0x868a,0x3f0c,0x1f01,0xe643,0x3b1,0x314,0x342,0x868a,0x3f0e,0xe602,0x391,0x313,0x600,
-0x3e15,0x602,0x3e19,0x684,0x3e1d,0x868a,0x3f10,0xe602,0x391,0x314,0x600,0x3e17,0x602,0x3e1b,0x684,0x3e1f,
-0x868a,0x3f12,0x1f08,0xe643,0x391,0x313,0x300,0x868a,0x3f14,0x1f09,0xe643,0x391,0x314,0x300,0x868a,0x3f16,
-0x1f08,0xe643,0x391,0x313,0x301,0x868a,0x3f18,0x1f09,0xe643,0x391,0x314,0x301,0x868a,0x3f1a,0x1f08,0xe643,
-0x391,0x313,0x342,0x868a,0x3f1c,0x1f09,0xe643,0x391,0x314,0x342,0x868a,0x3f1e,0xe602,0x3b5,0x313,0x600,
-0x3e24,0x8602,0x3e28,0xe602,0x3b5,0x314,0x600,0x3e26,0x8602,0x3e2a,0xe602,0x395,0x313,0x600,0x3e34,0x8602,
-0x3e38,0xe602,0x395,0x314,0x600,0x3e36,0x8602,0x3e3a,0xe602,0x3b7,0x313,0x600,0x3e45,0x602,0x3e49,0x684,
-0x3e4d,0x868a,0x3f20,0xe602,0x3b7,0x314,0x600,0x3e47,0x602,0x3e4b,0x684,0x3e4f,0x868a,0x3f22,0x1f20,0xe643,
-0x3b7,0x313,0x300,0x868a,0x3f24,0x1f21,0xe643,0x3b7,0x314,0x300,0x868a,0x3f26,0x1f20,0xe643,0x3b7,0x313,
-0x301,0x868a,0x3f28,0x1f21,0xe643,0x3b7,0x314,0x301,0x868a,0x3f2a,0x1f20,0xe643,0x3b7,0x313,0x342,0x868a,
-0x3f2c,0x1f21,0xe643,0x3b7,0x314,0x342,0x868a,0x3f2e,0xe602,0x397,0x313,0x600,0x3e55,0x602,0x3e59,0x684,
-0x3e5d,0x868a,0x3f30,0xe602,0x397,0x314,0x600,0x3e57,0x602,0x3e5b,0x684,0x3e5f,0x868a,0x3f32,0x1f28,0xe643,
-0x397,0x313,0x300,0x868a,0x3f34,0x1f29,0xe643,0x397,0x314,0x300,0x868a,0x3f36,0x1f28,0xe643,0x397,0x313,
-0x301,0x868a,0x3f38,0x1f29,0xe643,0x397,0x314,0x301,0x868a,0x3f3a,0x1f28,0xe643,0x397,0x313,0x342,0x868a,
-0x3f3c,0x1f29,0xe643,0x397,0x314,0x342,0x868a,0x3f3e,0xe602,0x3b9,0x313,0x600,0x3e64,0x602,0x3e68,0x8684,
-0x3e6c,0xe602,0x3b9,0x314,0x600,0x3e66,0x602,0x3e6a,0x8684,0x3e6e,0xe602,0x399,0x313,0x600,0x3e74,0x602,
-0x3e78,0x8684,0x3e7c,0xe602,0x399,0x314,0x600,0x3e76,0x602,0x3e7a,0x8684,0x3e7e,0xe602,0x3bf,0x313,0x600,
-0x3e84,0x8602,0x3e88,0xe602,0x3bf,0x314,0x600,0x3e86,0x8602,0x3e8a,0xe602,0x39f,0x313,0x600,0x3e94,0x8602,
-0x3e98,0xe602,0x39f,0x314,0x600,0x3e96,0x8602,0x3e9a,0xe602,0x3c5,0x313,0x600,0x3ea4,0x602,0x3ea8,0x8684,
-0x3eac,0xe602,0x3c5,0x314,0x600,0x3ea6,0x602,0x3eaa,0x8684,0x3eae,0xe602,0x3a5,0x314,0x600,0x3eb6,0x602,
-0x3eba,0x8684,0x3ebe,0xe602,0x3c9,0x313,0x600,0x3ec5,0x602,0x3ec9,0x684,0x3ecd,0x868a,0x3f40,0xe602,0x3c9,
-0x314,0x600,0x3ec7,0x602,0x3ecb,0x684,0x3ecf,0x868a,0x3f42,0x1f60,0xe643,0x3c9,0x313,0x300,0x868a,0x3f44,
-0x1f61,0xe643,0x3c9,0x314,0x300,0x868a,0x3f46,0x1f60,0xe643,0x3c9,0x313,0x301,0x868a,0x3f48,0x1f61,0xe643,
-0x3c9,0x314,0x301,0x868a,0x3f4a,0x1f60,0xe643,0x3c9,0x313,0x342,0x868a,0x3f4c,0x1f61,0xe643,0x3c9,0x314,
-0x342,0x868a,0x3f4e,0xe602,0x3a9,0x313,0x600,0x3ed5,0x602,0x3ed9,0x684,0x3edd,0x868a,0x3f50,0xe602,0x3a9,
-0x314,0x600,0x3ed7,0x602,0x3edb,0x684,0x3edf,0x868a,0x3f52,0x1f68,0xe643,0x3a9,0x313,0x300,0x868a,0x3f54,
-0x1f69,0xe643,0x3a9,0x314,0x300,0x868a,0x3f56,0x1f68,0xe643,0x3a9,0x313,0x301,0x868a,0x3f58,0x1f69,0xe643,
-0x3a9,0x314,0x301,0x868a,0x3f5a,0x1f68,0xe643,0x3a9,0x313,0x342,0x868a,0x3f5c,0x1f69,0xe643,0x3a9,0x314,
-0x342,0x868a,0x3f5e,0xe602,0x3b1,0x300,0x868a,0x3f64,0xe602,0x3b7,0x300,0x868a,0x3f84,0xe602,0x3c9,0x300,
-0x868a,0x3fe4,0xe602,0x3b1,0x342,0x868a,0x3f6e,0xe602,0x3b7,0x342,0x868a,0x3f8e,0xe602,0x3c9,0x342,0x868a,
-0x3fee,3,0xe602,0x41,0x300,0xe602,0x41,0x301,0xe602,0x41,0x303,0xe602,0x45,0x300,0xe602,0x45,
-0x301,0xe602,0x45,0x308,0xe602,0x49,0x300,0xe602,0x49,0x301,0xe602,0x49,0x302,0xe602,0x4e,0x303,
-0xe602,0x4f,0x300,0xe602,0x4f,0x301,0xe602,0x55,0x300,0xe602,0x55,0x301,0xe602,0x55,0x302,0xe602,
-0x59,0x301,0xe602,0x61,0x300,0xe602,0x61,0x301,0xe602,0x61,0x303,0xe602,0x65,0x300,0xe602,0x65,
-0x301,0xe602,0x65,0x308,0xe602,0x69,0x300,0xe602,0x69,0x301,0xe602,0x69,0x302,0xe602,0x6e,0x303,
-0xe602,0x6f,0x300,0xe602,0x6f,0x301,0xe602,0x75,0x300,0xe602,0x75,0x301,0xe602,0x75,0x302,0xe602,
-0x79,0x301,0xe602,0x79,0x308,0xe602,0x41,0x304,0xe602,0x61,0x304,0xca02,0x41,0x328,0xca02,0x61,
-0x328,0xe602,0x43,0x301,0xe602,0x63,0x301,0xe602,0x43,0x302,0xe602,0x63,0x302,0xe602,0x43,0x307,
-0xe602,0x63,0x307,0xe602,0x43,0x30c,0xe602,0x63,0x30c,0xe602,0x44,0x30c,0xe602,0x64,0x30c,0xe602,
-0x45,0x306,0xe602,0x65,0x306,0xe602,0x45,0x307,0xe602,0x65,0x307,0xca02,0x45,0x328,0xca02,0x65,
-0x328,0xe602,0x45,0x30c,0xe602,0x65,0x30c,0xe602,0x47,0x302,0xe602,0x67,0x302,0xe602,0x47,0x306,
-0xe602,0x67,0x306,0xe602,0x47,0x307,0xe602,0x67,0x307,0xca02,0x47,0x327,0xca02,0x67,0x327,0xe602,
-0x48,0x302,0xe602,0x68,0x302,0xe602,0x49,0x303,0xe602,0x69,0x303,0xe602,0x49,0x304,0xe602,0x69,
-0x304,0xe602,0x49,0x306,0xe602,0x69,0x306,0xca02,0x49,0x328,0xca02,0x69,0x328,0xe602,0x49,0x307,
-0xe602,0x4a,0x302,0xe602,0x6a,0x302,0xca02,0x4b,0x327,0xca02,0x6b,0x327,0xe602,0x4c,0x301,0xe602,
-0x6c,0x301,0xca02,0x4c,0x327,0xca02,0x6c,0x327,0xe602,0x4c,0x30c,0xe602,0x6c,0x30c,0xe602,0x4e,
-0x301,0xe602,0x6e,0x301,0xca02,0x4e,0x327,0xca02,0x6e,0x327,0xe602,0x4e,0x30c,0xe602,0x6e,0x30c,
-0xe602,0x4f,0x306,0xe602,0x6f,0x306,0xe602,0x4f,0x30b,0xe602,0x6f,0x30b,0xe602,0x52,0x301,0xe602,
-0x72,0x301,0xca02,0x52,0x327,0xca02,0x72,0x327,0xe602,0x52,0x30c,0xe602,0x72,0x30c,0xe602,0x53,
-0x302,0xe602,0x73,0x302,0xca02,0x53,0x327,0xca02,0x73,0x327,0xca02,0x54,0x327,0xca02,0x74,0x327,
-0xe602,0x54,0x30c,0xe602,0x74,0x30c,0xe602,0x55,0x306,0xe602,0x75,0x306,0xe602,0x55,0x30a,0xe602,
-0x75,0x30a,0xe602,0x55,0x30b,0xe602,0x75,0x30b,0xca02,0x55,0x328,0xca02,0x75,0x328,0xe602,0x57,
-0x302,0xe602,0x77,0x302,0xe602,0x59,0x302,0xe602,0x79,0x302,0xe602,0x59,0x308,0xe602,0x5a,0x301,
-0xe602,0x7a,0x301,0xe602,0x5a,0x307,0xe602,0x7a,0x307,0xe602,0x5a,0x30c,0xe602,0x7a,0x30c,0xe602,
-0x41,0x30c,0xe602,0x61,0x30c,0xe602,0x49,0x30c,0xe602,0x69,0x30c,0xe602,0x4f,0x30c,0xe602,0x6f,
-0x30c,0xe602,0x55,0x30c,0xe602,0x75,0x30c,0xdc,0xe643,0x55,0x308,0x304,0xfc,0xe643,0x75,0x308,
-0x304,0xdc,0xe643,0x55,0x308,0x301,0xfc,0xe643,0x75,0x308,0x301,0xdc,0xe643,0x55,0x308,0x30c,
-0xfc,0xe643,0x75,0x308,0x30c,0xdc,0xe643,0x55,0x308,0x300,0xfc,0xe643,0x75,0x308,0x300,0xc4,
-0xe643,0x41,0x308,0x304,0xe4,0xe643,0x61,0x308,0x304,0x226,0xe643,0x41,0x307,0x304,0x227,0xe643,
-0x61,0x307,0x304,0xe602,0xc6,0x304,0xe602,0xe6,0x304,0xe602,0x47,0x30c,0xe602,0x67,0x30c,0xe602,
-0x4b,0x30c,0xe602,0x6b,0x30c,0x1ea,0xe643,0x4f,0x328,0x304,0x1eb,0xe643,0x6f,0x328,0x304,0xe602,
-0x1b7,0x30c,0xe602,0x292,0x30c,0xe602,0x6a,0x30c,0xe602,0x47,0x301,0xe602,0x67,0x301,0xe602,0x4e,
-0x300,0xe602,0x6e,0x300,0xc5,0xe643,0x41,0x30a,0x301,0xe5,0xe643,0x61,0x30a,0x301,0xe602,0xc6,
-0x301,0xe602,0xe6,0x301,0xe602,0xd8,0x301,0xe602,0xf8,0x301,0xe602,0x41,0x30f,0xe602,0x61,0x30f,
-0xe602,0x41,0x311,0xe602,0x61,0x311,0xe602,0x45,0x30f,0xe602,0x65,0x30f,0xe602,0x45,0x311,0xe602,
-0x65,0x311,0xe602,0x49,0x30f,0xe602,0x69,0x30f,0xe602,0x49,0x311,0xe602,0x69,0x311,0xe602,0x4f,
-0x30f,0xe602,0x6f,0x30f,0xe602,0x4f,0x311,0xe602,0x6f,0x311,0xe602,0x52,0x30f,0xe602,0x72,0x30f,
-0xe602,0x52,0x311,0xe602,0x72,0x311,0xe602,0x55,0x30f,0xe602,0x75,0x30f,0xe602,0x55,0x311,0xe602,
-0x75,0x311,0xdc02,0x53,0x326,0xdc02,0x73,0x326,0xdc02,0x54,0x326,0xdc02,0x74,0x326,0xe602,0x48,
-0x30c,0xe602,0x68,0x30c,0xd6,0xe643,0x4f,0x308,0x304,0xf6,0xe643,0x6f,0x308,0x304,0xd5,0xe643,
-0x4f,0x303,0x304,0xf5,0xe643,0x6f,0x303,0x304,0x22e,0xe643,0x4f,0x307,0x304,0x22f,0xe643,0x6f,
-0x307,0x304,0xe602,0x59,0x304,0xe602,0x79,0x304,0xe602,0xa8,0x301,0xe602,0x391,0x301,0xe602,0x395,
-0x301,0xe602,0x397,0x301,0xe602,0x399,0x301,0xe602,0x39f,0x301,0xe602,0x3a5,0x301,0xe602,0x3a9,0x301,
-0x3ca,0xe643,0x3b9,0x308,0x301,0xe602,0x399,0x308,0xe602,0x3a5,0x308,0xe602,0x3b5,0x301,0xe602,0x3b9,
-0x301,0x3cb,0xe643,0x3c5,0x308,0x301,0xe602,0x3bf,0x301,0xe602,0x3c5,0x301,0xe602,0x3d2,0x301,0xe602,
-0x3d2,0x308,0xe602,0x415,0x300,0xe602,0x415,0x308,0xe602,0x413,0x301,0xe602,0x406,0x308,0xe602,0x41a,
-0x301,0xe602,0x418,0x300,0xe602,0x423,0x306,0xe602,0x418,0x306,0xe602,0x438,0x306,0xe602,0x435,0x300,
-0xe602,0x435,0x308,0xe602,0x433,0x301,0xe602,0x456,0x308,0xe602,0x43a,0x301,0xe602,0x438,0x300,0xe602,
-0x443,0x306,0xe602,0x474,0x30f,0xe602,0x475,0x30f,0xe602,0x416,0x306,0xe602,0x436,0x306,0xe602,0x410,
-0x306,0xe602,0x430,0x306,0xe602,0x410,0x308,0xe602,0x430,0x308,0xe602,0x415,0x306,0xe602,0x435,0x306,
-0xe602,0x4d8,0x308,0xe602,0x4d9,0x308,0xe602,0x416,0x308,0xe602,0x436,0x308,0xe602,0x417,0x308,0xe602,
-0x437,0x308,0xe602,0x418,0x304,0xe602,0x438,0x304,0xe602,0x418,0x308,0xe602,0x438,0x308,0xe602,0x41e,
-0x308,0xe602,0x43e,0x308,0xe602,0x4e8,0x308,0xe602,0x4e9,0x308,0xe602,0x42d,0x308,0xe602,0x44d,0x308,
-0xe602,0x423,0x304,0xe602,0x443,0x304,0xe602,0x423,0x308,0xe602,0x443,0x308,0xe602,0x423,0x30b,0xe602,
-0x443,0x30b,0xe602,0x427,0x308,0xe602,0x447,0x308,0xe602,0x42b,0x308,0xe602,0x44b,0x308,0xe602,0x627,
-0x653,0xe602,0x627,0x654,0xe602,0x648,0x654,0xdc02,0x627,0x655,0xe602,0x64a,0x654,0xe602,0x6d5,0x654,
-0xe602,0x6c1,0x654,0xe602,0x6d2,0x654,0x702,0x928,0x93c,0x702,0x930,0x93c,0x702,0x933,0x93c,2,
-0x9c7,0x9be,2,0x9c7,0x9d7,2,0xb47,0xb56,2,0xb47,0xb3e,2,0xb47,0xb57,2,0xb92,
-0xbd7,2,0xbc6,0xbbe,2,0xbc7,0xbbe,2,0xbc6,0xbd7,0x5b02,0xc46,0xc56,2,0xcbf,0xcd5,
-2,0xcc6,0xcd5,2,0xcc6,0xcd6,0xcca,0x43,0xcc6,0xcc2,0xcd5,2,0xd46,0xd3e,2,0xd47,
-0xd3e,2,0xd46,0xd57,0x902,0xdd9,0xdca,0xddc,0x943,0xdd9,0xdcf,0xdca,2,0xdd9,0xddf,2,
-0x1025,0x102e,2,0x1b05,0x1b35,2,0x1b07,0x1b35,2,0x1b09,0x1b35,2,0x1b0b,0x1b35,2,0x1b0d,
-0x1b35,2,0x1b11,0x1b35,2,0x1b3a,0x1b35,2,0x1b3c,0x1b35,2,0x1b3e,0x1b35,2,0x1b3f,0x1b35,
-2,0x1b42,0x1b35,0xdc02,0x41,0x325,0xdc02,0x61,0x325,0xe602,0x42,0x307,0xe602,0x62,0x307,0xdc02,
-0x42,0x323,0xdc02,0x62,0x323,0xdc02,0x42,0x331,0xdc02,0x62,0x331,0xc7,0xe643,0x43,0x327,0x301,
-0xe7,0xe643,0x63,0x327,0x301,0xe602,0x44,0x307,0xe602,0x64,0x307,0xdc02,0x44,0x323,0xdc02,0x64,
-0x323,0xdc02,0x44,0x331,0xdc02,0x64,0x331,0xca02,0x44,0x327,0xca02,0x64,0x327,0xdc02,0x44,0x32d,
-0xdc02,0x64,0x32d,0x112,0xe643,0x45,0x304,0x300,0x113,0xe643,0x65,0x304,0x300,0x112,0xe643,0x45,
-0x304,0x301,0x113,0xe643,0x65,0x304,0x301,0xdc02,0x45,0x32d,0xdc02,0x65,0x32d,0xdc02,0x45,0x330,
-0xdc02,0x65,0x330,0x228,0xe643,0x45,0x327,0x306,0x229,0xe643,0x65,0x327,0x306,0xe602,0x46,0x307,
-0xe602,0x66,0x307,0xe602,0x47,0x304,0xe602,0x67,0x304,0xe602,0x48,0x307,0xe602,0x68,0x307,0xdc02,
-0x48,0x323,0xdc02,0x68,0x323,0xe602,0x48,0x308,0xe602,0x68,0x308,0xca02,0x48,0x327,0xca02,0x68,
-0x327,0xdc02,0x48,0x32e,0xdc02,0x68,0x32e,0xdc02,0x49,0x330,0xdc02,0x69,0x330,0xcf,0xe643,0x49,
-0x308,0x301,0xef,0xe643,0x69,0x308,0x301,0xe602,0x4b,0x301,0xe602,0x6b,0x301,0xdc02,0x4b,0x323,
-0xdc02,0x6b,0x323,0xdc02,0x4b,0x331,0xdc02,0x6b,0x331,0x1e36,0xe643,0x4c,0x323,0x304,0x1e37,0xe643,
-0x6c,0x323,0x304,0xdc02,0x4c,0x331,0xdc02,0x6c,0x331,0xdc02,0x4c,0x32d,0xdc02,0x6c,0x32d,0xe602,
-0x4d,0x301,0xe602,0x6d,0x301,0xe602,0x4d,0x307,0xe602,0x6d,0x307,0xdc02,0x4d,0x323,0xdc02,0x6d,
-0x323,0xe602,0x4e,0x307,0xe602,0x6e,0x307,0xdc02,0x4e,0x323,0xdc02,0x6e,0x323,0xdc02,0x4e,0x331,
-0xdc02,0x6e,0x331,0xdc02,0x4e,0x32d,0xdc02,0x6e,0x32d,0xd5,0xe643,0x4f,0x303,0x301,0xf5,0xe643,
-0x6f,0x303,0x301,0xd5,0xe643,0x4f,0x303,0x308,0xf5,0xe643,0x6f,0x303,0x308,0x14c,0xe643,0x4f,
-0x304,0x300,0x14d,0xe643,0x6f,0x304,0x300,0x14c,0xe643,0x4f,0x304,0x301,0x14d,0xe643,0x6f,0x304,
-0x301,0xe602,0x50,0x301,0xe602,0x70,0x301,0xe602,0x50,0x307,0xe602,0x70,0x307,0xe602,0x52,0x307,
-0xe602,0x72,0x307,0x1e5a,0xe643,0x52,0x323,0x304,0x1e5b,0xe643,0x72,0x323,0x304,0xdc02,0x52,0x331,
-0xdc02,0x72,0x331,0xe602,0x53,0x307,0xe602,0x73,0x307,0x15a,0xe643,0x53,0x301,0x307,0x15b,0xe643,
-0x73,0x301,0x307,0x160,0xe643,0x53,0x30c,0x307,0x161,0xe643,0x73,0x30c,0x307,0x1e62,0xe643,0x53,
-0x323,0x307,0x1e63,0xe643,0x73,0x323,0x307,0xe602,0x54,0x307,0xe602,0x74,0x307,0xdc02,0x54,0x323,
-0xdc02,0x74,0x323,0xdc02,0x54,0x331,0xdc02,0x74,0x331,0xdc02,0x54,0x32d,0xdc02,0x74,0x32d,0xdc02,
-0x55,0x324,0xdc02,0x75,0x324,0xdc02,0x55,0x330,0xdc02,0x75,0x330,0xdc02,0x55,0x32d,0xdc02,0x75,
-0x32d,0x168,0xe643,0x55,0x303,0x301,0x169,0xe643,0x75,0x303,0x301,0x16a,0xe643,0x55,0x304,0x308,
-0x16b,0xe643,0x75,0x304,0x308,0xe602,0x56,0x303,0xe602,0x76,0x303,0xdc02,0x56,0x323,0xdc02,0x76,
-0x323,0xe602,0x57,0x300,0xe602,0x77,0x300,0xe602,0x57,0x301,0xe602,0x77,0x301,0xe602,0x57,0x308,
-0xe602,0x77,0x308,0xe602,0x57,0x307,0xe602,0x77,0x307,0xdc02,0x57,0x323,0xdc02,0x77,0x323,0xe602,
-0x58,0x307,0xe602,0x78,0x307,0xe602,0x58,0x308,0xe602,0x78,0x308,0xe602,0x59,0x307,0xe602,0x79,
-0x307,0xe602,0x5a,0x302,0xe602,0x7a,0x302,0xdc02,0x5a,0x323,0xdc02,0x7a,0x323,0xdc02,0x5a,0x331,
-0xdc02,0x7a,0x331,0xdc02,0x68,0x331,0xe602,0x74,0x308,0xe602,0x77,0x30a,0xe602,0x79,0x30a,0xe602,
-0x17f,0x307,0xe602,0x41,0x309,0xe602,0x61,0x309,0xc2,0xe643,0x41,0x302,0x301,0xe2,0xe643,0x61,
-0x302,0x301,0xc2,0xe643,0x41,0x302,0x300,0xe2,0xe643,0x61,0x302,0x300,0xc2,0xe643,0x41,0x302,
-0x309,0xe2,0xe643,0x61,0x302,0x309,0xc2,0xe643,0x41,0x302,0x303,0xe2,0xe643,0x61,0x302,0x303,
-0x1ea0,0xe643,0x41,0x323,0x302,0x1ea1,0xe643,0x61,0x323,0x302,0x102,0xe643,0x41,0x306,0x301,0x103,
-0xe643,0x61,0x306,0x301,0x102,0xe643,0x41,0x306,0x300,0x103,0xe643,0x61,0x306,0x300,0x102,0xe643,
-0x41,0x306,0x309,0x103,0xe643,0x61,0x306,0x309,0x102,0xe643,0x41,0x306,0x303,0x103,0xe643,0x61,
-0x306,0x303,0x1ea0,0xe643,0x41,0x323,0x306,0x1ea1,0xe643,0x61,0x323,0x306,0xe602,0x45,0x309,0xe602,
-0x65,0x309,0xe602,0x45,0x303,0xe602,0x65,0x303,0xca,0xe643,0x45,0x302,0x301,0xea,0xe643,0x65,
-0x302,0x301,0xca,0xe643,0x45,0x302,0x300,0xea,0xe643,0x65,0x302,0x300,0xca,0xe643,0x45,0x302,
-0x309,0xea,0xe643,0x65,0x302,0x309,0xca,0xe643,0x45,0x302,0x303,0xea,0xe643,0x65,0x302,0x303,
-0x1eb8,0xe643,0x45,0x323,0x302,0x1eb9,0xe643,0x65,0x323,0x302,0xe602,0x49,0x309,0xe602,0x69,0x309,
-0xdc02,0x49,0x323,0xdc02,0x69,0x323,0xe602,0x4f,0x309,0xe602,0x6f,0x309,0xd4,0xe643,0x4f,0x302,
-0x301,0xf4,0xe643,0x6f,0x302,0x301,0xd4,0xe643,0x4f,0x302,0x300,0xf4,0xe643,0x6f,0x302,0x300,
-0xd4,0xe643,0x4f,0x302,0x309,0xf4,0xe643,0x6f,0x302,0x309,0xd4,0xe643,0x4f,0x302,0x303,0xf4,
-0xe643,0x6f,0x302,0x303,0x1ecc,0xe643,0x4f,0x323,0x302,0x1ecd,0xe643,0x6f,0x323,0x302,0x1a0,0xe643,
-0x4f,0x31b,0x301,0x1a1,0xe643,0x6f,0x31b,0x301,0x1a0,0xe643,0x4f,0x31b,0x300,0x1a1,0xe643,0x6f,
-0x31b,0x300,0x1a0,0xe643,0x4f,0x31b,0x309,0x1a1,0xe643,0x6f,0x31b,0x309,0x1a0,0xe643,0x4f,0x31b,
-0x303,0x1a1,0xe643,0x6f,0x31b,0x303,0x1a0,0xdc43,0x4f,0x31b,0x323,0x1a1,0xdc43,0x6f,0x31b,0x323,
-0xdc02,0x55,0x323,0xdc02,0x75,0x323,0xe602,0x55,0x309,0xe602,0x75,0x309,0x1af,0xe643,0x55,0x31b,
-0x301,0x1b0,0xe643,0x75,0x31b,0x301,0x1af,0xe643,0x55,0x31b,0x300,0x1b0,0xe643,0x75,0x31b,0x300,
-0x1af,0xe643,0x55,0x31b,0x309,0x1b0,0xe643,0x75,0x31b,0x309,0x1af,0xe643,0x55,0x31b,0x303,0x1b0,
-0xe643,0x75,0x31b,0x303,0x1af,0xdc43,0x55,0x31b,0x323,0x1b0,0xdc43,0x75,0x31b,0x323,0xe602,0x59,
-0x300,0xe602,0x79,0x300,0xdc02,0x59,0x323,0xdc02,0x79,0x323,0xe602,0x59,0x309,0xe602,0x79,0x309,
-0xe602,0x59,0x303,0xe602,0x79,0x303,0x1f10,0xe643,0x3b5,0x313,0x300,0x1f11,0xe643,0x3b5,0x314,0x300,
-0x1f10,0xe643,0x3b5,0x313,0x301,0x1f11,0xe643,0x3b5,0x314,0x301,0x1f18,0xe643,0x395,0x313,0x300,0x1f19,
-0xe643,0x395,0x314,0x300,0x1f18,0xe643,0x395,0x313,0x301,0x1f19,0xe643,0x395,0x314,0x301,0x1f30,0xe643,
-0x3b9,0x313,0x300,0x1f31,0xe643,0x3b9,0x314,0x300,0x1f30,0xe643,0x3b9,0x313,0x301,0x1f31,0xe643,0x3b9,
-0x314,0x301,0x1f30,0xe643,0x3b9,0x313,0x342,0x1f31,0xe643,0x3b9,0x314,0x342,0x1f38,0xe643,0x399,0x313,
-0x300,0x1f39,0xe643,0x399,0x314,0x300,0x1f38,0xe643,0x399,0x313,0x301,0x1f39,0xe643,0x399,0x314,0x301,
-0x1f38,0xe643,0x399,0x313,0x342,0x1f39,0xe643,0x399,0x314,0x342,0x1f40,0xe643,0x3bf,0x313,0x300,0x1f41,
-0xe643,0x3bf,0x314,0x300,0x1f40,0xe643,0x3bf,0x313,0x301,0x1f41,0xe643,0x3bf,0x314,0x301,0x1f48,0xe643,
-0x39f,0x313,0x300,0x1f49,0xe643,0x39f,0x314,0x300,0x1f48,0xe643,0x39f,0x313,0x301,0x1f49,0xe643,0x39f,
-0x314,0x301,0x1f50,0xe643,0x3c5,0x313,0x300,0x1f51,0xe643,0x3c5,0x314,0x300,0x1f50,0xe643,0x3c5,0x313,
-0x301,0x1f51,0xe643,0x3c5,0x314,0x301,0x1f50,0xe643,0x3c5,0x313,0x342,0x1f51,0xe643,0x3c5,0x314,0x342,
-0x1f59,0xe643,0x3a5,0x314,0x300,0x1f59,0xe643,0x3a5,0x314,0x301,0x1f59,0xe643,0x3a5,0x314,0x342,0xe602,
-0x3b5,0x300,0xe602,0x3b9,0x300,0xe602,0x3bf,0x300,0xe602,0x3c5,0x300,0x1f00,0xf043,0x3b1,0x313,0x345,
-0x1f01,0xf043,0x3b1,0x314,0x345,0x1f02,0x345,2,0xf044,0x3b1,0x313,0x300,0x345,0x1f03,0x345,2,
-0xf044,0x3b1,0x314,0x300,0x345,0x1f04,0x345,2,0xf044,0x3b1,0x313,0x301,0x345,0x1f05,0x345,2,
-0xf044,0x3b1,0x314,0x301,0x345,0x1f06,0x345,2,0xf044,0x3b1,0x313,0x342,0x345,0x1f07,0x345,2,
-0xf044,0x3b1,0x314,0x342,0x345,0x1f08,0xf043,0x391,0x313,0x345,0x1f09,0xf043,0x391,0x314,0x345,0x1f0a,
-0x345,2,0xf044,0x391,0x313,0x300,0x345,0x1f0b,0x345,2,0xf044,0x391,0x314,0x300,0x345,0x1f0c,
-0x345,2,0xf044,0x391,0x313,0x301,0x345,0x1f0d,0x345,2,0xf044,0x391,0x314,0x301,0x345,0x1f0e,
-0x345,2,0xf044,0x391,0x313,0x342,0x345,0x1f0f,0x345,2,0xf044,0x391,0x314,0x342,0x345,0x1f20,
-0xf043,0x3b7,0x313,0x345,0x1f21,0xf043,0x3b7,0x314,0x345,0x1f22,0x345,2,0xf044,0x3b7,0x313,0x300,
-0x345,0x1f23,0x345,2,0xf044,0x3b7,0x314,0x300,0x345,0x1f24,0x345,2,0xf044,0x3b7,0x313,0x301,
-0x345,0x1f25,0x345,2,0xf044,0x3b7,0x314,0x301,0x345,0x1f26,0x345,2,0xf044,0x3b7,0x313,0x342,
-0x345,0x1f27,0x345,2,0xf044,0x3b7,0x314,0x342,0x345,0x1f28,0xf043,0x397,0x313,0x345,0x1f29,0xf043,
-0x397,0x314,0x345,0x1f2a,0x345,2,0xf044,0x397,0x313,0x300,0x345,0x1f2b,0x345,2,0xf044,0x397,
-0x314,0x300,0x345,0x1f2c,0x345,2,0xf044,0x397,0x313,0x301,0x345,0x1f2d,0x345,2,0xf044,0x397,
-0x314,0x301,0x345,0x1f2e,0x345,2,0xf044,0x397,0x313,0x342,0x345,0x1f2f,0x345,2,0xf044,0x397,
-0x314,0x342,0x345,0x1f60,0xf043,0x3c9,0x313,0x345,0x1f61,0xf043,0x3c9,0x314,0x345,0x1f62,0x345,2,
-0xf044,0x3c9,0x313,0x300,0x345,0x1f63,0x345,2,0xf044,0x3c9,0x314,0x300,0x345,0x1f64,0x345,2,
-0xf044,0x3c9,0x313,0x301,0x345,0x1f65,0x345,2,0xf044,0x3c9,0x314,0x301,0x345,0x1f66,0x345,2,
-0xf044,0x3c9,0x313,0x342,0x345,0x1f67,0x345,2,0xf044,0x3c9,0x314,0x342,0x345,0x1f68,0xf043,0x3a9,
-0x313,0x345,0x1f69,0xf043,0x3a9,0x314,0x345,0x1f6a,0x345,2,0xf044,0x3a9,0x313,0x300,0x345,0x1f6b,
-0x345,2,0xf044,0x3a9,0x314,0x300,0x345,0x1f6c,0x345,2,0xf044,0x3a9,0x313,0x301,0x345,0x1f6d,
-0x345,2,0xf044,0x3a9,0x314,0x301,0x345,0x1f6e,0x345,2,0xf044,0x3a9,0x313,0x342,0x345,0x1f6f,
-0x345,2,0xf044,0x3a9,0x314,0x342,0x345,0xe602,0x3b1,0x306,0xe602,0x3b1,0x304,0x1f70,0xf043,0x3b1,
-0x300,0x345,0xf002,0x3b1,0x345,0x3ac,0xf043,0x3b1,0x301,0x345,0x1fb6,0xf043,0x3b1,0x342,0x345,0xe602,
-0x391,0x306,0xe602,0x391,0x304,0xe602,0x391,0x300,0xf002,0x391,0x345,0xe602,0xa8,0x342,0x1f74,0xf043,
-0x3b7,0x300,0x345,0xf002,0x3b7,0x345,0x3ae,0xf043,0x3b7,0x301,0x345,0x1fc6,0xf043,0x3b7,0x342,0x345,
-0xe602,0x395,0x300,0xe602,0x397,0x300,0xf002,0x397,0x345,0xe602,0x1fbf,0x300,0xe602,0x1fbf,0x301,0xe602,
-0x1fbf,0x342,0xe602,0x3b9,0x306,0xe602,0x3b9,0x304,0x3ca,0xe643,0x3b9,0x308,0x300,0xe602,0x3b9,0x342,
-0x3ca,0xe643,0x3b9,0x308,0x342,0xe602,0x399,0x306,0xe602,0x399,0x304,0xe602,0x399,0x300,0xe602,0x1ffe,
-0x300,0xe602,0x1ffe,0x301,0xe602,0x1ffe,0x342,0xe602,0x3c5,0x306,0xe602,0x3c5,0x304,0x3cb,0xe643,0x3c5,
-0x308,0x300,0xe602,0x3c1,0x313,0xe602,0x3c1,0x314,0xe602,0x3c5,0x342,0x3cb,0xe643,0x3c5,0x308,0x342,
-0xe602,0x3a5,0x306,0xe602,0x3a5,0x304,0xe602,0x3a5,0x300,0xe602,0x3a1,0x314,0xe602,0xa8,0x300,0x1f7c,
-0xf043,0x3c9,0x300,0x345,0xf002,0x3c9,0x345,0x3ce,0xf043,0x3c9,0x301,0x345,0x1ff6,0xf043,0x3c9,0x342,
-0x345,0xe602,0x39f,0x300,0xe602,0x3a9,0x300,0xf002,0x3a9,0x345,0x102,0x2190,0x338,0x102,0x2192,0x338,
-0x102,0x2194,0x338,0x102,0x21d0,0x338,0x102,0x21d4,0x338,0x102,0x21d2,0x338,0x102,0x2203,0x338,0x102,
-0x2208,0x338,0x102,0x220b,0x338,0x102,0x2223,0x338,0x102,0x2225,0x338,0x102,0x223c,0x338,0x102,0x2243,
-0x338,0x102,0x2245,0x338,0x102,0x2248,0x338,0x102,0x3d,0x338,0x102,0x2261,0x338,0x102,0x224d,0x338,
-0x102,0x3c,0x338,0x102,0x3e,0x338,0x102,0x2264,0x338,0x102,0x2265,0x338,0x102,0x2272,0x338,0x102,
-0x2273,0x338,0x102,0x2276,0x338,0x102,0x2277,0x338,0x102,0x227a,0x338,0x102,0x227b,0x338,0x102,0x2282,
-0x338,0x102,0x2283,0x338,0x102,0x2286,0x338,0x102,0x2287,0x338,0x102,0x22a2,0x338,0x102,0x22a8,0x338,
-0x102,0x22a9,0x338,0x102,0x22ab,0x338,0x102,0x227c,0x338,0x102,0x227d,0x338,0x102,0x2291,0x338,0x102,
-0x2292,0x338,0x102,0x22b2,0x338,0x102,0x22b3,0x338,0x102,0x22b4,0x338,0x102,0x22b5,0x338,0x802,0x304b,
-0x3099,0x802,0x304d,0x3099,0x802,0x304f,0x3099,0x802,0x3051,0x3099,0x802,0x3053,0x3099,0x802,0x3055,0x3099,
-0x802,0x3057,0x3099,0x802,0x3059,0x3099,0x802,0x305b,0x3099,0x802,0x305d,0x3099,0x802,0x305f,0x3099,0x802,
-0x3061,0x3099,0x802,0x3064,0x3099,0x802,0x3066,0x3099,0x802,0x3068,0x3099,0x802,0x306f,0x3099,0x802,0x306f,
-0x309a,0x802,0x3072,0x3099,0x802,0x3072,0x309a,0x802,0x3075,0x3099,0x802,0x3075,0x309a,0x802,0x3078,0x3099,
-0x802,0x3078,0x309a,0x802,0x307b,0x3099,0x802,0x307b,0x309a,0x802,0x3046,0x3099,0x802,0x309d,0x3099,0x802,
-0x30ab,0x3099,0x802,0x30ad,0x3099,0x802,0x30af,0x3099,0x802,0x30b1,0x3099,0x802,0x30b3,0x3099,0x802,0x30b5,
-0x3099,0x802,0x30b7,0x3099,0x802,0x30b9,0x3099,0x802,0x30bb,0x3099,0x802,0x30bd,0x3099,0x802,0x30bf,0x3099,
-0x802,0x30c1,0x3099,0x802,0x30c4,0x3099,0x802,0x30c6,0x3099,0x802,0x30c8,0x3099,0x802,0x30cf,0x3099,0x802,
-0x30cf,0x309a,0x802,0x30d2,0x3099,0x802,0x30d2,0x309a,0x802,0x30d5,0x3099,0x802,0x30d5,0x309a,0x802,0x30d8,
-0x3099,0x802,0x30d8,0x309a,0x802,0x30db,0x3099,0x802,0x30db,0x309a,0x802,0x30a6,0x3099,0x802,0x30ef,0x3099,
-0x802,0x30f0,0x3099,0x802,0x30f1,0x3099,0x802,0x30f2,0x3099,0x802,0x30fd,0x3099,0x704,0xd804,0xdc99,0xd804,
-0xdcba,0x704,0xd804,0xdc9b,0xd804,0xdcba,0x704,0xd804,0xdca5,0xd804,0xdcba,4,0xd804,0xdd31,0xd804,0xdd27,
-4,0xd804,0xdd32,0xd804,0xdd27,4,0xd804,0xdf47,0xd804,0xdf3e,4,0xd804,0xdf47,0xd804,0xdf57,4,
-0xd805,0xdcb9,0xd805,0xdcba,4,0xd805,0xdcb9,0xd805,0xdcb0,4,0xd805,0xdcb9,0xd805,0xdcbd,4,0xd805,
-0xddb8,0xd805,0xddaf,4,0xd805,0xddb9,0xd805,0xddaf,1,0x2b9,1,0x3b,1,0xb7,0x702,0x915,
-0x93c,0x702,0x916,0x93c,0x702,0x917,0x93c,0x702,0x91c,0x93c,0x702,0x921,0x93c,0x702,0x922,0x93c,
-0x702,0x92b,0x93c,0x702,0x92f,0x93c,0x702,0x9a1,0x9bc,0x702,0x9a2,0x9bc,0x702,0x9af,0x9bc,0x702,
-0xa32,0xa3c,0x702,0xa38,0xa3c,0x702,0xa16,0xa3c,0x702,0xa17,0xa3c,0x702,0xa1c,0xa3c,0x702,0xa2b,
-0xa3c,0x702,0xb21,0xb3c,0x702,0xb22,0xb3c,2,0xf42,0xfb7,2,0xf4c,0xfb7,2,0xf51,0xfb7,
-2,0xf56,0xfb7,2,0xf5b,0xfb7,2,0xf40,0xfb5,0x8202,0xfb2,0xf80,0x8202,0xfb3,0xf80,2,
-0xf92,0xfb7,2,0xf9c,0xfb7,2,0xfa1,0xfb7,2,0xfa6,0xfb7,2,0xfab,0xfb7,2,0xf90,
-0xfb5,1,0x3b9,1,0x60,1,0xb4,1,0x3a9,1,0x4b,1,0x3008,1,0x3009,0x102,
-0x2add,0x338,1,0x8c48,1,0x66f4,1,0x8eca,1,0x8cc8,1,0x6ed1,1,0x4e32,1,0x53e5,
-1,0x9f9c,1,0x5951,1,0x91d1,1,0x5587,1,0x5948,1,0x61f6,1,0x7669,1,0x7f85,
-1,0x863f,1,0x87ba,1,0x88f8,1,0x908f,1,0x6a02,1,0x6d1b,1,0x70d9,1,0x73de,
-1,0x843d,1,0x916a,1,0x99f1,1,0x4e82,1,0x5375,1,0x6b04,1,0x721b,1,0x862d,
-1,0x9e1e,1,0x5d50,1,0x6feb,1,0x85cd,1,0x8964,1,0x62c9,1,0x81d8,1,0x881f,
-1,0x5eca,1,0x6717,1,0x6d6a,1,0x72fc,1,0x90ce,1,0x4f86,1,0x51b7,1,0x52de,
-1,0x64c4,1,0x6ad3,1,0x7210,1,0x76e7,1,0x8001,1,0x8606,1,0x865c,1,0x8def,
-1,0x9732,1,0x9b6f,1,0x9dfa,1,0x788c,1,0x797f,1,0x7da0,1,0x83c9,1,0x9304,
-1,0x9e7f,1,0x8ad6,1,0x58df,1,0x5f04,1,0x7c60,1,0x807e,1,0x7262,1,0x78ca,
-1,0x8cc2,1,0x96f7,1,0x58d8,1,0x5c62,1,0x6a13,1,0x6dda,1,0x6f0f,1,0x7d2f,
-1,0x7e37,1,0x964b,1,0x52d2,1,0x808b,1,0x51dc,1,0x51cc,1,0x7a1c,1,0x7dbe,
-1,0x83f1,1,0x9675,1,0x8b80,1,0x62cf,1,0x8afe,1,0x4e39,1,0x5be7,1,0x6012,
-1,0x7387,1,0x7570,1,0x5317,1,0x78fb,1,0x4fbf,1,0x5fa9,1,0x4e0d,1,0x6ccc,
-1,0x6578,1,0x7d22,1,0x53c3,1,0x585e,1,0x7701,1,0x8449,1,0x8aaa,1,0x6bba,
-1,0x8fb0,1,0x6c88,1,0x62fe,1,0x82e5,1,0x63a0,1,0x7565,1,0x4eae,1,0x5169,
-1,0x51c9,1,0x6881,1,0x7ce7,1,0x826f,1,0x8ad2,1,0x91cf,1,0x52f5,1,0x5442,
-1,0x5973,1,0x5eec,1,0x65c5,1,0x6ffe,1,0x792a,1,0x95ad,1,0x9a6a,1,0x9e97,
-1,0x9ece,1,0x529b,1,0x66c6,1,0x6b77,1,0x8f62,1,0x5e74,1,0x6190,1,0x6200,
-1,0x649a,1,0x6f23,1,0x7149,1,0x7489,1,0x79ca,1,0x7df4,1,0x806f,1,0x8f26,
-1,0x84ee,1,0x9023,1,0x934a,1,0x5217,1,0x52a3,1,0x54bd,1,0x70c8,1,0x88c2,
-1,0x5ec9,1,0x5ff5,1,0x637b,1,0x6bae,1,0x7c3e,1,0x7375,1,0x4ee4,1,0x56f9,
-1,0x5dba,1,0x601c,1,0x73b2,1,0x7469,1,0x7f9a,1,0x8046,1,0x9234,1,0x96f6,
-1,0x9748,1,0x9818,1,0x4f8b,1,0x79ae,1,0x91b4,1,0x96b8,1,0x60e1,1,0x4e86,
-1,0x50da,1,0x5bee,1,0x5c3f,1,0x6599,1,0x71ce,1,0x7642,1,0x84fc,1,0x907c,
-1,0x9f8d,1,0x6688,1,0x962e,1,0x5289,1,0x677b,1,0x67f3,1,0x6d41,1,0x6e9c,
-1,0x7409,1,0x7559,1,0x786b,1,0x7d10,1,0x985e,1,0x516d,1,0x622e,1,0x9678,
-1,0x502b,1,0x5d19,1,0x6dea,1,0x8f2a,1,0x5f8b,1,0x6144,1,0x6817,1,0x9686,
-1,0x5229,1,0x540f,1,0x5c65,1,0x6613,1,0x674e,1,0x68a8,1,0x6ce5,1,0x7406,
-1,0x75e2,1,0x7f79,1,0x88cf,1,0x88e1,1,0x91cc,1,0x96e2,1,0x533f,1,0x6eba,
-1,0x541d,1,0x71d0,1,0x7498,1,0x85fa,1,0x96a3,1,0x9c57,1,0x9e9f,1,0x6797,
-1,0x6dcb,1,0x81e8,1,0x7acb,1,0x7b20,1,0x7c92,1,0x72c0,1,0x7099,1,0x8b58,
-1,0x4ec0,1,0x8336,1,0x523a,1,0x5207,1,0x5ea6,1,0x62d3,1,0x7cd6,1,0x5b85,
-1,0x6d1e,1,0x66b4,1,0x8f3b,1,0x884c,1,0x964d,1,0x898b,1,0x5ed3,1,0x5140,
-1,0x55c0,1,0x585a,1,0x6674,1,0x51de,1,0x732a,1,0x76ca,1,0x793c,1,0x795e,
-1,0x7965,1,0x798f,1,0x9756,1,0x7cbe,1,0x7fbd,1,0x8612,1,0x8af8,1,0x9038,
-1,0x90fd,1,0x98ef,1,0x98fc,1,0x9928,1,0x9db4,1,0x90de,1,0x96b7,1,0x4fae,
-1,0x50e7,1,0x514d,1,0x52c9,1,0x52e4,1,0x5351,1,0x559d,1,0x5606,1,0x5668,
-1,0x5840,1,0x58a8,1,0x5c64,1,0x5c6e,1,0x6094,1,0x6168,1,0x618e,1,0x61f2,
-1,0x654f,1,0x65e2,1,0x6691,1,0x6885,1,0x6d77,1,0x6e1a,1,0x6f22,1,0x716e,
-1,0x722b,1,0x7422,1,0x7891,1,0x793e,1,0x7949,1,0x7948,1,0x7950,1,0x7956,
-1,0x795d,1,0x798d,1,0x798e,1,0x7a40,1,0x7a81,1,0x7bc0,1,0x7e09,1,0x7e41,
-1,0x7f72,1,0x8005,1,0x81ed,1,0x8279,1,0x8457,1,0x8910,1,0x8996,1,0x8b01,
-1,0x8b39,1,0x8cd3,1,0x8d08,1,0x8fb6,1,0x96e3,1,0x97ff,1,0x983b,1,0x6075,
-2,0xd850,0xdeee,1,0x8218,1,0x4e26,1,0x51b5,1,0x5168,1,0x4f80,1,0x5145,1,
-0x5180,1,0x52c7,1,0x52fa,1,0x5555,1,0x5599,1,0x55e2,1,0x58b3,1,0x5944,1,
-0x5954,1,0x5a62,1,0x5b28,1,0x5ed2,1,0x5ed9,1,0x5f69,1,0x5fad,1,0x60d8,1,
-0x614e,1,0x6108,1,0x6160,1,0x6234,1,0x63c4,1,0x641c,1,0x6452,1,0x6556,1,
-0x671b,1,0x6756,1,0x6b79,1,0x6edb,1,0x6ecb,1,0x701e,1,0x77a7,1,0x7235,1,
-0x72af,1,0x7471,1,0x7506,1,0x753b,1,0x761d,1,0x761f,1,0x76db,1,0x76f4,1,
-0x774a,1,0x7740,1,0x78cc,1,0x7ab1,1,0x7c7b,1,0x7d5b,1,0x7f3e,1,0x8352,1,
-0x83ef,1,0x8779,1,0x8941,1,0x8986,1,0x8abf,1,0x8acb,1,0x8aed,1,0x8b8a,1,
-0x8f38,1,0x9072,1,0x9199,1,0x9276,1,0x967c,1,0x97db,1,0x980b,1,0x9b12,2,
-0xd84a,0xdc4a,2,0xd84a,0xdc44,2,0xd84c,0xdfd5,1,0x3b9d,1,0x4018,1,0x4039,2,0xd854,
-0xde49,2,0xd857,0xdcd0,2,0xd85f,0xded3,1,0x9f43,1,0x9f8e,0xe02,0x5d9,0x5b4,0x1102,0x5f2,
-0x5b7,0x1802,0x5e9,0x5c1,0x1902,0x5e9,0x5c2,0xfb49,0x1843,0x5e9,0x5bc,0x5c1,0xfb49,0x1943,0x5e9,0x5bc,
-0x5c2,0x1102,0x5d0,0x5b7,0x1202,0x5d0,0x5b8,0x1502,0x5d0,0x5bc,0x1502,0x5d1,0x5bc,0x1502,0x5d2,0x5bc,
-0x1502,0x5d3,0x5bc,0x1502,0x5d4,0x5bc,0x1502,0x5d5,0x5bc,0x1502,0x5d6,0x5bc,0x1502,0x5d8,0x5bc,0x1502,
-0x5d9,0x5bc,0x1502,0x5da,0x5bc,0x1502,0x5db,0x5bc,0x1502,0x5dc,0x5bc,0x1502,0x5de,0x5bc,0x1502,0x5e0,
-0x5bc,0x1502,0x5e1,0x5bc,0x1502,0x5e3,0x5bc,0x1502,0x5e4,0x5bc,0x1502,0x5e6,0x5bc,0x1502,0x5e7,0x5bc,
-0x1502,0x5e8,0x5bc,0x1502,0x5e9,0x5bc,0x1502,0x5ea,0x5bc,0x1302,0x5d5,0x5b9,0x1702,0x5d1,0x5bf,0x1702,
-0x5db,0x5bf,0x1702,0x5e4,0x5bf,0xd804,0xd834,0xdd57,0xd834,0xdd65,0xd804,0xd834,0xdd58,0xd834,0xdd65,0xd834,
-0xdd5f,0xd834,0xdd6e,4,0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd6e,0xd834,0xdd5f,0xd834,0xdd6f,4,
-0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd6f,0xd834,0xdd5f,0xd834,0xdd70,4,0xd846,0xd834,0xdd58,0xd834,
-0xdd65,0xd834,0xdd70,0xd834,0xdd5f,0xd834,0xdd71,4,0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd71,0xd834,
-0xdd5f,0xd834,0xdd72,4,0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd72,0xd804,0xd834,0xddb9,0xd834,0xdd65,
-0xd804,0xd834,0xddba,0xd834,0xdd65,0xd834,0xddbb,0xd834,0xdd6e,4,0xd846,0xd834,0xddb9,0xd834,0xdd65,0xd834,
-0xdd6e,0xd834,0xddbc,0xd834,0xdd6e,4,0xd846,0xd834,0xddba,0xd834,0xdd65,0xd834,0xdd6e,0xd834,0xddbb,0xd834,
-0xdd6f,4,0xd846,0xd834,0xddb9,0xd834,0xdd65,0xd834,0xdd6f,0xd834,0xddbc,0xd834,0xdd6f,4,0xd846,0xd834,
-0xddba,0xd834,0xdd65,0xd834,0xdd6f,1,0x4e3d,1,0x4e38,1,0x4e41,2,0xd840,0xdd22,1,0x4f60,
-1,0x4fbb,1,0x5002,1,0x507a,1,0x5099,1,0x50cf,1,0x349e,2,0xd841,0xde3a,1,
-0x5154,1,0x5164,1,0x5177,2,0xd841,0xdd1c,1,0x34b9,1,0x5167,1,0x518d,2,0xd841,
-0xdd4b,1,0x5197,1,0x51a4,1,0x4ecc,1,0x51ac,2,0xd864,0xdddf,1,0x51f5,1,0x5203,
-1,0x34df,1,0x523b,1,0x5246,1,0x5272,1,0x5277,1,0x3515,1,0x5305,1,0x5306,
-1,0x5349,1,0x535a,1,0x5373,1,0x537d,1,0x537f,2,0xd842,0xde2c,1,0x7070,1,
-0x53ca,1,0x53df,2,0xd842,0xdf63,1,0x53eb,1,0x53f1,1,0x5406,1,0x549e,1,0x5438,
-1,0x5448,1,0x5468,1,0x54a2,1,0x54f6,1,0x5510,1,0x5553,1,0x5563,1,0x5584,
-1,0x55ab,1,0x55b3,1,0x55c2,1,0x5716,1,0x5717,1,0x5651,1,0x5674,1,0x58ee,
-1,0x57ce,1,0x57f4,1,0x580d,1,0x578b,1,0x5832,1,0x5831,1,0x58ac,2,0xd845,
-0xdce4,1,0x58f2,1,0x58f7,1,0x5906,1,0x591a,1,0x5922,1,0x5962,2,0xd845,0xdea8,
-2,0xd845,0xdeea,1,0x59ec,1,0x5a1b,1,0x5a27,1,0x59d8,1,0x5a66,1,0x36ee,1,
-0x36fc,1,0x5b08,1,0x5b3e,2,0xd846,0xddc8,1,0x5bc3,1,0x5bd8,1,0x5bf3,2,0xd846,
-0xdf18,1,0x5bff,1,0x5c06,1,0x5f53,1,0x5c22,1,0x3781,1,0x5c60,1,0x5cc0,1,
-0x5c8d,2,0xd847,0xdde4,1,0x5d43,2,0xd847,0xdde6,1,0x5d6e,1,0x5d6b,1,0x5d7c,1,
-0x5de1,1,0x5de2,1,0x382f,1,0x5dfd,1,0x5e28,1,0x5e3d,1,0x5e69,1,0x3862,2,
-0xd848,0xdd83,1,0x387c,1,0x5eb0,1,0x5eb3,1,0x5eb6,2,0xd868,0xdf92,1,0x5efe,2,
-0xd848,0xdf31,1,0x8201,1,0x5f22,1,0x38c7,2,0xd84c,0xdeb8,2,0xd858,0xddda,1,0x5f62,
-1,0x5f6b,1,0x38e3,1,0x5f9a,1,0x5fcd,1,0x5fd7,1,0x5ff9,1,0x6081,1,0x393a,
-1,0x391c,2,0xd849,0xded4,1,0x60c7,1,0x6148,1,0x614c,1,0x617a,1,0x61b2,1,
-0x61a4,1,0x61af,1,0x61de,1,0x6210,1,0x621b,1,0x625d,1,0x62b1,1,0x62d4,1,
-0x6350,2,0xd84a,0xdf0c,1,0x633d,1,0x62fc,1,0x6368,1,0x6383,1,0x63e4,2,0xd84a,
-0xdff1,1,0x6422,1,0x63c5,1,0x63a9,1,0x3a2e,1,0x6469,1,0x647e,1,0x649d,1,
-0x6477,1,0x3a6c,1,0x656c,2,0xd84c,0xdc0a,1,0x65e3,1,0x66f8,1,0x6649,1,0x3b19,
-1,0x3b08,1,0x3ae4,1,0x5192,1,0x5195,1,0x6700,1,0x669c,1,0x80ad,1,0x43d9,
-1,0x6721,1,0x675e,1,0x6753,2,0xd84c,0xdfc3,1,0x3b49,1,0x67fa,1,0x6785,1,
-0x6852,2,0xd84d,0xdc6d,1,0x688e,1,0x681f,1,0x6914,1,0x6942,1,0x69a3,1,0x69ea,
-1,0x6aa8,2,0xd84d,0xdea3,1,0x6adb,1,0x3c18,1,0x6b21,2,0xd84e,0xdca7,1,0x6b54,
-1,0x3c4e,1,0x6b72,1,0x6b9f,1,0x6bbb,2,0xd84e,0xde8d,2,0xd847,0xdd0b,2,0xd84e,
-0xdefa,1,0x6c4e,2,0xd84f,0xdcbc,1,0x6cbf,1,0x6ccd,1,0x6c67,1,0x6d16,1,0x6d3e,
-1,0x6d69,1,0x6d78,1,0x6d85,2,0xd84f,0xdd1e,1,0x6d34,1,0x6e2f,1,0x6e6e,1,
-0x3d33,1,0x6ec7,2,0xd84f,0xded1,1,0x6df9,1,0x6f6e,2,0xd84f,0xdf5e,2,0xd84f,0xdf8e,
-1,0x6fc6,1,0x7039,1,0x701b,1,0x3d96,1,0x704a,1,0x707d,1,0x7077,1,0x70ad,
-2,0xd841,0xdd25,1,0x7145,2,0xd850,0xde63,1,0x719c,2,0xd850,0xdfab,1,0x7228,1,
-0x7250,2,0xd851,0xde08,1,0x7280,1,0x7295,2,0xd851,0xdf35,2,0xd852,0xdc14,1,0x737a,
-1,0x738b,1,0x3eac,1,0x73a5,1,0x3eb8,1,0x7447,1,0x745c,1,0x7485,1,0x74ca,
-1,0x3f1b,1,0x7524,2,0xd853,0xdc36,1,0x753e,2,0xd853,0xdc92,2,0xd848,0xdd9f,1,
-0x7610,2,0xd853,0xdfa1,2,0xd853,0xdfb8,2,0xd854,0xdc44,1,0x3ffc,1,0x4008,2,0xd854,
-0xdcf3,2,0xd854,0xdcf2,2,0xd854,0xdd19,2,0xd854,0xdd33,1,0x771e,1,0x771f,1,0x778b,
-1,0x4046,1,0x4096,2,0xd855,0xdc1d,1,0x784e,1,0x40e3,2,0xd855,0xde26,2,0xd855,
-0xde9a,2,0xd855,0xdec5,1,0x79eb,1,0x412f,1,0x7a4a,1,0x7a4f,2,0xd856,0xdd7c,2,
-0xd856,0xdea7,1,0x7aee,1,0x4202,2,0xd856,0xdfab,1,0x7bc6,1,0x7bc9,1,0x4227,2,
-0xd857,0xdc80,1,0x7cd2,1,0x42a0,1,0x7ce8,1,0x7ce3,1,0x7d00,2,0xd857,0xdf86,1,
-0x7d63,1,0x4301,1,0x7dc7,1,0x7e02,1,0x7e45,1,0x4334,2,0xd858,0xde28,2,0xd858,
-0xde47,1,0x4359,2,0xd858,0xded9,1,0x7f7a,2,0xd858,0xdf3e,1,0x7f95,1,0x7ffa,2,
-0xd859,0xdcda,2,0xd859,0xdd23,1,0x8060,2,0xd859,0xdda8,1,0x8070,2,0xd84c,0xdf5f,1,
-0x43d5,1,0x80b2,1,0x8103,1,0x440b,1,0x813e,1,0x5ab5,2,0xd859,0xdfa7,2,0xd859,
-0xdfb5,2,0xd84c,0xdf93,2,0xd84c,0xdf9c,1,0x8204,1,0x8f9e,1,0x446b,1,0x8291,1,
-0x828b,1,0x829d,1,0x52b3,1,0x82b1,1,0x82b3,1,0x82bd,1,0x82e6,2,0xd85a,0xdf3c,
-1,0x831d,1,0x8363,1,0x83ad,1,0x8323,1,0x83bd,1,0x83e7,1,0x8353,1,0x83ca,
-1,0x83cc,1,0x83dc,2,0xd85b,0xdc36,2,0xd85b,0xdd6b,2,0xd85b,0xdcd5,1,0x452b,1,
-0x84f1,1,0x84f3,1,0x8516,2,0xd85c,0xdfca,1,0x8564,2,0xd85b,0xdf2c,1,0x455d,1,
-0x4561,2,0xd85b,0xdfb1,2,0xd85c,0xdcd2,1,0x456b,1,0x8650,1,0x8667,1,0x8669,1,
-0x86a9,1,0x8688,1,0x870e,1,0x86e2,1,0x8728,1,0x876b,1,0x8786,1,0x45d7,1,
-0x87e1,1,0x8801,1,0x45f9,1,0x8860,1,0x8863,2,0xd85d,0xde67,1,0x88d7,1,0x88de,
-1,0x4635,1,0x88fa,1,0x34bb,2,0xd85e,0xdcae,2,0xd85e,0xdd66,1,0x46be,1,0x46c7,
-1,0x8aa0,1,0x8c55,2,0xd85f,0xdca8,1,0x8cab,1,0x8cc1,1,0x8d1b,1,0x8d77,2,
-0xd85f,0xdf2f,2,0xd842,0xdc04,1,0x8dcb,1,0x8dbc,1,0x8df0,2,0xd842,0xdcde,1,0x8ed4,
-2,0xd861,0xddd2,2,0xd861,0xdded,1,0x9094,1,0x90f1,1,0x9111,2,0xd861,0xdf2e,1,
-0x911b,1,0x9238,1,0x92d7,1,0x92d8,1,0x927c,1,0x93f9,1,0x9415,2,0xd862,0xdffa,
-1,0x958b,1,0x4995,1,0x95b7,2,0xd863,0xdd77,1,0x49e6,1,0x96c3,1,0x5db2,1,
-0x9723,2,0xd864,0xdd45,2,0xd864,0xde1a,1,0x4a6e,1,0x4a76,1,0x97e0,2,0xd865,0xdc0a,
-1,0x4ab2,2,0xd865,0xdc96,1,0x9829,2,0xd865,0xddb6,1,0x98e2,1,0x4b33,1,0x9929,
-1,0x99a7,1,0x99c2,1,0x99fe,1,0x4bce,2,0xd866,0xdf30,1,0x9c40,1,0x9cfd,1,
-0x4cce,1,0x4ced,1,0x9d67,2,0xd868,0xdcce,1,0x4cf8,2,0xd868,0xdd05,2,0xd868,0xde0e,
-2,0xd868,0xde91,1,0x9ebb,1,0x4d56,1,0x9ef9,1,0x9efe,1,0x9f05,1,0x9f0f,1,
-0x9f16,1,0x9f3b,2,0xd869,0xde00,0x3ac,0xe642,0x3b1,0x301,0x3ad,0xe642,0x3b5,0x301,0x3ae,0xe642,
-0x3b7,0x301,0x3af,0xe642,0x3b9,0x301,0x3cc,0xe642,0x3bf,0x301,0x3cd,0xe642,0x3c5,0x301,0x3ce,0xe642,
-0x3c9,0x301,0x386,0xe642,0x391,0x301,0x388,0xe642,0x395,0x301,0x389,0xe642,0x397,0x301,0x390,1,
-0xe643,0x3b9,0x308,0x301,0x38a,0xe642,0x399,0x301,0x3b0,1,0xe643,0x3c5,0x308,0x301,0x38e,0xe642,
-0x3a5,0x301,0x385,0xe642,0xa8,0x301,0x38c,0xe642,0x39f,0x301,0x38f,0xe642,0x3a9,0x301,0xc5,0xe642,
-0x41,0x30a,0xe6e6,0xe681,0x300,0xe6e6,0xe681,0x301,0xe6e6,0xe681,0x313,0xe6e6,0xe682,0x308,0x301,0x8100,
-0x8282,0xf71,0xf72,0x8100,0x8482,0xf71,0xf74,0x8100,0x8282,0xf71,0xf80,0
+0x2c02,0x2978,0x348b,0x2e82,0x2976,0xb48b,0x2f42,0x297c,0xb48b,0x6bc2,0x2b74,0xb48b,0x6bc2,0x2b76,0xb48d,0x4c02,
+0x3270,2,0xe602,0x41,0x302,0x600,0x3d4c,0x602,0x3d48,0x606,0x3d54,0x8612,0x3d50,0xe602,0x41,0x308,
+0x8608,0x3bc,0xe602,0x41,0x30a,0x8602,0x3f4,0xca02,0x43,0x327,0x8602,0x3c10,0xe602,0x45,0x302,0x600,
+0x3d80,0x602,0x3d7c,0x606,0x3d88,0x8612,0x3d84,0xe602,0x49,0x308,0x8602,0x3c5c,0xe602,0x4f,0x302,0x600,
+0x3da4,0x602,0x3da0,0x606,0x3dac,0x8612,0x3da8,0xe602,0x4f,0x303,0x602,0x3c98,0x608,0x458,0x8610,0x3c9c,
+0xe602,0x4f,0x308,0x8608,0x454,0xe602,0x55,0x308,0x600,0x3b6,0x602,0x3ae,0x608,0x3aa,0x8618,0x3b2,
+0xe602,0x61,0x302,0x600,0x3d4e,0x602,0x3d4a,0x606,0x3d56,0x8612,0x3d52,0xe602,0x61,0x308,0x8608,0x3be,
+0xe602,0x61,0x30a,0x8602,0x3f6,0xca02,0x63,0x327,0x8602,0x3c12,0xe602,0x65,0x302,0x600,0x3d82,0x602,
+0x3d7e,0x606,0x3d8a,0x8612,0x3d86,0xe602,0x69,0x308,0x8602,0x3c5e,0xe602,0x6f,0x302,0x600,0x3da6,0x602,
+0x3da2,0x606,0x3dae,0x8612,0x3daa,0xe602,0x6f,0x303,0x602,0x3c9a,0x608,0x45a,0x8610,0x3c9e,0xe602,0x6f,
+0x308,0x8608,0x456,0xe602,0x75,0x308,0x600,0x3b8,0x602,0x3b0,0x608,0x3ac,0x8618,0x3b4,0xe602,0x41,
+0x306,0x600,0x3d60,0x602,0x3d5c,0x606,0x3d68,0x8612,0x3d64,0xe602,0x61,0x306,0x600,0x3d62,0x602,0x3d5e,
+0x606,0x3d6a,0x8612,0x3d66,0xe602,0x45,0x304,0x600,0x3c28,0x8602,0x3c2c,0xe602,0x65,0x304,0x600,0x3c2a,
+0x8602,0x3c2e,0xe602,0x4f,0x304,0x600,0x3ca0,0x8602,0x3ca4,0xe602,0x6f,0x304,0x600,0x3ca2,0x8602,0x3ca6,
+0xe602,0x53,0x301,0x860e,0x3cc8,0xe602,0x73,0x301,0x860e,0x3cca,0xe602,0x53,0x30c,0x860e,0x3ccc,0xe602,
+0x73,0x30c,0x860e,0x3cce,0xe602,0x55,0x303,0x8602,0x3cf0,0xe602,0x75,0x303,0x8602,0x3cf2,0xe602,0x55,
+0x304,0x8610,0x3cf4,0xe602,0x75,0x304,0x8610,0x3cf6,0xd802,0x4f,0x31b,0x600,0x3db8,0x602,0x3db4,0x606,
+0x3dc0,0x612,0x3dbc,0x8646,0x3dc4,0xd802,0x6f,0x31b,0x600,0x3dba,0x602,0x3db6,0x606,0x3dc2,0x612,0x3dbe,
+0x8646,0x3dc6,0xd802,0x55,0x31b,0x600,0x3dd4,0x602,0x3dd0,0x606,0x3ddc,0x612,0x3dd8,0x8646,0x3de0,0xd802,
+0x75,0x31b,0x600,0x3dd6,0x602,0x3dd2,0x606,0x3dde,0x612,0x3dda,0x8646,0x3de2,0xca02,0x4f,0x328,0x8608,
+0x3d8,0xca02,0x6f,0x328,0x8608,0x3da,0xe602,0x41,0x307,0x8608,0x3c0,0xe602,0x61,0x307,0x8608,0x3c2,
+0xca02,0x45,0x327,0x860c,0x3c38,0xca02,0x65,0x327,0x860c,0x3c3a,0xe602,0x4f,0x307,0x8608,0x460,0xe602,
+0x6f,0x307,0x8608,0x462,0xe602,0x3b1,0x301,0x868a,0x3f68,0xe602,0x3b7,0x301,0x868a,0x3f88,0xe602,0x3b9,
+0x308,0x600,0x3fa4,0x602,0x720,0x8684,0x3fae,0xe602,0x3c5,0x308,0x600,0x3fc4,0x602,0x760,0x8684,0x3fce,
+0xe602,0x3c9,0x301,0x868a,0x3fe8,2,0xcc6,0xcc2,0x99aa,0x1996,2,0xdd9,0xdcf,0x9b94,0x1bba,0xdc02,
+0x4c,0x323,0x8608,0x3c70,0xdc02,0x6c,0x323,0x8608,0x3c72,0xdc02,0x52,0x323,0x8608,0x3cb8,0xdc02,0x72,
+0x323,0x8608,0x3cba,0xdc02,0x53,0x323,0x860e,0x3cd0,0xdc02,0x73,0x323,0x860e,0x3cd2,0xdc02,0x41,0x323,
+0x604,0x3d58,0x860c,0x3d6c,0xdc02,0x61,0x323,0x604,0x3d5a,0x860c,0x3d6e,0xdc02,0x45,0x323,0x8604,0x3d8c,
+0xdc02,0x65,0x323,0x8604,0x3d8e,0xdc02,0x4f,0x323,0x8604,0x3db0,0xdc02,0x6f,0x323,0x8604,0x3db2,0xe602,
+0x3b1,0x313,0x600,0x3e05,0x602,0x3e09,0x684,0x3e0d,0x868a,0x3f00,0xe602,0x3b1,0x314,0x600,0x3e07,0x602,
+0x3e0b,0x684,0x3e0f,0x868a,0x3f02,0x1f00,0xe643,0x3b1,0x313,0x300,0x868a,0x3f04,0x1f01,0xe643,0x3b1,0x314,
+0x300,0x868a,0x3f06,0x1f00,0xe643,0x3b1,0x313,0x301,0x868a,0x3f08,0x1f01,0xe643,0x3b1,0x314,0x301,0x868a,
+0x3f0a,0x1f00,0xe643,0x3b1,0x313,0x342,0x868a,0x3f0c,0x1f01,0xe643,0x3b1,0x314,0x342,0x868a,0x3f0e,0xe602,
+0x391,0x313,0x600,0x3e15,0x602,0x3e19,0x684,0x3e1d,0x868a,0x3f10,0xe602,0x391,0x314,0x600,0x3e17,0x602,
+0x3e1b,0x684,0x3e1f,0x868a,0x3f12,0x1f08,0xe643,0x391,0x313,0x300,0x868a,0x3f14,0x1f09,0xe643,0x391,0x314,
+0x300,0x868a,0x3f16,0x1f08,0xe643,0x391,0x313,0x301,0x868a,0x3f18,0x1f09,0xe643,0x391,0x314,0x301,0x868a,
+0x3f1a,0x1f08,0xe643,0x391,0x313,0x342,0x868a,0x3f1c,0x1f09,0xe643,0x391,0x314,0x342,0x868a,0x3f1e,0xe602,
+0x3b5,0x313,0x600,0x3e24,0x8602,0x3e28,0xe602,0x3b5,0x314,0x600,0x3e26,0x8602,0x3e2a,0xe602,0x395,0x313,
+0x600,0x3e34,0x8602,0x3e38,0xe602,0x395,0x314,0x600,0x3e36,0x8602,0x3e3a,0xe602,0x3b7,0x313,0x600,0x3e45,
+0x602,0x3e49,0x684,0x3e4d,0x868a,0x3f20,0xe602,0x3b7,0x314,0x600,0x3e47,0x602,0x3e4b,0x684,0x3e4f,0x868a,
+0x3f22,0x1f20,0xe643,0x3b7,0x313,0x300,0x868a,0x3f24,0x1f21,0xe643,0x3b7,0x314,0x300,0x868a,0x3f26,0x1f20,
+0xe643,0x3b7,0x313,0x301,0x868a,0x3f28,0x1f21,0xe643,0x3b7,0x314,0x301,0x868a,0x3f2a,0x1f20,0xe643,0x3b7,
+0x313,0x342,0x868a,0x3f2c,0x1f21,0xe643,0x3b7,0x314,0x342,0x868a,0x3f2e,0xe602,0x397,0x313,0x600,0x3e55,
+0x602,0x3e59,0x684,0x3e5d,0x868a,0x3f30,0xe602,0x397,0x314,0x600,0x3e57,0x602,0x3e5b,0x684,0x3e5f,0x868a,
+0x3f32,0x1f28,0xe643,0x397,0x313,0x300,0x868a,0x3f34,0x1f29,0xe643,0x397,0x314,0x300,0x868a,0x3f36,0x1f28,
+0xe643,0x397,0x313,0x301,0x868a,0x3f38,0x1f29,0xe643,0x397,0x314,0x301,0x868a,0x3f3a,0x1f28,0xe643,0x397,
+0x313,0x342,0x868a,0x3f3c,0x1f29,0xe643,0x397,0x314,0x342,0x868a,0x3f3e,0xe602,0x3b9,0x313,0x600,0x3e64,
+0x602,0x3e68,0x8684,0x3e6c,0xe602,0x3b9,0x314,0x600,0x3e66,0x602,0x3e6a,0x8684,0x3e6e,0xe602,0x399,0x313,
+0x600,0x3e74,0x602,0x3e78,0x8684,0x3e7c,0xe602,0x399,0x314,0x600,0x3e76,0x602,0x3e7a,0x8684,0x3e7e,0xe602,
+0x3bf,0x313,0x600,0x3e84,0x8602,0x3e88,0xe602,0x3bf,0x314,0x600,0x3e86,0x8602,0x3e8a,0xe602,0x39f,0x313,
+0x600,0x3e94,0x8602,0x3e98,0xe602,0x39f,0x314,0x600,0x3e96,0x8602,0x3e9a,0xe602,0x3c5,0x313,0x600,0x3ea4,
+0x602,0x3ea8,0x8684,0x3eac,0xe602,0x3c5,0x314,0x600,0x3ea6,0x602,0x3eaa,0x8684,0x3eae,0xe602,0x3a5,0x314,
+0x600,0x3eb6,0x602,0x3eba,0x8684,0x3ebe,0xe602,0x3c9,0x313,0x600,0x3ec5,0x602,0x3ec9,0x684,0x3ecd,0x868a,
+0x3f40,0xe602,0x3c9,0x314,0x600,0x3ec7,0x602,0x3ecb,0x684,0x3ecf,0x868a,0x3f42,0x1f60,0xe643,0x3c9,0x313,
+0x300,0x868a,0x3f44,0x1f61,0xe643,0x3c9,0x314,0x300,0x868a,0x3f46,0x1f60,0xe643,0x3c9,0x313,0x301,0x868a,
+0x3f48,0x1f61,0xe643,0x3c9,0x314,0x301,0x868a,0x3f4a,0x1f60,0xe643,0x3c9,0x313,0x342,0x868a,0x3f4c,0x1f61,
+0xe643,0x3c9,0x314,0x342,0x868a,0x3f4e,0xe602,0x3a9,0x313,0x600,0x3ed5,0x602,0x3ed9,0x684,0x3edd,0x868a,
+0x3f50,0xe602,0x3a9,0x314,0x600,0x3ed7,0x602,0x3edb,0x684,0x3edf,0x868a,0x3f52,0x1f68,0xe643,0x3a9,0x313,
+0x300,0x868a,0x3f54,0x1f69,0xe643,0x3a9,0x314,0x300,0x868a,0x3f56,0x1f68,0xe643,0x3a9,0x313,0x301,0x868a,
+0x3f58,0x1f69,0xe643,0x3a9,0x314,0x301,0x868a,0x3f5a,0x1f68,0xe643,0x3a9,0x313,0x342,0x868a,0x3f5c,0x1f69,
+0xe643,0x3a9,0x314,0x342,0x868a,0x3f5e,0xe602,0x3b1,0x300,0x868a,0x3f64,0xe602,0x3b7,0x300,0x868a,0x3f84,
+0xe602,0x3c9,0x300,0x868a,0x3fe4,0xe602,0x3b1,0x342,0x868a,0x3f6e,0xe602,0x3b7,0x342,0x868a,0x3f8e,0xe602,
+0x3c9,0x342,0x868a,0x3fee,3,0xe602,0x41,0x300,0xe602,0x41,0x301,0xe602,0x41,0x303,0xe602,0x45,
+0x300,0xe602,0x45,0x301,0xe602,0x45,0x308,0xe602,0x49,0x300,0xe602,0x49,0x301,0xe602,0x49,0x302,
+0xe602,0x4e,0x303,0xe602,0x4f,0x300,0xe602,0x4f,0x301,0xe602,0x55,0x300,0xe602,0x55,0x301,0xe602,
+0x55,0x302,0xe602,0x59,0x301,0xe602,0x61,0x300,0xe602,0x61,0x301,0xe602,0x61,0x303,0xe602,0x65,
+0x300,0xe602,0x65,0x301,0xe602,0x65,0x308,0xe602,0x69,0x300,0xe602,0x69,0x301,0xe602,0x69,0x302,
+0xe602,0x6e,0x303,0xe602,0x6f,0x300,0xe602,0x6f,0x301,0xe602,0x75,0x300,0xe602,0x75,0x301,0xe602,
+0x75,0x302,0xe602,0x79,0x301,0xe602,0x79,0x308,0xe602,0x41,0x304,0xe602,0x61,0x304,0xca02,0x41,
+0x328,0xca02,0x61,0x328,0xe602,0x43,0x301,0xe602,0x63,0x301,0xe602,0x43,0x302,0xe602,0x63,0x302,
+0xe602,0x43,0x307,0xe602,0x63,0x307,0xe602,0x43,0x30c,0xe602,0x63,0x30c,0xe602,0x44,0x30c,0xe602,
+0x64,0x30c,0xe602,0x45,0x306,0xe602,0x65,0x306,0xe602,0x45,0x307,0xe602,0x65,0x307,0xca02,0x45,
+0x328,0xca02,0x65,0x328,0xe602,0x45,0x30c,0xe602,0x65,0x30c,0xe602,0x47,0x302,0xe602,0x67,0x302,
+0xe602,0x47,0x306,0xe602,0x67,0x306,0xe602,0x47,0x307,0xe602,0x67,0x307,0xca02,0x47,0x327,0xca02,
+0x67,0x327,0xe602,0x48,0x302,0xe602,0x68,0x302,0xe602,0x49,0x303,0xe602,0x69,0x303,0xe602,0x49,
+0x304,0xe602,0x69,0x304,0xe602,0x49,0x306,0xe602,0x69,0x306,0xca02,0x49,0x328,0xca02,0x69,0x328,
+0xe602,0x49,0x307,0xe602,0x4a,0x302,0xe602,0x6a,0x302,0xca02,0x4b,0x327,0xca02,0x6b,0x327,0xe602,
+0x4c,0x301,0xe602,0x6c,0x301,0xca02,0x4c,0x327,0xca02,0x6c,0x327,0xe602,0x4c,0x30c,0xe602,0x6c,
+0x30c,0xe602,0x4e,0x301,0xe602,0x6e,0x301,0xca02,0x4e,0x327,0xca02,0x6e,0x327,0xe602,0x4e,0x30c,
+0xe602,0x6e,0x30c,0xe602,0x4f,0x306,0xe602,0x6f,0x306,0xe602,0x4f,0x30b,0xe602,0x6f,0x30b,0xe602,
+0x52,0x301,0xe602,0x72,0x301,0xca02,0x52,0x327,0xca02,0x72,0x327,0xe602,0x52,0x30c,0xe602,0x72,
+0x30c,0xe602,0x53,0x302,0xe602,0x73,0x302,0xca02,0x53,0x327,0xca02,0x73,0x327,0xca02,0x54,0x327,
+0xca02,0x74,0x327,0xe602,0x54,0x30c,0xe602,0x74,0x30c,0xe602,0x55,0x306,0xe602,0x75,0x306,0xe602,
+0x55,0x30a,0xe602,0x75,0x30a,0xe602,0x55,0x30b,0xe602,0x75,0x30b,0xca02,0x55,0x328,0xca02,0x75,
+0x328,0xe602,0x57,0x302,0xe602,0x77,0x302,0xe602,0x59,0x302,0xe602,0x79,0x302,0xe602,0x59,0x308,
+0xe602,0x5a,0x301,0xe602,0x7a,0x301,0xe602,0x5a,0x307,0xe602,0x7a,0x307,0xe602,0x5a,0x30c,0xe602,
+0x7a,0x30c,0xe602,0x41,0x30c,0xe602,0x61,0x30c,0xe602,0x49,0x30c,0xe602,0x69,0x30c,0xe602,0x4f,
+0x30c,0xe602,0x6f,0x30c,0xe602,0x55,0x30c,0xe602,0x75,0x30c,0xdc,0xe643,0x55,0x308,0x304,0xfc,
+0xe643,0x75,0x308,0x304,0xdc,0xe643,0x55,0x308,0x301,0xfc,0xe643,0x75,0x308,0x301,0xdc,0xe643,
+0x55,0x308,0x30c,0xfc,0xe643,0x75,0x308,0x30c,0xdc,0xe643,0x55,0x308,0x300,0xfc,0xe643,0x75,
+0x308,0x300,0xc4,0xe643,0x41,0x308,0x304,0xe4,0xe643,0x61,0x308,0x304,0x226,0xe643,0x41,0x307,
+0x304,0x227,0xe643,0x61,0x307,0x304,0xe602,0xc6,0x304,0xe602,0xe6,0x304,0xe602,0x47,0x30c,0xe602,
+0x67,0x30c,0xe602,0x4b,0x30c,0xe602,0x6b,0x30c,0x1ea,0xe643,0x4f,0x328,0x304,0x1eb,0xe643,0x6f,
+0x328,0x304,0xe602,0x1b7,0x30c,0xe602,0x292,0x30c,0xe602,0x6a,0x30c,0xe602,0x47,0x301,0xe602,0x67,
+0x301,0xe602,0x4e,0x300,0xe602,0x6e,0x300,0xc5,0xe643,0x41,0x30a,0x301,0xe5,0xe643,0x61,0x30a,
+0x301,0xe602,0xc6,0x301,0xe602,0xe6,0x301,0xe602,0xd8,0x301,0xe602,0xf8,0x301,0xe602,0x41,0x30f,
+0xe602,0x61,0x30f,0xe602,0x41,0x311,0xe602,0x61,0x311,0xe602,0x45,0x30f,0xe602,0x65,0x30f,0xe602,
+0x45,0x311,0xe602,0x65,0x311,0xe602,0x49,0x30f,0xe602,0x69,0x30f,0xe602,0x49,0x311,0xe602,0x69,
+0x311,0xe602,0x4f,0x30f,0xe602,0x6f,0x30f,0xe602,0x4f,0x311,0xe602,0x6f,0x311,0xe602,0x52,0x30f,
+0xe602,0x72,0x30f,0xe602,0x52,0x311,0xe602,0x72,0x311,0xe602,0x55,0x30f,0xe602,0x75,0x30f,0xe602,
+0x55,0x311,0xe602,0x75,0x311,0xdc02,0x53,0x326,0xdc02,0x73,0x326,0xdc02,0x54,0x326,0xdc02,0x74,
+0x326,0xe602,0x48,0x30c,0xe602,0x68,0x30c,0xd6,0xe643,0x4f,0x308,0x304,0xf6,0xe643,0x6f,0x308,
+0x304,0xd5,0xe643,0x4f,0x303,0x304,0xf5,0xe643,0x6f,0x303,0x304,0x22e,0xe643,0x4f,0x307,0x304,
+0x22f,0xe643,0x6f,0x307,0x304,0xe602,0x59,0x304,0xe602,0x79,0x304,0xe602,0xa8,0x301,0xe602,0x391,
+0x301,0xe602,0x395,0x301,0xe602,0x397,0x301,0xe602,0x399,0x301,0xe602,0x39f,0x301,0xe602,0x3a5,0x301,
+0xe602,0x3a9,0x301,0x3ca,0xe643,0x3b9,0x308,0x301,0xe602,0x399,0x308,0xe602,0x3a5,0x308,0xe602,0x3b5,
+0x301,0xe602,0x3b9,0x301,0x3cb,0xe643,0x3c5,0x308,0x301,0xe602,0x3bf,0x301,0xe602,0x3c5,0x301,0xe602,
+0x3d2,0x301,0xe602,0x3d2,0x308,0xe602,0x415,0x300,0xe602,0x415,0x308,0xe602,0x413,0x301,0xe602,0x406,
+0x308,0xe602,0x41a,0x301,0xe602,0x418,0x300,0xe602,0x423,0x306,0xe602,0x418,0x306,0xe602,0x438,0x306,
+0xe602,0x435,0x300,0xe602,0x435,0x308,0xe602,0x433,0x301,0xe602,0x456,0x308,0xe602,0x43a,0x301,0xe602,
+0x438,0x300,0xe602,0x443,0x306,0xe602,0x474,0x30f,0xe602,0x475,0x30f,0xe602,0x416,0x306,0xe602,0x436,
+0x306,0xe602,0x410,0x306,0xe602,0x430,0x306,0xe602,0x410,0x308,0xe602,0x430,0x308,0xe602,0x415,0x306,
+0xe602,0x435,0x306,0xe602,0x4d8,0x308,0xe602,0x4d9,0x308,0xe602,0x416,0x308,0xe602,0x436,0x308,0xe602,
+0x417,0x308,0xe602,0x437,0x308,0xe602,0x418,0x304,0xe602,0x438,0x304,0xe602,0x418,0x308,0xe602,0x438,
+0x308,0xe602,0x41e,0x308,0xe602,0x43e,0x308,0xe602,0x4e8,0x308,0xe602,0x4e9,0x308,0xe602,0x42d,0x308,
+0xe602,0x44d,0x308,0xe602,0x423,0x304,0xe602,0x443,0x304,0xe602,0x423,0x308,0xe602,0x443,0x308,0xe602,
+0x423,0x30b,0xe602,0x443,0x30b,0xe602,0x427,0x308,0xe602,0x447,0x308,0xe602,0x42b,0x308,0xe602,0x44b,
+0x308,0xe602,0x627,0x653,0xe602,0x627,0x654,0xe602,0x648,0x654,0xdc02,0x627,0x655,0xe602,0x64a,0x654,
+0xe602,0x6d5,0x654,0xe602,0x6c1,0x654,0xe602,0x6d2,0x654,0x702,0x928,0x93c,0x702,0x930,0x93c,0x702,
+0x933,0x93c,2,0x9c7,0x9be,2,0x9c7,0x9d7,2,0xb47,0xb56,2,0xb47,0xb3e,2,0xb47,
+0xb57,2,0xb92,0xbd7,2,0xbc6,0xbbe,2,0xbc7,0xbbe,2,0xbc6,0xbd7,0x5b02,0xc46,0xc56,
+2,0xcbf,0xcd5,2,0xcc6,0xcd5,2,0xcc6,0xcd6,0xcca,0x43,0xcc6,0xcc2,0xcd5,2,0xd46,
+0xd3e,2,0xd47,0xd3e,2,0xd46,0xd57,0x902,0xdd9,0xdca,0xddc,0x943,0xdd9,0xdcf,0xdca,2,
+0xdd9,0xddf,2,0x1025,0x102e,2,0x1b05,0x1b35,2,0x1b07,0x1b35,2,0x1b09,0x1b35,2,0x1b0b,
+0x1b35,2,0x1b0d,0x1b35,2,0x1b11,0x1b35,2,0x1b3a,0x1b35,2,0x1b3c,0x1b35,2,0x1b3e,0x1b35,
+2,0x1b3f,0x1b35,2,0x1b42,0x1b35,0xdc02,0x41,0x325,0xdc02,0x61,0x325,0xe602,0x42,0x307,0xe602,
+0x62,0x307,0xdc02,0x42,0x323,0xdc02,0x62,0x323,0xdc02,0x42,0x331,0xdc02,0x62,0x331,0xc7,0xe643,
+0x43,0x327,0x301,0xe7,0xe643,0x63,0x327,0x301,0xe602,0x44,0x307,0xe602,0x64,0x307,0xdc02,0x44,
+0x323,0xdc02,0x64,0x323,0xdc02,0x44,0x331,0xdc02,0x64,0x331,0xca02,0x44,0x327,0xca02,0x64,0x327,
+0xdc02,0x44,0x32d,0xdc02,0x64,0x32d,0x112,0xe643,0x45,0x304,0x300,0x113,0xe643,0x65,0x304,0x300,
+0x112,0xe643,0x45,0x304,0x301,0x113,0xe643,0x65,0x304,0x301,0xdc02,0x45,0x32d,0xdc02,0x65,0x32d,
+0xdc02,0x45,0x330,0xdc02,0x65,0x330,0x228,0xe643,0x45,0x327,0x306,0x229,0xe643,0x65,0x327,0x306,
+0xe602,0x46,0x307,0xe602,0x66,0x307,0xe602,0x47,0x304,0xe602,0x67,0x304,0xe602,0x48,0x307,0xe602,
+0x68,0x307,0xdc02,0x48,0x323,0xdc02,0x68,0x323,0xe602,0x48,0x308,0xe602,0x68,0x308,0xca02,0x48,
+0x327,0xca02,0x68,0x327,0xdc02,0x48,0x32e,0xdc02,0x68,0x32e,0xdc02,0x49,0x330,0xdc02,0x69,0x330,
+0xcf,0xe643,0x49,0x308,0x301,0xef,0xe643,0x69,0x308,0x301,0xe602,0x4b,0x301,0xe602,0x6b,0x301,
+0xdc02,0x4b,0x323,0xdc02,0x6b,0x323,0xdc02,0x4b,0x331,0xdc02,0x6b,0x331,0x1e36,0xe643,0x4c,0x323,
+0x304,0x1e37,0xe643,0x6c,0x323,0x304,0xdc02,0x4c,0x331,0xdc02,0x6c,0x331,0xdc02,0x4c,0x32d,0xdc02,
+0x6c,0x32d,0xe602,0x4d,0x301,0xe602,0x6d,0x301,0xe602,0x4d,0x307,0xe602,0x6d,0x307,0xdc02,0x4d,
+0x323,0xdc02,0x6d,0x323,0xe602,0x4e,0x307,0xe602,0x6e,0x307,0xdc02,0x4e,0x323,0xdc02,0x6e,0x323,
+0xdc02,0x4e,0x331,0xdc02,0x6e,0x331,0xdc02,0x4e,0x32d,0xdc02,0x6e,0x32d,0xd5,0xe643,0x4f,0x303,
+0x301,0xf5,0xe643,0x6f,0x303,0x301,0xd5,0xe643,0x4f,0x303,0x308,0xf5,0xe643,0x6f,0x303,0x308,
+0x14c,0xe643,0x4f,0x304,0x300,0x14d,0xe643,0x6f,0x304,0x300,0x14c,0xe643,0x4f,0x304,0x301,0x14d,
+0xe643,0x6f,0x304,0x301,0xe602,0x50,0x301,0xe602,0x70,0x301,0xe602,0x50,0x307,0xe602,0x70,0x307,
+0xe602,0x52,0x307,0xe602,0x72,0x307,0x1e5a,0xe643,0x52,0x323,0x304,0x1e5b,0xe643,0x72,0x323,0x304,
+0xdc02,0x52,0x331,0xdc02,0x72,0x331,0xe602,0x53,0x307,0xe602,0x73,0x307,0x15a,0xe643,0x53,0x301,
+0x307,0x15b,0xe643,0x73,0x301,0x307,0x160,0xe643,0x53,0x30c,0x307,0x161,0xe643,0x73,0x30c,0x307,
+0x1e62,0xe643,0x53,0x323,0x307,0x1e63,0xe643,0x73,0x323,0x307,0xe602,0x54,0x307,0xe602,0x74,0x307,
+0xdc02,0x54,0x323,0xdc02,0x74,0x323,0xdc02,0x54,0x331,0xdc02,0x74,0x331,0xdc02,0x54,0x32d,0xdc02,
+0x74,0x32d,0xdc02,0x55,0x324,0xdc02,0x75,0x324,0xdc02,0x55,0x330,0xdc02,0x75,0x330,0xdc02,0x55,
+0x32d,0xdc02,0x75,0x32d,0x168,0xe643,0x55,0x303,0x301,0x169,0xe643,0x75,0x303,0x301,0x16a,0xe643,
+0x55,0x304,0x308,0x16b,0xe643,0x75,0x304,0x308,0xe602,0x56,0x303,0xe602,0x76,0x303,0xdc02,0x56,
+0x323,0xdc02,0x76,0x323,0xe602,0x57,0x300,0xe602,0x77,0x300,0xe602,0x57,0x301,0xe602,0x77,0x301,
+0xe602,0x57,0x308,0xe602,0x77,0x308,0xe602,0x57,0x307,0xe602,0x77,0x307,0xdc02,0x57,0x323,0xdc02,
+0x77,0x323,0xe602,0x58,0x307,0xe602,0x78,0x307,0xe602,0x58,0x308,0xe602,0x78,0x308,0xe602,0x59,
+0x307,0xe602,0x79,0x307,0xe602,0x5a,0x302,0xe602,0x7a,0x302,0xdc02,0x5a,0x323,0xdc02,0x7a,0x323,
+0xdc02,0x5a,0x331,0xdc02,0x7a,0x331,0xdc02,0x68,0x331,0xe602,0x74,0x308,0xe602,0x77,0x30a,0xe602,
+0x79,0x30a,0xe602,0x17f,0x307,0xe602,0x41,0x309,0xe602,0x61,0x309,0xc2,0xe643,0x41,0x302,0x301,
+0xe2,0xe643,0x61,0x302,0x301,0xc2,0xe643,0x41,0x302,0x300,0xe2,0xe643,0x61,0x302,0x300,0xc2,
+0xe643,0x41,0x302,0x309,0xe2,0xe643,0x61,0x302,0x309,0xc2,0xe643,0x41,0x302,0x303,0xe2,0xe643,
+0x61,0x302,0x303,0x1ea0,0xe643,0x41,0x323,0x302,0x1ea1,0xe643,0x61,0x323,0x302,0x102,0xe643,0x41,
+0x306,0x301,0x103,0xe643,0x61,0x306,0x301,0x102,0xe643,0x41,0x306,0x300,0x103,0xe643,0x61,0x306,
+0x300,0x102,0xe643,0x41,0x306,0x309,0x103,0xe643,0x61,0x306,0x309,0x102,0xe643,0x41,0x306,0x303,
+0x103,0xe643,0x61,0x306,0x303,0x1ea0,0xe643,0x41,0x323,0x306,0x1ea1,0xe643,0x61,0x323,0x306,0xe602,
+0x45,0x309,0xe602,0x65,0x309,0xe602,0x45,0x303,0xe602,0x65,0x303,0xca,0xe643,0x45,0x302,0x301,
+0xea,0xe643,0x65,0x302,0x301,0xca,0xe643,0x45,0x302,0x300,0xea,0xe643,0x65,0x302,0x300,0xca,
+0xe643,0x45,0x302,0x309,0xea,0xe643,0x65,0x302,0x309,0xca,0xe643,0x45,0x302,0x303,0xea,0xe643,
+0x65,0x302,0x303,0x1eb8,0xe643,0x45,0x323,0x302,0x1eb9,0xe643,0x65,0x323,0x302,0xe602,0x49,0x309,
+0xe602,0x69,0x309,0xdc02,0x49,0x323,0xdc02,0x69,0x323,0xe602,0x4f,0x309,0xe602,0x6f,0x309,0xd4,
+0xe643,0x4f,0x302,0x301,0xf4,0xe643,0x6f,0x302,0x301,0xd4,0xe643,0x4f,0x302,0x300,0xf4,0xe643,
+0x6f,0x302,0x300,0xd4,0xe643,0x4f,0x302,0x309,0xf4,0xe643,0x6f,0x302,0x309,0xd4,0xe643,0x4f,
+0x302,0x303,0xf4,0xe643,0x6f,0x302,0x303,0x1ecc,0xe643,0x4f,0x323,0x302,0x1ecd,0xe643,0x6f,0x323,
+0x302,0x1a0,0xe643,0x4f,0x31b,0x301,0x1a1,0xe643,0x6f,0x31b,0x301,0x1a0,0xe643,0x4f,0x31b,0x300,
+0x1a1,0xe643,0x6f,0x31b,0x300,0x1a0,0xe643,0x4f,0x31b,0x309,0x1a1,0xe643,0x6f,0x31b,0x309,0x1a0,
+0xe643,0x4f,0x31b,0x303,0x1a1,0xe643,0x6f,0x31b,0x303,0x1a0,0xdc43,0x4f,0x31b,0x323,0x1a1,0xdc43,
+0x6f,0x31b,0x323,0xdc02,0x55,0x323,0xdc02,0x75,0x323,0xe602,0x55,0x309,0xe602,0x75,0x309,0x1af,
+0xe643,0x55,0x31b,0x301,0x1b0,0xe643,0x75,0x31b,0x301,0x1af,0xe643,0x55,0x31b,0x300,0x1b0,0xe643,
+0x75,0x31b,0x300,0x1af,0xe643,0x55,0x31b,0x309,0x1b0,0xe643,0x75,0x31b,0x309,0x1af,0xe643,0x55,
+0x31b,0x303,0x1b0,0xe643,0x75,0x31b,0x303,0x1af,0xdc43,0x55,0x31b,0x323,0x1b0,0xdc43,0x75,0x31b,
+0x323,0xe602,0x59,0x300,0xe602,0x79,0x300,0xdc02,0x59,0x323,0xdc02,0x79,0x323,0xe602,0x59,0x309,
+0xe602,0x79,0x309,0xe602,0x59,0x303,0xe602,0x79,0x303,0x1f10,0xe643,0x3b5,0x313,0x300,0x1f11,0xe643,
+0x3b5,0x314,0x300,0x1f10,0xe643,0x3b5,0x313,0x301,0x1f11,0xe643,0x3b5,0x314,0x301,0x1f18,0xe643,0x395,
+0x313,0x300,0x1f19,0xe643,0x395,0x314,0x300,0x1f18,0xe643,0x395,0x313,0x301,0x1f19,0xe643,0x395,0x314,
+0x301,0x1f30,0xe643,0x3b9,0x313,0x300,0x1f31,0xe643,0x3b9,0x314,0x300,0x1f30,0xe643,0x3b9,0x313,0x301,
+0x1f31,0xe643,0x3b9,0x314,0x301,0x1f30,0xe643,0x3b9,0x313,0x342,0x1f31,0xe643,0x3b9,0x314,0x342,0x1f38,
+0xe643,0x399,0x313,0x300,0x1f39,0xe643,0x399,0x314,0x300,0x1f38,0xe643,0x399,0x313,0x301,0x1f39,0xe643,
+0x399,0x314,0x301,0x1f38,0xe643,0x399,0x313,0x342,0x1f39,0xe643,0x399,0x314,0x342,0x1f40,0xe643,0x3bf,
+0x313,0x300,0x1f41,0xe643,0x3bf,0x314,0x300,0x1f40,0xe643,0x3bf,0x313,0x301,0x1f41,0xe643,0x3bf,0x314,
+0x301,0x1f48,0xe643,0x39f,0x313,0x300,0x1f49,0xe643,0x39f,0x314,0x300,0x1f48,0xe643,0x39f,0x313,0x301,
+0x1f49,0xe643,0x39f,0x314,0x301,0x1f50,0xe643,0x3c5,0x313,0x300,0x1f51,0xe643,0x3c5,0x314,0x300,0x1f50,
+0xe643,0x3c5,0x313,0x301,0x1f51,0xe643,0x3c5,0x314,0x301,0x1f50,0xe643,0x3c5,0x313,0x342,0x1f51,0xe643,
+0x3c5,0x314,0x342,0x1f59,0xe643,0x3a5,0x314,0x300,0x1f59,0xe643,0x3a5,0x314,0x301,0x1f59,0xe643,0x3a5,
+0x314,0x342,0xe602,0x3b5,0x300,0xe602,0x3b9,0x300,0xe602,0x3bf,0x300,0xe602,0x3c5,0x300,0x1f00,0xf043,
+0x3b1,0x313,0x345,0x1f01,0xf043,0x3b1,0x314,0x345,0x1f02,0x345,2,0xf044,0x3b1,0x313,0x300,0x345,
+0x1f03,0x345,2,0xf044,0x3b1,0x314,0x300,0x345,0x1f04,0x345,2,0xf044,0x3b1,0x313,0x301,0x345,
+0x1f05,0x345,2,0xf044,0x3b1,0x314,0x301,0x345,0x1f06,0x345,2,0xf044,0x3b1,0x313,0x342,0x345,
+0x1f07,0x345,2,0xf044,0x3b1,0x314,0x342,0x345,0x1f08,0xf043,0x391,0x313,0x345,0x1f09,0xf043,0x391,
+0x314,0x345,0x1f0a,0x345,2,0xf044,0x391,0x313,0x300,0x345,0x1f0b,0x345,2,0xf044,0x391,0x314,
+0x300,0x345,0x1f0c,0x345,2,0xf044,0x391,0x313,0x301,0x345,0x1f0d,0x345,2,0xf044,0x391,0x314,
+0x301,0x345,0x1f0e,0x345,2,0xf044,0x391,0x313,0x342,0x345,0x1f0f,0x345,2,0xf044,0x391,0x314,
+0x342,0x345,0x1f20,0xf043,0x3b7,0x313,0x345,0x1f21,0xf043,0x3b7,0x314,0x345,0x1f22,0x345,2,0xf044,
+0x3b7,0x313,0x300,0x345,0x1f23,0x345,2,0xf044,0x3b7,0x314,0x300,0x345,0x1f24,0x345,2,0xf044,
+0x3b7,0x313,0x301,0x345,0x1f25,0x345,2,0xf044,0x3b7,0x314,0x301,0x345,0x1f26,0x345,2,0xf044,
+0x3b7,0x313,0x342,0x345,0x1f27,0x345,2,0xf044,0x3b7,0x314,0x342,0x345,0x1f28,0xf043,0x397,0x313,
+0x345,0x1f29,0xf043,0x397,0x314,0x345,0x1f2a,0x345,2,0xf044,0x397,0x313,0x300,0x345,0x1f2b,0x345,
+2,0xf044,0x397,0x314,0x300,0x345,0x1f2c,0x345,2,0xf044,0x397,0x313,0x301,0x345,0x1f2d,0x345,
+2,0xf044,0x397,0x314,0x301,0x345,0x1f2e,0x345,2,0xf044,0x397,0x313,0x342,0x345,0x1f2f,0x345,
+2,0xf044,0x397,0x314,0x342,0x345,0x1f60,0xf043,0x3c9,0x313,0x345,0x1f61,0xf043,0x3c9,0x314,0x345,
+0x1f62,0x345,2,0xf044,0x3c9,0x313,0x300,0x345,0x1f63,0x345,2,0xf044,0x3c9,0x314,0x300,0x345,
+0x1f64,0x345,2,0xf044,0x3c9,0x313,0x301,0x345,0x1f65,0x345,2,0xf044,0x3c9,0x314,0x301,0x345,
+0x1f66,0x345,2,0xf044,0x3c9,0x313,0x342,0x345,0x1f67,0x345,2,0xf044,0x3c9,0x314,0x342,0x345,
+0x1f68,0xf043,0x3a9,0x313,0x345,0x1f69,0xf043,0x3a9,0x314,0x345,0x1f6a,0x345,2,0xf044,0x3a9,0x313,
+0x300,0x345,0x1f6b,0x345,2,0xf044,0x3a9,0x314,0x300,0x345,0x1f6c,0x345,2,0xf044,0x3a9,0x313,
+0x301,0x345,0x1f6d,0x345,2,0xf044,0x3a9,0x314,0x301,0x345,0x1f6e,0x345,2,0xf044,0x3a9,0x313,
+0x342,0x345,0x1f6f,0x345,2,0xf044,0x3a9,0x314,0x342,0x345,0xe602,0x3b1,0x306,0xe602,0x3b1,0x304,
+0x1f70,0xf043,0x3b1,0x300,0x345,0xf002,0x3b1,0x345,0x3ac,0xf043,0x3b1,0x301,0x345,0x1fb6,0xf043,0x3b1,
+0x342,0x345,0xe602,0x391,0x306,0xe602,0x391,0x304,0xe602,0x391,0x300,0xf002,0x391,0x345,0xe602,0xa8,
+0x342,0x1f74,0xf043,0x3b7,0x300,0x345,0xf002,0x3b7,0x345,0x3ae,0xf043,0x3b7,0x301,0x345,0x1fc6,0xf043,
+0x3b7,0x342,0x345,0xe602,0x395,0x300,0xe602,0x397,0x300,0xf002,0x397,0x345,0xe602,0x1fbf,0x300,0xe602,
+0x1fbf,0x301,0xe602,0x1fbf,0x342,0xe602,0x3b9,0x306,0xe602,0x3b9,0x304,0x3ca,0xe643,0x3b9,0x308,0x300,
+0xe602,0x3b9,0x342,0x3ca,0xe643,0x3b9,0x308,0x342,0xe602,0x399,0x306,0xe602,0x399,0x304,0xe602,0x399,
+0x300,0xe602,0x1ffe,0x300,0xe602,0x1ffe,0x301,0xe602,0x1ffe,0x342,0xe602,0x3c5,0x306,0xe602,0x3c5,0x304,
+0x3cb,0xe643,0x3c5,0x308,0x300,0xe602,0x3c1,0x313,0xe602,0x3c1,0x314,0xe602,0x3c5,0x342,0x3cb,0xe643,
+0x3c5,0x308,0x342,0xe602,0x3a5,0x306,0xe602,0x3a5,0x304,0xe602,0x3a5,0x300,0xe602,0x3a1,0x314,0xe602,
+0xa8,0x300,0x1f7c,0xf043,0x3c9,0x300,0x345,0xf002,0x3c9,0x345,0x3ce,0xf043,0x3c9,0x301,0x345,0x1ff6,
+0xf043,0x3c9,0x342,0x345,0xe602,0x39f,0x300,0xe602,0x3a9,0x300,0xf002,0x3a9,0x345,0x102,0x2190,0x338,
+0x102,0x2192,0x338,0x102,0x2194,0x338,0x102,0x21d0,0x338,0x102,0x21d4,0x338,0x102,0x21d2,0x338,0x102,
+0x2203,0x338,0x102,0x2208,0x338,0x102,0x220b,0x338,0x102,0x2223,0x338,0x102,0x2225,0x338,0x102,0x223c,
+0x338,0x102,0x2243,0x338,0x102,0x2245,0x338,0x102,0x2248,0x338,0x102,0x3d,0x338,0x102,0x2261,0x338,
+0x102,0x224d,0x338,0x102,0x3c,0x338,0x102,0x3e,0x338,0x102,0x2264,0x338,0x102,0x2265,0x338,0x102,
+0x2272,0x338,0x102,0x2273,0x338,0x102,0x2276,0x338,0x102,0x2277,0x338,0x102,0x227a,0x338,0x102,0x227b,
+0x338,0x102,0x2282,0x338,0x102,0x2283,0x338,0x102,0x2286,0x338,0x102,0x2287,0x338,0x102,0x22a2,0x338,
+0x102,0x22a8,0x338,0x102,0x22a9,0x338,0x102,0x22ab,0x338,0x102,0x227c,0x338,0x102,0x227d,0x338,0x102,
+0x2291,0x338,0x102,0x2292,0x338,0x102,0x22b2,0x338,0x102,0x22b3,0x338,0x102,0x22b4,0x338,0x102,0x22b5,
+0x338,0x802,0x304b,0x3099,0x802,0x304d,0x3099,0x802,0x304f,0x3099,0x802,0x3051,0x3099,0x802,0x3053,0x3099,
+0x802,0x3055,0x3099,0x802,0x3057,0x3099,0x802,0x3059,0x3099,0x802,0x305b,0x3099,0x802,0x305d,0x3099,0x802,
+0x305f,0x3099,0x802,0x3061,0x3099,0x802,0x3064,0x3099,0x802,0x3066,0x3099,0x802,0x3068,0x3099,0x802,0x306f,
+0x3099,0x802,0x306f,0x309a,0x802,0x3072,0x3099,0x802,0x3072,0x309a,0x802,0x3075,0x3099,0x802,0x3075,0x309a,
+0x802,0x3078,0x3099,0x802,0x3078,0x309a,0x802,0x307b,0x3099,0x802,0x307b,0x309a,0x802,0x3046,0x3099,0x802,
+0x309d,0x3099,0x802,0x30ab,0x3099,0x802,0x30ad,0x3099,0x802,0x30af,0x3099,0x802,0x30b1,0x3099,0x802,0x30b3,
+0x3099,0x802,0x30b5,0x3099,0x802,0x30b7,0x3099,0x802,0x30b9,0x3099,0x802,0x30bb,0x3099,0x802,0x30bd,0x3099,
+0x802,0x30bf,0x3099,0x802,0x30c1,0x3099,0x802,0x30c4,0x3099,0x802,0x30c6,0x3099,0x802,0x30c8,0x3099,0x802,
+0x30cf,0x3099,0x802,0x30cf,0x309a,0x802,0x30d2,0x3099,0x802,0x30d2,0x309a,0x802,0x30d5,0x3099,0x802,0x30d5,
+0x309a,0x802,0x30d8,0x3099,0x802,0x30d8,0x309a,0x802,0x30db,0x3099,0x802,0x30db,0x309a,0x802,0x30a6,0x3099,
+0x802,0x30ef,0x3099,0x802,0x30f0,0x3099,0x802,0x30f1,0x3099,0x802,0x30f2,0x3099,0x802,0x30fd,0x3099,0x704,
+0xd804,0xdc99,0xd804,0xdcba,0x704,0xd804,0xdc9b,0xd804,0xdcba,0x704,0xd804,0xdca5,0xd804,0xdcba,4,0xd804,
+0xdd31,0xd804,0xdd27,4,0xd804,0xdd32,0xd804,0xdd27,4,0xd804,0xdf47,0xd804,0xdf3e,4,0xd804,0xdf47,
+0xd804,0xdf57,4,0xd805,0xdcb9,0xd805,0xdcba,4,0xd805,0xdcb9,0xd805,0xdcb0,4,0xd805,0xdcb9,0xd805,
+0xdcbd,4,0xd805,0xddb8,0xd805,0xddaf,4,0xd805,0xddb9,0xd805,0xddaf,4,0xd806,0xdd35,0xd806,0xdd30,
+1,0x2b9,1,0x3b,1,0xb7,0x702,0x915,0x93c,0x702,0x916,0x93c,0x702,0x917,0x93c,0x702,
+0x91c,0x93c,0x702,0x921,0x93c,0x702,0x922,0x93c,0x702,0x92b,0x93c,0x702,0x92f,0x93c,0x702,0x9a1,
+0x9bc,0x702,0x9a2,0x9bc,0x702,0x9af,0x9bc,0x702,0xa32,0xa3c,0x702,0xa38,0xa3c,0x702,0xa16,0xa3c,
+0x702,0xa17,0xa3c,0x702,0xa1c,0xa3c,0x702,0xa2b,0xa3c,0x702,0xb21,0xb3c,0x702,0xb22,0xb3c,2,
+0xf42,0xfb7,2,0xf4c,0xfb7,2,0xf51,0xfb7,2,0xf56,0xfb7,2,0xf5b,0xfb7,2,0xf40,
+0xfb5,0x8202,0xfb2,0xf80,0x8202,0xfb3,0xf80,2,0xf92,0xfb7,2,0xf9c,0xfb7,2,0xfa1,0xfb7,
+2,0xfa6,0xfb7,2,0xfab,0xfb7,2,0xf90,0xfb5,1,0x3b9,1,0x60,1,0xb4,1,
+0x3a9,1,0x4b,1,0x3008,1,0x3009,0x102,0x2add,0x338,1,0x8c48,1,0x66f4,1,0x8eca,
+1,0x8cc8,1,0x6ed1,1,0x4e32,1,0x53e5,1,0x9f9c,1,0x5951,1,0x91d1,1,0x5587,
+1,0x5948,1,0x61f6,1,0x7669,1,0x7f85,1,0x863f,1,0x87ba,1,0x88f8,1,0x908f,
+1,0x6a02,1,0x6d1b,1,0x70d9,1,0x73de,1,0x843d,1,0x916a,1,0x99f1,1,0x4e82,
+1,0x5375,1,0x6b04,1,0x721b,1,0x862d,1,0x9e1e,1,0x5d50,1,0x6feb,1,0x85cd,
+1,0x8964,1,0x62c9,1,0x81d8,1,0x881f,1,0x5eca,1,0x6717,1,0x6d6a,1,0x72fc,
+1,0x90ce,1,0x4f86,1,0x51b7,1,0x52de,1,0x64c4,1,0x6ad3,1,0x7210,1,0x76e7,
+1,0x8001,1,0x8606,1,0x865c,1,0x8def,1,0x9732,1,0x9b6f,1,0x9dfa,1,0x788c,
+1,0x797f,1,0x7da0,1,0x83c9,1,0x9304,1,0x9e7f,1,0x8ad6,1,0x58df,1,0x5f04,
+1,0x7c60,1,0x807e,1,0x7262,1,0x78ca,1,0x8cc2,1,0x96f7,1,0x58d8,1,0x5c62,
+1,0x6a13,1,0x6dda,1,0x6f0f,1,0x7d2f,1,0x7e37,1,0x964b,1,0x52d2,1,0x808b,
+1,0x51dc,1,0x51cc,1,0x7a1c,1,0x7dbe,1,0x83f1,1,0x9675,1,0x8b80,1,0x62cf,
+1,0x8afe,1,0x4e39,1,0x5be7,1,0x6012,1,0x7387,1,0x7570,1,0x5317,1,0x78fb,
+1,0x4fbf,1,0x5fa9,1,0x4e0d,1,0x6ccc,1,0x6578,1,0x7d22,1,0x53c3,1,0x585e,
+1,0x7701,1,0x8449,1,0x8aaa,1,0x6bba,1,0x8fb0,1,0x6c88,1,0x62fe,1,0x82e5,
+1,0x63a0,1,0x7565,1,0x4eae,1,0x5169,1,0x51c9,1,0x6881,1,0x7ce7,1,0x826f,
+1,0x8ad2,1,0x91cf,1,0x52f5,1,0x5442,1,0x5973,1,0x5eec,1,0x65c5,1,0x6ffe,
+1,0x792a,1,0x95ad,1,0x9a6a,1,0x9e97,1,0x9ece,1,0x529b,1,0x66c6,1,0x6b77,
+1,0x8f62,1,0x5e74,1,0x6190,1,0x6200,1,0x649a,1,0x6f23,1,0x7149,1,0x7489,
+1,0x79ca,1,0x7df4,1,0x806f,1,0x8f26,1,0x84ee,1,0x9023,1,0x934a,1,0x5217,
+1,0x52a3,1,0x54bd,1,0x70c8,1,0x88c2,1,0x5ec9,1,0x5ff5,1,0x637b,1,0x6bae,
+1,0x7c3e,1,0x7375,1,0x4ee4,1,0x56f9,1,0x5dba,1,0x601c,1,0x73b2,1,0x7469,
+1,0x7f9a,1,0x8046,1,0x9234,1,0x96f6,1,0x9748,1,0x9818,1,0x4f8b,1,0x79ae,
+1,0x91b4,1,0x96b8,1,0x60e1,1,0x4e86,1,0x50da,1,0x5bee,1,0x5c3f,1,0x6599,
+1,0x71ce,1,0x7642,1,0x84fc,1,0x907c,1,0x9f8d,1,0x6688,1,0x962e,1,0x5289,
+1,0x677b,1,0x67f3,1,0x6d41,1,0x6e9c,1,0x7409,1,0x7559,1,0x786b,1,0x7d10,
+1,0x985e,1,0x516d,1,0x622e,1,0x9678,1,0x502b,1,0x5d19,1,0x6dea,1,0x8f2a,
+1,0x5f8b,1,0x6144,1,0x6817,1,0x9686,1,0x5229,1,0x540f,1,0x5c65,1,0x6613,
+1,0x674e,1,0x68a8,1,0x6ce5,1,0x7406,1,0x75e2,1,0x7f79,1,0x88cf,1,0x88e1,
+1,0x91cc,1,0x96e2,1,0x533f,1,0x6eba,1,0x541d,1,0x71d0,1,0x7498,1,0x85fa,
+1,0x96a3,1,0x9c57,1,0x9e9f,1,0x6797,1,0x6dcb,1,0x81e8,1,0x7acb,1,0x7b20,
+1,0x7c92,1,0x72c0,1,0x7099,1,0x8b58,1,0x4ec0,1,0x8336,1,0x523a,1,0x5207,
+1,0x5ea6,1,0x62d3,1,0x7cd6,1,0x5b85,1,0x6d1e,1,0x66b4,1,0x8f3b,1,0x884c,
+1,0x964d,1,0x898b,1,0x5ed3,1,0x5140,1,0x55c0,1,0x585a,1,0x6674,1,0x51de,
+1,0x732a,1,0x76ca,1,0x793c,1,0x795e,1,0x7965,1,0x798f,1,0x9756,1,0x7cbe,
+1,0x7fbd,1,0x8612,1,0x8af8,1,0x9038,1,0x90fd,1,0x98ef,1,0x98fc,1,0x9928,
+1,0x9db4,1,0x90de,1,0x96b7,1,0x4fae,1,0x50e7,1,0x514d,1,0x52c9,1,0x52e4,
+1,0x5351,1,0x559d,1,0x5606,1,0x5668,1,0x5840,1,0x58a8,1,0x5c64,1,0x5c6e,
+1,0x6094,1,0x6168,1,0x618e,1,0x61f2,1,0x654f,1,0x65e2,1,0x6691,1,0x6885,
+1,0x6d77,1,0x6e1a,1,0x6f22,1,0x716e,1,0x722b,1,0x7422,1,0x7891,1,0x793e,
+1,0x7949,1,0x7948,1,0x7950,1,0x7956,1,0x795d,1,0x798d,1,0x798e,1,0x7a40,
+1,0x7a81,1,0x7bc0,1,0x7e09,1,0x7e41,1,0x7f72,1,0x8005,1,0x81ed,1,0x8279,
+1,0x8457,1,0x8910,1,0x8996,1,0x8b01,1,0x8b39,1,0x8cd3,1,0x8d08,1,0x8fb6,
+1,0x96e3,1,0x97ff,1,0x983b,1,0x6075,2,0xd850,0xdeee,1,0x8218,1,0x4e26,1,
+0x51b5,1,0x5168,1,0x4f80,1,0x5145,1,0x5180,1,0x52c7,1,0x52fa,1,0x5555,1,
+0x5599,1,0x55e2,1,0x58b3,1,0x5944,1,0x5954,1,0x5a62,1,0x5b28,1,0x5ed2,1,
+0x5ed9,1,0x5f69,1,0x5fad,1,0x60d8,1,0x614e,1,0x6108,1,0x6160,1,0x6234,1,
+0x63c4,1,0x641c,1,0x6452,1,0x6556,1,0x671b,1,0x6756,1,0x6b79,1,0x6edb,1,
+0x6ecb,1,0x701e,1,0x77a7,1,0x7235,1,0x72af,1,0x7471,1,0x7506,1,0x753b,1,
+0x761d,1,0x761f,1,0x76db,1,0x76f4,1,0x774a,1,0x7740,1,0x78cc,1,0x7ab1,1,
+0x7c7b,1,0x7d5b,1,0x7f3e,1,0x8352,1,0x83ef,1,0x8779,1,0x8941,1,0x8986,1,
+0x8abf,1,0x8acb,1,0x8aed,1,0x8b8a,1,0x8f38,1,0x9072,1,0x9199,1,0x9276,1,
+0x967c,1,0x97db,1,0x980b,1,0x9b12,2,0xd84a,0xdc4a,2,0xd84a,0xdc44,2,0xd84c,0xdfd5,
+1,0x3b9d,1,0x4018,1,0x4039,2,0xd854,0xde49,2,0xd857,0xdcd0,2,0xd85f,0xded3,1,
+0x9f43,1,0x9f8e,0xe02,0x5d9,0x5b4,0x1102,0x5f2,0x5b7,0x1802,0x5e9,0x5c1,0x1902,0x5e9,0x5c2,0xfb49,
+0x1843,0x5e9,0x5bc,0x5c1,0xfb49,0x1943,0x5e9,0x5bc,0x5c2,0x1102,0x5d0,0x5b7,0x1202,0x5d0,0x5b8,0x1502,
+0x5d0,0x5bc,0x1502,0x5d1,0x5bc,0x1502,0x5d2,0x5bc,0x1502,0x5d3,0x5bc,0x1502,0x5d4,0x5bc,0x1502,0x5d5,
+0x5bc,0x1502,0x5d6,0x5bc,0x1502,0x5d8,0x5bc,0x1502,0x5d9,0x5bc,0x1502,0x5da,0x5bc,0x1502,0x5db,0x5bc,
+0x1502,0x5dc,0x5bc,0x1502,0x5de,0x5bc,0x1502,0x5e0,0x5bc,0x1502,0x5e1,0x5bc,0x1502,0x5e3,0x5bc,0x1502,
+0x5e4,0x5bc,0x1502,0x5e6,0x5bc,0x1502,0x5e7,0x5bc,0x1502,0x5e8,0x5bc,0x1502,0x5e9,0x5bc,0x1502,0x5ea,
+0x5bc,0x1302,0x5d5,0x5b9,0x1702,0x5d1,0x5bf,0x1702,0x5db,0x5bf,0x1702,0x5e4,0x5bf,0xd804,0xd834,0xdd57,
+0xd834,0xdd65,0xd804,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd5f,0xd834,0xdd6e,4,0xd846,0xd834,0xdd58,0xd834,
+0xdd65,0xd834,0xdd6e,0xd834,0xdd5f,0xd834,0xdd6f,4,0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd6f,0xd834,
+0xdd5f,0xd834,0xdd70,4,0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd70,0xd834,0xdd5f,0xd834,0xdd71,4,
+0xd846,0xd834,0xdd58,0xd834,0xdd65,0xd834,0xdd71,0xd834,0xdd5f,0xd834,0xdd72,4,0xd846,0xd834,0xdd58,0xd834,
+0xdd65,0xd834,0xdd72,0xd804,0xd834,0xddb9,0xd834,0xdd65,0xd804,0xd834,0xddba,0xd834,0xdd65,0xd834,0xddbb,0xd834,
+0xdd6e,4,0xd846,0xd834,0xddb9,0xd834,0xdd65,0xd834,0xdd6e,0xd834,0xddbc,0xd834,0xdd6e,4,0xd846,0xd834,
+0xddba,0xd834,0xdd65,0xd834,0xdd6e,0xd834,0xddbb,0xd834,0xdd6f,4,0xd846,0xd834,0xddb9,0xd834,0xdd65,0xd834,
+0xdd6f,0xd834,0xddbc,0xd834,0xdd6f,4,0xd846,0xd834,0xddba,0xd834,0xdd65,0xd834,0xdd6f,1,0x4e3d,1,
+0x4e38,1,0x4e41,2,0xd840,0xdd22,1,0x4f60,1,0x4fbb,1,0x5002,1,0x507a,1,0x5099,
+1,0x50cf,1,0x349e,2,0xd841,0xde3a,1,0x5154,1,0x5164,1,0x5177,2,0xd841,0xdd1c,
+1,0x34b9,1,0x5167,1,0x518d,2,0xd841,0xdd4b,1,0x5197,1,0x51a4,1,0x4ecc,1,
+0x51ac,2,0xd864,0xdddf,1,0x51f5,1,0x5203,1,0x34df,1,0x523b,1,0x5246,1,0x5272,
+1,0x5277,1,0x3515,1,0x5305,1,0x5306,1,0x5349,1,0x535a,1,0x5373,1,0x537d,
+1,0x537f,2,0xd842,0xde2c,1,0x7070,1,0x53ca,1,0x53df,2,0xd842,0xdf63,1,0x53eb,
+1,0x53f1,1,0x5406,1,0x549e,1,0x5438,1,0x5448,1,0x5468,1,0x54a2,1,0x54f6,
+1,0x5510,1,0x5553,1,0x5563,1,0x5584,1,0x55ab,1,0x55b3,1,0x55c2,1,0x5716,
+1,0x5717,1,0x5651,1,0x5674,1,0x58ee,1,0x57ce,1,0x57f4,1,0x580d,1,0x578b,
+1,0x5832,1,0x5831,1,0x58ac,2,0xd845,0xdce4,1,0x58f2,1,0x58f7,1,0x5906,1,
+0x591a,1,0x5922,1,0x5962,2,0xd845,0xdea8,2,0xd845,0xdeea,1,0x59ec,1,0x5a1b,1,
+0x5a27,1,0x59d8,1,0x5a66,1,0x36ee,1,0x36fc,1,0x5b08,1,0x5b3e,2,0xd846,0xddc8,
+1,0x5bc3,1,0x5bd8,1,0x5bf3,2,0xd846,0xdf18,1,0x5bff,1,0x5c06,1,0x5f53,1,
+0x5c22,1,0x3781,1,0x5c60,1,0x5cc0,1,0x5c8d,2,0xd847,0xdde4,1,0x5d43,2,0xd847,
+0xdde6,1,0x5d6e,1,0x5d6b,1,0x5d7c,1,0x5de1,1,0x5de2,1,0x382f,1,0x5dfd,1,
+0x5e28,1,0x5e3d,1,0x5e69,1,0x3862,2,0xd848,0xdd83,1,0x387c,1,0x5eb0,1,0x5eb3,
+1,0x5eb6,2,0xd868,0xdf92,1,0x5efe,2,0xd848,0xdf31,1,0x8201,1,0x5f22,1,0x38c7,
+2,0xd84c,0xdeb8,2,0xd858,0xddda,1,0x5f62,1,0x5f6b,1,0x38e3,1,0x5f9a,1,0x5fcd,
+1,0x5fd7,1,0x5ff9,1,0x6081,1,0x393a,1,0x391c,2,0xd849,0xded4,1,0x60c7,1,
+0x6148,1,0x614c,1,0x617a,1,0x61b2,1,0x61a4,1,0x61af,1,0x61de,1,0x6210,1,
+0x621b,1,0x625d,1,0x62b1,1,0x62d4,1,0x6350,2,0xd84a,0xdf0c,1,0x633d,1,0x62fc,
+1,0x6368,1,0x6383,1,0x63e4,2,0xd84a,0xdff1,1,0x6422,1,0x63c5,1,0x63a9,1,
+0x3a2e,1,0x6469,1,0x647e,1,0x649d,1,0x6477,1,0x3a6c,1,0x656c,2,0xd84c,0xdc0a,
+1,0x65e3,1,0x66f8,1,0x6649,1,0x3b19,1,0x3b08,1,0x3ae4,1,0x5192,1,0x5195,
+1,0x6700,1,0x669c,1,0x80ad,1,0x43d9,1,0x6721,1,0x675e,1,0x6753,2,0xd84c,
+0xdfc3,1,0x3b49,1,0x67fa,1,0x6785,1,0x6852,2,0xd84d,0xdc6d,1,0x688e,1,0x681f,
+1,0x6914,1,0x6942,1,0x69a3,1,0x69ea,1,0x6aa8,2,0xd84d,0xdea3,1,0x6adb,1,
+0x3c18,1,0x6b21,2,0xd84e,0xdca7,1,0x6b54,1,0x3c4e,1,0x6b72,1,0x6b9f,1,0x6bbb,
+2,0xd84e,0xde8d,2,0xd847,0xdd0b,2,0xd84e,0xdefa,1,0x6c4e,2,0xd84f,0xdcbc,1,0x6cbf,
+1,0x6ccd,1,0x6c67,1,0x6d16,1,0x6d3e,1,0x6d69,1,0x6d78,1,0x6d85,2,0xd84f,
+0xdd1e,1,0x6d34,1,0x6e2f,1,0x6e6e,1,0x3d33,1,0x6ec7,2,0xd84f,0xded1,1,0x6df9,
+1,0x6f6e,2,0xd84f,0xdf5e,2,0xd84f,0xdf8e,1,0x6fc6,1,0x7039,1,0x701b,1,0x3d96,
+1,0x704a,1,0x707d,1,0x7077,1,0x70ad,2,0xd841,0xdd25,1,0x7145,2,0xd850,0xde63,
+1,0x719c,2,0xd850,0xdfab,1,0x7228,1,0x7250,2,0xd851,0xde08,1,0x7280,1,0x7295,
+2,0xd851,0xdf35,2,0xd852,0xdc14,1,0x737a,1,0x738b,1,0x3eac,1,0x73a5,1,0x3eb8,
+1,0x7447,1,0x745c,1,0x7485,1,0x74ca,1,0x3f1b,1,0x7524,2,0xd853,0xdc36,1,
+0x753e,2,0xd853,0xdc92,2,0xd848,0xdd9f,1,0x7610,2,0xd853,0xdfa1,2,0xd853,0xdfb8,2,
+0xd854,0xdc44,1,0x3ffc,1,0x4008,2,0xd854,0xdcf3,2,0xd854,0xdcf2,2,0xd854,0xdd19,2,
+0xd854,0xdd33,1,0x771e,1,0x771f,1,0x778b,1,0x4046,1,0x4096,2,0xd855,0xdc1d,1,
+0x784e,1,0x40e3,2,0xd855,0xde26,2,0xd855,0xde9a,2,0xd855,0xdec5,1,0x79eb,1,0x412f,
+1,0x7a4a,1,0x7a4f,2,0xd856,0xdd7c,2,0xd856,0xdea7,1,0x7aee,1,0x4202,2,0xd856,
+0xdfab,1,0x7bc6,1,0x7bc9,1,0x4227,2,0xd857,0xdc80,1,0x7cd2,1,0x42a0,1,0x7ce8,
+1,0x7ce3,1,0x7d00,2,0xd857,0xdf86,1,0x7d63,1,0x4301,1,0x7dc7,1,0x7e02,1,
+0x7e45,1,0x4334,2,0xd858,0xde28,2,0xd858,0xde47,1,0x4359,2,0xd858,0xded9,1,0x7f7a,
+2,0xd858,0xdf3e,1,0x7f95,1,0x7ffa,2,0xd859,0xdcda,2,0xd859,0xdd23,1,0x8060,2,
+0xd859,0xdda8,1,0x8070,2,0xd84c,0xdf5f,1,0x43d5,1,0x80b2,1,0x8103,1,0x440b,1,
+0x813e,1,0x5ab5,2,0xd859,0xdfa7,2,0xd859,0xdfb5,2,0xd84c,0xdf93,2,0xd84c,0xdf9c,1,
+0x8204,1,0x8f9e,1,0x446b,1,0x8291,1,0x828b,1,0x829d,1,0x52b3,1,0x82b1,1,
+0x82b3,1,0x82bd,1,0x82e6,2,0xd85a,0xdf3c,1,0x831d,1,0x8363,1,0x83ad,1,0x8323,
+1,0x83bd,1,0x83e7,1,0x8353,1,0x83ca,1,0x83cc,1,0x83dc,2,0xd85b,0xdc36,2,
+0xd85b,0xdd6b,2,0xd85b,0xdcd5,1,0x452b,1,0x84f1,1,0x84f3,1,0x8516,2,0xd85c,0xdfca,
+1,0x8564,2,0xd85b,0xdf2c,1,0x455d,1,0x4561,2,0xd85b,0xdfb1,2,0xd85c,0xdcd2,1,
+0x456b,1,0x8650,1,0x8667,1,0x8669,1,0x86a9,1,0x8688,1,0x870e,1,0x86e2,1,
+0x8728,1,0x876b,1,0x8786,1,0x45d7,1,0x87e1,1,0x8801,1,0x45f9,1,0x8860,1,
+0x8863,2,0xd85d,0xde67,1,0x88d7,1,0x88de,1,0x4635,1,0x88fa,1,0x34bb,2,0xd85e,
+0xdcae,2,0xd85e,0xdd66,1,0x46be,1,0x46c7,1,0x8aa0,1,0x8c55,2,0xd85f,0xdca8,1,
+0x8cab,1,0x8cc1,1,0x8d1b,1,0x8d77,2,0xd85f,0xdf2f,2,0xd842,0xdc04,1,0x8dcb,1,
+0x8dbc,1,0x8df0,2,0xd842,0xdcde,1,0x8ed4,2,0xd861,0xddd2,2,0xd861,0xdded,1,0x9094,
+1,0x90f1,1,0x9111,2,0xd861,0xdf2e,1,0x911b,1,0x9238,1,0x92d7,1,0x92d8,1,
+0x927c,1,0x93f9,1,0x9415,2,0xd862,0xdffa,1,0x958b,1,0x4995,1,0x95b7,2,0xd863,
+0xdd77,1,0x49e6,1,0x96c3,1,0x5db2,1,0x9723,2,0xd864,0xdd45,2,0xd864,0xde1a,1,
+0x4a6e,1,0x4a76,1,0x97e0,2,0xd865,0xdc0a,1,0x4ab2,2,0xd865,0xdc96,1,0x9829,2,
+0xd865,0xddb6,1,0x98e2,1,0x4b33,1,0x9929,1,0x99a7,1,0x99c2,1,0x99fe,1,0x4bce,
+2,0xd866,0xdf30,1,0x9c40,1,0x9cfd,1,0x4cce,1,0x4ced,1,0x9d67,2,0xd868,0xdcce,
+1,0x4cf8,2,0xd868,0xdd05,2,0xd868,0xde0e,2,0xd868,0xde91,1,0x9ebb,1,0x4d56,1,
+0x9ef9,1,0x9efe,1,0x9f05,1,0x9f0f,1,0x9f16,1,0x9f3b,2,0xd869,0xde00,0x3ac,0xe642,
+0x3b1,0x301,0x3ad,0xe642,0x3b5,0x301,0x3ae,0xe642,0x3b7,0x301,0x3af,0xe642,0x3b9,0x301,0x3cc,0xe642,
+0x3bf,0x301,0x3cd,0xe642,0x3c5,0x301,0x3ce,0xe642,0x3c9,0x301,0x386,0xe642,0x391,0x301,0x388,0xe642,
+0x395,0x301,0x389,0xe642,0x397,0x301,0x390,1,0xe643,0x3b9,0x308,0x301,0x38a,0xe642,0x399,0x301,
+0x3b0,1,0xe643,0x3c5,0x308,0x301,0x38e,0xe642,0x3a5,0x301,0x385,0xe642,0xa8,0x301,0x38c,0xe642,
+0x39f,0x301,0x38f,0xe642,0x3a9,0x301,0xc5,0xe642,0x41,0x30a,0xe6e6,0xe681,0x300,0xe6e6,0xe681,0x301,
+0xe6e6,0xe681,0x313,0xe6e6,0xe682,0x308,0x301,0x8100,0x8282,0xf71,0xf72,0x8100,0x8482,0xf71,0xf74,0x8100,
+0x8282,0xf71,0xf80,0
};
static const uint8_t norm2_nfc_data_smallFCD[256]={
0xc0,0xef,3,0x7f,0xdf,0x70,0xcf,0x87,0xc7,0xe6,0x66,0x46,0x64,0x46,0x66,0x5b,
-0x12,0,0,4,0,0,0,0x43,0x20,2,0x29,0xae,0xc2,0xc0,0xff,0xff,
+0x12,0,0,4,0,0,0,0x43,0x20,2,0x69,0xae,0xc2,0xc0,0xff,0xff,
0xc0,0x72,0xbf,0,0,0,0,0,0,0,0x40,0,0x80,0x88,0,0,
0xfe,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1129,7 +1138,7 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0x98,0,0xc1,0x66,0xe0,0x80,0,0,0,0,
+0,0,0,0,0,0,0x98,0,0xc3,0x66,0xe0,0x80,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,
Modified: trunk/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h 2021-02-13 17:46:14 UTC (rev 57727)
@@ -65,13 +65,13 @@
normalizeSecondAndAppend(UnicodeString &first,
const UnicodeString &second,
UErrorCode &errorCode) const {
- return normalizeSecondAndAppend(first, second, TRUE, errorCode);
+ return normalizeSecondAndAppend(first, second, true, errorCode);
}
virtual UnicodeString &
append(UnicodeString &first,
const UnicodeString &second,
UErrorCode &errorCode) const {
- return normalizeSecondAndAppend(first, second, FALSE, errorCode);
+ return normalizeSecondAndAppend(first, second, false, errorCode);
}
UnicodeString &
normalizeSecondAndAppend(UnicodeString &first,
@@ -112,14 +112,14 @@
int32_t length;
const UChar *d=impl.getDecomposition(c, buffer, length);
if(d==NULL) {
- return FALSE;
+ return false;
}
if(d==buffer) {
decomposition.setTo(buffer, length); // copy the string (Jamos from Hangul syllable c)
} else {
- decomposition.setTo(FALSE, d, length); // read-only alias
+ decomposition.setTo(false, d, length); // read-only alias
}
- return TRUE;
+ return true;
}
virtual UBool
getRawDecomposition(UChar32 c, UnicodeString &decomposition) const {
@@ -127,14 +127,14 @@
int32_t length;
const UChar *d=impl.getRawDecomposition(c, buffer, length);
if(d==NULL) {
- return FALSE;
+ return false;
}
if(d==buffer) {
decomposition.setTo(buffer, length); // copy the string (algorithmic decomposition)
} else {
- decomposition.setTo(FALSE, d, length); // read-only alias
+ decomposition.setTo(false, d, length); // read-only alias
}
- return TRUE;
+ return true;
}
virtual UChar32
composePair(UChar32 a, UChar32 b) const {
@@ -150,12 +150,12 @@
virtual UBool
isNormalized(const UnicodeString &s, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return FALSE;
+ return false;
}
const UChar *sArray=s.getBuffer();
if(sArray==NULL) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return FALSE;
+ return false;
}
const UChar *sLimit=sArray+s.length();
return sLimit==spanQuickCheckYes(sArray, sLimit, errorCode);
@@ -227,7 +227,7 @@
virtual void
normalize(const UChar *src, const UChar *limit,
ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
- impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode);
+ impl.compose(src, limit, onlyContiguous, true, buffer, errorCode);
}
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
@@ -256,24 +256,24 @@
virtual UBool
isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
if(U_FAILURE(errorCode)) {
- return FALSE;
+ return false;
}
const UChar *sArray=s.getBuffer();
if(sArray==NULL) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return FALSE;
+ return false;
}
UnicodeString temp;
ReorderingBuffer buffer(impl, temp);
if(!buffer.init(5, errorCode)) { // small destCapacity for substring normalization
- return FALSE;
+ return false;
}
- return impl.compose(sArray, sArray+s.length(), onlyContiguous, FALSE, buffer, errorCode);
+ return impl.compose(sArray, sArray+s.length(), onlyContiguous, false, buffer, errorCode);
}
virtual UBool
isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {
if(U_FAILURE(errorCode)) {
- return FALSE;
+ return false;
}
const uint8_t *s = reinterpret_cast<const uint8_t *>(sp.data());
return impl.composeUTF8(0, onlyContiguous, s, s + sp.length(), nullptr, nullptr, errorCode);
@@ -343,7 +343,7 @@
struct Norm2AllModes : public UMemory {
Norm2AllModes(Normalizer2Impl *i)
- : impl(i), comp(*i, FALSE), decomp(*i), fcd(*i), fcc(*i, TRUE) {}
+ : impl(i), comp(*i, false), decomp(*i), fcd(*i), fcc(*i, true) {}
~Norm2AllModes();
static Norm2AllModes *createInstance(Normalizer2Impl *impl, UErrorCode &errorCode);
Modified: trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp
===================================================================
--- trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp 2021-02-13 09:45:37 UTC (rev 57726)
+++ trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp 2021-02-13 17:46:14 UTC (rev 57727)
@@ -2088,6 +2088,13 @@
// minDecompNoCP etc. and smallFCD[] are intended to help with any loss of performance,
// at least for ASCII & CJK.
+// Ticket 20907 - The optimizer in MSVC/Visual Studio versions below 16.4 has trouble with this
+// function on Windows ARM64. As a work-around, we disable optimizations for this function.
+// This work-around could/should be removed once the following versions of Visual Studio are no
+// longer supported: All versions of VS2017, and versions of VS2019 below 16.4.
+#if (defined(_MSC_VER) && (defined(_M_ARM64)) && (_MSC_VER < 1924))
+#pragma optimize( "", off )
+#endif
// Gets the FCD value from the regular normalization data.
uint16_t Normalizer2Impl::getFCD16FromNormData(UChar32 c) const {
uint16_t norm16=getNorm16(c);
@@ -2121,6 +2128,9 @@
}
return norm16;
}
+#if (defined(_MSC_VER) && (defined(_M_ARM64)) && (_MSC_VER < 1924))
+#pragma optimize( "", on )
+#endif
// Dual functionality:
// buffer!=NULL: normalize
Modified: trunk/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h
==============================