Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-03 08:13:28

0001 // -*- C++ -*-
0002 //===----------------------------------------------------------------------===//
0003 //
0004 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0005 // See https://llvm.org/LICENSE.txt for license information.
0006 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0007 //
0008 //===----------------------------------------------------------------------===//
0009 
0010 // WARNING, this entire header is generated by
0011 // utils/generate_extended_grapheme_cluster_table.py
0012 // DO NOT MODIFY!
0013 
0014 // UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
0015 //
0016 // See Terms of Use <https://www.unicode.org/copyright.html>
0017 // for definitions of Unicode Inc.'s Data Files and Software.
0018 //
0019 // NOTICE TO USER: Carefully read the following legal agreement.
0020 // BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
0021 // DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
0022 // YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
0023 // TERMS AND CONDITIONS OF THIS AGREEMENT.
0024 // IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
0025 // THE DATA FILES OR SOFTWARE.
0026 //
0027 // COPYRIGHT AND PERMISSION NOTICE
0028 //
0029 // Copyright (c) 1991-2022 Unicode, Inc. All rights reserved.
0030 // Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
0031 //
0032 // Permission is hereby granted, free of charge, to any person obtaining
0033 // a copy of the Unicode data files and any associated documentation
0034 // (the "Data Files") or Unicode software and any associated documentation
0035 // (the "Software") to deal in the Data Files or Software
0036 // without restriction, including without limitation the rights to use,
0037 // copy, modify, merge, publish, distribute, and/or sell copies of
0038 // the Data Files or Software, and to permit persons to whom the Data Files
0039 // or Software are furnished to do so, provided that either
0040 // (a) this copyright and permission notice appear with all copies
0041 // of the Data Files or Software, or
0042 // (b) this copyright and permission notice appear in associated
0043 // Documentation.
0044 //
0045 // THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
0046 // ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
0047 // WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0048 // NONINFRINGEMENT OF THIRD PARTY RIGHTS.
0049 // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
0050 // NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
0051 // DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
0052 // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
0053 // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
0054 // PERFORMANCE OF THE DATA FILES OR SOFTWARE.
0055 //
0056 // Except as contained in this notice, the name of a copyright holder
0057 // shall not be used in advertising or otherwise to promote the sale,
0058 // use or other dealings in these Data Files or Software without prior
0059 // written authorization of the copyright holder.
0060 
0061 #ifndef _LIBCPP___CXX03___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H
0062 #define _LIBCPP___CXX03___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H
0063 
0064 #include <__cxx03/__algorithm/ranges_upper_bound.h>
0065 #include <__cxx03/__config>
0066 #include <__cxx03/__iterator/access.h>
0067 #include <__cxx03/cstddef>
0068 #include <__cxx03/cstdint>
0069 
0070 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0071 #  pragma GCC system_header
0072 #endif
0073 
0074 _LIBCPP_BEGIN_NAMESPACE_STD
0075 
0076 #if _LIBCPP_STD_VER >= 20
0077 
0078 namespace __extended_grapheme_custer_property_boundary {
0079 
0080 enum class __property : uint8_t {
0081   // Values generated from the data files.
0082   __CR,
0083   __Control,
0084   __Extend,
0085   __Extended_Pictographic,
0086   __L,
0087   __LF,
0088   __LV,
0089   __LVT,
0090   __Prepend,
0091   __Regional_Indicator,
0092   __SpacingMark,
0093   __T,
0094   __V,
0095   __ZWJ,
0096 
0097   // The properies below aren't stored in the "database".
0098 
0099   // Text position properties.
0100   __sot,
0101   __eot,
0102 
0103   // The code unit has none of above properties.
0104   __none
0105 };
0106 
0107 /// The entries of the extended grapheme cluster bondary property table.
0108 ///
0109 /// The data is generated from
0110 /// - https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt
0111 /// - https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt
0112 ///
0113 /// The data has 3 values
0114 /// - bits [0, 3] The property. One of the values generated from the datafiles
0115 ///   of \ref __property
0116 /// - bits [4, 10] The size of the range.
0117 /// - bits [11, 31] The lower bound code point of the range. The upper bound of
0118 ///   the range is lower bound + size.
0119 ///
0120 /// The 7 bits for the size allow a maximum range of 128 elements. Some ranges
0121 /// in the Unicode tables are larger. They are stored in multiple consecutive
0122 /// ranges in the data table. An alternative would be to store the sizes in a
0123 /// separate 16-bit value. The original MSVC STL code had such an approach, but
0124 /// this approach uses less space for the data and is about 4% faster in the
0125 /// following benchmark.
0126 /// libcxx/benchmarks/std_format_spec_string_unicode.bench.cpp
0127 // clang-format off
0128 _LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[1496] = {
0129     0x00000091,
0130     0x00005005,
0131     0x00005811,
0132     0x00006800,
0133     0x00007111,
0134     0x0003fa01,
0135     0x00054803,
0136     0x00056801,
0137     0x00057003,
0138     0x001806f2,
0139     0x00241862,
0140     0x002c8ac2,
0141     0x002df802,
0142     0x002e0812,
0143     0x002e2012,
0144     0x002e3802,
0145     0x00300058,
0146     0x003080a2,
0147     0x0030e001,
0148     0x00325942,
0149     0x00338002,
0150     0x0036b062,
0151     0x0036e808,
0152     0x0036f852,
0153     0x00373812,
0154     0x00375032,
0155     0x00387808,
0156     0x00388802,
0157     0x003981a2,
0158     0x003d30a2,
0159     0x003f5882,
0160     0x003fe802,
0161     0x0040b032,
0162     0x0040d882,
0163     0x00412822,
0164     0x00414842,
0165     0x0042c822,
0166     0x00448018,
0167     0x0044c072,
0168     0x00465172,
0169     0x00471008,
0170     0x004719f2,
0171     0x0048180a,
0172     0x0049d002,
0173     0x0049d80a,
0174     0x0049e002,
0175     0x0049f02a,
0176     0x004a0872,
0177     0x004a483a,
0178     0x004a6802,
0179     0x004a701a,
0180     0x004a8862,
0181     0x004b1012,
0182     0x004c0802,
0183     0x004c101a,
0184     0x004de002,
0185     0x004df002,
0186     0x004df81a,
0187     0x004e0832,
0188     0x004e381a,
0189     0x004e581a,
0190     0x004e6802,
0191     0x004eb802,
0192     0x004f1012,
0193     0x004ff002,
0194     0x00500812,
0195     0x0050180a,
0196     0x0051e002,
0197     0x0051f02a,
0198     0x00520812,
0199     0x00523812,
0200     0x00525822,
0201     0x00528802,
0202     0x00538012,
0203     0x0053a802,
0204     0x00540812,
0205     0x0054180a,
0206     0x0055e002,
0207     0x0055f02a,
0208     0x00560842,
0209     0x00563812,
0210     0x0056480a,
0211     0x0056581a,
0212     0x00566802,
0213     0x00571012,
0214     0x0057d052,
0215     0x00580802,
0216     0x0058101a,
0217     0x0059e002,
0218     0x0059f012,
0219     0x005a000a,
0220     0x005a0832,
0221     0x005a381a,
0222     0x005a581a,
0223     0x005a6802,
0224     0x005aa822,
0225     0x005b1012,
0226     0x005c1002,
0227     0x005df002,
0228     0x005df80a,
0229     0x005e0002,
0230     0x005e081a,
0231     0x005e302a,
0232     0x005e502a,
0233     0x005e6802,
0234     0x005eb802,
0235     0x00600002,
0236     0x0060082a,
0237     0x00602002,
0238     0x0061e002,
0239     0x0061f022,
0240     0x0062083a,
0241     0x00623022,
0242     0x00625032,
0243     0x0062a812,
0244     0x00631012,
0245     0x00640802,
0246     0x0064101a,
0247     0x0065e002,
0248     0x0065f00a,
0249     0x0065f802,
0250     0x0066001a,
0251     0x00661002,
0252     0x0066181a,
0253     0x00663002,
0254     0x0066381a,
0255     0x0066501a,
0256     0x00666012,
0257     0x0066a812,
0258     0x00671012,
0259     0x0067980a,
0260     0x00680012,
0261     0x0068101a,
0262     0x0069d812,
0263     0x0069f002,
0264     0x0069f81a,
0265     0x006a0832,
0266     0x006a302a,
0267     0x006a502a,
0268     0x006a6802,
0269     0x006a7008,
0270     0x006ab802,
0271     0x006b1012,
0272     0x006c0802,
0273     0x006c101a,
0274     0x006e5002,
0275     0x006e7802,
0276     0x006e801a,
0277     0x006e9022,
0278     0x006eb002,
0279     0x006ec06a,
0280     0x006ef802,
0281     0x006f901a,
0282     0x00718802,
0283     0x0071980a,
0284     0x0071a062,
0285     0x00723872,
0286     0x00758802,
0287     0x0075980a,
0288     0x0075a082,
0289     0x00764062,
0290     0x0078c012,
0291     0x0079a802,
0292     0x0079b802,
0293     0x0079c802,
0294     0x0079f01a,
0295     0x007b88d2,
0296     0x007bf80a,
0297     0x007c0042,
0298     0x007c3012,
0299     0x007c68a2,
0300     0x007cca32,
0301     0x007e3002,
0302     0x00816832,
0303     0x0081880a,
0304     0x00819052,
0305     0x0081c812,
0306     0x0081d81a,
0307     0x0081e812,
0308     0x0082b01a,
0309     0x0082c012,
0310     0x0082f022,
0311     0x00838832,
0312     0x00841002,
0313     0x0084200a,
0314     0x00842812,
0315     0x00846802,
0316     0x0084e802,
0317     0x008805f4,
0318     0x008b047c,
0319     0x008d457b,
0320     0x009ae822,
0321     0x00b89022,
0322     0x00b8a80a,
0323     0x00b99012,
0324     0x00b9a00a,
0325     0x00ba9012,
0326     0x00bb9012,
0327     0x00bda012,
0328     0x00bdb00a,
0329     0x00bdb862,
0330     0x00bdf07a,
0331     0x00be3002,
0332     0x00be381a,
0333     0x00be48a2,
0334     0x00bee802,
0335     0x00c05822,
0336     0x00c07001,
0337     0x00c07802,
0338     0x00c42812,
0339     0x00c54802,
0340     0x00c90022,
0341     0x00c9183a,
0342     0x00c93812,
0343     0x00c9482a,
0344     0x00c9801a,
0345     0x00c99002,
0346     0x00c9985a,
0347     0x00c9c822,
0348     0x00d0b812,
0349     0x00d0c81a,
0350     0x00d0d802,
0351     0x00d2a80a,
0352     0x00d2b002,
0353     0x00d2b80a,
0354     0x00d2c062,
0355     0x00d30002,
0356     0x00d31002,
0357     0x00d32872,
0358     0x00d3685a,
0359     0x00d39892,
0360     0x00d3f802,
0361     0x00d581e2,
0362     0x00d80032,
0363     0x00d8200a,
0364     0x00d9a062,
0365     0x00d9d80a,
0366     0x00d9e002,
0367     0x00d9e84a,
0368     0x00da1002,
0369     0x00da181a,
0370     0x00db5882,
0371     0x00dc0012,
0372     0x00dc100a,
0373     0x00dd080a,
0374     0x00dd1032,
0375     0x00dd301a,
0376     0x00dd4012,
0377     0x00dd500a,
0378     0x00dd5822,
0379     0x00df3002,
0380     0x00df380a,
0381     0x00df4012,
0382     0x00df502a,
0383     0x00df6802,
0384     0x00df700a,
0385     0x00df7822,
0386     0x00df901a,
0387     0x00e1207a,
0388     0x00e16072,
0389     0x00e1a01a,
0390     0x00e1b012,
0391     0x00e68022,
0392     0x00e6a0c2,
0393     0x00e7080a,
0394     0x00e71062,
0395     0x00e76802,
0396     0x00e7a002,
0397     0x00e7b80a,
0398     0x00e7c012,
0399     0x00ee03f2,
0400     0x01005801,
0401     0x01006002,
0402     0x0100680d,
0403     0x01007011,
0404     0x01014061,
0405     0x0101e003,
0406     0x01024803,
0407     0x010300f1,
0408     0x01068202,
0409     0x01091003,
0410     0x0109c803,
0411     0x010ca053,
0412     0x010d4813,
0413     0x0118d013,
0414     0x01194003,
0415     0x011c4003,
0416     0x011e7803,
0417     0x011f48a3,
0418     0x011fc023,
0419     0x01261003,
0420     0x012d5013,
0421     0x012db003,
0422     0x012e0003,
0423     0x012fd833,
0424     0x01300053,
0425     0x013038b3,
0426     0x0130a713,
0427     0x01348753,
0428     0x013840a3,
0429     0x0138a003,
0430     0x0138b003,
0431     0x0138e803,
0432     0x01390803,
0433     0x01394003,
0434     0x01399813,
0435     0x013a2003,
0436     0x013a3803,
0437     0x013a6003,
0438     0x013a7003,
0439     0x013a9823,
0440     0x013ab803,
0441     0x013b1843,
0442     0x013ca823,
0443     0x013d0803,
0444     0x013d8003,
0445     0x013df803,
0446     0x0149a013,
0447     0x01582823,
0448     0x0158d813,
0449     0x015a8003,
0450     0x015aa803,
0451     0x01677822,
0452     0x016bf802,
0453     0x016f01f2,
0454     0x01815052,
0455     0x01818003,
0456     0x0181e803,
0457     0x0184c812,
0458     0x0194b803,
0459     0x0194c803,
0460     0x05337832,
0461     0x0533a092,
0462     0x0534f012,
0463     0x05378012,
0464     0x05401002,
0465     0x05403002,
0466     0x05405802,
0467     0x0541181a,
0468     0x05412812,
0469     0x0541380a,
0470     0x05416002,
0471     0x0544001a,
0472     0x0545a0fa,
0473     0x05462012,
0474     0x05470112,
0475     0x0547f802,
0476     0x05493072,
0477     0x054a38a2,
0478     0x054a901a,
0479     0x054b01c4,
0480     0x054c0022,
0481     0x054c180a,
0482     0x054d9802,
0483     0x054da01a,
0484     0x054db032,
0485     0x054dd01a,
0486     0x054de012,
0487     0x054df02a,
0488     0x054f2802,
0489     0x05514852,
0490     0x0551781a,
0491     0x05518812,
0492     0x0551981a,
0493     0x0551a812,
0494     0x05521802,
0495     0x05526002,
0496     0x0552680a,
0497     0x0553e002,
0498     0x05558002,
0499     0x05559022,
0500     0x0555b812,
0501     0x0555f012,
0502     0x05560802,
0503     0x0557580a,
0504     0x05576012,
0505     0x0557701a,
0506     0x0557a80a,
0507     0x0557b002,
0508     0x055f181a,
0509     0x055f2802,
0510     0x055f301a,
0511     0x055f4002,
0512     0x055f481a,
0513     0x055f600a,
0514     0x055f6802,
0515     0x05600006,
0516     0x056009a7,
0517     0x0560e006,
0518     0x0560e9a7,
0519     0x0561c006,
0520     0x0561c9a7,
0521     0x0562a006,
0522     0x0562a9a7,
0523     0x05638006,
0524     0x056389a7,
0525     0x05646006,
0526     0x056469a7,
0527     0x05654006,
0528     0x056549a7,
0529     0x05662006,
0530     0x056629a7,
0531     0x05670006,
0532     0x056709a7,
0533     0x0567e006,
0534     0x0567e9a7,
0535     0x0568c006,
0536     0x0568c9a7,
0537     0x0569a006,
0538     0x0569a9a7,
0539     0x056a8006,
0540     0x056a89a7,
0541     0x056b6006,
0542     0x056b69a7,
0543     0x056c4006,
0544     0x056c49a7,
0545     0x056d2006,
0546     0x056d29a7,
0547     0x056e0006,
0548     0x056e09a7,
0549     0x056ee006,
0550     0x056ee9a7,
0551     0x056fc006,
0552     0x056fc9a7,
0553     0x0570a006,
0554     0x0570a9a7,
0555     0x05718006,
0556     0x057189a7,
0557     0x05726006,
0558     0x057269a7,
0559     0x05734006,
0560     0x057349a7,
0561     0x05742006,
0562     0x057429a7,
0563     0x05750006,
0564     0x057509a7,
0565     0x0575e006,
0566     0x0575e9a7,
0567     0x0576c006,
0568     0x0576c9a7,
0569     0x0577a006,
0570     0x0577a9a7,
0571     0x05788006,
0572     0x057889a7,
0573     0x05796006,
0574     0x057969a7,
0575     0x057a4006,
0576     0x057a49a7,
0577     0x057b2006,
0578     0x057b29a7,
0579     0x057c0006,
0580     0x057c09a7,
0581     0x057ce006,
0582     0x057ce9a7,
0583     0x057dc006,
0584     0x057dc9a7,
0585     0x057ea006,
0586     0x057ea9a7,
0587     0x057f8006,
0588     0x057f89a7,
0589     0x05806006,
0590     0x058069a7,
0591     0x05814006,
0592     0x058149a7,
0593     0x05822006,
0594     0x058229a7,
0595     0x05830006,
0596     0x058309a7,
0597     0x0583e006,
0598     0x0583e9a7,
0599     0x0584c006,
0600     0x0584c9a7,
0601     0x0585a006,
0602     0x0585a9a7,
0603     0x05868006,
0604     0x058689a7,
0605     0x05876006,
0606     0x058769a7,
0607     0x05884006,
0608     0x058849a7,
0609     0x05892006,
0610     0x058929a7,
0611     0x058a0006,
0612     0x058a09a7,
0613     0x058ae006,
0614     0x058ae9a7,
0615     0x058bc006,
0616     0x058bc9a7,
0617     0x058ca006,
0618     0x058ca9a7,
0619     0x058d8006,
0620     0x058d89a7,
0621     0x058e6006,
0622     0x058e69a7,
0623     0x058f4006,
0624     0x058f49a7,
0625     0x05902006,
0626     0x059029a7,
0627     0x05910006,
0628     0x059109a7,
0629     0x0591e006,
0630     0x0591e9a7,
0631     0x0592c006,
0632     0x0592c9a7,
0633     0x0593a006,
0634     0x0593a9a7,
0635     0x05948006,
0636     0x059489a7,
0637     0x05956006,
0638     0x059569a7,
0639     0x05964006,
0640     0x059649a7,
0641     0x05972006,
0642     0x059729a7,
0643     0x05980006,
0644     0x059809a7,
0645     0x0598e006,
0646     0x0598e9a7,
0647     0x0599c006,
0648     0x0599c9a7,
0649     0x059aa006,
0650     0x059aa9a7,
0651     0x059b8006,
0652     0x059b89a7,
0653     0x059c6006,
0654     0x059c69a7,
0655     0x059d4006,
0656     0x059d49a7,
0657     0x059e2006,
0658     0x059e29a7,
0659     0x059f0006,
0660     0x059f09a7,
0661     0x059fe006,
0662     0x059fe9a7,
0663     0x05a0c006,
0664     0x05a0c9a7,
0665     0x05a1a006,
0666     0x05a1a9a7,
0667     0x05a28006,
0668     0x05a289a7,
0669     0x05a36006,
0670     0x05a369a7,
0671     0x05a44006,
0672     0x05a449a7,
0673     0x05a52006,
0674     0x05a529a7,
0675     0x05a60006,
0676     0x05a609a7,
0677     0x05a6e006,
0678     0x05a6e9a7,
0679     0x05a7c006,
0680     0x05a7c9a7,
0681     0x05a8a006,
0682     0x05a8a9a7,
0683     0x05a98006,
0684     0x05a989a7,
0685     0x05aa6006,
0686     0x05aa69a7,
0687     0x05ab4006,
0688     0x05ab49a7,
0689     0x05ac2006,
0690     0x05ac29a7,
0691     0x05ad0006,
0692     0x05ad09a7,
0693     0x05ade006,
0694     0x05ade9a7,
0695     0x05aec006,
0696     0x05aec9a7,
0697     0x05afa006,
0698     0x05afa9a7,
0699     0x05b08006,
0700     0x05b089a7,
0701     0x05b16006,
0702     0x05b169a7,
0703     0x05b24006,
0704     0x05b249a7,
0705     0x05b32006,
0706     0x05b329a7,
0707     0x05b40006,
0708     0x05b409a7,
0709     0x05b4e006,
0710     0x05b4e9a7,
0711     0x05b5c006,
0712     0x05b5c9a7,
0713     0x05b6a006,
0714     0x05b6a9a7,
0715     0x05b78006,
0716     0x05b789a7,
0717     0x05b86006,
0718     0x05b869a7,
0719     0x05b94006,
0720     0x05b949a7,
0721     0x05ba2006,
0722     0x05ba29a7,
0723     0x05bb0006,
0724     0x05bb09a7,
0725     0x05bbe006,
0726     0x05bbe9a7,
0727     0x05bcc006,
0728     0x05bcc9a7,
0729     0x05bda006,
0730     0x05bda9a7,
0731     0x05be8006,
0732     0x05be89a7,
0733     0x05bf6006,
0734     0x05bf69a7,
0735     0x05c04006,
0736     0x05c049a7,
0737     0x05c12006,
0738     0x05c129a7,
0739     0x05c20006,
0740     0x05c209a7,
0741     0x05c2e006,
0742     0x05c2e9a7,
0743     0x05c3c006,
0744     0x05c3c9a7,
0745     0x05c4a006,
0746     0x05c4a9a7,
0747     0x05c58006,
0748     0x05c589a7,
0749     0x05c66006,
0750     0x05c669a7,
0751     0x05c74006,
0752     0x05c749a7,
0753     0x05c82006,
0754     0x05c829a7,
0755     0x05c90006,
0756     0x05c909a7,
0757     0x05c9e006,
0758     0x05c9e9a7,
0759     0x05cac006,
0760     0x05cac9a7,
0761     0x05cba006,
0762     0x05cba9a7,
0763     0x05cc8006,
0764     0x05cc89a7,
0765     0x05cd6006,
0766     0x05cd69a7,
0767     0x05ce4006,
0768     0x05ce49a7,
0769     0x05cf2006,
0770     0x05cf29a7,
0771     0x05d00006,
0772     0x05d009a7,
0773     0x05d0e006,
0774     0x05d0e9a7,
0775     0x05d1c006,
0776     0x05d1c9a7,
0777     0x05d2a006,
0778     0x05d2a9a7,
0779     0x05d38006,
0780     0x05d389a7,
0781     0x05d46006,
0782     0x05d469a7,
0783     0x05d54006,
0784     0x05d549a7,
0785     0x05d62006,
0786     0x05d629a7,
0787     0x05d70006,
0788     0x05d709a7,
0789     0x05d7e006,
0790     0x05d7e9a7,
0791     0x05d8c006,
0792     0x05d8c9a7,
0793     0x05d9a006,
0794     0x05d9a9a7,
0795     0x05da8006,
0796     0x05da89a7,
0797     0x05db6006,
0798     0x05db69a7,
0799     0x05dc4006,
0800     0x05dc49a7,
0801     0x05dd2006,
0802     0x05dd29a7,
0803     0x05de0006,
0804     0x05de09a7,
0805     0x05dee006,
0806     0x05dee9a7,
0807     0x05dfc006,
0808     0x05dfc9a7,
0809     0x05e0a006,
0810     0x05e0a9a7,
0811     0x05e18006,
0812     0x05e189a7,
0813     0x05e26006,
0814     0x05e269a7,
0815     0x05e34006,
0816     0x05e349a7,
0817     0x05e42006,
0818     0x05e429a7,
0819     0x05e50006,
0820     0x05e509a7,
0821     0x05e5e006,
0822     0x05e5e9a7,
0823     0x05e6c006,
0824     0x05e6c9a7,
0825     0x05e7a006,
0826     0x05e7a9a7,
0827     0x05e88006,
0828     0x05e889a7,
0829     0x05e96006,
0830     0x05e969a7,
0831     0x05ea4006,
0832     0x05ea49a7,
0833     0x05eb2006,
0834     0x05eb29a7,
0835     0x05ec0006,
0836     0x05ec09a7,
0837     0x05ece006,
0838     0x05ece9a7,
0839     0x05edc006,
0840     0x05edc9a7,
0841     0x05eea006,
0842     0x05eea9a7,
0843     0x05ef8006,
0844     0x05ef89a7,
0845     0x05f06006,
0846     0x05f069a7,
0847     0x05f14006,
0848     0x05f149a7,
0849     0x05f22006,
0850     0x05f229a7,
0851     0x05f30006,
0852     0x05f309a7,
0853     0x05f3e006,
0854     0x05f3e9a7,
0855     0x05f4c006,
0856     0x05f4c9a7,
0857     0x05f5a006,
0858     0x05f5a9a7,
0859     0x05f68006,
0860     0x05f689a7,
0861     0x05f76006,
0862     0x05f769a7,
0863     0x05f84006,
0864     0x05f849a7,
0865     0x05f92006,
0866     0x05f929a7,
0867     0x05fa0006,
0868     0x05fa09a7,
0869     0x05fae006,
0870     0x05fae9a7,
0871     0x05fbc006,
0872     0x05fbc9a7,
0873     0x05fca006,
0874     0x05fca9a7,
0875     0x05fd8006,
0876     0x05fd89a7,
0877     0x05fe6006,
0878     0x05fe69a7,
0879     0x05ff4006,
0880     0x05ff49a7,
0881     0x06002006,
0882     0x060029a7,
0883     0x06010006,
0884     0x060109a7,
0885     0x0601e006,
0886     0x0601e9a7,
0887     0x0602c006,
0888     0x0602c9a7,
0889     0x0603a006,
0890     0x0603a9a7,
0891     0x06048006,
0892     0x060489a7,
0893     0x06056006,
0894     0x060569a7,
0895     0x06064006,
0896     0x060649a7,
0897     0x06072006,
0898     0x060729a7,
0899     0x06080006,
0900     0x060809a7,
0901     0x0608e006,
0902     0x0608e9a7,
0903     0x0609c006,
0904     0x0609c9a7,
0905     0x060aa006,
0906     0x060aa9a7,
0907     0x060b8006,
0908     0x060b89a7,
0909     0x060c6006,
0910     0x060c69a7,
0911     0x060d4006,
0912     0x060d49a7,
0913     0x060e2006,
0914     0x060e29a7,
0915     0x060f0006,
0916     0x060f09a7,
0917     0x060fe006,
0918     0x060fe9a7,
0919     0x0610c006,
0920     0x0610c9a7,
0921     0x0611a006,
0922     0x0611a9a7,
0923     0x06128006,
0924     0x061289a7,
0925     0x06136006,
0926     0x061369a7,
0927     0x06144006,
0928     0x061449a7,
0929     0x06152006,
0930     0x061529a7,
0931     0x06160006,
0932     0x061609a7,
0933     0x0616e006,
0934     0x0616e9a7,
0935     0x0617c006,
0936     0x0617c9a7,
0937     0x0618a006,
0938     0x0618a9a7,
0939     0x06198006,
0940     0x061989a7,
0941     0x061a6006,
0942     0x061a69a7,
0943     0x061b4006,
0944     0x061b49a7,
0945     0x061c2006,
0946     0x061c29a7,
0947     0x061d0006,
0948     0x061d09a7,
0949     0x061de006,
0950     0x061de9a7,
0951     0x061ec006,
0952     0x061ec9a7,
0953     0x061fa006,
0954     0x061fa9a7,
0955     0x06208006,
0956     0x062089a7,
0957     0x06216006,
0958     0x062169a7,
0959     0x06224006,
0960     0x062249a7,
0961     0x06232006,
0962     0x062329a7,
0963     0x06240006,
0964     0x062409a7,
0965     0x0624e006,
0966     0x0624e9a7,
0967     0x0625c006,
0968     0x0625c9a7,
0969     0x0626a006,
0970     0x0626a9a7,
0971     0x06278006,
0972     0x062789a7,
0973     0x06286006,
0974     0x062869a7,
0975     0x06294006,
0976     0x062949a7,
0977     0x062a2006,
0978     0x062a29a7,
0979     0x062b0006,
0980     0x062b09a7,
0981     0x062be006,
0982     0x062be9a7,
0983     0x062cc006,
0984     0x062cc9a7,
0985     0x062da006,
0986     0x062da9a7,
0987     0x062e8006,
0988     0x062e89a7,
0989     0x062f6006,
0990     0x062f69a7,
0991     0x06304006,
0992     0x063049a7,
0993     0x06312006,
0994     0x063129a7,
0995     0x06320006,
0996     0x063209a7,
0997     0x0632e006,
0998     0x0632e9a7,
0999     0x0633c006,
1000     0x0633c9a7,
1001     0x0634a006,
1002     0x0634a9a7,
1003     0x06358006,
1004     0x063589a7,
1005     0x06366006,
1006     0x063669a7,
1007     0x06374006,
1008     0x063749a7,
1009     0x06382006,
1010     0x063829a7,
1011     0x06390006,
1012     0x063909a7,
1013     0x0639e006,
1014     0x0639e9a7,
1015     0x063ac006,
1016     0x063ac9a7,
1017     0x063ba006,
1018     0x063ba9a7,
1019     0x063c8006,
1020     0x063c89a7,
1021     0x063d6006,
1022     0x063d69a7,
1023     0x063e4006,
1024     0x063e49a7,
1025     0x063f2006,
1026     0x063f29a7,
1027     0x06400006,
1028     0x064009a7,
1029     0x0640e006,
1030     0x0640e9a7,
1031     0x0641c006,
1032     0x0641c9a7,
1033     0x0642a006,
1034     0x0642a9a7,
1035     0x06438006,
1036     0x064389a7,
1037     0x06446006,
1038     0x064469a7,
1039     0x06454006,
1040     0x064549a7,
1041     0x06462006,
1042     0x064629a7,
1043     0x06470006,
1044     0x064709a7,
1045     0x0647e006,
1046     0x0647e9a7,
1047     0x0648c006,
1048     0x0648c9a7,
1049     0x0649a006,
1050     0x0649a9a7,
1051     0x064a8006,
1052     0x064a89a7,
1053     0x064b6006,
1054     0x064b69a7,
1055     0x064c4006,
1056     0x064c49a7,
1057     0x064d2006,
1058     0x064d29a7,
1059     0x064e0006,
1060     0x064e09a7,
1061     0x064ee006,
1062     0x064ee9a7,
1063     0x064fc006,
1064     0x064fc9a7,
1065     0x0650a006,
1066     0x0650a9a7,
1067     0x06518006,
1068     0x065189a7,
1069     0x06526006,
1070     0x065269a7,
1071     0x06534006,
1072     0x065349a7,
1073     0x06542006,
1074     0x065429a7,
1075     0x06550006,
1076     0x065509a7,
1077     0x0655e006,
1078     0x0655e9a7,
1079     0x0656c006,
1080     0x0656c9a7,
1081     0x0657a006,
1082     0x0657a9a7,
1083     0x06588006,
1084     0x065889a7,
1085     0x06596006,
1086     0x065969a7,
1087     0x065a4006,
1088     0x065a49a7,
1089     0x065b2006,
1090     0x065b29a7,
1091     0x065c0006,
1092     0x065c09a7,
1093     0x065ce006,
1094     0x065ce9a7,
1095     0x065dc006,
1096     0x065dc9a7,
1097     0x065ea006,
1098     0x065ea9a7,
1099     0x065f8006,
1100     0x065f89a7,
1101     0x06606006,
1102     0x066069a7,
1103     0x06614006,
1104     0x066149a7,
1105     0x06622006,
1106     0x066229a7,
1107     0x06630006,
1108     0x066309a7,
1109     0x0663e006,
1110     0x0663e9a7,
1111     0x0664c006,
1112     0x0664c9a7,
1113     0x0665a006,
1114     0x0665a9a7,
1115     0x06668006,
1116     0x066689a7,
1117     0x06676006,
1118     0x066769a7,
1119     0x06684006,
1120     0x066849a7,
1121     0x06692006,
1122     0x066929a7,
1123     0x066a0006,
1124     0x066a09a7,
1125     0x066ae006,
1126     0x066ae9a7,
1127     0x066bc006,
1128     0x066bc9a7,
1129     0x066ca006,
1130     0x066ca9a7,
1131     0x066d8006,
1132     0x066d89a7,
1133     0x066e6006,
1134     0x066e69a7,
1135     0x066f4006,
1136     0x066f49a7,
1137     0x06702006,
1138     0x067029a7,
1139     0x06710006,
1140     0x067109a7,
1141     0x0671e006,
1142     0x0671e9a7,
1143     0x0672c006,
1144     0x0672c9a7,
1145     0x0673a006,
1146     0x0673a9a7,
1147     0x06748006,
1148     0x067489a7,
1149     0x06756006,
1150     0x067569a7,
1151     0x06764006,
1152     0x067649a7,
1153     0x06772006,
1154     0x067729a7,
1155     0x06780006,
1156     0x067809a7,
1157     0x0678e006,
1158     0x0678e9a7,
1159     0x0679c006,
1160     0x0679c9a7,
1161     0x067aa006,
1162     0x067aa9a7,
1163     0x067b8006,
1164     0x067b89a7,
1165     0x067c6006,
1166     0x067c69a7,
1167     0x067d4006,
1168     0x067d49a7,
1169     0x067e2006,
1170     0x067e29a7,
1171     0x067f0006,
1172     0x067f09a7,
1173     0x067fe006,
1174     0x067fe9a7,
1175     0x0680c006,
1176     0x0680c9a7,
1177     0x0681a006,
1178     0x0681a9a7,
1179     0x06828006,
1180     0x068289a7,
1181     0x06836006,
1182     0x068369a7,
1183     0x06844006,
1184     0x068449a7,
1185     0x06852006,
1186     0x068529a7,
1187     0x06860006,
1188     0x068609a7,
1189     0x0686e006,
1190     0x0686e9a7,
1191     0x0687c006,
1192     0x0687c9a7,
1193     0x0688a006,
1194     0x0688a9a7,
1195     0x06898006,
1196     0x068989a7,
1197     0x068a6006,
1198     0x068a69a7,
1199     0x068b4006,
1200     0x068b49a7,
1201     0x068c2006,
1202     0x068c29a7,
1203     0x068d0006,
1204     0x068d09a7,
1205     0x068de006,
1206     0x068de9a7,
1207     0x068ec006,
1208     0x068ec9a7,
1209     0x068fa006,
1210     0x068fa9a7,
1211     0x06908006,
1212     0x069089a7,
1213     0x06916006,
1214     0x069169a7,
1215     0x06924006,
1216     0x069249a7,
1217     0x06932006,
1218     0x069329a7,
1219     0x06940006,
1220     0x069409a7,
1221     0x0694e006,
1222     0x0694e9a7,
1223     0x0695c006,
1224     0x0695c9a7,
1225     0x0696a006,
1226     0x0696a9a7,
1227     0x06978006,
1228     0x069789a7,
1229     0x06986006,
1230     0x069869a7,
1231     0x06994006,
1232     0x069949a7,
1233     0x069a2006,
1234     0x069a29a7,
1235     0x069b0006,
1236     0x069b09a7,
1237     0x069be006,
1238     0x069be9a7,
1239     0x069cc006,
1240     0x069cc9a7,
1241     0x069da006,
1242     0x069da9a7,
1243     0x069e8006,
1244     0x069e89a7,
1245     0x069f6006,
1246     0x069f69a7,
1247     0x06a04006,
1248     0x06a049a7,
1249     0x06a12006,
1250     0x06a129a7,
1251     0x06a20006,
1252     0x06a209a7,
1253     0x06a2e006,
1254     0x06a2e9a7,
1255     0x06a3c006,
1256     0x06a3c9a7,
1257     0x06a4a006,
1258     0x06a4a9a7,
1259     0x06a58006,
1260     0x06a589a7,
1261     0x06a66006,
1262     0x06a669a7,
1263     0x06a74006,
1264     0x06a749a7,
1265     0x06a82006,
1266     0x06a829a7,
1267     0x06a90006,
1268     0x06a909a7,
1269     0x06a9e006,
1270     0x06a9e9a7,
1271     0x06aac006,
1272     0x06aac9a7,
1273     0x06aba006,
1274     0x06aba9a7,
1275     0x06ac8006,
1276     0x06ac89a7,
1277     0x06ad6006,
1278     0x06ad69a7,
1279     0x06ae4006,
1280     0x06ae49a7,
1281     0x06af2006,
1282     0x06af29a7,
1283     0x06b00006,
1284     0x06b009a7,
1285     0x06b0e006,
1286     0x06b0e9a7,
1287     0x06b1c006,
1288     0x06b1c9a7,
1289     0x06b2a006,
1290     0x06b2a9a7,
1291     0x06b38006,
1292     0x06b389a7,
1293     0x06b46006,
1294     0x06b469a7,
1295     0x06b54006,
1296     0x06b549a7,
1297     0x06b62006,
1298     0x06b629a7,
1299     0x06b70006,
1300     0x06b709a7,
1301     0x06b7e006,
1302     0x06b7e9a7,
1303     0x06b8c006,
1304     0x06b8c9a7,
1305     0x06b9a006,
1306     0x06b9a9a7,
1307     0x06ba8006,
1308     0x06ba89a7,
1309     0x06bb6006,
1310     0x06bb69a7,
1311     0x06bc4006,
1312     0x06bc49a7,
1313     0x06bd816c,
1314     0x06be5b0b,
1315     0x07d8f002,
1316     0x07f000f2,
1317     0x07f100f2,
1318     0x07f7f801,
1319     0x07fcf012,
1320     0x07ff80b1,
1321     0x080fe802,
1322     0x08170002,
1323     0x081bb042,
1324     0x08500822,
1325     0x08502812,
1326     0x08506032,
1327     0x0851c022,
1328     0x0851f802,
1329     0x08572812,
1330     0x08692032,
1331     0x08755812,
1332     0x0877e822,
1333     0x087a30a2,
1334     0x087c1032,
1335     0x0880000a,
1336     0x08800802,
1337     0x0880100a,
1338     0x0881c0e2,
1339     0x08838002,
1340     0x08839812,
1341     0x0883f822,
1342     0x0884100a,
1343     0x0885802a,
1344     0x08859832,
1345     0x0885b81a,
1346     0x0885c812,
1347     0x0885e808,
1348     0x08861002,
1349     0x08866808,
1350     0x08880022,
1351     0x08893842,
1352     0x0889600a,
1353     0x08896872,
1354     0x088a281a,
1355     0x088b9802,
1356     0x088c0012,
1357     0x088c100a,
1358     0x088d982a,
1359     0x088db082,
1360     0x088df81a,
1361     0x088e1018,
1362     0x088e4832,
1363     0x088e700a,
1364     0x088e7802,
1365     0x0891602a,
1366     0x08917822,
1367     0x0891901a,
1368     0x0891a002,
1369     0x0891a80a,
1370     0x0891b012,
1371     0x0891f002,
1372     0x08920802,
1373     0x0896f802,
1374     0x0897002a,
1375     0x08971872,
1376     0x08980012,
1377     0x0898101a,
1378     0x0899d812,
1379     0x0899f002,
1380     0x0899f80a,
1381     0x089a0002,
1382     0x089a083a,
1383     0x089a381a,
1384     0x089a582a,
1385     0x089ab802,
1386     0x089b101a,
1387     0x089b3062,
1388     0x089b8042,
1389     0x08a1a82a,
1390     0x08a1c072,
1391     0x08a2001a,
1392     0x08a21022,
1393     0x08a2280a,
1394     0x08a23002,
1395     0x08a2f002,
1396     0x08a58002,
1397     0x08a5881a,
1398     0x08a59852,
1399     0x08a5c80a,
1400     0x08a5d002,
1401     0x08a5d81a,
1402     0x08a5e802,
1403     0x08a5f00a,
1404     0x08a5f812,
1405     0x08a6080a,
1406     0x08a61012,
1407     0x08ad7802,
1408     0x08ad801a,
1409     0x08ad9032,
1410     0x08adc03a,
1411     0x08ade012,
1412     0x08adf00a,
1413     0x08adf812,
1414     0x08aee012,
1415     0x08b1802a,
1416     0x08b19872,
1417     0x08b1d81a,
1418     0x08b1e802,
1419     0x08b1f00a,
1420     0x08b1f812,
1421     0x08b55802,
1422     0x08b5600a,
1423     0x08b56802,
1424     0x08b5701a,
1425     0x08b58052,
1426     0x08b5b00a,
1427     0x08b5b802,
1428     0x08b8e822,
1429     0x08b91032,
1430     0x08b9300a,
1431     0x08b93842,
1432     0x08c1602a,
1433     0x08c17882,
1434     0x08c1c00a,
1435     0x08c1c812,
1436     0x08c98002,
1437     0x08c9884a,
1438     0x08c9b81a,
1439     0x08c9d812,
1440     0x08c9e80a,
1441     0x08c9f002,
1442     0x08c9f808,
1443     0x08ca000a,
1444     0x08ca0808,
1445     0x08ca100a,
1446     0x08ca1802,
1447     0x08ce882a,
1448     0x08cea032,
1449     0x08ced012,
1450     0x08cee03a,
1451     0x08cf0002,
1452     0x08cf200a,
1453     0x08d00892,
1454     0x08d19852,
1455     0x08d1c80a,
1456     0x08d1d008,
1457     0x08d1d832,
1458     0x08d23802,
1459     0x08d28852,
1460     0x08d2b81a,
1461     0x08d2c822,
1462     0x08d42058,
1463     0x08d450c2,
1464     0x08d4b80a,
1465     0x08d4c012,
1466     0x08e1780a,
1467     0x08e18062,
1468     0x08e1c052,
1469     0x08e1f00a,
1470     0x08e1f802,
1471     0x08e49152,
1472     0x08e5480a,
1473     0x08e55062,
1474     0x08e5880a,
1475     0x08e59012,
1476     0x08e5a00a,
1477     0x08e5a812,
1478     0x08e98852,
1479     0x08e9d002,
1480     0x08e9e012,
1481     0x08e9f862,
1482     0x08ea3008,
1483     0x08ea3802,
1484     0x08ec504a,
1485     0x08ec8012,
1486     0x08ec981a,
1487     0x08eca802,
1488     0x08ecb00a,
1489     0x08ecb802,
1490     0x08f79812,
1491     0x08f7a81a,
1492     0x08f80012,
1493     0x08f81008,
1494     0x08f8180a,
1495     0x08f9a01a,
1496     0x08f9b042,
1497     0x08f9f01a,
1498     0x08fa0002,
1499     0x08fa080a,
1500     0x08fa1002,
1501     0x09a180f1,
1502     0x09a20002,
1503     0x09a238e2,
1504     0x0b578042,
1505     0x0b598062,
1506     0x0b7a7802,
1507     0x0b7a8b6a,
1508     0x0b7c7832,
1509     0x0b7f2002,
1510     0x0b7f801a,
1511     0x0de4e812,
1512     0x0de50031,
1513     0x0e7802d2,
1514     0x0e798162,
1515     0x0e8b2802,
1516     0x0e8b300a,
1517     0x0e8b3822,
1518     0x0e8b680a,
1519     0x0e8b7042,
1520     0x0e8b9871,
1521     0x0e8bd872,
1522     0x0e8c2862,
1523     0x0e8d5032,
1524     0x0e921022,
1525     0x0ed00362,
1526     0x0ed1db12,
1527     0x0ed3a802,
1528     0x0ed42002,
1529     0x0ed4d842,
1530     0x0ed508e2,
1531     0x0f000062,
1532     0x0f004102,
1533     0x0f00d862,
1534     0x0f011812,
1535     0x0f013042,
1536     0x0f047802,
1537     0x0f098062,
1538     0x0f157002,
1539     0x0f176032,
1540     0x0f276032,
1541     0x0f468062,
1542     0x0f4a2062,
1543     0x0f8007f3,
1544     0x0f8407f3,
1545     0x0f886823,
1546     0x0f897803,
1547     0x0f8b6053,
1548     0x0f8bf013,
1549     0x0f8c7003,
1550     0x0f8c8893,
1551     0x0f8d6b83,
1552     0x0f8f3199,
1553     0x0f9008e3,
1554     0x0f90d003,
1555     0x0f917803,
1556     0x0f919083,
1557     0x0f91e033,
1558     0x0f924ff3,
1559     0x0f964ff3,
1560     0x0f9a4ff3,
1561     0x0f9e4b13,
1562     0x0f9fd842,
1563     0x0fa007f3,
1564     0x0fa407f3,
1565     0x0fa803d3,
1566     0x0faa37f3,
1567     0x0fae37f3,
1568     0x0fb23093,
1569     0x0fb407f3,
1570     0x0fbba0b3,
1571     0x0fbeaaa3,
1572     0x0fc06033,
1573     0x0fc24073,
1574     0x0fc2d053,
1575     0x0fc44073,
1576     0x0fc57513,
1577     0x0fc862e3,
1578     0x0fc9e093,
1579     0x0fca3ff3,
1580     0x0fce3ff3,
1581     0x0fd23ff3,
1582     0x0fd63b83,
1583     0x0fe007f3,
1584     0x0fe407f3,
1585     0x0fe807f3,
1586     0x0fec07f3,
1587     0x0ff007f3,
1588     0x0ff407f3,
1589     0x0ff807f3,
1590     0x0ffc07d3,
1591     0x700001f1,
1592     0x700105f2,
1593     0x700407f1,
1594     0x700807f2,
1595     0x700c06f2,
1596     0x700f87f1,
1597     0x701387f1,
1598     0x701787f1,
1599     0x701b87f1,
1600     0x701f87f1,
1601     0x702387f1,
1602     0x702787f1,
1603     0x702b87f1,
1604     0x702f87f1,
1605     0x703387f1,
1606     0x703787f1,
1607     0x703b87f1,
1608     0x703f87f1,
1609     0x704387f1,
1610     0x704787f1,
1611     0x704b87f1,
1612     0x704f87f1,
1613     0x705387f1,
1614     0x705787f1,
1615     0x705b87f1,
1616     0x705f87f1,
1617     0x706387f1,
1618     0x706787f1,
1619     0x706b87f1,
1620     0x706f87f1,
1621     0x707387f1,
1622     0x707787f1,
1623     0x707b87f1,
1624     0x707f80f1};
1625 // clang-format on
1626 
1627 /// Returns the extended grapheme cluster bondary property of a code point.
1628 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __property __get_property(const char32_t __code_point) noexcept {
1629   // The algorithm searches for the upper bound of the range and, when found,
1630   // steps back one entry. This algorithm is used since the code point can be
1631   // anywhere in the range. After a lower bound is found the next step is to
1632   // compare whether the code unit is indeed in the range.
1633   //
1634   // Since the entry contains a code unit, size, and property the code point
1635   // being sought needs to be adjusted. Just shifting the code point to the
1636   // proper position doesn't work; suppose an entry has property 0, size 1,
1637   // and lower bound 3. This results in the entry 0x1810.
1638   // When searching for code point 3 it will search for 0x1800, find 0x1810
1639   // and moves to the previous entry. Thus the lower bound value will never
1640   // be found.
1641   // The simple solution is to set the bits belonging to the property and
1642   // size. Then the upper bound for code point 3 will return the entry after
1643   // 0x1810. After moving to the previous entry the algorithm arrives at the
1644   // correct entry.
1645   ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries;
1646   if (__i == 0)
1647     return __property::__none;
1648 
1649   --__i;
1650   uint32_t __upper_bound = (__entries[__i] >> 11) + ((__entries[__i] >> 4) & 0x7f);
1651   if (__code_point <= __upper_bound)
1652     return static_cast<__property>(__entries[__i] & 0xf);
1653 
1654   return __property::__none;
1655 }
1656 
1657 } // namespace __extended_grapheme_custer_property_boundary
1658 
1659 #endif //_LIBCPP_STD_VER >= 20
1660 
1661 _LIBCPP_END_NAMESPACE_STD
1662 
1663 #endif // _LIBCPP___CXX03___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H