Coverage Report

Created: 2025-10-13 06:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/harfbuzz/src/hb-ot-shaper-use-table.hh
Line
Count
Source
1
/* == Start of generated table == */
2
/*
3
 * The following table is generated by running:
4
 *
5
 *   ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
6
 *
7
 * on files with these headers:
8
 *
9
 * # IndicSyllabicCategory-17.0.0.txt
10
 * # Date: 2025-08-01, 04:02:23 GMT
11
 * # IndicPositionalCategory-17.0.0.txt
12
 * # Date: 2025-07-29, 13:35:52 GMT
13
 * # ArabicShaping-17.0.0.txt
14
 * # Date: 2025-08-14
15
 * # DerivedCoreProperties-17.0.0.txt
16
 * # Date: 2025-07-30, 23:55:08 GMT
17
 * # Blocks-17.0.0.txt
18
 * # Date: 2025-08-01
19
 * # Scripts-17.0.0.txt
20
 * # Date: 2025-07-24, 13:28:55 GMT
21
 * # Override values For Indic_Syllabic_Category
22
 * # Not derivable
23
 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
24
 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
25
 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-24
26
 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
27
 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-25
28
 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
29
 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
30
 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
31
 * # Override values For Indic_Positional_Category
32
 * # Not derivable
33
 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
34
 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
35
 * # Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
36
 * # Updated for L2/19-083    by Andrew Glass 2019-05-06
37
 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-30
38
 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
39
 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-28
40
 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
41
 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
42
 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
43
 * UnicodeData.txt does not have a header.
44
 */
45
46
#ifndef HB_OT_SHAPER_USE_TABLE_HH
47
#define HB_OT_SHAPER_USE_TABLE_HH
48
49
#include "hb.hh"
50
51
#include "hb-ot-shaper-use-machine.hh"
52
53
#pragma GCC diagnostic push
54
#pragma GCC diagnostic ignored "-Wunused-macros"
55
#define B USE(B)  /* BASE */
56
#define CGJ USE(CGJ)  /* CGJ */
57
#define CS  USE(CS) /* CONS_WITH_STACKER */
58
#define G USE(G)  /* HIEROGLYPH */
59
#define GB  USE(GB) /* BASE_OTHER */
60
#define H USE(H)  /* HALANT */
61
#define HM  USE(HM) /* HIEROGLYPH_MOD */
62
#define HN  USE(HN) /* HALANT_NUM */
63
#define HR  USE(HR) /* HIEROGLYPH_MIRROR */
64
#define HVM USE(HVM)  /* HALANT_OR_VOWEL_MODIFIER */
65
#define IS  USE(IS) /* INVISIBLE_STACKER */
66
#define J USE(J)  /* HIEROGLYPH_JOINER */
67
#define N USE(N)  /* BASE_NUM */
68
0
#define O USE(O)  /* OTHER */
69
#define R USE(R)  /* REPHA */
70
#define RK  USE(RK) /* REORDERING_KILLER */
71
#define SB  USE(SB) /* HIEROGLYPH_SEGMENT_BEGIN */
72
#define SE  USE(SE) /* HIEROGLYPH_SEGMENT_END */
73
#define SUB USE(SUB)  /* CONS_SUB */
74
#define Sk  USE(Sk) /* SAKOT */
75
#define WJ  USE(WJ) /* Word_Joiner */
76
#define ZWNJ  USE(ZWNJ) /* ZWNJ */
77
#define CMAbv USE(CMAbv)
78
#define CMBlw USE(CMBlw)
79
#define FAbv  USE(FAbv)
80
#define FBlw  USE(FBlw)
81
#define FPst  USE(FPst)
82
#define FMAbv USE(FMAbv)
83
#define FMBlw USE(FMBlw)
84
#define FMPst USE(FMPst)
85
#define MAbv  USE(MAbv)
86
#define MBlw  USE(MBlw)
87
#define MPst  USE(MPst)
88
#define MPre  USE(MPre)
89
#define SMAbv USE(SMAbv)
90
#define SMBlw USE(SMBlw)
91
#define VAbv  USE(VAbv)
92
#define VBlw  USE(VBlw)
93
#define VPst  USE(VPst)
94
#define VPre  USE(VPre)
95
#define VMAbv USE(VMAbv)
96
#define VMBlw USE(VMBlw)
97
#define VMPst USE(VMPst)
98
#define VMPre USE(VMPre)
99
#pragma GCC diagnostic pop
100
101
102
#ifndef HB_OPTIMIZE_SIZE
103
104
#include <stdint.h>
105
106
static const uint8_t hb_use_u8[3343]=
107
{
108
     16,   50,   51,   51,   51,   52,   51,   83,  118,  131,   57,   58,   59,  195,  211,   62,
109
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
110
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
111
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
112
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
113
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
114
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
115
     15,    0,    1,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    4,    2,    2,
116
      5,    6,    2,    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,    2,    2,   17,
117
     18,   19,   20,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   21,
118
     22,   23,   24,   25,   26,   27,   28,   29,   30,   31,   32,    2,   33,    2,    2,    2,
119
      2,   34,   35,    2,    2,    2,    2,    2,    2,    2,    2,    2,   36,    2,    2,    2,
120
     37,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   38,    2,   39,    2,    2,
121
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
122
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
123
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
124
      2,   40,   41,   42,   43,   44,   45,    2,   46,    2,    2,    2,    2,    2,    2,    2,
125
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
126
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   47,   48,    2,
127
     49,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   50,   51,    2,    2,    2,
128
      2,    2,    2,    2,    2,   52,   53,    2,   54,    2,    2,   55,   56,    2,   57,   58,
129
     59,   60,   61,   62,   63,   64,   65,   66,   67,   68,   69,    2,   70,   71,   72,   73,
130
      2,   74,    2,   75,   76,   77,   78,   79,    2,   80,   81,   82,   83,    2,   84,   85,
131
      2,   86,   86,   86,   86,   86,   86,   86,   86,   87,   86,   86,   86,   86,   86,   86,
132
     86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
133
     86,   86,   86,   86,   86,   86,   86,   86,   88,    2,    2,    2,    2,    2,    2,    2,
134
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
135
      2,    2,    2,   89,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
136
      2,    2,    2,    2,    2,    2,   90,   91,    2,    2,    2,   92,    2,    2,    2,   93,
137
     94,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
138
      2,    2,    2,    2,    2,    2,    2,   95,   95,   95,   96,    2,    2,    2,    2,    2,
139
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
140
      2,    2,    2,    2,    2,    2,    2,    2,    2,   97,   98,    2,    2,    2,    2,    2,
141
      2,    2,    2,   99,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
142
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
143
      2,    2,    2,  100,    2,    2,  101,    2,    2,    2,  102,    2,  103,    2,    2,    2,
144
      2,    2,    2,  104,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
145
      2,  105,  105,  106,  107,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
146
    105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
147
    105,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
148
      0,    2,    2,    2,    2,    2,    0,    0,    0,    0,    0,    0,    0,    0,    3,    4,
149
      0,    5,    0,    0,    0,    0,    0,    6,    0,    0,    7,    0,    0,    0,    0,    0,
150
      0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
151
      8,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
152
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   10,   11,
153
     11,   11,   11,    0,    0,    0,    9,   12,    0,    2,    2,    2,    2,   13,   14,    0,
154
      0,   11,   15,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   16,   17,
155
     18,   19,   20,   21,   22,   16,   23,   24,   25,   12,   26,   27,   20,    2,    2,    2,
156
      2,    2,   20,    0,    2,    2,    2,    2,    2,    0,    2,    2,    2,    2,    2,    2,
157
      2,   28,   29,   30,    2,    2,    2,    9,   30,    9,   30,    2,    2,    2,    2,    2,
158
      2,    2,    2,    2,    2,    9,    2,    2,    2,    9,    9,    0,    2,    2,    0,   17,
159
     18,   19,   20,   31,   32,   33,   32,   34,    0,    0,    0,    0,   35,    0,    0,    2,
160
     30,    2,    0,    0,    0,    0,    0,    9,   36,   12,   15,   30,    2,    2,    9,    0,
161
     30,    9,    2,   30,    9,    2,    0,   37,   18,   19,   31,    0,   27,   38,   27,   39,
162
      0,   40,    0,    0,    0,   30,    2,    9,    9,    0,    0,    0,    2,    2,    2,    2,
163
      2,   41,   42,   43,    0,    0,    0,    0,    0,   12,   15,   30,    2,    2,    2,    2,
164
     30,    2,   30,    2,    2,    2,    2,    2,    2,    9,    2,   30,    2,    2,    0,   17,
165
     18,   19,   20,   21,   27,   22,   35,   24,    0,    0,    0,    0,    0,   30,   41,   41,
166
     44,   12,   29,   30,    2,    2,    2,    9,   30,    9,    2,   30,    2,    2,    0,   17,
167
     45,    0,    0,   27,   22,    0,    0,    2,   30,   30,    0,    0,    0,    0,    0,    0,
168
      0,    0,   46,   30,    2,    2,    9,    0,    2,    9,    2,    2,    0,   30,    9,    9,
169
      2,    0,   30,    9,    0,    2,    9,    0,    2,    2,    2,    2,    2,    2,    0,    0,
170
     23,   16,   47,    0,   48,   33,   48,   34,    0,    0,    0,    0,   35,    0,    0,    0,
171
      0,   15,   29,   49,    2,    2,    2,    9,    2,    9,    2,    2,    2,    2,    2,    2,
172
      2,    2,    2,    2,    2,    2,    0,   17,   22,   16,   23,   47,   22,   38,   22,   39,
173
      0,    0,    0,   27,   31,    2,    9,    0,    0,   10,   29,   30,    2,    2,    2,    9,
174
      2,    2,    2,   30,    2,    2,    0,   17,   45,    0,    0,   35,   47,    0,    0,    0,
175
      9,   50,   51,    0,    0,    0,    0,    0,    0,   11,   29,    2,    2,    2,    2,    9,
176
      2,    2,    2,    2,    2,    2,   52,   53,   23,   19,   20,   31,   48,   33,   48,   34,
177
     54,    0,    0,    0,   35,    0,    0,    0,   30,   12,   29,   30,    2,    2,    2,    2,
178
      2,    2,    2,    2,    9,    0,    2,    2,    2,    2,   30,    2,    2,    2,    2,   30,
179
      0,    2,    2,    2,    9,    0,   55,    0,   35,   23,   22,   31,   31,   18,   48,   48,
180
     25,    0,   23,    0,    0,    0,    0,    0,    0,    2,    0,    2,    9,    0,    0,    0,
181
      0,    0,    0,    0,    0,   20,    0,    0,    0,    2,    2,   56,   56,   57,    0,    0,
182
     18,    2,    2,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,    2,    2,    9,
183
      0,   58,   21,   59,   22,   22,   20,   20,   46,   21,   11,   31,   11,    2,    2,   60,
184
     61,   61,   61,   61,   61,   62,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
185
     61,   61,   61,   61,   61,   61,   61,   63,    0,    0,    0,    0,   64,    0,    0,    0,
186
      0,    2,    2,    2,    2,    2,   65,   45,   59,   66,   22,   22,   67,   68,   69,   70,
187
     71,    2,    2,    2,    2,    2,    1,    0,    5,    2,    2,    2,   23,   20,    2,    2,
188
     72,   71,   73,   74,   65,   73,   29,   29,    2,   52,   22,   53,    2,    2,    2,    2,
189
      2,    2,   75,   76,   77,   29,   29,   78,   79,    2,    2,    2,    2,    2,   29,   45,
190
      0,    2,   59,   80,    0,    0,    0,    0,   30,    2,   59,   47,    0,    0,    0,    0,
191
      0,    2,   59,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    9,
192
      2,    9,   59,    0,    0,    0,    0,    0,    0,    2,    2,   81,   45,   22,   59,   20,
193
     48,   48,   48,   48,   15,   82,   83,   84,   85,   86,   87,    0,    0,    0,    0,   88,
194
      0,    9,    0,    0,   30,    0,   89,   81,   90,    2,    2,    2,    2,    9,    0,    0,
195
      0,   42,   42,   91,   92,    2,    2,    2,    2,    2,    2,    2,    2,   13,    9,    0,
196
      0,    2,    2,    2,    2,    2,    2,    2,    9,   22,   80,   45,   22,   93,   61,    0,
197
      0,   94,   95,   94,   94,   96,   97,    0,    0,    2,    2,    2,    2,    2,    2,    2,
198
      0,    2,    2,    9,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    0,
199
      0,    2,    2,    2,    2,   29,    0,    0,    0,    2,    2,    2,    2,    2,    9,    0,
200
      0,    2,    2,    2,   52,   98,   45,    0,    0,    2,    2,   99,  100,  101,  102,   61,
201
     63,  103,   16,   45,   22,   59,   21,   80,   48,   48,   76,   11,   11,   11,  104,   46,
202
     40,   11,  105,   74,    2,    2,    2,    2,    2,    2,    2,  106,   22,   20,   20,   22,
203
     48,   48,   22,  107,    2,    2,    2,    9,    0,    0,    0,    0,    0,    0,  108,  109,
204
    109,  109,  109,    0,    0,    0,    0,    0,    0,  105,   74,    2,    2,    2,    2,    2,
205
      2,   60,   61,   59,   25,   22,  110,   61,    2,    2,    2,    2,  106,   22,   23,   45,
206
     45,  101,  111,    0,    0,    0,    0,    0,    0,    2,    2,   61,   18,   48,   23,  112,
207
    101,  101,  101,  113,  114,    0,    0,    0,    0,    2,    2,    2,    2,    2,    0,   30,
208
      2,   11,   46,  115,  115,  115,   11,  115,  115,   15,  115,  115,  115,   26,    0,   40,
209
      0,    0,    0,  116,   51,   11,    5,    0,    0,    0,    0,    0,    0,    0,  117,    0,
210
      0,    0,    0,    0,    0,    0,    6,  118,  119,   42,   42,    5,    0,    0,    0,    0,
211
      0,    0,    0,    0,    0,    0,  119,  119,  120,  119,  119,  119,  119,  119,  119,  119,
212
    119,    0,    0,  121,    0,    0,    0,    0,    0,    0,    7,  121,    0,    0,    0,    0,
213
      0,   46,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
214
      0,    0,    0,    0,  122,  122,    0,    0,    0,    2,    2,    2,    2,    0,    0,    0,
215
     30,    0,    0,    0,    0,    0,    0,    0,  123,    0,  122,  122,    0,    0,    0,    0,
216
      0,    2,   53,    2,  107,    2,   10,    2,    2,    2,   65,   19,   16,    0,    0,   31,
217
      0,    2,    2,    0,    0,    0,    0,    0,    0,   29,    2,    2,    2,    2,    2,    2,
218
      2,    2,    2,  124,   23,   23,   23,   23,   23,   23,   23,  125,    0,    0,    0,    0,
219
      0,   11,   11,   11,   11,   11,   11,   11,   11,   11,    2,    0,    0,    0,    0,    0,
220
     52,    2,    2,    2,   22,   22,  126,  115,    0,    2,    2,    2,  127,   20,   59,   20,
221
    112,  101,  128,    0,    0,    0,    0,    0,    0,   11,  129,    2,    2,    2,    2,    2,
222
      2,    2,  130,   23,   22,   20,   48,  131,  132,  133,    0,    0,    0,    0,    0,    0,
223
      0,    2,    2,   52,   30,    2,    2,    2,    2,    2,    2,    2,    2,   10,   22,   59,
224
     98,   76,  134,  135,  136,    0,    0,    0,    0,    2,  137,    2,    2,    2,    2,  138,
225
      0,   30,    2,   42,    5,    0,   79,   15,    2,  139,   20,   53,  127,  139,    2,    2,
226
    140,   10,    9,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,  141,   21,
227
     25,    0,    0,  142,  143,    0,    0,    0,    0,    2,   65,   45,   23,   80,   47,  144,
228
      0,   81,   81,   81,   81,   81,   81,   81,   81,    0,    0,    0,    0,    0,    0,    0,
229
      6,  119,  119,  119,  119,  120,    0,    0,    0,    2,    2,    2,    2,    2,    9,    2,
230
      2,    2,    9,    2,   30,    2,    2,    2,    2,    2,   30,    2,    2,    2,   30,    9,
231
      0,  127,   20,   27,   31,    0,    0,  145,  146,    2,    2,   30,    2,   30,    2,    2,
232
      2,    2,    2,    2,    0,   14,   37,    0,  147,    2,    2,   13,   37,    0,   30,    2,
233
      2,    2,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   30,    2,    2,
234
      9,    2,    2,   11,   41,    0,    0,    0,    0,    2,    2,    2,    0,   27,   22,   22,
235
     30,    2,    2,    2,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,   27,   38,
236
      0,    2,    2,    2,  115,  115,  115,  115,  115,  148,    2,    9,    0,    0,    0,    0,
237
      0,    2,   14,   14,    0,    0,    0,    0,    0,    9,    2,    2,    9,    2,    2,    2,
238
      2,   30,    2,    9,    0,   30,    2,    0,    0,  149,  150,  151,    2,    2,    2,    2,
239
      2,    2,    2,    2,    2,   22,   22,   20,   20,   20,   22,   22,  133,    0,    0,    0,
240
      0,    0,  152,  152,  152,  152,  152,  152,  152,  152,  152,  152,    2,    2,    2,    2,
241
      2,   53,   52,   53,    0,    0,    0,    0,  153,   11,   74,    2,    2,    2,    2,    2,
242
      2,   18,   19,   21,   16,   24,   37,    0,    0,    0,   31,    0,    0,    0,    0,    0,
243
      0,   11,   49,    2,    2,    2,    2,    2,    2,    2,    2,    2,  127,   20,   22,  154,
244
     22,   21,  155,  156,    2,    2,    2,    2,    2,    0,    0,   65,  157,    0,    0,    0,
245
      0,    2,   13,    0,    0,    0,    0,    0,    0,    2,   65,   25,   20,   20,   20,   22,
246
     22,  107,  158,    0,    0,   56,  159,   31,  160,   30,    2,    2,    2,    2,    2,    2,
247
      2,    2,    2,    2,    2,    2,    2,   23,   19,   22,   22,  161,   44,    0,    0,    0,
248
     49,  127,    0,    0,    0,    0,    0,    0,    0,    2,    2,    2,    9,    9,    2,    2,
249
     30,    2,    2,    2,    2,    2,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,
250
     10,   18,   19,   21,   22,  162,   31,    0,    0,   11,   11,   30,    2,    2,    2,    9,
251
     30,    9,    2,   30,    2,    2,   58,   17,   23,   16,   23,   47,   32,   33,   32,   34,
252
      0,    0,    0,    0,   35,    0,    0,    0,    2,    2,   23,    0,   11,   11,   11,   46,
253
      0,   11,   11,   46,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,   30,    0,
254
      9,    2,    2,    2,   30,   45,   59,   20,   20,   31,   33,   32,   32,   25,  163,   29,
255
    164,  165,   37,    0,    0,    0,    0,    0,    0,   12,   26,    0,    0,    0,    0,    0,
256
      0,    2,    2,   65,   25,   20,   20,   20,   22,   23,  125,   15,   17,    0,    0,    0,
257
      0,    2,    2,    2,    2,    2,    0,    0,  166,  167,    0,    0,    0,    0,    0,    0,
258
      0,   18,   19,   20,   20,   66,   98,   25,  160,   11,  168,    9,    0,    0,    0,    0,
259
      0,    2,    2,    2,    2,    2,    2,    2,   65,   25,   20,   20,    0,   48,   48,   11,
260
    169,   37,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,   20,
261
      0,   23,   19,   20,   20,   21,   16,   82,  169,   38,    0,    0,    0,    0,    0,    0,
262
      0,    2,    2,    2,    2,    2,   10,  170,   25,   20,   22,   22,  168,    9,    0,    0,
263
      0,    2,    2,    2,    2,    2,    9,   43,  135,   23,   22,   20,   76,   21,   22,    0,
264
      0,    2,    2,    2,    9,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,   18,
265
     19,   20,   21,   22,  104,  169,   37,    0,    0,    2,    2,    2,    9,   30,    0,    2,
266
      2,    2,    2,   30,    9,    2,    2,    2,    2,   23,   23,   18,   32,   33,   12,  171,
267
    165,  172,  173,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    0,    2,    2,
268
      2,   65,   25,   20,   20,    0,   22,   23,   29,  107,    0,   33,    0,    0,    0,    0,
269
      0,   52,   20,   22,   22,   22,  139,    2,    2,    2,  174,  140,   11,   15,  175,   61,
270
    176,    0,    0,    1,  147,    0,    0,    0,    0,   52,   20,   22,   16,   19,   20,    2,
271
      2,    2,    2,  158,  158,  158,  177,  177,  177,  177,  177,  177,   15,  178,    0,   30,
272
      0,   16,   20,   16,   16,    0,    0,    0,    0,   22,   20,   20,   31,   22,   22,   11,
273
    169,    0,   61,   61,   61,   61,   61,   61,   61,   66,   21,   82,   46,    0,    0,    0,
274
      0,    2,    2,    2,    9,    2,   30,    2,    2,   52,   22,   22,   31,    0,   38,   22,
275
     27,   11,  159,  179,  180,    0,    0,    0,    0,    2,    2,    2,   30,    9,    2,    2,
276
      2,    2,    2,    2,    2,    2,   23,   23,   47,   22,   35,   82,   68,    0,    0,    0,
277
      0,    2,  181,   66,   47,    0,    0,    0,    0,   11,  182,    2,    2,    2,    2,    2,
278
      2,    2,    2,   23,   22,   20,   31,    0,   48,   16,  143,    0,    0,    0,    0,    0,
279
      0,    2,    2,    2,    2,    2,  156,    0,    0,  183,  183,  183,  183,  183,  183,  183,
280
    183,  184,  184,  184,  185,  186,  184,  183,  183,  187,  183,  183,  188,  189,  189,  189,
281
    189,  189,  189,  189,    0,    0,    0,    0,    0,  183,  183,  183,  183,  183,  190,    0,
282
      0,    2,    2,    2,    2,    2,    2,    2,   22,   22,   22,   22,   22,   22,  191,  192,
283
    193,   11,   11,   11,   46,    0,    0,    0,    0,   29,   74,    2,    2,    2,    2,    2,
284
      2,    2,    2,    2,    2,    2,   65,   47,    0,    2,    2,    2,    2,    2,    9,    0,
285
     58,  194,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
286
     20,   20,   20,   20,   20,    0,    0,    0,   40,  115,   26,    0,    0,    0,    0,    0,
287
      0,    0,    0,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
288
     30,    2,    2,    2,    2,    2,    0,   58,   37,    0,    6,  119,  119,  119,  120,    0,
289
      0,   11,   11,   11,   49,    2,    2,    2,    0,    2,    2,    2,    2,    2,    0,    0,
290
      2,    2,    2,    2,    2,    2,    2,    2,   46,    2,    2,    2,    2,    2,    2,   11,
291
     11,    2,    2,    2,    2,    2,    2,   22,   22,    2,    2,    2,    2,    2,    2,    2,
292
     20,    2,    2,   44,   44,   44,   92,    0,    0,    O,    O,    O,   GB,    B,    B,    O,
293
     SB,    O,   SE,   GB,    O,    O,   WJ,FMPst,FMPst,    O,  CGJ,    B,    O,    B,VMAbv,VMAbv,
294
  VMAbv,    O,VMAbv,    B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw,    B, VPst, VPre, VPst,
295
   VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst,    H, VPre, VPst,VMBlw,    O,    O,
296
   VAbv,   GB,VMAbv,VMPst,VMPst,    O,    B, VBlw,    O,    O, VPre, VPre,    O, VPre,    H,    O,
297
   VPst,FMAbv,    O,CMBlw,    O, VAbv,    O, VAbv,    H,    O,VMBlw,VMAbv,CMAbv,   GB,   GB,    O,
298
   MBlw,CMAbv,CMAbv, VPst, VAbv,VMAbv,    O, VPst,    O, VPre, VPre,VMAbv,    B,    O,   CS,   CS,
299
  VMPst,    B, VAbv, VAbv,    B,    R,    O,  HVM,    O,    O,FMBlw,    O,CMAbv,    O,CMBlw, VAbv,
300
   VBlw,    B,  SUB,  SUB,  SUB,    O,  SUB,  SUB,    O,FMBlw,    O,    B, VPst, VBlw, VPre,VMAbv,
301
  VMBlw,VMPst,   IS, VAbv, MPst, MPre, MBlw, MBlw,    B, MBlw, MBlw, VPst,VMPst,VMPst,    B, MBlw,
302
   VPst, VPre, VAbv, VAbv,VMPst,VMPst,VMBlw,    B,VMPst, VBlw, VPst,  CGJ,  CGJ, VPst,VMAbv,VMAbv,
303
  FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv,   IS,FMAbv,    B,FMAbv,    B,  CGJ,   WJ,  CGJ,   GB,
304
  CMAbv,CMAbv,    B, VAbv,  SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre,    B,
305
   MPre, MBlw,  SUB, FAbv, FAbv, MAbv,  SUB,   Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst,    H,
306
      B,    O,SMAbv,SMAbv,SMAbv, VPst,   IS,   RK,   RK, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,
307
  VMBlw,VMAbv,   CS,    O,FMAbv, ZWNJ,  CGJ,   WJ,   WJ,   WJ,    O,FMPst,    O,   SB,   SE,    O,
308
      H, MPst, VPst,    H,VMAbv, VAbv,VMBlw,    B, VBlw, FPst, VPst, FAbv,VMPst,    B,CMAbv, VAbv,
309
   MBlw, MPst, MBlw,    H,    O, VBlw, MPst, MPre, MAbv, MBlw,    O,    B, FAbv, FAbv, FPst, VBlw,
310
      B, VBlw,VMAbv,    B, VPre,    O,VMPst,   IS,    O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,    O,
311
     IS,VMBlw,    B,VMPst,VMAbv,VMPst,   CS,   CS,    B,    N,    N,    O,   HN, VPre, VBlw, VAbv,
312
     IS,CMAbv,    O, VPst,    B,    R,    R,CMBlw, VAbv, VPre,VMAbv,VMAbv,    H, VAbv,CMBlw,VMPst,
313
      O,VMAbv,CMBlw,   IS,    R,FMAbv,    B,   CS,   CS,    H,CMBlw,VMPst,    H,VMPst, VAbv,VMAbv,
314
   VPst, MPst,    R, MPst,CMBlw,    B,FMBlw,   CS,  SUB,  SUB,   GB, FBlw, FBlw,CMAbv,   IS, VBlw,
315
     IS,    R, MBlw,   GB, VAbv,    R,VMPst,    G,    G,    J,    J,    J,   SB,   SE,    J,   HR,
316
      G,    G,   HM,   HM,   HM,    G,    O, MPre, MPre, MPst,VMAbv, MBlw, VBlw,    O, VBlw,
317
};
318
static const uint16_t hb_use_u16[864]=
319
{
320
    0,  0,  1,  2,  0,  3,  0,  3,  0,  0,  4,  5,  0,  6,  0,  0,
321
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  0,  0,  0,
322
    0,  0,  0,  0,  8,  0,  0,  0,  0,  0,  0,  0,  9, 10, 11, 12,
323
    0,  0,  0,  0, 10, 13,  0,  0, 14, 10, 10, 15, 16, 17, 18, 19,
324
   20, 21, 22, 23, 24, 25, 18, 26, 27, 21, 22, 28, 29, 30, 31, 32,
325
   33, 34, 22, 35, 36,  0, 18, 37, 38, 21, 22, 39, 24, 40, 18, 41,
326
   42, 43, 44, 45, 46, 47, 31,  0, 48, 49, 22, 50, 51, 52, 18,  0,
327
   53, 49, 22, 54, 51, 55, 18, 56, 57, 49, 10, 58, 59, 60, 18,  0,
328
   61, 62, 10, 63, 64, 65, 31, 66, 67, 68, 10, 69, 70, 10, 71, 72,
329
   73, 74, 75, 76, 77,  0,  0,  0, 10, 10, 78, 79, 80, 81, 82, 83,
330
   84, 85,  0,  0,  0,  0,  0,  0, 10, 86, 10, 87, 10, 88, 89, 90,
331
   10, 10, 10, 91, 92, 93,  2,  0, 94,  0, 10, 10, 10, 10, 10, 95,
332
   96, 10, 97,  0,  0,  0,  0,  0, 10, 98, 99,100, 31, 10,101,102,
333
   10, 10,103, 10,104,105,  0,  0, 10,106, 10, 10, 10,107,108,109,
334
    2,  2,  0,  0,  0,  0,  0,  0,110, 10, 10,111,112,  2,113,114,
335
  115, 10,116, 10, 10, 10,117,118, 10, 10,119,120,121,  0,  0,  0,
336
    0,  0,  0,  0,  0,122,123,124,  0,  0,  0,  0,  0,  0,  0,125,
337
  126,127,128,  0,  0,  0,129,130,131,  0,  0,  0,  0,  0,  0,132,
338
    0,  0,  0,  0,133,  0,  0,  0,  0,  0,  0,  0,  0,  0,134,  0,
339
    0,  0,  0, 10, 10, 10,135,136,  0,  0,137,  0,  0,  0,  0,  0,
340
  138, 10,139,  0, 10, 10, 10,140,141, 10, 10,142,143,  2,144,145,
341
   10, 10,146, 10,147,148,  0,  0,149, 10, 10,150,151,  2,152, 98,
342
   10, 10,153,154,155,  2, 10,156, 10, 10, 10,157,158,  0,159,160,
343
    0,  0,  0,  0, 10, 10,161,  2,162,  0,  0,  0,  0,  0,  0,  0,
344
    0,  0,  0,  0,  0,  0,  0,163,  0,  0,  0,  0,  0,  0,  0,164,
345
    0,  0,  0,  0,  0,  0,  0,165,165,166, 34,167,  0,  0,  0,  0,
346
  168,169, 10,170, 95,  0,  0,  0,  0,  0,  0,  0, 70, 10,171,  0,
347
   10,172,173,  0,  0,  0,  0,  0, 10, 10,174,  2,  9, 10,175, 10,
348
  176,  0,  0,  0,  0,  0,  0,  0, 10, 10,177,172,  0,  0,  0,  0,
349
    0,  0,  0, 10,178,179,  0, 10,180,  0,  0,181,182,  0,  0,  0,
350
  183, 10, 10,184,185,186,187,188,189, 10, 10,190,191,  0,  0,  0,
351
  192, 10,193,194,195, 10, 10,196,189, 10, 10,197,198,105,199,102,
352
   10, 34,200,201,202,  0,  0,  0,203,204, 95, 10, 10,205,206,  2,
353
  207, 21, 22,208,209,210,211,212,213, 10, 10,214,215,216,217,  0,
354
   10, 10, 10,218,219,220,221,  0,199, 10, 10,222,223,  2,  0,  0,
355
   10, 10,224,225,226,227,  0,  0, 10, 10, 10,228,229,  2,  0,  0,
356
   10, 10,230,231,  2, 10,140,  0, 10,232,233,103,234,  0,  0,  0,
357
   10, 10,235,236,  0,  0,  0,  0,237,238, 10,239,240,  2,  0,  0,
358
    0,  0,241, 10, 10,242,243,  0,244, 10, 10,245,246,247, 10, 10,
359
  248,249,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,250,  0,
360
   22, 10,224,251,  8, 10, 71, 19, 10,252, 74,253,  0,  0,  0,  0,
361
  254, 10, 10,255,256,  2,257, 10,258,259,  2,  0,  0,  0,  0,  0,
362
    0,  0,  0,  0,  0,  0, 10,260,261, 49, 10,262,263,264,  0,  0,
363
  265,265,265,265,265,265,265,265,265,265,265,266,267,268,265,265,
364
  265,265,265,265,265,265,265,269, 10,270,271,  2,  0,  0,  0,  0,
365
    0,  0,  0,  0,  2,  0,  0,  0, 10, 10, 10,272,  0,  0,  0,  0,
366
    0,  0,  0,  0,273, 10,274,  2, 10, 10, 10, 10,275,276,277,277,
367
  278,279,  0,  0,  0,  0,280,  0, 10, 10, 10, 10, 10, 10, 10, 10,
368
   10, 10, 10, 10, 10,176,  0,281, 10, 10, 10, 10, 10, 10,105, 71,
369
   95,282,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,283,
370
   10, 10, 71,284,285,  0,  0,  0,  0, 10,286,  0, 10, 10,287,  2,
371
    0,  0,  0,  0,  0, 10,288,  2,  0,  0,  0,  0,  0, 10,289,105,
372
   10, 10, 10, 10,290,  2,  0,  0,129,129,129,129,129,129,129,129,
373
  162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,129,
374
};
375
376
static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i)
377
0
{
378
0
  return (a[i>>1]>>((i&1)<<2))&15;
379
0
}
380
static inline uint8_t hb_use_get_category (unsigned u)
381
0
{
382
0
  return u<921600 ? hb_use_u8[2953u+((hb_use_u8[625u+((hb_use_u16[((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((u)>>1))>>3))>>3))>>5)))<<5)+((((((((u)>>1))>>3))>>3))&31)])<<3)+((((((u)>>1))>>3))&7)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : O;
383
0
}
384
385
386
#else
387
388
#include <stdint.h>
389
390
static const uint8_t hb_use_u8[3663]=
391
{
392
     16,   50,   51,   51,   51,   52,   51,   83,  118,  131,   57,   58,   59,  195,  211,   62,
393
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
394
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
395
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
396
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
397
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
398
     51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
399
     15,    0,    1,    1,    2,    1,    1,    3,    4,    5,    6,    7,    8,    9,   10,    1,
400
     11,   12,    1,    1,    1,    1,    1,    1,   13,   14,   15,   16,   17,   18,   19,    1,
401
      1,   20,    1,    1,    1,    1,   21,    1,   22,    1,    1,    1,    1,    1,   23,   24,
402
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
403
      1,    1,    1,    1,    1,    1,    1,    1,    1,   25,   26,   27,   28,    1,    1,    1,
404
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,   29,
405
     30,    1,    1,    1,    1,    1,   31,    1,    1,    1,    1,   32,   33,    1,   34,   35,
406
     36,   37,   38,   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
407
     52,   53,   53,   53,   53,   54,   53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
408
     53,   53,   53,   53,   55,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
409
      1,    1,   56,    1,    1,    1,    1,    1,    1,    1,    1,   57,   58,    1,   59,    1,
410
     60,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,   61,   62,    1,    1,
411
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,   63,    1,    1,
412
      1,    1,   64,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
413
      1,    1,   65,   66,    1,   67,   68,    1,    1,    1,   69,    1,    1,    1,    1,    1,
414
      1,   70,   71,   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
415
     70,    0,    1,    2,    2,    0,    3,    4,    0,    0,    0,    0,    0,    0,    0,    0,
416
      0,    0,    0,    5,    0,    0,    0,    0,    0,    0,    0,    6,    0,    0,    0,    0,
417
      0,    0,    0,    0,    0,    0,    0,    7,    8,    0,    0,    9,    0,    0,    0,    0,
418
      0,   10,   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
419
     25,   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
420
     41,   42,   43,   44,   37,   45,   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
421
      0,   56,   57,   58,   59,   60,    0,    0,    0,   61,   62,   63,   64,   56,   65,   66,
422
     67,   68,   56,   56,   69,   70,   71,    0,    0,   72,   73,   74,   75,   56,   76,   77,
423
      0,   78,   56,   79,   80,   81,    0,    0,    0,   82,   83,   84,   85,   86,   87,   56,
424
     88,   56,   89,   90,    0,    0,    0,   91,   92,    0,    0,    0,    0,    0,    0,    0,
425
     93,   94,   95,    0,   96,   97,    0,    0,   98,    0,    0,    0,    0,    0,    0,   99,
426
      0,    0,    0,    0,    0,    0,    0,    0,  100,    0,  101,   56,  102,    0,    0,    0,
427
      0,    0,  103,    0,    0,    0,    0,    0,    0,  104,  105,   56,  106,  107,  108,  109,
428
    110,   56,  111,  112,    0,  113,  114,  115,  116,   56,  117,  118,  119,   56,  120,  121,
429
    122,    0,    0,    0,    0,    0,    0,   56,  123,  124,    0,    0,    0,    0,    0,    0,
430
    125,    0,    0,    0,    0,    0,    0,    0,  126,    0,    0,    0,  127,  128,  129,    0,
431
      0,  130,  131,  132,    0,    0,    0,   51,  133,    0,    0,    0,    0,  134,  135,    0,
432
      0,   56,  136,    7,  137,  138,    0,    0,    0,    0,    0,    0,    0,   56,  139,    0,
433
      0,    0,  101,  140,  101,  141,  142,  143,    0,  144,  145,  146,  147,  148,  149,  150,
434
      0,  151,  152,  153,  154,  148,  155,  156,  157,  158,  159,  160,    0,  161,  162,  163,
435
    164,  165,  166,  167,  168,  169,  170,  171,  172,   56,  173,  174,  175,  176,  177,  178,
436
      0,    0,    0,    0,    0,   56,  179,  180,    0,   56,  181,  182,    0,   56,  183,  184,
437
    185,  186,  187,  188,    0,    0,    0,    0,    0,   56,  189,    0,    0,    0,    0,    0,
438
      0,  190,  191,  192,    0,    0,  193,  194,  195,  196,  197,  198,   56,  199,    0,    0,
439
      0,    0,    0,    0,  200,    0,    0,    0,    0,  201,  202,  203,  204,  205,  206,    0,
440
      0,  207,  208,  209,  210,  211,   67,    0,    0,    0,    0,    0,    0,    0,    0,    0,
441
    212,  213,  214,  215,    0,    0,    0,    0,    0,  216,  216,  216,  216,  216,  216,  216,
442
    216,  216,  217,  218,  216,  216,  216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
443
    219,  220,  221,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   67,
444
      0,   56,  222,    0,    0,    0,    0,    0,    0,    0,    0,  223,  224,    0,    0,    0,
445
      0,   56,   56,  225,  226,  227,    0,    0,  228,   56,   56,   56,   56,   56,   56,   56,
446
     56,   56,   56,   56,   56,   56,   56,  229,  230,   56,   56,   56,  231,  232,    0,    0,
447
      0,    0,    0,    0,  233,    0,    0,    0,    0,   56,  234,  235,    0,    0,    0,    0,
448
      0,    0,    0,    0,    0,  101,  236,   56,  237,    0,    0,    0,    0,    0,    0,  101,
449
    238,    0,    0,    0,    0,    0,    0,  101,  239,   56,   56,  240,    0,    0,    0,    0,
450
      0,  241,  241,  241,  241,  241,  241,  241,  241,  242,  242,  242,  242,  242,  242,  242,
451
    243,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
452
      0,    2,    2,    2,    2,    2,    0,    0,    0,    0,    0,    0,    0,    0,    3,    4,
453
      0,    5,    0,    0,    0,    0,    0,    6,    0,    0,    7,    0,    0,    0,    0,    0,
454
      0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
455
      8,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
456
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   10,   11,
457
     11,   11,   11,    0,    0,    0,    9,   12,    0,    2,    2,    2,    2,   13,   14,    0,
458
      0,   11,   15,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   16,   17,
459
     18,   19,   20,   21,   22,   16,   23,   24,   25,   12,   26,   27,   20,    2,    2,    2,
460
      2,    2,   20,    0,    2,    2,    2,    2,    2,    0,    2,    2,    2,    2,    2,    2,
461
      2,   28,   29,   30,    2,    2,    2,    9,   30,    9,   30,    2,    2,    2,    2,    2,
462
      2,    2,    2,    2,    2,    9,    2,    2,    2,    9,    9,    0,    2,    2,    0,   17,
463
     18,   19,   20,   31,   32,   33,   32,   34,    0,    0,    0,    0,   35,    0,    0,    2,
464
     30,    2,    0,    0,    0,    0,    0,    9,   36,   12,   15,   30,    2,    2,    9,    0,
465
     30,    9,    2,   30,    9,    2,    0,   37,   18,   19,   31,    0,   27,   38,   27,   39,
466
      0,   40,    0,    0,    0,   30,    2,    9,    9,    0,    0,    0,    2,    2,    2,    2,
467
      2,   41,   42,   43,    0,    0,    0,    0,    0,   12,   15,   30,    2,    2,    2,    2,
468
     30,    2,   30,    2,    2,    2,    2,    2,    2,    9,    2,   30,    2,    2,    0,   17,
469
     18,   19,   20,   21,   27,   22,   35,   24,    0,    0,    0,    0,    0,   30,   41,   41,
470
     44,   12,   29,   30,    2,    2,    2,    9,   30,    9,    2,   30,    2,    2,    0,   17,
471
     45,    0,    0,   27,   22,    0,    0,    2,   30,   30,    0,    0,    0,    0,    0,    0,
472
      0,    0,   46,   30,    2,    2,    9,    0,    2,    9,    2,    2,    0,   30,    9,    9,
473
      2,    0,   30,    9,    0,    2,    9,    0,    2,    2,    2,    2,    2,    2,    0,    0,
474
     23,   16,   47,    0,   48,   33,   48,   34,    0,    0,    0,    0,   35,    0,    0,    0,
475
      0,   15,   29,   49,    2,    2,    2,    9,    2,    9,    2,    2,    2,    2,    2,    2,
476
      2,    2,    2,    2,    2,    2,    0,   17,   22,   16,   23,   47,   22,   38,   22,   39,
477
      0,    0,    0,   27,   31,    2,    9,    0,    0,   10,   29,   30,    2,    2,    2,    9,
478
      2,    2,    2,   30,    2,    2,    0,   17,   45,    0,    0,   35,   47,    0,    0,    0,
479
      9,   50,   51,    0,    0,    0,    0,    0,    0,   11,   29,    2,    2,    2,    2,    9,
480
      2,    2,    2,    2,    2,    2,   52,   53,   23,   19,   20,   31,   48,   33,   48,   34,
481
     54,    0,    0,    0,   35,    0,    0,    0,   30,   12,   29,   30,    2,    2,    2,    2,
482
      2,    2,    2,    2,    9,    0,    2,    2,    2,    2,   30,    2,    2,    2,    2,   30,
483
      0,    2,    2,    2,    9,    0,   55,    0,   35,   23,   22,   31,   31,   18,   48,   48,
484
     25,    0,   23,    0,    0,    0,    0,    0,    0,    2,    0,    2,    9,    0,    0,    0,
485
      0,    0,    0,    0,    0,   20,    0,    0,    0,    2,    2,   56,   56,   57,    0,    0,
486
     18,    2,    2,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,    2,    2,    9,
487
      0,   58,   21,   59,   22,   22,   20,   20,   46,   21,   11,   31,   11,    2,    2,   60,
488
     61,   61,   61,   61,   61,   62,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
489
     61,   61,   61,   61,   61,   61,   61,   63,    0,    0,    0,    0,   64,    0,    0,    0,
490
      0,    2,    2,    2,    2,    2,   65,   45,   59,   66,   22,   22,   67,   68,   69,   70,
491
     71,    2,    2,    2,    2,    2,    1,    0,    5,    2,    2,    2,   23,   20,    2,    2,
492
     72,   71,   73,   74,   65,   73,   29,   29,    2,   52,   22,   53,    2,    2,    2,    2,
493
      2,    2,   75,   76,   77,   29,   29,   78,   79,    2,    2,    2,    2,    2,   29,   45,
494
      0,    2,   59,   80,    0,    0,    0,    0,   30,    2,   59,   47,    0,    0,    0,    0,
495
      0,    2,   59,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    9,
496
      2,    9,   59,    0,    0,    0,    0,    0,    0,    2,    2,   81,   45,   22,   59,   20,
497
     48,   48,   48,   48,   15,   82,   83,   84,   85,   86,   87,    0,    0,    0,    0,   88,
498
      0,    9,    0,    0,   30,    0,   89,   81,   90,    2,    2,    2,    2,    9,    0,    0,
499
      0,   42,   42,   91,   92,    2,    2,    2,    2,    2,    2,    2,    2,   13,    9,    0,
500
      0,    2,    2,    2,    2,    2,    2,    2,    9,   22,   80,   45,   22,   93,   61,    0,
501
      0,   94,   95,   94,   94,   96,   97,    0,    0,    2,    2,    2,    2,    2,    2,    2,
502
      0,    2,    2,    9,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    0,
503
      0,    2,    2,    2,    2,   29,    0,    0,    0,    2,    2,    2,    2,    2,    9,    0,
504
      0,    2,    2,    2,   52,   98,   45,    0,    0,    2,    2,   99,  100,  101,  102,   61,
505
     63,  103,   16,   45,   22,   59,   21,   80,   48,   48,   76,   11,   11,   11,  104,   46,
506
     40,   11,  105,   74,    2,    2,    2,    2,    2,    2,    2,  106,   22,   20,   20,   22,
507
     48,   48,   22,  107,    2,    2,    2,    9,    0,    0,    0,    0,    0,    0,  108,  109,
508
    109,  109,  109,    0,    0,    0,    0,    0,    0,  105,   74,    2,    2,    2,    2,    2,
509
      2,   60,   61,   59,   25,   22,  110,   61,    2,    2,    2,    2,  106,   22,   23,   45,
510
     45,  101,  111,    0,    0,    0,    0,    0,    0,    2,    2,   61,   18,   48,   23,  112,
511
    101,  101,  101,  113,  114,    0,    0,    0,    0,    2,    2,    2,    2,    2,    0,   30,
512
      2,   11,   46,  115,  115,  115,   11,  115,  115,   15,  115,  115,  115,   26,    0,   40,
513
      0,    0,    0,  116,   51,   11,    5,    0,    0,    0,    0,    0,    0,    0,  117,    0,
514
      0,    0,    0,    0,    0,    0,    6,  118,  119,   42,   42,    5,    0,    0,    0,    0,
515
      0,    0,    0,    0,    0,    0,  119,  119,  120,  119,  119,  119,  119,  119,  119,  119,
516
    119,    0,    0,  121,    0,    0,    0,    0,    0,    0,    7,  121,    0,    0,    0,    0,
517
      0,   46,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
518
      0,    0,    0,    0,  122,  122,    0,    0,    0,    2,    2,    2,    2,    0,    0,    0,
519
     30,    0,    0,    0,    0,    0,    0,    0,  123,    0,  122,  122,    0,    0,    0,    0,
520
      0,    2,   53,    2,  107,    2,   10,    2,    2,    2,   65,   19,   16,    0,    0,   31,
521
      0,    2,    2,    0,    0,    0,    0,    0,    0,   29,    2,    2,    2,    2,    2,    2,
522
      2,    2,    2,  124,   23,   23,   23,   23,   23,   23,   23,  125,    0,    0,    0,    0,
523
      0,   11,   11,   11,   11,   11,   11,   11,   11,   11,    2,    0,    0,    0,    0,    0,
524
     52,    2,    2,    2,   22,   22,  126,  115,    0,    2,    2,    2,  127,   20,   59,   20,
525
    112,  101,  128,    0,    0,    0,    0,    0,    0,   11,  129,    2,    2,    2,    2,    2,
526
      2,    2,  130,   23,   22,   20,   48,  131,  132,  133,    0,    0,    0,    0,    0,    0,
527
      0,    2,    2,   52,   30,    2,    2,    2,    2,    2,    2,    2,    2,   10,   22,   59,
528
     98,   76,  134,  135,  136,    0,    0,    0,    0,    2,  137,    2,    2,    2,    2,  138,
529
      0,   30,    2,   42,    5,    0,   79,   15,    2,  139,   20,   53,  127,  139,    2,    2,
530
    140,   10,    9,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,  141,   21,
531
     25,    0,    0,  142,  143,    0,    0,    0,    0,    2,   65,   45,   23,   80,   47,  144,
532
      0,   81,   81,   81,   81,   81,   81,   81,   81,    0,    0,    0,    0,    0,    0,    0,
533
      6,  119,  119,  119,  119,  120,    0,    0,    0,    2,    2,    2,    2,    2,    9,    2,
534
      2,    2,    9,    2,   30,    2,    2,    2,    2,    2,   30,    2,    2,    2,   30,    9,
535
      0,  127,   20,   27,   31,    0,    0,  145,  146,    2,    2,   30,    2,   30,    2,    2,
536
      2,    2,    2,    2,    0,   14,   37,    0,  147,    2,    2,   13,   37,    0,   30,    2,
537
      2,    2,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   30,    2,    2,
538
      9,    2,    2,   11,   41,    0,    0,    0,    0,    2,    2,    2,    0,   27,   22,   22,
539
     30,    2,    2,    2,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,   27,   38,
540
      0,    2,    2,    2,  115,  115,  115,  115,  115,  148,    2,    9,    0,    0,    0,    0,
541
      0,    2,   14,   14,    0,    0,    0,    0,    0,    9,    2,    2,    9,    2,    2,    2,
542
      2,   30,    2,    9,    0,   30,    2,    0,    0,  149,  150,  151,    2,    2,    2,    2,
543
      2,    2,    2,    2,    2,   22,   22,   20,   20,   20,   22,   22,  133,    0,    0,    0,
544
      0,    0,  152,  152,  152,  152,  152,  152,  152,  152,  152,  152,    2,    2,    2,    2,
545
      2,   53,   52,   53,    0,    0,    0,    0,  153,   11,   74,    2,    2,    2,    2,    2,
546
      2,   18,   19,   21,   16,   24,   37,    0,    0,    0,   31,    0,    0,    0,    0,    0,
547
      0,   11,   49,    2,    2,    2,    2,    2,    2,    2,    2,    2,  127,   20,   22,  154,
548
     22,   21,  155,  156,    2,    2,    2,    2,    2,    0,    0,   65,  157,    0,    0,    0,
549
      0,    2,   13,    0,    0,    0,    0,    0,    0,    2,   65,   25,   20,   20,   20,   22,
550
     22,  107,  158,    0,    0,   56,  159,   31,  160,   30,    2,    2,    2,    2,    2,    2,
551
      2,    2,    2,    2,    2,    2,    2,   23,   19,   22,   22,  161,   44,    0,    0,    0,
552
     49,  127,    0,    0,    0,    0,    0,    0,    0,    2,    2,    2,    9,    9,    2,    2,
553
     30,    2,    2,    2,    2,    2,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,
554
     10,   18,   19,   21,   22,  162,   31,    0,    0,   11,   11,   30,    2,    2,    2,    9,
555
     30,    9,    2,   30,    2,    2,   58,   17,   23,   16,   23,   47,   32,   33,   32,   34,
556
      0,    0,    0,    0,   35,    0,    0,    0,    2,    2,   23,    0,   11,   11,   11,   46,
557
      0,   11,   11,   46,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,   30,    0,
558
      9,    2,    2,    2,   30,   45,   59,   20,   20,   31,   33,   32,   32,   25,  163,   29,
559
    164,  165,   37,    0,    0,    0,    0,    0,    0,   12,   26,    0,    0,    0,    0,    0,
560
      0,    2,    2,   65,   25,   20,   20,   20,   22,   23,  125,   15,   17,    0,    0,    0,
561
      0,    2,    2,    2,    2,    2,    0,    0,  166,  167,    0,    0,    0,    0,    0,    0,
562
      0,   18,   19,   20,   20,   66,   98,   25,  160,   11,  168,    9,    0,    0,    0,    0,
563
      0,    2,    2,    2,    2,    2,    2,    2,   65,   25,   20,   20,    0,   48,   48,   11,
564
    169,   37,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,   20,
565
      0,   23,   19,   20,   20,   21,   16,   82,  169,   38,    0,    0,    0,    0,    0,    0,
566
      0,    2,    2,    2,    2,    2,   10,  170,   25,   20,   22,   22,  168,    9,    0,    0,
567
      0,    2,    2,    2,    2,    2,    9,   43,  135,   23,   22,   20,   76,   21,   22,    0,
568
      0,    2,    2,    2,    9,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,   18,
569
     19,   20,   21,   22,  104,  169,   37,    0,    0,    2,    2,    2,    9,   30,    0,    2,
570
      2,    2,    2,   30,    9,    2,    2,    2,    2,   23,   23,   18,   32,   33,   12,  171,
571
    165,  172,  173,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    0,    2,    2,
572
      2,   65,   25,   20,   20,    0,   22,   23,   29,  107,    0,   33,    0,    0,    0,    0,
573
      0,   52,   20,   22,   22,   22,  139,    2,    2,    2,  174,  140,   11,   15,  175,   61,
574
    176,    0,    0,    1,  147,    0,    0,    0,    0,   52,   20,   22,   16,   19,   20,    2,
575
      2,    2,    2,  158,  158,  158,  177,  177,  177,  177,  177,  177,   15,  178,    0,   30,
576
      0,   16,   20,   16,   16,    0,    0,    0,    0,   22,   20,   20,   31,   22,   22,   11,
577
    169,    0,   61,   61,   61,   61,   61,   61,   61,   66,   21,   82,   46,    0,    0,    0,
578
      0,    2,    2,    2,    9,    2,   30,    2,    2,   52,   22,   22,   31,    0,   38,   22,
579
     27,   11,  159,  179,  180,    0,    0,    0,    0,    2,    2,    2,   30,    9,    2,    2,
580
      2,    2,    2,    2,    2,    2,   23,   23,   47,   22,   35,   82,   68,    0,    0,    0,
581
      0,    2,  181,   66,   47,    0,    0,    0,    0,   11,  182,    2,    2,    2,    2,    2,
582
      2,    2,    2,   23,   22,   20,   31,    0,   48,   16,  143,    0,    0,    0,    0,    0,
583
      0,    2,    2,    2,    2,    2,  156,    0,    0,  183,  183,  183,  183,  183,  183,  183,
584
    183,  184,  184,  184,  185,  186,  184,  183,  183,  187,  183,  183,  188,  189,  189,  189,
585
    189,  189,  189,  189,    0,    0,    0,    0,    0,  183,  183,  183,  183,  183,  190,    0,
586
      0,    2,    2,    2,    2,    2,    2,    2,   22,   22,   22,   22,   22,   22,  191,  192,
587
    193,   11,   11,   11,   46,    0,    0,    0,    0,   29,   74,    2,    2,    2,    2,    2,
588
      2,    2,    2,    2,    2,    2,   65,   47,    0,    2,    2,    2,    2,    2,    9,    0,
589
     58,  194,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
590
     20,   20,   20,   20,   20,    0,    0,    0,   40,  115,   26,    0,    0,    0,    0,    0,
591
      0,    0,    0,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
592
     30,    2,    2,    2,    2,    2,    0,   58,   37,    0,    6,  119,  119,  119,  120,    0,
593
      0,   11,   11,   11,   49,    2,    2,    2,    0,    2,    2,    2,    2,    2,    0,    0,
594
      2,    2,    2,    2,    2,    2,    2,    2,   46,    2,    2,    2,    2,    2,    2,   11,
595
     11,    2,    2,    2,    2,    2,    2,   22,   22,    2,    2,    2,    2,    2,    2,    2,
596
     20,    2,    2,   44,   44,   44,   92,    0,    0,    O,    O,    O,   GB,    B,    B,    O,
597
     SB,    O,   SE,   GB,    O,    O,   WJ,FMPst,FMPst,    O,  CGJ,    B,    O,    B,VMAbv,VMAbv,
598
  VMAbv,    O,VMAbv,    B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw,    B, VPst, VPre, VPst,
599
   VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst,    H, VPre, VPst,VMBlw,    O,    O,
600
   VAbv,   GB,VMAbv,VMPst,VMPst,    O,    B, VBlw,    O,    O, VPre, VPre,    O, VPre,    H,    O,
601
   VPst,FMAbv,    O,CMBlw,    O, VAbv,    O, VAbv,    H,    O,VMBlw,VMAbv,CMAbv,   GB,   GB,    O,
602
   MBlw,CMAbv,CMAbv, VPst, VAbv,VMAbv,    O, VPst,    O, VPre, VPre,VMAbv,    B,    O,   CS,   CS,
603
  VMPst,    B, VAbv, VAbv,    B,    R,    O,  HVM,    O,    O,FMBlw,    O,CMAbv,    O,CMBlw, VAbv,
604
   VBlw,    B,  SUB,  SUB,  SUB,    O,  SUB,  SUB,    O,FMBlw,    O,    B, VPst, VBlw, VPre,VMAbv,
605
  VMBlw,VMPst,   IS, VAbv, MPst, MPre, MBlw, MBlw,    B, MBlw, MBlw, VPst,VMPst,VMPst,    B, MBlw,
606
   VPst, VPre, VAbv, VAbv,VMPst,VMPst,VMBlw,    B,VMPst, VBlw, VPst,  CGJ,  CGJ, VPst,VMAbv,VMAbv,
607
  FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv,   IS,FMAbv,    B,FMAbv,    B,  CGJ,   WJ,  CGJ,   GB,
608
  CMAbv,CMAbv,    B, VAbv,  SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre,    B,
609
   MPre, MBlw,  SUB, FAbv, FAbv, MAbv,  SUB,   Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst,    H,
610
      B,    O,SMAbv,SMAbv,SMAbv, VPst,   IS,   RK,   RK, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,
611
  VMBlw,VMAbv,   CS,    O,FMAbv, ZWNJ,  CGJ,   WJ,   WJ,   WJ,    O,FMPst,    O,   SB,   SE,    O,
612
      H, MPst, VPst,    H,VMAbv, VAbv,VMBlw,    B, VBlw, FPst, VPst, FAbv,VMPst,    B,CMAbv, VAbv,
613
   MBlw, MPst, MBlw,    H,    O, VBlw, MPst, MPre, MAbv, MBlw,    O,    B, FAbv, FAbv, FPst, VBlw,
614
      B, VBlw,VMAbv,    B, VPre,    O,VMPst,   IS,    O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,    O,
615
     IS,VMBlw,    B,VMPst,VMAbv,VMPst,   CS,   CS,    B,    N,    N,    O,   HN, VPre, VBlw, VAbv,
616
     IS,CMAbv,    O, VPst,    B,    R,    R,CMBlw, VAbv, VPre,VMAbv,VMAbv,    H, VAbv,CMBlw,VMPst,
617
      O,VMAbv,CMBlw,   IS,    R,FMAbv,    B,   CS,   CS,    H,CMBlw,VMPst,    H,VMPst, VAbv,VMAbv,
618
   VPst, MPst,    R, MPst,CMBlw,    B,FMBlw,   CS,  SUB,  SUB,   GB, FBlw, FBlw,CMAbv,   IS, VBlw,
619
     IS,    R, MBlw,   GB, VAbv,    R,VMPst,    G,    G,    J,    J,    J,   SB,   SE,    J,   HR,
620
      G,    G,   HM,   HM,   HM,    G,    O, MPre, MPre, MPst,VMAbv, MBlw, VBlw,    O, VBlw,
621
};
622
static const uint16_t hb_use_u16[488]=
623
{
624
    0,  0,  1,  2,  0,  3,  4,  5,  0,  6,  7,  0,  8,  0,  9, 10,
625
   11, 12, 10, 13, 14, 10, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23,
626
   24, 25, 18, 26, 27, 21, 22, 28, 29, 30, 31, 32, 33, 34, 22, 35,
627
   36,  0, 18, 37, 38, 21, 22, 39, 24, 40, 18, 41, 42, 43, 44, 45,
628
   46, 47, 31,  0, 48, 49, 22, 50, 51, 52, 18,  0, 53, 49, 22, 54,
629
   51, 55, 18, 56, 57, 49, 10, 58, 59, 60, 61, 62, 10, 63, 64, 65,
630
   31, 66, 67, 68, 10, 69, 70, 10, 71, 72, 73, 74, 75, 76, 77,  0,
631
   10, 10, 78, 79, 80, 81, 82, 83, 84, 85, 10, 86, 10, 87, 10, 88,
632
   89, 90, 10, 91, 92, 93,  2,  0, 94,  0, 10, 95, 96, 10, 97,  0,
633
   10, 98, 99,100, 31, 10,101,102,103, 10,104,105, 10,106, 10,107,
634
  108,109,  2,  2,110, 10, 10,111,112,  2,113,114,115, 10,116, 10,
635
  117,118,119,120,121,  0,  0,122,123,124,  0,125,126,127,128,  0,
636
  129,130,131,  0,  0,132,133,  0,134,  0,  0, 10,135,136,137,  0,
637
  138, 10,139,  0, 10,140,141, 10, 10,142,143,  2,144,145,146, 10,
638
  147,148,149, 10, 10,150,151,  2,152, 98,153,154,155,  2, 10,156,
639
   10,157,158,  0,159,160,161,  2,162,  0,  0,163,  0,164,  0,165,
640
  165,166, 34,167,168,169, 10,170, 95,  0,171,  0, 10,172,173,  0,
641
  174,  2,175, 10,176,  0,177,172,178,179,180,  0,  0,181,182,  0,
642
  183, 10, 10,184,185,186,187,188,189, 10, 10,190,191,  0,192, 10,
643
  193,194,195, 10, 10,196, 10,197,198,105,199,102, 10, 34,200,201,
644
  202,  0,203,204, 95, 10, 10,205,206,  2,207, 21, 22,208,209,210,
645
  211,212,213, 10, 10,214,215,216,217,  0, 10,218,219,220,221,  0,
646
  199, 10, 10,222,223,  2,224,225,226,227, 10,228,229,  2,230,231,
647
    2, 10,140,  0, 10,232,233,103,234,  0,235,236,237,238, 10,239,
648
  240,  2,241, 10, 10,242,243,  0,244, 10, 10,245,246,247,248,249,
649
  250,  0, 22, 10,224,251,  8, 10, 71, 19, 10,252, 74,253,254, 10,
650
   10,255,256,  2,257, 10,258,259, 10,260,261, 49, 10,262,263,264,
651
  265,265,265,266,267,268,265,269, 10,270,271,  2, 10,272,273, 10,
652
  274,  2,275,276,277,277,278,279,280,  0, 10,176,  0,281,105, 71,
653
   95,282,  0,283, 71,284,285,  0,286,  0,287,  2,288,  2,289,105,
654
  290,  2,129,129,162,162,162,129,
655
};
656
657
static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i)
658
{
659
  return (a[i>>1]>>((i&1)<<2))&15;
660
}
661
static inline uint8_t hb_use_get_category (unsigned u)
662
{
663
  return u<921600 ? hb_use_u8[3273u+((hb_use_u8[945u+((hb_use_u16[((hb_use_u8[369u+((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((((u)>>1))>>3))>>1))>>3))>>4)))<<4)+((((((((((u)>>1))>>3))>>1))>>3))&15)])<<3)+((((((((u)>>1))>>3))>>1))&7)])<<1)+((((((u)>>1))>>3))&1)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : O;
664
}
665
666
667
#endif
668
669
670
#undef B
671
#undef CGJ
672
#undef CS
673
#undef G
674
#undef GB
675
#undef H
676
#undef HM
677
#undef HN
678
#undef HR
679
#undef HVM
680
#undef IS
681
#undef J
682
#undef N
683
#undef O
684
#undef R
685
#undef RK
686
#undef SB
687
#undef SE
688
#undef SUB
689
#undef Sk
690
#undef WJ
691
#undef ZWNJ
692
#undef CMAbv
693
#undef CMBlw
694
#undef FAbv
695
#undef FBlw
696
#undef FPst
697
#undef FMAbv
698
#undef FMBlw
699
#undef FMPst
700
#undef MAbv
701
#undef MBlw
702
#undef MPst
703
#undef MPre
704
#undef SMAbv
705
#undef SMBlw
706
#undef VAbv
707
#undef VBlw
708
#undef VPst
709
#undef VPre
710
#undef VMAbv
711
#undef VMBlw
712
#undef VMPst
713
#undef VMPre
714
715
716
#endif /* HB_OT_SHAPER_USE_TABLE_HH */
717
/* == End of generated table == */