Back to index

lightning-sunbird  0.9+nobinonly
nameprepdata.c
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001,2002 Japan Network Information Center.
00003  * All rights reserved.
00004  *  
00005  * By using this file, you agree to the terms and conditions set forth bellow.
00006  * 
00007  *                   LICENSE TERMS AND CONDITIONS 
00008  * 
00009  * The following License Terms and Conditions apply, unless a different
00010  * license is obtained from Japan Network Information Center ("JPNIC"),
00011  * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
00012  * Chiyoda-ku, Tokyo 101-0047, Japan.
00013  * 
00014  * 1. Use, Modification and Redistribution (including distribution of any
00015  *    modified or derived work) in source and/or binary forms is permitted
00016  *    under this License Terms and Conditions.
00017  * 
00018  * 2. Redistribution of source code must retain the copyright notices as they
00019  *    appear in each source code file, this License Terms and Conditions.
00020  * 
00021  * 3. Redistribution in binary form must reproduce the Copyright Notice,
00022  *    this License Terms and Conditions, in the documentation and/or other
00023  *    materials provided with the distribution.  For the purposes of binary
00024  *    distribution the "Copyright Notice" refers to the following language:
00025  *    "Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved."
00026  * 
00027  * 4. The name of JPNIC may not be used to endorse or promote products
00028  *    derived from this Software without specific prior written approval of
00029  *    JPNIC.
00030  * 
00031  * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
00032  *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00033  *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00034  *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE
00035  *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00036  *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00037  *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
00038  *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00039  *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00040  *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
00041  *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
00042  */
00043 
00044  /*
00045  * Do not edit this file!
00046  * This file is generated from NAMEPREP specification.
00047  */
00048 
00049 #define MAP_BITS_0   9
00050 #define MAP_BITS_1   7
00051 #define MAP_BITS_2   5
00052 
00053 #define PROH_BITS_0  7
00054 #define PROH_BITS_1  7
00055 #define PROH_BITS_2  7
00056 
00057 #define UNAS_BITS_0  7
00058 #define UNAS_BITS_1  7
00059 #define UNAS_BITS_2  7
00060 
00061 #define BIDI_BITS_0  9
00062 #define BIDI_BITS_1  7
00063 #define BIDI_BITS_2  5
00064 
00065 
00066 static const unsigned short nameprep_id11_map_imap[] = {
00067          272,   400,   528,   656,   784,   784,   784,   784, 
00068          784,   784,   784,   784,   784,   784,   784,   912, 
00069         1040,   784,   784,   784,   784,   784,   784,   784, 
00070          784,   784,   784,   784,   784,  1168,   784,   784, 
00071          784,   784,   784,   784,   784,   784,   784,   784, 
00072          784,   784,   784,   784,   784,   784,   784,   784, 
00073          784,   784,   784,   784,   784,   784,   784,   784, 
00074          784,   784,   784,   784,   784,   784,   784,   784, 
00075          784,   784,   784,   784,   784,   784,   784,   784, 
00076          784,   784,   784,   784,   784,   784,   784,   784, 
00077          784,   784,   784,   784,   784,   784,   784,   784, 
00078          784,   784,   784,   784,   784,   784,   784,   784, 
00079          784,   784,   784,   784,   784,   784,   784,   784, 
00080          784,   784,   784,   784,   784,   784,   784,   784, 
00081          784,   784,   784,   784,   784,   784,   784,   784, 
00082          784,   784,   784,   784,   784,   784,   784,   784, 
00083          784,   784,   784,   784,   784,   784,   784,   784, 
00084          784,   784,   784,   784,   784,   784,   784,   784, 
00085          784,   784,   784,   784,   784,   784,   784,   784, 
00086          784,   784,   784,   784,   784,   784,   784,   784, 
00087          784,   784,   784,   784,   784,   784,   784,   784, 
00088          784,   784,   784,   784,   784,   784,   784,   784, 
00089          784,   784,   784,   784,   784,   784,   784,   784, 
00090          784,   784,   784,   784,   784,   784,   784,   784, 
00091          784,   784,   784,   784,   784,   784,   784,   784, 
00092          784,   784,   784,   784,   784,   784,   784,   784, 
00093          784,   784,   784,   784,   784,   784,   784,   784, 
00094          784,   784,   784,   784,   784,   784,   784,   784, 
00095          784,   784,   784,   784,   784,   784,   784,   784, 
00096          784,   784,   784,   784,   784,   784,   784,   784, 
00097          784,   784,   784,   784,   784,   784,   784,   784, 
00098          784,   784,   784,   784,   784,   784,   784,   784, 
00099          784,   784,   784,   784,   784,   784,   784,   784, 
00100          784,   784,   784,   784,   784,   784,   784,   784, 
00101            0,     0,     1,     0,     0,     2,     3,     0, 
00102            4,     5,     6,     7,     8,     9,    10,    11, 
00103           12,    13,     0,     0,     0,     0,     0,     0, 
00104            0,     0,    14,    15,    16,    17,    18,    19, 
00105           20,    21,     0,    22,    23,    24,    25,    26, 
00106           27,    28,    29,     0,    30,     0,     0,     0, 
00107            0,     0,     0,     0,     0,     0,     0,     0, 
00108            0,     0,     0,     0,     0,     0,     0,     0, 
00109            0,     0,     0,     0,     0,     0,     0,     0, 
00110            0,     0,     0,     0,     0,     0,     0,     0, 
00111            0,     0,     0,     0,     0,     0,     0,     0, 
00112            0,     0,     0,     0,     0,     0,     0,     0, 
00113            0,     0,     0,     0,     0,     0,     0,     0, 
00114            0,     0,     0,     0,     0,     0,     0,     0, 
00115            0,     0,     0,     0,     0,     0,     0,     0, 
00116            0,     0,     0,     0,     0,     0,     0,     0, 
00117            0,     0,     0,     0,     0,     0,     0,     0, 
00118            0,     0,     0,     0,     0,     0,     0,     0, 
00119            0,     0,     0,     0,     0,     0,     0,     0, 
00120            0,     0,     0,     0,     0,     0,     0,     0, 
00121            0,     0,     0,     0,     0,     0,     0,     0, 
00122            0,     0,     0,     0,     0,     0,     0,     0, 
00123            0,     0,     0,     0,     0,     0,     0,     0, 
00124            0,     0,     0,     0,     0,     0,     0,     0, 
00125           31,     0,     0,     0,     0,     0,     0,     0, 
00126            0,     0,     0,     0,     0,     0,     0,     0, 
00127            0,     0,     0,     0,     0,     0,     0,     0, 
00128            0,     0,     0,     0,     0,     0,     0,     0, 
00129            0,     0,     0,     0,     0,     0,     0,     0, 
00130            0,     0,     0,     0,     0,     0,     0,     0, 
00131           32,    33,    34,    35,    36,    37,    38,    39, 
00132           40,    41,    42,    43,    44,    45,    46,    47, 
00133           48,     0,     0,    49,     0,    50,     0,     0, 
00134           51,    52,    53,    54,     0,     0,     0,     0, 
00135            0,     0,     0,     0,     0,     0,     0,     0, 
00136            0,     0,     0,     0,     0,     0,     0,     0, 
00137            0,     0,     0,     0,     0,    55,    56,     0, 
00138            0,     0,     0,     0,     0,     0,     0,     0, 
00139            0,     0,     0,     0,     0,     0,     0,     0, 
00140            0,     0,     0,     0,     0,     0,     0,     0, 
00141            0,     0,     0,     0,     0,     0,     0,     0, 
00142            0,     0,     0,     0,     0,     0,     0,     0, 
00143            0,     0,     0,     0,     0,     0,     0,     0, 
00144            0,     0,     0,     0,     0,     0,     0,     0, 
00145            0,     0,     0,     0,     0,     0,     0,     0, 
00146            0,     0,     0,     0,     0,     0,     0,     0, 
00147            0,     0,     0,     0,     0,     0,     0,     0, 
00148            0,     0,     0,     0,     0,     0,     0,     0, 
00149            0,     0,     0,     0,     0,     0,     0,     0, 
00150            0,     0,     0,     0,     0,     0,     0,     0, 
00151            0,     0,     0,     0,     0,     0,     0,     0, 
00152            0,     0,     0,    57,    58,    59,    60,     0, 
00153            0,     0,     0,     0,     0,     0,     0,     0, 
00154            0,     0,     0,     0,     0,     0,     0,     0, 
00155            0,     0,     0,     0,     0,     0,     0,     0, 
00156            0,     0,     0,     0,     0,     0,     0,     0, 
00157            0,     0,     0,     0,     0,     0,     0,     0, 
00158            0,     0,     0,     0,     0,     0,     0,     0, 
00159            0,     0,     0,     0,     0,     0,     0,     0, 
00160            0,     0,     0,     0,     0,     0,     0,     0, 
00161            0,     0,     0,     0,     0,     0,     0,     0, 
00162            0,     0,     0,     0,     0,     0,     0,     0, 
00163            0,     0,     0,     0,     0,     0,     0,     0, 
00164            0,     0,     0,     0,     0,     0,     0,     0, 
00165            0,     0,     0,     0,     0,     0,     0,     0, 
00166            0,     0,     0,     0,     0,     0,     0,     0, 
00167            0,     0,     0,     0,     0,     0,     0,     0, 
00168            0,     0,     0,     0,     0,     0,     0,     0, 
00169            0,     0,     0,     0,     0,     0,     0,     0, 
00170            0,     0,     0,     0,     0,     0,     0,     0, 
00171            0,     0,     0,     0,     0,     0,     0,     0, 
00172            0,     0,     0,     0,     0,     0,     0,     0, 
00173            0,     0,     0,     0,     0,     0,     0,     0, 
00174            0,     0,     0,     0,     0,     0,     0,     0, 
00175            0,     0,     0,     0,     0,     0,     0,     0, 
00176            0,     0,     0,     0,     0,     0,     0,     0, 
00177            0,     0,     0,     0,     0,     0,     0,     0, 
00178            0,     0,     0,     0,     0,     0,     0,     0, 
00179            0,     0,     0,     0,     0,     0,     0,     0, 
00180            0,     0,     0,     0,     0,     0,     0,     0, 
00181            0,     0,     0,     0,     0,     0,     0,     0, 
00182            0,     0,     0,     0,     0,     0,     0,     0, 
00183            0,     0,     0,     0,     0,     0,     0,     0, 
00184            0,     0,     0,     0,     0,     0,     0,     0, 
00185            0,     0,     0,     0,     0,     0,     0,     0, 
00186            0,     0,     0,     0,     0,     0,     0,     0, 
00187            0,     0,     0,     0,     0,     0,     0,     0, 
00188            0,     0,     0,     0,     0,     0,     0,     0, 
00189            0,     0,     0,     0,     0,     0,     0,     0, 
00190            0,     0,     0,     0,     0,     0,     0,     0, 
00191            0,     0,     0,     0,     0,     0,     0,     0, 
00192           61,     0,     0,     0,     0,     0,     0,     0, 
00193            0,     0,     0,     0,     0,     0,     0,     0, 
00194            0,     0,     0,     0,     0,     0,     0,     0, 
00195           62,     0,     0,     0,     0,     0,     0,    63, 
00196            0,    64,     0,     0,     0,     0,     0,     0, 
00197            0,     0,     0,     0,     0,     0,     0,     0, 
00198            0,     0,     0,     0,     0,     0,     0,     0, 
00199            0,     0,     0,     0,     0,     0,     0,     0, 
00200            0,     0,     0,     0,     0,     0,     0,     0, 
00201           65,    66,     0,     0,     0,     0,     0,     0, 
00202            0,     0,     0,     0,     0,     0,     0,     0, 
00203            0,     0,     0,     0,     0,     0,     0,     0, 
00204            0,     0,     0,     0,     0,     0,     0,     0, 
00205            0,     0,     0,     0,     0,     0,     0,     0, 
00206            0,     0,     0,     0,     0,     0,     0,     0, 
00207            0,     0,     0,     0,     0,     0,     0,     0, 
00208            0,     0,     0,     0,     0,     0,     0,     0, 
00209            0,     0,     0,     0,     0,     0,     0,     0, 
00210            0,     0,     0,     0,     0,     0,     0,     0, 
00211            0,     0,     0,     0,     0,     0,     0,     0, 
00212            0,     0,     0,     0,     0,     0,     0,     0, 
00213            0,     0,     0,     0,     0,     0,     0,     0, 
00214            0,     0,     0,     0,     0,     0,     0,     0, 
00215            0,     0,     0,     0,     0,     0,     0,     0, 
00216            0,     0,     0,     0,     0,     0,     0,     0, 
00217           67,    68,    69,    70,    71,    72,    73,    74, 
00218           75,    76,    77,    78,    79,    67,    68,    69, 
00219           70,    80,    81,    73,    74,    82,    83,    84, 
00220           85,    86,    87,    88,    89,    90,     0,     0, 
00221            0,     0,     0,     0,     0,     0,     0,     0, 
00222            0,     0,     0,     0,     0,     0,     0,     0, 
00223            0,     0,     0,     0,     0,     0,     0,     0, 
00224            0,     0,     0,     0,     0,     0,     0,     0, 
00225            0,     0,     0,     0,     0,     0,     0,     0, 
00226            0,     0,     0,     0,     0,     0,     0,     0, 
00227            0,     0,     0,     0,     0,     0,     0,     0, 
00228            0,     0,     0,     0,     0,     0,     0,     0, 
00229 };
00230 
00231 static const struct {
00232        unsigned short tbl[32];
00233 } nameprep_id11_map_table[] = {
00234        {{
00235           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00236           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00237           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00238        }},
00239        {{
00240           0,    2,    4,    6,    8,   10,   12,   14,   16,   18,   20, 
00241          22,   24,   26,   28,   30,   32,   34,   36,   38,   40,   42, 
00242          44,   46,   48,   50,   52,    0,    0,    0,    0,    0, 
00243        }},
00244        {{
00245           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00246           0,    0,    1,    0,    0,    0,    0,    0,    0,    0,   54, 
00247           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00248        }},
00249        {{
00250          57,   59,   61,   63,   65,   67,   69,   71,   73,   75,   77, 
00251          79,   81,   83,   85,   87,   89,   91,   93,   95,   97,   99, 
00252         101,    0,  103,  105,  107,  109,  111,  113,  115,  117, 
00253        }},
00254        {{
00255         123,    0,  126,    0,  129,    0,  132,    0,  135,    0,  138, 
00256           0,  141,    0,  144,    0,  147,    0,  150,    0,  153,    0, 
00257         156,    0,  159,    0,  162,    0,  165,    0,  168,    0, 
00258        }},
00259        {{
00260         171,    0,  174,    0,  177,    0,  180,    0,  183,    0,  186, 
00261           0,  189,    0,  192,    0,  195,    0,  202,    0,  205,    0, 
00262         208,    0,    0,  211,    0,  214,    0,  217,    0,  220, 
00263        }},
00264        {{
00265           0,  223,    0,  226,    0,  229,    0,  232,    0,  235,  241, 
00266           0,  244,    0,  247,    0,  250,    0,  253,    0,  256,    0, 
00267         259,    0,  262,    0,  265,    0,  268,    0,  271,    0, 
00268        }},
00269        {{
00270         274,    0,  277,    0,  280,    0,  283,    0,  286,    0,  289, 
00271           0,  292,    0,  295,    0,  298,    0,  301,    0,  304,    0, 
00272         307,    0,  310,  312,    0,  315,    0,  318,    0,   38, 
00273        }},
00274        {{
00275           0,  321,  324,    0,  327,    0,  330,  333,    0,  336,  339, 
00276         342,    0,    0,  345,  348,  351,  354,    0,  357,  360,    0, 
00277         363,  366,  369,    0,    0,    0,  372,  375,    0,  378, 
00278        }},
00279        {{
00280         381,    0,  384,    0,  387,    0,  390,  393,    0,  396,    0, 
00281           0,  399,    0,  402,  405,    0,  408,  411,  414,    0,  417, 
00282           0,  420,  423,    0,    0,    0,  426,    0,    0,    0, 
00283        }},
00284        {{
00285           0,    0,    0,    0,  429,  429,    0,  432,  432,    0,  435, 
00286         435,    0,  438,    0,  441,    0,  444,    0,  447,    0,  450, 
00287           0,  453,    0,  456,    0,  459,    0,    0,  462,    0, 
00288        }},
00289        {{
00290         465,    0,  468,    0,  471,    0,  474,    0,  477,    0,  480, 
00291           0,  483,    0,  486,    0,  489,  496,  496,    0,  499,    0, 
00292         502,  505,  508,    0,  511,    0,  514,    0,  517,    0, 
00293        }},
00294        {{
00295         520,    0,  523,    0,  526,    0,  529,    0,  532,    0,  535, 
00296           0,  538,    0,  541,    0,  544,    0,  547,    0,  550,    0, 
00297         553,    0,  556,    0,  559,    0,  562,    0,  565,    0, 
00298        }},
00299        {{
00300         568,    0,  571,    0,  574,    0,  577,    0,  580,    0,  583, 
00301           0,  586,    0,  589,    0,  592,    0,  595,    0,    0,    0, 
00302           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00303        }},
00304        {{
00305           0,    0,    0,    0,    0,  598,    0,    0,    0,    0,    0, 
00306           0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0, 
00307           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00308        }},
00309        {{
00310           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00311           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00312           0,    0,    0,    0,  601,    0,    0,    0,    0,    0, 
00313        }},
00314        {{
00315           0,    0,    0,    0,    0,    0,  608,    0,  611,  614,  617, 
00316           0,  620,    0,  623,  626,  629,  640,  643,  646,  649,  652, 
00317         655,  658,  661,  598,  664,  667,   54,  670,  673,  676, 
00318        }},
00319        {{
00320         679,  682,    0,  685,  688,  691,  694,  697,  700,  703,  706, 
00321         709,    0,    0,    0,    0,  712,    0,    0,    0,    0,    0, 
00322           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00323        }},
00324        {{
00325           0,    0,  685,    0,    0,    0,    0,    0,    0,    0,    0, 
00326           0,    0,    0,    0,    0,  643,  661,  691,  623,  709,  694, 
00327         679,    0,  723,    0,  726,    0,  729,    0,  732,    0, 
00328        }},
00329        {{
00330         735,    0,  738,    0,  741,    0,  744,    0,  747,    0,  750, 
00331           0,  753,    0,  756,    0,  664,  682,  685,    0,  661,  652, 
00332           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00333        }},
00334        {{
00335         759,  762,  765,  768,  771,  774,  777,  780,  783,  786,  789, 
00336         792,  795,  798,  801,  804,  807,  810,  813,  816,  819,  822, 
00337         825,  828,  831,  834,  837,  840,  843,  846,  849,  852, 
00338        }},
00339        {{
00340         855,  858,  861,  864,  867,  870,  873,  876,  879,  882,  885, 
00341         888,  891,  894,  897,  900,    0,    0,    0,    0,    0,    0, 
00342           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00343        }},
00344        {{
00345         903,    0,  906,    0,  909,    0,  912,    0,  915,    0,  918, 
00346           0,  921,    0,  924,    0,  927,    0,  930,    0,  933,    0, 
00347         936,    0,  939,    0,  942,    0,  945,    0,  948,    0, 
00348        }},
00349        {{
00350         951,    0,    0,    0,    0,    0,    0,    0,    0,    0,  954, 
00351           0,  957,    0,  960,    0,  963,    0,  966,    0,  969,    0, 
00352         972,    0,  975,    0,  978,    0,  981,    0,  984,    0, 
00353        }},
00354        {{
00355         987,    0,  990,    0,  993,    0,  996,    0,  999,    0, 1002, 
00356           0, 1005,    0, 1008,    0, 1011,    0, 1014,    0, 1017,    0, 
00357        1020,    0, 1023,    0, 1026,    0, 1029,    0, 1032,    0, 
00358        }},
00359        {{
00360           0, 1035,    0, 1038,    0, 1041,    0, 1044,    0, 1047,    0, 
00361        1050,    0, 1053,    0,    0, 1056,    0, 1059,    0, 1062,    0, 
00362        1065,    0, 1068,    0, 1071,    0, 1074,    0, 1077,    0, 
00363        }},
00364        {{
00365        1080,    0, 1083,    0, 1086,    0, 1089,    0, 1092,    0, 1095, 
00366           0, 1098,    0, 1101,    0, 1104,    0, 1107,    0, 1110,    0, 
00367           0,    0, 1113,    0,    0,    0,    0,    0,    0,    0, 
00368        }},
00369        {{
00370        1116,    0, 1119,    0, 1122,    0, 1125,    0, 1128,    0, 1131, 
00371           0, 1134,    0, 1137,    0,    0,    0,    0,    0,    0,    0, 
00372           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00373        }},
00374        {{
00375           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00376           0,    0,    0,    0,    0,    0, 1140, 1143, 1146, 1149, 1152, 
00377        1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 
00378        }},
00379        {{
00380        1185, 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 
00381        1218, 1221, 1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 
00382        1251,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00383        }},
00384        {{
00385           0,    0,    0,    0,    0,    0,    0, 1254,    0,    0,    0, 
00386           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00387           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00388        }},
00389        {{
00390           0,    0,    0,    0,    0,    0,    1,    0,    0,    0,    0, 
00391           1,    1,    1,    0,    0,    0,    0,    0,    0,    0,    0, 
00392           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00393        }},
00394        {{
00395        1261,    0, 1264,    0, 1267,    0, 1270,    0, 1273,    0, 1276, 
00396           0, 1279,    0, 1282,    0, 1285,    0, 1288,    0, 1291,    0, 
00397        1294,    0, 1297,    0, 1300,    0, 1303,    0, 1306,    0, 
00398        }},
00399        {{
00400        1309,    0, 1312,    0, 1315,    0, 1318,    0, 1321,    0, 1324, 
00401           0, 1327,    0, 1330,    0, 1333,    0, 1336,    0, 1339,    0, 
00402        1342,    0, 1345,    0, 1348,    0, 1351,    0, 1354,    0, 
00403        }},
00404        {{
00405        1357,    0, 1360,    0, 1363,    0, 1366,    0, 1369,    0, 1372, 
00406           0, 1375,    0, 1378,    0, 1381,    0, 1384,    0, 1387,    0, 
00407        1390,    0, 1393,    0, 1396,    0, 1399,    0, 1402,    0, 
00408        }},
00409        {{
00410        1405,    0, 1408,    0, 1411,    0, 1414,    0, 1417,    0, 1420, 
00411           0, 1423,    0, 1426,    0, 1429,    0, 1432,    0, 1435,    0, 
00412        1438,    0, 1441,    0, 1444,    0, 1447,    0, 1450,    0, 
00413        }},
00414        {{
00415        1453,    0, 1456,    0, 1459,    0, 1462,    0, 1465,    0, 1468, 
00416           0, 1471,    0, 1474,    0, 1477,    0, 1480,    0, 1483,    0, 
00417        1486, 1493, 1500, 1507, 1514, 1405,    0,    0,    0,    0, 
00418        }},
00419        {{
00420        1521,    0, 1524,    0, 1527,    0, 1530,    0, 1533,    0, 1536, 
00421           0, 1539,    0, 1542,    0, 1545,    0, 1548,    0, 1551,    0, 
00422        1554,    0, 1557,    0, 1560,    0, 1563,    0, 1566,    0, 
00423        }},
00424        {{
00425        1569,    0, 1572,    0, 1575,    0, 1578,    0, 1581,    0, 1584, 
00426           0, 1587,    0, 1590,    0, 1593,    0, 1596,    0, 1599,    0, 
00427        1602,    0, 1605,    0, 1608,    0, 1611,    0, 1614,    0, 
00428        }},
00429        {{
00430        1617,    0, 1620,    0, 1623,    0, 1626,    0, 1629,    0, 1632, 
00431           0, 1635,    0, 1638,    0, 1641,    0, 1644,    0, 1647,    0, 
00432        1650,    0, 1653,    0,    0,    0,    0,    0,    0,    0, 
00433        }},
00434        {{
00435           0,    0,    0,    0,    0,    0,    0,    0, 1656, 1659, 1662, 
00436        1665, 1668, 1671, 1674, 1677,    0,    0,    0,    0,    0,    0, 
00437           0,    0, 1680, 1683, 1686, 1689, 1692, 1695,    0,    0, 
00438        }},
00439        {{
00440           0,    0,    0,    0,    0,    0,    0,    0, 1698, 1701, 1704, 
00441        1707, 1710, 1713, 1716, 1719,    0,    0,    0,    0,    0,    0, 
00442           0,    0, 1722, 1725, 1728, 1731, 1734, 1737, 1740, 1743, 
00443        }},
00444        {{
00445           0,    0,    0,    0,    0,    0,    0,    0, 1746, 1749, 1752, 
00446        1755, 1758, 1761,    0,    0, 1764,    0, 1771,    0, 1782,    0, 
00447        1793,    0,    0, 1804,    0, 1807,    0, 1810,    0, 1813, 
00448        }},
00449        {{
00450           0,    0,    0,    0,    0,    0,    0,    0, 1816, 1819, 1822, 
00451        1825, 1828, 1831, 1834, 1837,    0,    0,    0,    0,    0,    0, 
00452           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00453        }},
00454        {{
00455        1840, 1847, 1854, 1861, 1868, 1875, 1882, 1889, 1840, 1847, 1854, 
00456        1861, 1868, 1875, 1882, 1889, 1896, 1903, 1910, 1917, 1924, 1931, 
00457        1938, 1945, 1896, 1903, 1910, 1917, 1924, 1931, 1938, 1945, 
00458        }},
00459        {{
00460        1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001, 1952, 1959, 1966, 
00461        1973, 1980, 1987, 1994, 2001,    0,    0, 2008, 2015, 2022,    0, 
00462        2029, 2036, 2047, 2050, 2053, 2056, 2015,    0,  598,    0, 
00463        }},
00464        {{
00465           0,    0, 2059, 2066, 2073,    0, 2080, 2087, 2098, 2101, 2104, 
00466        2107, 2066,    0,    0,    0,    0,    0, 2110,  629,    0,    0, 
00467        2121, 2128, 2139, 2142, 2145, 2148,    0,    0,    0,    0, 
00468        }},
00469        {{
00470           0,    0, 2151,  712, 2162,    0, 2169, 2176, 2187, 2190, 2193, 
00471        2196, 2199,    0,    0,    0,    0,    0, 2202, 2209, 2216,    0, 
00472        2223, 2230, 2241, 2244, 2247, 2250, 2209,    0,    0,    0, 
00473        }},
00474        {{
00475           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00476           1,    1,    1,    0,    0,    0,    0,    0,    0,    0,    0, 
00477           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00478        }},
00479        {{
00480           1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00481           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00482           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00483        }},
00484        {{
00485           0,    0,    0,    0,    0,    0,    0,    0, 2253,    0,    0, 
00486           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00487           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00488        }},
00489        {{
00490           0,    0,    6, 2259,    0,    0,    0,  351,    0, 2265,    0, 
00491          16,   16,   16,    0,    0,   18,   18,   24,    0,    0,   28, 
00492        2271,    0,    0,   32,   34,   36,   36,   36,    0,    0, 
00493        }},
00494        {{
00495        2277, 2283, 2293,    0,   52,    0,  703,    0,   52,    0,   22, 
00496          67,    4,    6,    0,    0,   10,   12,    0,   26,    0,    0, 
00497           0,    0,    0,    0,    0,    0,    0,    0,  646,  679, 
00498        }},
00499        {{
00500           0,    0,    0,    0,    0,    8,    0,    0,    0,    0,    0, 
00501           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00502           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00503        }},
00504        {{
00505        2299, 2302, 2305, 2308, 2311, 2314, 2317, 2320, 2323, 2326, 2329, 
00506        2332, 2335, 2338, 2341, 2344,    0,    0,    0,    0,    0,    0, 
00507           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00508        }},
00509        {{
00510           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00511           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00512        2347, 2350, 2353, 2356, 2359, 2362, 2365, 2368, 2371, 2374, 
00513        }},
00514        {{
00515        2377, 2380, 2383, 2386, 2389, 2392, 2395, 2398, 2401, 2404, 2407, 
00516        2410, 2413, 2416, 2419, 2422,    0,    0,    0,    0,    0,    0, 
00517           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00518        }},
00519        {{
00520           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00521           0,    0,    0,    0,    0,    0, 2425,    0, 2435,    0, 2441, 
00522           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00523        }},
00524        {{
00525        2447, 2453, 2459, 2465, 2471, 2477, 2483, 2489,    0,    0, 2495, 
00526        2501, 2507,    0,    0,    0, 2513, 2519, 2529, 2539, 2549,    0, 
00527           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00528        }},
00529        {{
00530           0,    0,    0,    0,    0,    0,    0,    0,    0, 2447, 2559, 
00531        2569, 2579,    0,    0,    0,    0,    0,    0,    0, 2589, 2595, 
00532        2601, 2607, 2613, 2607, 2619, 2625, 2631, 2637, 2643, 2637, 
00533        }},
00534        {{
00535        2649, 2656,    0, 2663,    0,    0, 2669, 2683, 2693, 2699,    0, 
00536        2705,    0, 2711, 2717,    0,    0,    0,    0,    0,    0,    0, 
00537           0, 2723,    0, 2729, 2739,    0, 2745, 2751,    0,    0, 
00538        }},
00539        {{
00540        2757, 2763, 2769, 2775, 2785, 2795, 2795,    0,    0,    0,    0, 
00541           0,    0,    0,    0,    0,    0,    0,    0, 2801, 2808, 2815, 
00542        2822, 2829,    0,    0,    0,    0,    0,    0,    0,    0, 
00543        }},
00544        {{
00545           1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1, 
00546           1,    1,    1,    1,    1,    0,    0,    0,    0,    0,    0, 
00547           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00548        }},
00549        {{
00550           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00551           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00552           0,    0,    0,    0,    0,    0,    0,    0,    0,    1, 
00553        }},
00554        {{
00555           0, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, 2863, 
00556        2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, 
00557        2899, 2902, 2905, 2908, 2911,    0,    0,    0,    0,    0, 
00558        }},
00559        {{
00560        2914, 2918, 2922, 2926, 2930, 2934, 2938, 2942, 2946, 2950, 2954, 
00561        2958, 2962, 2966, 2970, 2974, 2978, 2982, 2986, 2990, 2994, 2998, 
00562        3002, 3006, 3010, 3014, 3018, 3022, 3026, 3030, 3034, 3038, 
00563        }},
00564        {{
00565        3042, 3046, 3050, 3054, 3058, 3062,    0,    0,    0,    0,    0, 
00566           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00567           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00568        }},
00569        {{
00570           2,    4,    6,    8,   10,   12,   14,   16,   18,   20,   22, 
00571          24,   26,   28,   30,   32,   34,   36,   38,   40,   42,   44, 
00572          46,   48,   50,   52,    0,    0,    0,    0,    0,    0, 
00573        }},
00574        {{
00575           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00576           0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    4, 
00577           6,    8,   10,   12,   14,   16,   18,   20,   22,   24, 
00578        }},
00579        {{
00580          26,   28,   30,   32,   34,   36,   38,   40,   42,   44,   46, 
00581          48,   50,   52,    0,    0,    0,    0,    0,    0,    0,    0, 
00582           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00583        }},
00584        {{
00585           0,    0,    0,    0,    0,    0,    0,    0,    2,    4,    6, 
00586           8,   10,   12,   14,   16,   18,   20,   22,   24,   26,   28, 
00587          30,   32,   34,   36,   38,   40,   42,   44,   46,   48, 
00588        }},
00589        {{
00590          50,   52,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00591           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00592           0,    0,    0,    0,    0,    0,    2,    0,    6,    8, 
00593        }},
00594        {{
00595           0,    0,   14,    0,    0,   20,   22,    0,    0,   28,   30, 
00596          32,   34,    0,   38,   40,   42,   44,   46,   48,   50,   52, 
00597           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00598        }},
00599        {{
00600           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00601           0,    0,    0,    0,    0,    2,    4,    6,    8,   10,   12, 
00602          14,   16,   18,   20,   22,   24,   26,   28,   30,   32, 
00603        }},
00604        {{
00605          34,   36,   38,   40,   42,   44,   46,   48,   50,   52,    0, 
00606           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00607           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00608        }},
00609        {{
00610           0,    0,    0,    0,    2,    4,    0,    8,   10,   12,   14, 
00611           0,    0,   20,   22,   24,   26,   28,   30,   32,   34,    0, 
00612          38,   40,   42,   44,   46,   48,   50,    0,    0,    0, 
00613        }},
00614        {{
00615           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00616           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00617           0,    0,    2,    4,    0,    8,   10,   12,   14,    0, 
00618        }},
00619        {{
00620          18,   20,   22,   24,   26,    0,   30,    0,    0,    0,   38, 
00621          40,   42,   44,   46,   48,   50,    0,    0,    0,    0,    0, 
00622           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00623        }},
00624        {{
00625           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00626           0,    2,    4,    6,    8,   10,   12,   14,   16,   18,   20, 
00627          22,   24,   26,   28,   30,   32,   34,   36,   38,   40, 
00628        }},
00629        {{
00630          42,   44,   46,   48,   50,   52,    0,    0,    0,    0,    0, 
00631           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00632           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00633        }},
00634        {{
00635          50,   52,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00636           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00637           0,    0,    0,    0,    0,    0,    2,    4,    6,    8, 
00638        }},
00639        {{
00640          10,   12,   14,   16,   18,   20,   22,   24,   26,   28,   30, 
00641          32,   34,   36,   38,   40,   42,   44,   46,   48,   50,   52, 
00642           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00643        }},
00644        {{
00645           0,    0,    0,    0,    0,    0,    0,    0,  640,  643,  646, 
00646         649,  652,  655,  658,  661,  598,  664,  667,   54,  670,  673, 
00647         676,  679,  682,  661,  685,  688,  691,  694,  697,  700, 
00648        }},
00649        {{
00650         703,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00651           0,    0,    0,    0,    0,    0,    0,    0,  685,    0,    0, 
00652           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00653        }},
00654        {{
00655           0,    0,  640,  643,  646,  649,  652,  655,  658,  661,  598, 
00656         664,  667,   54,  670,  673,  676,  679,  682,  661,  685,  688, 
00657         691,  694,  697,  700,  703,    0,    0,    0,    0,    0, 
00658        }},
00659        {{
00660           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00661           0,    0,  685,    0,    0,    0,    0,    0,    0,    0,    0, 
00662           0,    0,    0,    0,    0,    0,  640,  643,  646,  649, 
00663        }},
00664        {{
00665         652,  655,  658,  661,  598,  664,  667,   54,  670,  673,  676, 
00666         679,  682,  661,  685,  688,  691,  694,  697,  700,  703,    0, 
00667           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00668        }},
00669        {{
00670           0,    0,    0,    0,    0,    0,    0,  685,    0,    0,    0, 
00671           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00672         640,  643,  646,  649,  652,  655,  658,  661,  598,  664, 
00673        }},
00674        {{
00675         667,   54,  670,  673,  676,  679,  682,  661,  685,  688,  691, 
00676         694,  697,  700,  703,    0,    0,    0,    0,    0,    0,    0, 
00677           0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00678        }},
00679        {{
00680           0,  685,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00681           0,    0,    0,    0,    0,  640,  643,  646,  649,  652,  655, 
00682         658,  661,  598,  664,  667,   54,  670,  673,  676,  679, 
00683        }},
00684        {{
00685         682,  661,  685,  688,  691,  694,  697,  700,  703,    0,    0, 
00686           0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
00687           0,    0,    0,    0,    0,  685,    0,    0,    0,    0, 
00688        }},
00689 };
00690 
00691 static const unsigned char nameprep_id11_map_data[] = {
00692          0,   0,   1,  97,   1,  98,   1,  99,   1, 100,   1, 101, 
00693          1, 102,   1, 103,   1, 104,   1, 105,   1, 106,   1, 107, 
00694          1, 108,   1, 109,   1, 110,   1, 111,   1, 112,   1, 113, 
00695          1, 114,   1, 115,   1, 116,   1, 117,   1, 118,   1, 119, 
00696          1, 120,   1, 121,   1, 122,   2, 188,   3,   1, 224,   1, 
00697        225,   1, 226,   1, 227,   1, 228,   1, 229,   1, 230,   1, 
00698        231,   1, 232,   1, 233,   1, 234,   1, 235,   1, 236,   1, 
00699        237,   1, 238,   1, 239,   1, 240,   1, 241,   1, 242,   1, 
00700        243,   1, 244,   1, 245,   1, 246,   1, 248,   1, 249,   1, 
00701        250,   1, 251,   1, 252,   1, 253,   1, 254,   5, 115,   0, 
00702          0,   0, 115,   2,   1,   1,   2,   3,   1,   2,   5,   1, 
00703          2,   7,   1,   2,   9,   1,   2,  11,   1,   2,  13,   1, 
00704          2,  15,   1,   2,  17,   1,   2,  19,   1,   2,  21,   1, 
00705          2,  23,   1,   2,  25,   1,   2,  27,   1,   2,  29,   1, 
00706          2,  31,   1,   2,  33,   1,   2,  35,   1,   2,  37,   1, 
00707          2,  39,   1,   2,  41,   1,   2,  43,   1,   2,  45,   1, 
00708          2,  47,   1,   6, 105,   0,   0,   0,   7,   3,   2,  51, 
00709          1,   2,  53,   1,   2,  55,   1,   2,  58,   1,   2,  60, 
00710          1,   2,  62,   1,   2,  64,   1,   2,  66,   1,   2,  68, 
00711          1,   2,  70,   1,   2,  72,   1,   5, 188,   2,   0,   0, 
00712        110,   2,  75,   1,   2,  77,   1,   2,  79,   1,   2,  81, 
00713          1,   2,  83,   1,   2,  85,   1,   2,  87,   1,   2,  89, 
00714          1,   2,  91,   1,   2,  93,   1,   2,  95,   1,   2,  97, 
00715          1,   2,  99,   1,   2, 101,   1,   2, 103,   1,   2, 105, 
00716          1,   2, 107,   1,   2, 109,   1,   2, 111,   1,   2, 113, 
00717          1,   2, 115,   1,   2, 117,   1,   2, 119,   1,   1, 255, 
00718          2, 122,   1,   2, 124,   1,   2, 126,   1,   2,  83,   2, 
00719          2, 131,   1,   2, 133,   1,   2,  84,   2,   2, 136,   1, 
00720          2,  86,   2,   2,  87,   2,   2, 140,   1,   2, 221,   1, 
00721          2,  89,   2,   2,  91,   2,   2, 146,   1,   2,  96,   2, 
00722          2,  99,   2,   2, 105,   2,   2, 104,   2,   2, 153,   1, 
00723          2, 111,   2,   2, 114,   2,   2, 117,   2,   2, 161,   1, 
00724          2, 163,   1,   2, 165,   1,   2, 128,   2,   2, 168,   1, 
00725          2, 131,   2,   2, 173,   1,   2, 136,   2,   2, 176,   1, 
00726          2, 138,   2,   2, 139,   2,   2, 180,   1,   2, 182,   1, 
00727          2, 146,   2,   2, 185,   1,   2, 189,   1,   2, 198,   1, 
00728          2, 201,   1,   2, 204,   1,   2, 206,   1,   2, 208,   1, 
00729          2, 210,   1,   2, 212,   1,   2, 214,   1,   2, 216,   1, 
00730          2, 218,   1,   2, 220,   1,   2, 223,   1,   2, 225,   1, 
00731          2, 227,   1,   2, 229,   1,   2, 231,   1,   2, 233,   1, 
00732          2, 235,   1,   2, 237,   1,   2, 239,   1,   6, 106,   0, 
00733          0,   0,  12,   3,   2, 243,   1,   2, 245,   1,   2, 149, 
00734          1,   2, 191,   1,   2, 249,   1,   2, 251,   1,   2, 253, 
00735          1,   2, 255,   1,   2,   1,   2,   2,   3,   2,   2,   5, 
00736          2,   2,   7,   2,   2,   9,   2,   2,  11,   2,   2,  13, 
00737          2,   2,  15,   2,   2,  17,   2,   2,  19,   2,   2,  21, 
00738          2,   2,  23,   2,   2,  25,   2,   2,  27,   2,   2,  29, 
00739          2,   2,  31,   2,   2, 158,   1,   2,  35,   2,   2,  37, 
00740          2,   2,  39,   2,   2,  41,   2,   2,  43,   2,   2,  45, 
00741          2,   2,  47,   2,   2,  49,   2,   2,  51,   2,   2, 185, 
00742          3,   6,  32,   0,   0,   0, 185,   3,   2, 172,   3,   2, 
00743        173,   3,   2, 174,   3,   2, 175,   3,   2, 204,   3,   2, 
00744        205,   3,   2, 206,   3,  10, 185,   3,   0,   0,   8,   3, 
00745          0,   0,   1,   3,   2, 177,   3,   2, 178,   3,   2, 179, 
00746          3,   2, 180,   3,   2, 181,   3,   2, 182,   3,   2, 183, 
00747          3,   2, 184,   3,   2, 186,   3,   2, 187,   3,   2, 189, 
00748          3,   2, 190,   3,   2, 191,   3,   2, 192,   3,   2, 193, 
00749          3,   2, 195,   3,   2, 196,   3,   2, 197,   3,   2, 198, 
00750          3,   2, 199,   3,   2, 200,   3,   2, 201,   3,   2, 202, 
00751          3,   2, 203,   3,  10, 197,   3,   0,   0,   8,   3,   0, 
00752          0,   1,   3,   2, 217,   3,   2, 219,   3,   2, 221,   3, 
00753          2, 223,   3,   2, 225,   3,   2, 227,   3,   2, 229,   3, 
00754          2, 231,   3,   2, 233,   3,   2, 235,   3,   2, 237,   3, 
00755          2, 239,   3,   2,  80,   4,   2,  81,   4,   2,  82,   4, 
00756          2,  83,   4,   2,  84,   4,   2,  85,   4,   2,  86,   4, 
00757          2,  87,   4,   2,  88,   4,   2,  89,   4,   2,  90,   4, 
00758          2,  91,   4,   2,  92,   4,   2,  93,   4,   2,  94,   4, 
00759          2,  95,   4,   2,  48,   4,   2,  49,   4,   2,  50,   4, 
00760          2,  51,   4,   2,  52,   4,   2,  53,   4,   2,  54,   4, 
00761          2,  55,   4,   2,  56,   4,   2,  57,   4,   2,  58,   4, 
00762          2,  59,   4,   2,  60,   4,   2,  61,   4,   2,  62,   4, 
00763          2,  63,   4,   2,  64,   4,   2,  65,   4,   2,  66,   4, 
00764          2,  67,   4,   2,  68,   4,   2,  69,   4,   2,  70,   4, 
00765          2,  71,   4,   2,  72,   4,   2,  73,   4,   2,  74,   4, 
00766          2,  75,   4,   2,  76,   4,   2,  77,   4,   2,  78,   4, 
00767          2,  79,   4,   2,  97,   4,   2,  99,   4,   2, 101,   4, 
00768          2, 103,   4,   2, 105,   4,   2, 107,   4,   2, 109,   4, 
00769          2, 111,   4,   2, 113,   4,   2, 115,   4,   2, 117,   4, 
00770          2, 119,   4,   2, 121,   4,   2, 123,   4,   2, 125,   4, 
00771          2, 127,   4,   2, 129,   4,   2, 139,   4,   2, 141,   4, 
00772          2, 143,   4,   2, 145,   4,   2, 147,   4,   2, 149,   4, 
00773          2, 151,   4,   2, 153,   4,   2, 155,   4,   2, 157,   4, 
00774          2, 159,   4,   2, 161,   4,   2, 163,   4,   2, 165,   4, 
00775          2, 167,   4,   2, 169,   4,   2, 171,   4,   2, 173,   4, 
00776          2, 175,   4,   2, 177,   4,   2, 179,   4,   2, 181,   4, 
00777          2, 183,   4,   2, 185,   4,   2, 187,   4,   2, 189,   4, 
00778          2, 191,   4,   2, 194,   4,   2, 196,   4,   2, 198,   4, 
00779          2, 200,   4,   2, 202,   4,   2, 204,   4,   2, 206,   4, 
00780          2, 209,   4,   2, 211,   4,   2, 213,   4,   2, 215,   4, 
00781          2, 217,   4,   2, 219,   4,   2, 221,   4,   2, 223,   4, 
00782          2, 225,   4,   2, 227,   4,   2, 229,   4,   2, 231,   4, 
00783          2, 233,   4,   2, 235,   4,   2, 237,   4,   2, 239,   4, 
00784          2, 241,   4,   2, 243,   4,   2, 245,   4,   2, 249,   4, 
00785          2,   1,   5,   2,   3,   5,   2,   5,   5,   2,   7,   5, 
00786          2,   9,   5,   2,  11,   5,   2,  13,   5,   2,  15,   5, 
00787          2,  97,   5,   2,  98,   5,   2,  99,   5,   2, 100,   5, 
00788          2, 101,   5,   2, 102,   5,   2, 103,   5,   2, 104,   5, 
00789          2, 105,   5,   2, 106,   5,   2, 107,   5,   2, 108,   5, 
00790          2, 109,   5,   2, 110,   5,   2, 111,   5,   2, 112,   5, 
00791          2, 113,   5,   2, 114,   5,   2, 115,   5,   2, 116,   5, 
00792          2, 117,   5,   2, 118,   5,   2, 119,   5,   2, 120,   5, 
00793          2, 121,   5,   2, 122,   5,   2, 123,   5,   2, 124,   5, 
00794          2, 125,   5,   2, 126,   5,   2, 127,   5,   2, 128,   5, 
00795          2, 129,   5,   2, 130,   5,   2, 131,   5,   2, 132,   5, 
00796          2, 133,   5,   2, 134,   5,   6, 101,   5,   0,   0, 130, 
00797          5,   2,   1,  30,   2,   3,  30,   2,   5,  30,   2,   7, 
00798         30,   2,   9,  30,   2,  11,  30,   2,  13,  30,   2,  15, 
00799         30,   2,  17,  30,   2,  19,  30,   2,  21,  30,   2,  23, 
00800         30,   2,  25,  30,   2,  27,  30,   2,  29,  30,   2,  31, 
00801         30,   2,  33,  30,   2,  35,  30,   2,  37,  30,   2,  39, 
00802         30,   2,  41,  30,   2,  43,  30,   2,  45,  30,   2,  47, 
00803         30,   2,  49,  30,   2,  51,  30,   2,  53,  30,   2,  55, 
00804         30,   2,  57,  30,   2,  59,  30,   2,  61,  30,   2,  63, 
00805         30,   2,  65,  30,   2,  67,  30,   2,  69,  30,   2,  71, 
00806         30,   2,  73,  30,   2,  75,  30,   2,  77,  30,   2,  79, 
00807         30,   2,  81,  30,   2,  83,  30,   2,  85,  30,   2,  87, 
00808         30,   2,  89,  30,   2,  91,  30,   2,  93,  30,   2,  95, 
00809         30,   2,  97,  30,   2,  99,  30,   2, 101,  30,   2, 103, 
00810         30,   2, 105,  30,   2, 107,  30,   2, 109,  30,   2, 111, 
00811         30,   2, 113,  30,   2, 115,  30,   2, 117,  30,   2, 119, 
00812         30,   2, 121,  30,   2, 123,  30,   2, 125,  30,   2, 127, 
00813         30,   2, 129,  30,   2, 131,  30,   2, 133,  30,   2, 135, 
00814         30,   2, 137,  30,   2, 139,  30,   2, 141,  30,   2, 143, 
00815         30,   2, 145,  30,   2, 147,  30,   2, 149,  30,   6, 104, 
00816          0,   0,   0,  49,   3,   6, 116,   0,   0,   0,   8,   3, 
00817          6, 119,   0,   0,   0,  10,   3,   6, 121,   0,   0,   0, 
00818         10,   3,   6,  97,   0,   0,   0, 190,   2,   2, 161,  30, 
00819          2, 163,  30,   2, 165,  30,   2, 167,  30,   2, 169,  30, 
00820          2, 171,  30,   2, 173,  30,   2, 175,  30,   2, 177,  30, 
00821          2, 179,  30,   2, 181,  30,   2, 183,  30,   2, 185,  30, 
00822          2, 187,  30,   2, 189,  30,   2, 191,  30,   2, 193,  30, 
00823          2, 195,  30,   2, 197,  30,   2, 199,  30,   2, 201,  30, 
00824          2, 203,  30,   2, 205,  30,   2, 207,  30,   2, 209,  30, 
00825          2, 211,  30,   2, 213,  30,   2, 215,  30,   2, 217,  30, 
00826          2, 219,  30,   2, 221,  30,   2, 223,  30,   2, 225,  30, 
00827          2, 227,  30,   2, 229,  30,   2, 231,  30,   2, 233,  30, 
00828          2, 235,  30,   2, 237,  30,   2, 239,  30,   2, 241,  30, 
00829          2, 243,  30,   2, 245,  30,   2, 247,  30,   2, 249,  30, 
00830          2,   0,  31,   2,   1,  31,   2,   2,  31,   2,   3,  31, 
00831          2,   4,  31,   2,   5,  31,   2,   6,  31,   2,   7,  31, 
00832          2,  16,  31,   2,  17,  31,   2,  18,  31,   2,  19,  31, 
00833          2,  20,  31,   2,  21,  31,   2,  32,  31,   2,  33,  31, 
00834          2,  34,  31,   2,  35,  31,   2,  36,  31,   2,  37,  31, 
00835          2,  38,  31,   2,  39,  31,   2,  48,  31,   2,  49,  31, 
00836          2,  50,  31,   2,  51,  31,   2,  52,  31,   2,  53,  31, 
00837          2,  54,  31,   2,  55,  31,   2,  64,  31,   2,  65,  31, 
00838          2,  66,  31,   2,  67,  31,   2,  68,  31,   2,  69,  31, 
00839          6, 197,   3,   0,   0,  19,   3,  10, 197,   3,   0,   0, 
00840         19,   3,   0,   0,   0,   3,  10, 197,   3,   0,   0,  19, 
00841          3,   0,   0,   1,   3,  10, 197,   3,   0,   0,  19,   3, 
00842          0,   0,  66,   3,   2,  81,  31,   2,  83,  31,   2,  85, 
00843         31,   2,  87,  31,   2,  96,  31,   2,  97,  31,   2,  98, 
00844         31,   2,  99,  31,   2, 100,  31,   2, 101,  31,   2, 102, 
00845         31,   2, 103,  31,   6,   0,  31,   0,   0, 185,   3,   6, 
00846          1,  31,   0,   0, 185,   3,   6,   2,  31,   0,   0, 185, 
00847          3,   6,   3,  31,   0,   0, 185,   3,   6,   4,  31,   0, 
00848          0, 185,   3,   6,   5,  31,   0,   0, 185,   3,   6,   6, 
00849         31,   0,   0, 185,   3,   6,   7,  31,   0,   0, 185,   3, 
00850          6,  32,  31,   0,   0, 185,   3,   6,  33,  31,   0,   0, 
00851        185,   3,   6,  34,  31,   0,   0, 185,   3,   6,  35,  31, 
00852          0,   0, 185,   3,   6,  36,  31,   0,   0, 185,   3,   6, 
00853         37,  31,   0,   0, 185,   3,   6,  38,  31,   0,   0, 185, 
00854          3,   6,  39,  31,   0,   0, 185,   3,   6,  96,  31,   0, 
00855          0, 185,   3,   6,  97,  31,   0,   0, 185,   3,   6,  98, 
00856         31,   0,   0, 185,   3,   6,  99,  31,   0,   0, 185,   3, 
00857          6, 100,  31,   0,   0, 185,   3,   6, 101,  31,   0,   0, 
00858        185,   3,   6, 102,  31,   0,   0, 185,   3,   6, 103,  31, 
00859          0,   0, 185,   3,   6, 112,  31,   0,   0, 185,   3,   6, 
00860        177,   3,   0,   0, 185,   3,   6, 172,   3,   0,   0, 185, 
00861          3,   6, 177,   3,   0,   0,  66,   3,  10, 177,   3,   0, 
00862          0,  66,   3,   0,   0, 185,   3,   2, 176,  31,   2, 177, 
00863         31,   2, 112,  31,   2, 113,  31,   6, 116,  31,   0,   0, 
00864        185,   3,   6, 183,   3,   0,   0, 185,   3,   6, 174,   3, 
00865          0,   0, 185,   3,   6, 183,   3,   0,   0,  66,   3,  10, 
00866        183,   3,   0,   0,  66,   3,   0,   0, 185,   3,   2, 114, 
00867         31,   2, 115,  31,   2, 116,  31,   2, 117,  31,  10, 185, 
00868          3,   0,   0,   8,   3,   0,   0,   0,   3,   6, 185,   3, 
00869          0,   0,  66,   3,  10, 185,   3,   0,   0,   8,   3,   0, 
00870          0,  66,   3,   2, 208,  31,   2, 209,  31,   2, 118,  31, 
00871          2, 119,  31,  10, 197,   3,   0,   0,   8,   3,   0,   0, 
00872          0,   3,   6, 193,   3,   0,   0,  19,   3,   6, 197,   3, 
00873          0,   0,  66,   3,  10, 197,   3,   0,   0,   8,   3,   0, 
00874          0,  66,   3,   2, 224,  31,   2, 225,  31,   2, 122,  31, 
00875          2, 123,  31,   2, 229,  31,   6, 124,  31,   0,   0, 185, 
00876          3,   6, 201,   3,   0,   0, 185,   3,   6, 206,   3,   0, 
00877          0, 185,   3,   6, 201,   3,   0,   0,  66,   3,  10, 201, 
00878          3,   0,   0,  66,   3,   0,   0, 185,   3,   2, 120,  31, 
00879          2, 121,  31,   2, 124,  31,   2, 125,  31,   5, 114,   0, 
00880          0,   0, 115,   5, 176,   0,   0,   0,  99,   5, 176,   0, 
00881          0,   0, 102,   5, 110,   0,   0,   0, 111,   5, 115,   0, 
00882          0,   0, 109,   9, 116,   0,   0,   0, 101,   0,   0,   0, 
00883        108,   5, 116,   0,   0,   0, 109,   2, 112,  33,   2, 113, 
00884         33,   2, 114,  33,   2, 115,  33,   2, 116,  33,   2, 117, 
00885         33,   2, 118,  33,   2, 119,  33,   2, 120,  33,   2, 121, 
00886         33,   2, 122,  33,   2, 123,  33,   2, 124,  33,   2, 125, 
00887         33,   2, 126,  33,   2, 127,  33,   2, 208,  36,   2, 209, 
00888         36,   2, 210,  36,   2, 211,  36,   2, 212,  36,   2, 213, 
00889         36,   2, 214,  36,   2, 215,  36,   2, 216,  36,   2, 217, 
00890         36,   2, 218,  36,   2, 219,  36,   2, 220,  36,   2, 221, 
00891         36,   2, 222,  36,   2, 223,  36,   2, 224,  36,   2, 225, 
00892         36,   2, 226,  36,   2, 227,  36,   2, 228,  36,   2, 229, 
00893         36,   2, 230,  36,   2, 231,  36,   2, 232,  36,   2, 233, 
00894         36,   9, 104,   0,   0,   0, 112,   0,   0,   0,  97,   5, 
00895         97,   0,   0,   0, 117,   5, 111,   0,   0,   0, 118,   5, 
00896        112,   0,   0,   0,  97,   5, 110,   0,   0,   0,  97,   5, 
00897        188,   3,   0,   0,  97,   5, 109,   0,   0,   0,  97,   5, 
00898        107,   0,   0,   0,  97,   5, 107,   0,   0,   0,  98,   5, 
00899        109,   0,   0,   0,  98,   5, 103,   0,   0,   0,  98,   5, 
00900        112,   0,   0,   0, 102,   5, 110,   0,   0,   0, 102,   5, 
00901        188,   3,   0,   0, 102,   5, 104,   0,   0,   0, 122,   9, 
00902        107,   0,   0,   0, 104,   0,   0,   0, 122,   9, 109,   0, 
00903          0,   0, 104,   0,   0,   0, 122,   9, 103,   0,   0,   0, 
00904        104,   0,   0,   0, 122,   9, 116,   0,   0,   0, 104,   0, 
00905          0,   0, 122,   9, 107,   0,   0,   0, 112,   0,   0,   0, 
00906         97,   9, 109,   0,   0,   0, 112,   0,   0,   0,  97,   9, 
00907        103,   0,   0,   0, 112,   0,   0,   0,  97,   5, 112,   0, 
00908          0,   0, 118,   5, 110,   0,   0,   0, 118,   5, 188,   3, 
00909          0,   0, 118,   5, 109,   0,   0,   0, 118,   5, 107,   0, 
00910          0,   0, 118,   5, 112,   0,   0,   0, 119,   5, 110,   0, 
00911          0,   0, 119,   5, 188,   3,   0,   0, 119,   5, 109,   0, 
00912          0,   0, 119,   5, 107,   0,   0,   0, 119,   6, 107,   0, 
00913          0,   0, 201,   3,   6, 109,   0,   0,   0, 201,   3,   5, 
00914         98,   0,   0,   0, 113,  13,  99,   0,   0,   0,  21,  34, 
00915          0,   0, 107,   0,   0,   0, 103,   9,  99,   0,   0,   0, 
00916        111,   0,   0,   0,  46,   5, 100,   0,   0,   0,  98,   5, 
00917        103,   0,   0,   0, 121,   5, 104,   0,   0,   0, 112,   5, 
00918        107,   0,   0,   0, 107,   5, 107,   0,   0,   0, 109,   5, 
00919        112,   0,   0,   0, 104,   9, 112,   0,   0,   0, 112,   0, 
00920          0,   0, 109,   5, 112,   0,   0,   0, 114,   5, 115,   0, 
00921          0,   0, 118,   5, 119,   0,   0,   0,  98,   5, 102,   0, 
00922          0,   0, 102,   5, 102,   0,   0,   0, 105,   5, 102,   0, 
00923          0,   0, 108,   9, 102,   0,   0,   0, 102,   0,   0,   0, 
00924        105,   9, 102,   0,   0,   0, 102,   0,   0,   0, 108,   5, 
00925        115,   0,   0,   0, 116,   6, 116,   5,   0,   0, 118,   5, 
00926          6, 116,   5,   0,   0, 101,   5,   6, 116,   5,   0,   0, 
00927        107,   5,   6, 126,   5,   0,   0, 118,   5,   6, 116,   5, 
00928          0,   0, 109,   5,   2,  65, 255,   2,  66, 255,   2,  67, 
00929        255,   2,  68, 255,   2,  69, 255,   2,  70, 255,   2,  71, 
00930        255,   2,  72, 255,   2,  73, 255,   2,  74, 255,   2,  75, 
00931        255,   2,  76, 255,   2,  77, 255,   2,  78, 255,   2,  79, 
00932        255,   2,  80, 255,   2,  81, 255,   2,  82, 255,   2,  83, 
00933        255,   2,  84, 255,   2,  85, 255,   2,  86, 255,   2,  87, 
00934        255,   2,  88, 255,   2,  89, 255,   2,  90, 255,   3,  40, 
00935          4,   1,   3,  41,   4,   1,   3,  42,   4,   1,   3,  43, 
00936          4,   1,   3,  44,   4,   1,   3,  45,   4,   1,   3,  46, 
00937          4,   1,   3,  47,   4,   1,   3,  48,   4,   1,   3,  49, 
00938          4,   1,   3,  50,   4,   1,   3,  51,   4,   1,   3,  52, 
00939          4,   1,   3,  53,   4,   1,   3,  54,   4,   1,   3,  55, 
00940          4,   1,   3,  56,   4,   1,   3,  57,   4,   1,   3,  58, 
00941          4,   1,   3,  59,   4,   1,   3,  60,   4,   1,   3,  61, 
00942          4,   1,   3,  62,   4,   1,   3,  63,   4,   1,   3,  64, 
00943          4,   1,   3,  65,   4,   1,   3,  66,   4,   1,   3,  67, 
00944          4,   1,   3,  68,   4,   1,   3,  69,   4,   1,   3,  70, 
00945          4,   1,   3,  71,   4,   1,   3,  72,   4,   1,   3,  73, 
00946          4,   1,   3,  74,   4,   1,   3,  75,   4,   1,   3,  76, 
00947          4,   1,   3,  77,   4,   1, 
00948 };
00949 
00950 static const unsigned short nameprep_id11_prohibited_imap[] = {
00951           68,   196,   196,   324,   196,   196,   196,   452, 
00952          196,   196,   196,   580,   196,   196,   196,   580, 
00953          196,   196,   196,   580,   196,   196,   196,   580, 
00954          196,   196,   196,   580,   196,   196,   196,   580, 
00955          196,   196,   196,   580,   196,   196,   196,   580, 
00956          196,   196,   196,   580,   196,   196,   196,   580, 
00957          196,   196,   196,   580,   196,   196,   196,   580, 
00958          708,   196,   196,   580,   836,   836,   836,   836, 
00959          836,   836,   836,   836,     0,     1,     0,     0, 
00960            0,     0,     2,     0,     0,     0,     0,     0, 
00961            0,     3,     4,     0,     0,     0,     0,     0, 
00962            0,     0,     0,     0,     0,     0,     0,     0, 
00963            0,     0,     0,     0,     0,     0,     0,     0, 
00964            0,     0,     0,     0,     0,     0,     0,     0, 
00965            0,     5,     0,     0,     6,     0,     0,     0, 
00966            0,     0,     0,     0,     0,     0,     0,     0, 
00967            0,     0,     0,     0,     7,     0,     0,     0, 
00968            0,     0,     0,     0,     0,     0,     0,     0, 
00969            0,     0,     0,     0,     0,     0,     0,     0, 
00970            0,     0,     0,     0,     0,     0,     0,     0, 
00971            0,     0,     0,     8,     5,     0,     0,     0, 
00972            0,     0,     0,     0,     0,     0,     0,     0, 
00973            0,     0,     0,     0,     0,     0,     0,     0, 
00974            0,     0,     0,     0,     0,     0,     0,     0, 
00975            0,     0,     0,     0,     0,     0,     0,     0, 
00976            0,     0,     0,     0,     0,     0,     0,     0, 
00977            0,     0,     0,     0,     0,     0,     0,     0, 
00978            0,     0,     0,     0,     0,     0,     0,     0, 
00979            0,     0,     0,     0,     0,     0,     0,     0, 
00980            0,     0,     0,     0,     0,     0,     0,     0, 
00981            0,     0,     0,     0,     0,     0,     0,     0, 
00982            0,     0,     0,     0,     0,     0,     0,     0, 
00983            0,     0,     0,     0,     0,     0,     0,     0, 
00984            0,     0,     0,     0,     0,     0,     0,     0, 
00985            0,     0,     0,     0,     0,     0,     0,     0, 
00986            0,     0,     0,     0,     0,     0,     0,     0, 
00987            0,     0,     0,     0,     0,     0,     0,     0, 
00988            0,     0,     0,     0,     0,     0,     0,     0, 
00989            0,     0,     0,     0,     0,     0,     0,     0, 
00990            0,     0,     0,     0,     0,     0,     0,     0, 
00991            0,     0,     0,     0,     0,     0,     0,     0, 
00992            0,     0,     0,     0,     0,     0,     0,     0, 
00993            0,     0,     0,     0,     0,     0,     0,     0, 
00994            0,     0,     0,     0,     0,     0,     0,     0, 
00995            0,     0,     0,     0,     0,     0,     0,     0, 
00996            0,     0,     0,     0,     0,     0,     0,     0, 
00997            0,     0,     0,     0,     9,     9,     9,     9, 
00998            9,     9,     9,     9,     9,     9,     9,     9, 
00999            9,     9,     9,     9,     9,     9,     9,     9, 
01000            9,     9,     9,     9,     9,     9,     9,     9, 
01001            9,     9,     9,     9,     9,     9,     9,     9, 
01002            9,     9,     9,     9,     9,     9,     9,     9, 
01003            9,     9,     9,     9,     9,     9,     9,     9, 
01004            9,     9,     9,     9,     9,     9,     9,     9, 
01005            9,     9,     9,     9,     9,     9,     0,     0, 
01006            0,     0,     0,     0,     0,     0,     0,    10, 
01007            0,     0,     0,    11,     0,     0,     0,     0, 
01008            0,     0,     0,     0,     0,     0,     0,     0, 
01009            0,     0,     0,     0,     0,     0,     0,     0, 
01010            0,     0,     0,     0,     0,     0,     0,     0, 
01011            0,     0,     0,     0,     0,     0,    12,     0, 
01012            0,     0,     0,     0,     0,     0,     0,     0, 
01013            0,     0,     0,     0,     0,     0,     0,     0, 
01014            0,     0,     0,     0,     0,     0,     0,     0, 
01015            0,     0,     0,     0,     0,     0,     0,     0, 
01016            0,     0,     0,     0,     0,     0,     0,     0, 
01017            0,     0,     0,     0,     0,     0,     0,     0, 
01018            0,     0,     0,     0,     0,     0,     0,     0, 
01019            0,     0,     0,     0,     0,     0,     0,     0, 
01020            0,     0,     0,     0,     0,     0,     0,     0, 
01021            0,     0,     0,     0,     0,     0,     0,     0, 
01022            0,     0,     0,     0,     0,     0,     0,     0, 
01023            0,     0,     0,    13,     0,     0,     0,     0, 
01024            0,     0,     0,     0,     0,     0,     0,     0, 
01025            0,     0,     0,     0,     0,     0,     0,     0, 
01026            0,     0,     0,     0,     0,     0,     0,     0, 
01027            0,     0,     0,     0,     0,     0,     0,     0, 
01028            0,     0,     0,     0,     0,     0,     0,     0, 
01029            0,     0,     0,     0,     0,     0,     0,     0, 
01030            0,     0,     0,     0,     0,     0,     0,     0, 
01031            0,     0,     0,     0,     0,     0,     0,     0, 
01032            0,     0,     0,     0,     0,     0,     0,     0, 
01033            0,     0,     0,     0,     0,     0,     0,     0, 
01034            0,     0,     0,     0,     0,     0,     0,     0, 
01035            0,     0,     0,     0,     0,     0,     0,     0, 
01036            0,     0,     0,     0,     0,     0,     0,     0, 
01037            0,     0,     0,     0,     0,     0,     0,     0, 
01038            0,     0,     0,     0,     0,     0,     0,     0, 
01039            0,     0,     0,    13,    14,     0,     0,     0, 
01040            0,     0,     0,     0,     0,     0,     0,     0, 
01041            0,     0,     0,     0,     0,     0,     0,     0, 
01042            0,     0,     0,     0,     0,     0,     0,     0, 
01043            0,     0,     0,     0,     0,     0,     0,     0, 
01044            0,     0,     0,     0,     0,     0,     0,     0, 
01045            0,     0,     0,     0,     0,     0,     0,     0, 
01046            0,     0,     0,     0,     0,     0,     0,     0, 
01047            0,     0,     0,     0,     0,     0,     0,     0, 
01048            0,     0,     0,     0,     0,     0,     0,     0, 
01049            0,     0,     0,     0,     0,     0,     0,     0, 
01050            0,     0,     0,     0,     0,     0,     0,     0, 
01051            0,     0,     0,     0,     0,     0,     0,     0, 
01052            0,     0,     0,     0,     0,     0,     0,     0, 
01053            0,     0,     0,     0,     0,     0,     0,     0, 
01054            0,     0,     0,     0,     0,     0,     0,     0, 
01055            0,     0,     0,     0,     9,     9,     9,     9, 
01056            9,     9,     9,     9,     9,     9,     9,     9, 
01057            9,     9,     9,     9,     9,     9,     9,     9, 
01058            9,     9,     9,     9,     9,     9,     9,     9, 
01059            9,     9,     9,     9,     9,     9,     9,     9, 
01060            9,     9,     9,     9,     9,     9,     9,     9, 
01061            9,     9,     9,     9,     9,     9,     9,     9, 
01062            9,     9,     9,     9,     9,     9,     9,     9, 
01063            9,     9,     9,     9,     9,     9,     9,     9, 
01064            9,     9,     9,     9,     9,     9,     9,     9, 
01065            9,     9,     9,     9,     9,     9,     9,     9, 
01066            9,     9,     9,     9,     9,     9,     9,     9, 
01067            9,     9,     9,     9,     9,     9,     9,     9, 
01068            9,     9,     9,     9,     9,     9,     9,     9, 
01069            9,     9,     9,     9,     9,     9,     9,     9, 
01070            9,     9,     9,     9,     9,     9,     9,     9, 
01071            9,     9,     9,     9, 
01072 };
01073 
01074 static const struct {
01075        unsigned char bm[16];
01076 } nameprep_id11_prohibited_bitmap[] = {
01077        {{
01078          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01079        }},
01080        {{
01081        255,255,255,255,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01082        }},
01083        {{
01084          0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,  0,
01085        }},
01086        {{
01087          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,
01088        }},
01089        {{
01090          0,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01091        }},
01092        {{
01093          1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01094        }},
01095        {{
01096          0, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01097        }},
01098        {{
01099        255,199,  0,  0,  0,255,  0,  0,  0,  0,  0,128, 14,252,  0,  0,
01100        }},
01101        {{
01102          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255, 15,
01103        }},
01104        {{
01105        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
01106        }},
01107        {{
01108          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,  0,  0,
01109        }},
01110        {{
01111          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,
01112        }},
01113        {{
01114          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,248,  7,
01115        }},
01116        {{
01117          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
01118        }},
01119        {{
01120          2,  0,  0,  0,255,255,255,255,255,255,255,255,255,255,255,255,
01121        }},
01122 };
01123 
01124 static const unsigned short nameprep_id11_unassigned_imap[] = {
01125           68,   196,   324,   452,   580,   708,   708,   836, 
01126          964,   964,  1092,  1220,   708,   708,   708,  1348, 
01127          708,   708,   708,  1348,   708,   708,   708,  1348, 
01128          708,   708,   708,  1348,   708,   708,   708,  1348, 
01129          708,   708,   708,  1348,   708,   708,   708,  1348, 
01130          708,   708,   708,  1348,   708,   708,   708,  1348, 
01131          708,   708,   708,  1348,   708,   708,   708,  1348, 
01132         1476,   708,   708,  1348,   964,   964,   964,   964, 
01133          964,   964,   964,   964,     0,     0,     0,     0, 
01134            1,     2,     3,     4,     0,     5,     6,     7, 
01135            8,     9,    10,    11,    12,    12,    13,    14, 
01136           15,    16,    17,    18,    19,    20,    21,    22, 
01137           23,    24,    25,    26,    27,    28,    29,    30, 
01138           31,    32,    33,    34,    35,     0,     0,     0, 
01139           36,    37,    38,    39,    40,    41,    12,    12, 
01140           12,    12,    12,    12,    12,    12,    12,    12, 
01141            0,    42,    43,    44,    45,    46,    47,    48, 
01142            0,     0,     0,    49,    50,    51,     0,     0, 
01143           52,    53,    54,    55,     0,     0,     0,     0, 
01144            0,     0,    12,    12,    12,    12,    12,    12, 
01145           12,    56,     0,    57,    58,    59,    60,    61, 
01146           62,    63,    64,    65,     0,     0,     0,     0, 
01147            0,     0,     0,     0,     0,     0,     0,     0, 
01148            0,     0,     0,     0,     0,     0,     0,     0, 
01149            0,     0,     0,     0,     0,     0,     0,     0, 
01150            0,     0,     0,     0,     0,     0,     0,     0, 
01151            0,     0,     0,     0,     0,     0,     0,     0, 
01152            0,     0,     0,     0,     0,     0,     0,    66, 
01153            0,     0,     0,     0,     0,     0,     0,     0, 
01154            0,     0,     0,     0,     0,     0,     0,     0, 
01155            0,     0,     0,     0,     0,     0,     0,     0, 
01156            0,     0,     0,     0,     0,     0,     0,     0, 
01157            0,     0,     0,     0,     0,     0,     0,     0, 
01158            0,     0,     0,     0,     0,     0,     0,     0, 
01159            0,     0,     0,     0,     0,     0,     0,     0, 
01160            0,     0,     0,     0,     0,     0,     0,     0, 
01161            0,     0,     0,     0,     0,     0,     0,     0, 
01162            0,     0,     0,     0,     0,     0,     0,     0, 
01163            0,     0,     0,     0,     0,     0,     0,     0, 
01164            0,     0,     0,     0,     0,     0,     0,     0, 
01165            0,     0,     0,     0,     0,     0,     0,     0, 
01166            0,     0,     0,     0,     0,     0,     0,     0, 
01167            0,     0,     0,     0,     0,     0,     0,     0, 
01168            0,     0,     0,     0,     0,     0,     0,     0, 
01169            0,     0,     0,     0,     0,     0,     0,     0, 
01170            0,     0,     0,     0,     0,     0,     0,     0, 
01171            0,     0,     0,     0,     0,     0,     0,     0, 
01172            0,     0,     0,     0,     0,     0,     0,     0, 
01173            0,     0,     0,    67,     0,     0,     0,     0, 
01174            0,     0,     0,     0,     0,    68,    12,    12, 
01175           12,    12,    12,    12,    12,    12,    12,    12, 
01176           12,    12,    12,    12,     0,     0,     0,     0, 
01177            0,     0,     0,     0,     0,     0,     0,     0, 
01178            0,     0,     0,     0,     0,     0,     0,     0, 
01179            0,     0,     0,     0,     0,     0,     0,     0, 
01180            0,     0,     0,     0,     0,     0,     0,     0, 
01181            0,     0,     0,     0,     0,     0,     0,     0, 
01182            0,     0,     0,     0,     0,     0,     0,     0, 
01183            0,     0,     0,     0,     0,     0,     0,     0, 
01184            0,     0,     0,     0,     0,     0,     0,     0, 
01185            0,     0,     0,     0,     0,     0,     0,     0, 
01186            0,     0,     0,     0,     0,     0,     0,     0, 
01187            0,     0,     0,    69,     0,     0,     0,     0, 
01188            0,     0,     0,     0,     0,     0,     0,     0, 
01189            0,     0,     0,     0,     0,     0,     0,     0, 
01190            0,     0,     0,     0,     0,     0,     0,     0, 
01191            0,     0,     0,     0,     0,     0,     0,     0, 
01192            0,     0,     0,     0,     0,     0,     0,     0, 
01193            0,     0,     0,     0,     0,     0,     0,     0, 
01194            0,     0,     0,     0,     0,     0,     0,     0, 
01195            0,     0,     0,     0,     0,     0,     0,     0, 
01196           70,    12,    71,    72,     0,     0,    73,    74, 
01197           75,    76,    35,    77,    12,    12,    12,    12, 
01198           12,    12,    78,    12,    79,    12,    12,    12, 
01199           12,    12,    12,    12,    12,    12,    12,    12, 
01200           12,    12,    12,    12,    12,    12,    12,    12, 
01201           12,    12,    12,    12,    12,    12,    12,    12, 
01202           12,    12,    12,    12,    12,    12,    12,    12, 
01203           12,    12,    12,    12,    12,    12,    12,    12, 
01204           12,    12,    12,    12,    12,    12,    12,    12, 
01205           12,    12,    12,    12,    12,    12,    12,    12, 
01206           12,    12,    12,    12,    12,    12,    12,    12, 
01207           12,    12,    12,    12,    12,    12,    12,    12, 
01208           12,    12,    12,    12,    12,    12,    12,    12, 
01209           12,    12,    12,    12,    12,    12,    12,    12, 
01210           12,    12,    12,    12,    12,    12,    12,    12, 
01211           12,    12,    12,    12,    12,    12,    12,    12, 
01212           12,    12,    12,    12,    12,    12,    12,    12, 
01213           12,    12,    12,    12,    12,    12,    12,    12, 
01214           12,    12,    12,    12,    12,    12,    12,    12, 
01215           12,    12,    12,    12,    12,    12,    12,    12, 
01216           12,    12,    12,    12,    12,    12,    12,    12, 
01217           12,    12,    12,    12,    12,    12,    12,    12, 
01218           12,    12,    12,    12,    12,    12,    12,    12, 
01219           12,    12,    12,    12,    12,    12,    12,    12, 
01220           12,    12,    12,    12,    12,    12,    12,    12, 
01221           12,    12,    12,    12,    12,    12,    12,    12, 
01222           12,    12,    12,    12,    12,    12,    12,    12, 
01223           12,    12,    12,    12,    12,    12,    12,    12, 
01224           12,    12,    12,    12,    12,    12,    12,    12, 
01225           12,    12,    12,    12,    12,    12,    12,    12, 
01226           12,    12,    12,    12,    12,    12,    12,    12, 
01227           12,    12,    12,    12,    12,    12,    12,    12, 
01228           12,    12,    12,    12,    12,    12,    12,    12, 
01229           12,    12,    12,    12,    12,    12,    12,    12, 
01230           12,    12,    12,    12,    12,    12,    12,    12, 
01231           12,    12,    12,    12,    12,    12,    12,    12, 
01232           12,    12,    12,    12,    12,    12,    12,    12, 
01233           12,    12,    12,    12,     0,    80,    81,    82, 
01234           12,    12,    12,    12,    83,    84,    85,     0, 
01235            0,    86,     0,    87,    12,    12,    12,    12, 
01236           12,    12,    12,    12,    12,    12,    12,    12, 
01237           12,    12,    12,    12,    12,    12,    12,    12, 
01238           12,    12,    12,    12,    12,    12,    12,    12, 
01239           12,    12,    12,    12,    12,    12,    12,    12, 
01240           12,    12,    12,    12,    12,    12,    12,    12, 
01241           12,    12,    12,    12,    12,    12,    12,    12, 
01242           12,    12,    12,    12,    12,    12,    12,    12, 
01243           12,    12,    12,    12,    12,    12,    12,    12, 
01244           12,    12,    12,    12,    12,    12,    12,    12, 
01245           12,    12,    12,    88,     0,     0,     0,     0, 
01246            0,     0,     0,     0,     0,     0,     0,     0, 
01247            0,     0,     0,     0,     0,     0,     0,     0, 
01248            0,     0,     0,     0,     0,     0,     0,     0, 
01249            0,     0,     0,     0,     0,     0,     0,     0, 
01250            0,     0,     0,     0,     0,     0,     0,     0, 
01251            0,     0,     0,     0,     0,     0,     0,     0, 
01252            0,     0,     0,     0,     0,     0,     0,     0, 
01253            0,     0,     0,     0,     0,     0,     0,     0, 
01254            0,     0,     0,     0,     0,     0,     0,     0, 
01255            0,     0,     0,     0,     0,     0,     0,     0, 
01256            0,     0,     0,     0,     0,     0,     0,     0, 
01257            0,     0,     0,     0,     0,     0,     0,     0, 
01258            0,     0,     0,     0,     0,     0,     0,     0, 
01259            0,     0,     0,     0,     0,     0,     0,     0, 
01260            0,     0,     0,     0,     0,     0,     0,     0, 
01261            0,     0,     0,     0,     0,     0,     0,     0, 
01262            0,     0,     0,     0,     0,     0,     0,     0, 
01263            0,     0,     0,     0,     0,     0,     0,     0, 
01264            0,     0,     0,     0,     0,     0,     0,     0, 
01265            0,     0,     0,     0,     0,     0,     0,     0, 
01266            0,     0,     0,     0,     0,     0,     0,     0, 
01267            0,     0,     0,     0,     0,     0,     0,     0, 
01268            0,     0,     0,     0,     0,     0,     0,     0, 
01269            0,     0,     0,     0,     0,     0,     0,     0, 
01270            0,     0,     0,     0,     0,     0,     0,     0, 
01271            0,    89,    12,    12,    12,    12,    12,    12, 
01272           12,    12,    12,    12,    12,    12,    12,    12, 
01273           12,    12,    12,    12,    12,    12,    12,    12, 
01274           12,    12,    12,    12,    12,    12,    12,    12, 
01275           12,    12,    12,    12,    12,    12,    12,    12, 
01276           12,    12,    12,    12,    12,    12,    12,    12, 
01277           12,    12,    12,    12,    12,    12,    12,    12, 
01278           12,    12,    12,    12,    12,    12,    12,    12, 
01279           12,    12,    12,    12,    12,    12,    12,    12, 
01280           12,    12,    12,    12,    12,    12,    12,    12, 
01281           12,    12,    12,    12,    12,    12,    12,    12, 
01282           12,    12,    12,    12,    12,    12,    12,    12, 
01283           12,    12,    12,    12,    12,    12,    12,    12, 
01284           12,    12,    12,    12,    12,    12,    12,    12, 
01285           12,    12,    12,    12,    12,    12,    12,    12, 
01286           12,    12,    12,    12,    12,    12,    12,    12, 
01287           12,    12,    12,    12,    12,    12,    12,    12, 
01288           12,    12,    12,    12,    12,    12,    12,    12, 
01289           12,    12,    12,    12,    12,    12,    12,    12, 
01290           12,    12,    12,    12,    12,    12,    12,    12, 
01291           12,    12,    12,    12,     0,     0,     0,     0, 
01292           90,    12,    12,    12,    12,    12,    12,    12, 
01293           12,    12,    12,    88,    12,    12,    12,    12, 
01294           12,    12,    12,    12,    12,    12,    12,    12, 
01295           12,    12,    12,    12,    12,    12,    12,    12, 
01296           12,    12,    12,    12,    12,    12,    12,    12, 
01297           12,    12,    12,    12,    12,    12,    12,    12, 
01298           12,    12,    12,    12,    12,    12,    12,    12, 
01299           12,    12,    12,    12,    12,    12,    12,    12, 
01300           12,    12,    12,    12,    12,    12,    12,    12, 
01301           12,    12,    12,    12,    12,    12,    12,    12, 
01302           12,    12,    12,    12,    12,    12,    12,    12, 
01303           12,    12,    12,    12,    12,    12,    12,    12, 
01304           12,    12,    12,    12,    12,    12,    12,    12, 
01305           12,    12,    12,    12,    12,    12,    12,    12, 
01306           12,    12,    12,    12,    12,    12,    12,    12, 
01307           12,    12,    12,    12,    12,    12,    12,    12, 
01308           12,    12,    12,    12,    12,    12,    12,    12, 
01309           12,    12,    12,    88,    91,    12,    12,    12, 
01310           12,    12,    12,    12,    12,    12,    12,    12, 
01311           12,    12,    12,    12,    12,    12,    12,    12, 
01312           12,    12,    12,    12,    12,    12,    12,    12, 
01313           12,    12,    12,    12,    12,    12,    12,    12, 
01314           12,    12,    12,    12,    12,    12,    12,    12, 
01315           12,    12,    12,    12,    12,    12,    12,    12, 
01316           12,    12,    12,    12,    12,    12,    12,    12, 
01317           12,    12,    12,    12,    12,    12,    12,    12, 
01318           12,    12,    12,    12,    12,    12,    12,    12, 
01319           12,    12,    12,    12,    12,    12,    12,    12, 
01320           12,    12,    12,    12,    12,    12,    12,    12, 
01321           12,    12,    12,    12,    12,    12,    12,    12, 
01322           12,    12,    12,    12,    12,    12,    12,    12, 
01323           12,    12,    12,    12,    12,    12,    12,    12, 
01324           12,    12,    12,    12,    12,    12,    12,    12, 
01325           12,    12,    12,    12, 
01326 };
01327 
01328 static const struct {
01329        unsigned char bm[16];
01330 } nameprep_id11_unassigned_bitmap[] = {
01331        {{
01332          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01333        }},
01334        {{
01335          0,  0,  0,  0,  2,  0,240,255,255,255,  0,  0,  0,  0,  0,  0,
01336        }},
01337        {{
01338          0,  0,  0,  0,  0,192,  0,  0,  0,  0,  0,  0,  0,128,255,255,
01339        }},
01340        {{
01341          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,  0,207,187,
01342        }},
01343        {{
01344         15, 40,  0,  0,  4,  0,  0,  0,  0,128,  0,  0,  0,  0,128,255,
01345        }},
01346        {{
01347        128,  0,  0,  0,  0,  0,  0,  0,  0,128,  0,  0,  0,  0,192,252,
01348        }},
01349        {{
01350          0,  0,255,255,255,255,  1,  0,  0,  0,128,  1,  1,  0,  0,  0,
01351        }},
01352        {{
01353          0,249,  1,  0,  4,  0,  0,  4,224,255,  0,  0,  0,248,224,255,
01354        }},
01355        {{
01356        255,239,255,119,  1,  0,  0,248,  0,  0,192,255,  0,  0,  0,  0,
01357        }},
01358        {{
01359          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  0,128,
01360        }},
01361        {{
01362          0, 64,  0,  0,  0,224,  0,  0,  0,248,255,255,255,255,255,255,
01363        }},
01364        {{
01365          0,  0,  0,  0,  0,  0,252,255,255,255,255,255,255,255,255,255,
01366        }},
01367        {{
01368        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
01369        }},
01370        {{
01371         17,  0,  0,  0,  0,  0,  0, 12,  0,192,224,  0,  0,  0,254,255,
01372        }},
01373        {{
01374         17, 96,  6,  0,  0,  2, 58, 44, 96,198,127, 79, 48,  0,  0,248,
01375        }},
01376        {{
01377         27,120,  6,  0,  0,  2,146, 44,120,198,255,161, 63,  0,224,255,
01378        }},
01379        {{
01380         17, 80,  4,  0,  0,  2, 18, 12, 64,196,254,255, 62,  0,255,255,
01381        }},
01382        {{
01383         17, 96,  6,  0,  0,  2, 50, 12,112,198, 63, 79, 60,  0,254,255,
01384        }},
01385        {{
01386         19, 56,194, 41,231, 56, 64, 60, 56,194,127,255,127,  0,248,255,
01387        }},
01388        {{
01389         17, 32,  2,  0,  0,  2, 16, 60, 32,194,159,255, 60,  0,255,255,
01390        }},
01391        {{
01392         19, 32,  2,  0,  0,  2, 16, 60, 32,194,159,191, 60,  0,255,255,
01393        }},
01394        {{
01395         19, 32,  2,  0,  0,  2,  0, 60, 48,194,127,255, 60,  0,255,255,
01396        }},
01397        {{
01398         19,  0,128,  3,  0,  0,  4,208,128,123,160,  0,255,255,227,255,
01399        }},
01400        {{
01401          1,  0,  0,  0,  0,  0,  0,120,  0,  0,  0,240,255,255,255,255,
01402        }},
01403        {{
01404        105,218, 15,  1, 81, 19,  0,196,160,192,  0,204,255,255,255,255,
01405        }},
01406        {{
01407          0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,248,  1,  0,
01408        }},
01409        {{
01410          0,240,  0,  1,  0,  0,  0, 32,  0, 96,255,255,255,255,255,255,
01411        }},
01412        {{
01413          0,  0,  0,  0,  4,  9, 56,252,  0,  0,  0,252,255,255,255,255,
01414        }},
01415        {{
01416        255,255,255,255,  0,  0,  0,  0,192,255,  0,  0,  0,  0,  0,246,
01417        }},
01418        {{
01419          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,124,  0,  0,  0,  0,
01420        }},
01421        {{
01422          0,  0,  0,  0,248,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,252,
01423        }},
01424        {{
01425        128,  0,  0,  0,  0,  0,  0,  0,128,194,128,194,  0,  0,  0,  0,
01426        }},
01427        {{
01428        128,194,  0,  0,  0,128,194,128,194,128,128,  0,  0,128,  0,  0,
01429        }},
01430        {{
01431          0,128,194,128,  0,  0,  0,  0,128,  0,  0,248,  1,  0,  0,224,
01432        }},
01433        {{
01434        255,255,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,224,255,
01435        }},
01436        {{
01437          1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01438        }},
01439        {{
01440          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,255,
01441        }},
01442        {{
01443          0,  0,  0,224,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,255,
01444        }},
01445        {{
01446          0, 32,224,255,  0,  0,128,255,  0,  0,240,255,  0, 32,242,255,
01447        }},
01448        {{
01449          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,224,  0,252,255,255,
01450        }},
01451        {{
01452          0,128,  0,252,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,
01453        }},
01454        {{
01455          0,  0,  0,  0,  0,252,255,255,255,255,255,255,255,255,255,255,
01456        }},
01457        {{
01458          0,  0,  0,240,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,252,
01459        }},
01460        {{
01461          0,  0,192,192,  0,  0,  0,  0,192,192,  0, 85,  0,  0,  0,192,
01462        }},
01463        {{
01464          0,  0,  0,  0,  0,  0, 32,  0, 32,  0, 48, 16,  0,  0, 35,128,
01465        }},
01466        {{
01467          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,120,127,240,  3, 12,  0,
01468        }},
01469        {{
01470          0,128,255,255,  0,  0,252,255,255,255,  0,  0,  0,248,255,255,
01471        }},
01472        {{
01473          0,  0,  0,  0,  0,  0,  0, 24,  0,240,  7,  0,  0,  0,  0,  0,
01474        }},
01475        {{
01476        240,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01477        }},
01478        {{
01479          0,  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,255,255,255,255,
01480        }},
01481        {{
01482          0,  0,  0,  0,128,255,255,255,  0,248,255,255,  0,  0,  0,  0,
01483        }},
01484        {{
01485          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,
01486        }},
01487        {{
01488          0,  0, 48,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
01489        }},
01490        {{
01491          0,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
01492        }},
01493        {{
01494         33, 12,  0,  0,  0,  1,  0,  0,  0, 80,184,128,  1,  0,  0,  0,
01495        }},
01496        {{
01497          0,  0,224,  0,  0,  0,  1,128,255,255,  0,  0,  0,240,  0,  0,
01498        }},
01499        {{
01500          0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,240,255,
01501        }},
01502        {{
01503          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,255,255,255,  0,240,
01504        }},
01505        {{
01506          0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
01507        }},
01508        {{
01509          0,  0,128,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01510        }},
01511        {{
01512         31,  0,  0,  0,  0,224,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01513        }},
01514        {{
01515          0,128,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,  0,  0,
01516        }},
01517        {{
01518          0,  0,  0,224,  0,  0,  0,  0,240,255,  1,  0,  0,  0,  0,112,
01519        }},
01520        {{
01521          0,  0,  0,  0,  0,  0,  0,  0,  0,240,  0,  0,  0,  0,  0,128,
01522        }},
01523        {{
01524          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,  7,
01525        }},
01526        {{
01527          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,  0,  0,  0,128,
01528        }},
01529        {{
01530          0,  0,  0,  0,  0,  0,192,255,255,255,255,255,255,255,255,255,
01531        }},
01532        {{
01533          0,  0,  0,  0,192,255,255,255,255,255,255,255,255,255,255,255,
01534        }},
01535        {{
01536          0,224,  0,  0,  0,  0,  0,  0,128,255,255,255,255,255,255,255,
01537        }},
01538        {{
01539          0,  0,  0,  0,240,255,255,255,255,255,255,255,255,255,255,255,
01540        }},
01541        {{
01542          0,  0,  0,  0,  0,192,  0,  0,  0,  0,  0,  0,  0,248,255,255,
01543        }},
01544        {{
01545        128,255,  7, 31,  0,  0,128,160, 36,  0,  0,  0,  0,  0,  0,  0,
01546        }},
01547        {{
01548          0,  0,  0,  0,  0,  0,252,255,255,255,  7,  0,  0,  0,  0,  0,
01549        }},
01550        {{
01551          0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,
01552        }},
01553        {{
01554          0,  0,  3,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,224,
01555        }},
01556        {{
01557          0,  0,255,255,240,255,  0,  0,128,  1,  8,  0,128,240, 32,  0,
01558        }},
01559        {{
01560          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 96,
01561        }},
01562        {{
01563          0,  0,  0,  0,  0,  0,  0,128,  3,  3,  3,227,128,128,255,  1,
01564        }},
01565        {{
01566          0,  0,  0,128,240,255,  0,  0,  0,248,255,255,255,255,255,255,
01567        }},
01568        {{
01569          0,  0,  0,  0,192,  0,  0,  0,  0,192,255,255,255,255,255,255,
01570        }},
01571        {{
01572          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,255,
01573        }},
01574        {{
01575          0,  0,  0,  0,128,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01576        }},
01577        {{
01578          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,255,255,255,255,
01579        }},
01580        {{
01581          0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,
01582        }},
01583        {{
01584          0,  0,  0, 32,155, 33,  0, 20, 18,  0,  0,  0,  0,  0,  0,  0,
01585        }},
01586        {{
01587         64, 24, 32, 32,  0,  0,  0,132,160,  3,  2,  0,  0,  0,  0,  0,
01588        }},
01589        {{
01590          0,  0,  0,  0,240,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01591        }},
01592        {{
01593          0,  0,  0,  0,  0,  0,  0,  0,  0, 60,  0,  0,  0,  0,  0,  0,
01594        }},
01595        {{
01596        255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63,
01597        }},
01598        {{
01599          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,255,255,255,
01600        }},
01601        {{
01602          0,  0,  0,192,255,255,255,255,255,255,255,255,255,255,255,255,
01603        }},
01604        {{
01605        253,255,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
01606        }},
01607 };
01608 
01609 static const unsigned short nameprep_id11_bidi_imap[] = {
01610          272,   400,   528,   656,   784,   912,   912,   912, 
01611          912,  1040,  1168,   912,   912,  1296,   912,  1424, 
01612         1552,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01613         1680,  1680,  1680,  1680,  1680,  1808,  1680,  1680, 
01614          912,   912,   912,   912,   912,   912,   912,   912, 
01615          912,   912,  1936,  1680,  1680,  1680,  1680,  2064, 
01616         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01617         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01618         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01619         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01620         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01621         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01622         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01623         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01624         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01625         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01626         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01627         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01628         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01629         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01630         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01631         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01632         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01633         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01634         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01635         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01636         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01637         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01638         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01639         1680,  1680,  1680,  1680,  1680,  1680,  1680,  1680, 
01640          912,   912,   912,   912,   912,   912,   912,   912, 
01641          912,   912,   912,   912,   912,   912,   912,  2192, 
01642          912,   912,   912,   912,   912,   912,   912,   912, 
01643          912,   912,   912,   912,   912,   912,   912,  2192, 
01644            0,     0,     1,     1,     0,     2,     3,     3, 
01645            4,     4,     4,     4,     4,     4,     4,     4, 
01646            4,     5,     6,     4,     4,     7,     8,     9, 
01647            0,     0,     0,    10,    11,    12,    13,    14, 
01648            4,     4,     4,     4,    15,     4,    13,    16, 
01649           17,    18,    19,    20,    21,    22,    23,    24, 
01650           25,    26,    27,    28,    29,    29,    30,    31, 
01651           32,    33,     0,     0,    29,    34,     0,     0, 
01652            0,     0,     0,     0,     0,     0,     0,     0, 
01653           35,    36,    37,    38,    39,    40,    41,    42, 
01654           43,    44,    45,    46,    47,    48,    49,    50, 
01655           39,    51,    41,    52,    53,    54,    55,    56, 
01656           57,    58,    59,    60,    61,    62,    63,    60, 
01657           61,    64,    65,    60,    66,    67,    68,    69, 
01658           20,    70,    71,     0,    72,    73,    74,     0, 
01659           75,    76,    77,    78,    79,    80,    81,     0, 
01660            4,    82,    83,     0,     0,     4,    84,    85, 
01661            4,     4,    86,     4,     4,    87,     4,    88, 
01662           89,     4,    90,     4,    91,    92,    93,    13, 
01663           92,     4,    94,    95,     0,     4,     4,    96, 
01664           20,     4,     4,     4,     4,     4,     4,     4, 
01665            4,     4,     4,     4,     4,     4,     4,     4, 
01666            4,     4,     4,    97,     1,     4,     4,    98, 
01667           99,   100,   101,   102,     4,   103,   104,   105, 
01668          106,     4,     4,    83,     4,   107,     0,     0, 
01669            0,     0,     0,     0,     0,     0,     0,     0, 
01670            0,     0,     0,     0,     0,     0,     0,     0, 
01671            0,     0,     0,     0,     0,     0,     0,     0, 
01672            0,     0,     0,     0,     0,     0,     0,     0, 
01673            0,     0,     0,     0,     0,     0,     0,     0, 
01674            4,     4,     4,     4,   108,     4,     4,    88, 
01675          109,     4,   110,   111,     4,   112,   113,   114, 
01676          115,     0,     0,   116,     0,     0,     0,     0, 
01677          117,   118,   119,     4,   120,     0,     0,     0, 
01678            0,     0,     0,     0,     0,     0,     0,     0, 
01679            0,   121,     4,   122,   123,     0,     0,     0, 
01680            0,     0,     0,     0,   124,     4,     4,   105, 
01681            0,     0,     0,     0,     0,     0,     0,     0, 
01682            0,     0,     0,     0,     0,     0,     0,     0, 
01683            0,     0,     0,     0,     0,     0,     0,     0, 
01684            0,     0,     0,     0,     0,     0,     0,     0, 
01685            0,     0,     0,     0,     0,     0,     0,     0, 
01686            0,     0,     0,     0,     0,     0,     0,     0, 
01687            0,     0,     0,     0,     0,     0,     0,     0, 
01688            0,     0,     0,     0,     0,     0,     0,     0, 
01689            0,     0,     0,     0,     0,     0,     0,     0, 
01690            0,     0,     0,     0,     0,     0,     0,     0, 
01691            0,     0,     0,     0,     0,     0,     0,     0, 
01692          125,   126,    20,     4,   127,    20,     4,   128, 
01693          129,   130,     4,     4,    13,    83,     0,     6, 
01694          131,     4,   120,   132,     4,    98,   133,   134, 
01695            4,     4,     4,   135,     4,     4,   111,   134, 
01696            4,     4,     4,     4,     4,     4,     4,     4, 
01697            4,     4,     4,     4,     4,     4,     4,     4, 
01698            4,     4,     4,     4,     4,     4,     4,     4, 
01699            4,     4,     4,     4,     4,     4,     4,     4, 
01700            4,     4,     4,     4,     4,     4,     4,     4, 
01701            4,     4,     4,     4,     4,     4,     4,     4, 
01702            4,     4,     4,     4,     4,     4,     4,     4, 
01703            4,     4,     4,     4,     4,     4,     4,     4, 
01704            4,     4,     4,     4,     4,     4,     4,     4, 
01705            4,     4,     4,     4,     4,     4,     4,     4, 
01706            4,     4,     4,     4,     4,     4,     4,     4, 
01707            4,     4,     4,     4,     4,     4,     4,     4, 
01708            4,     4,     4,     4,     4,     4,     4,     4, 
01709            4,     4,     4,     4,     4,     4,     4,     4, 
01710            4,     4,     4,     4,     4,     4,     4,     4, 
01711            4,     4,     4,     4,     4,     4,     4,     4, 
01712            4,     4,     4,     4,     4,     4,     4,     4, 
01713            4,     4,     4,     4,     4,     4,     4,     4, 
01714            4,     4,     4,     4,     4,     4,     4,     4, 
01715            4,     4,     4,     4,     4,     4,     4,     4, 
01716            4,     4,     4,     4,     4,     4,     4,     4, 
01717            4,     4,     4,     4,     4,     4,     4,     4, 
01718            4,     4,     4,     4,     4,     4,     4,     4, 
01719            4,     4,     4,     4,     4,     4,     4,     4, 
01720            4,     4,     4,     4,     4,     4,     4,     4, 
01721            4,     4,     4,     4,     4,    14,     0,     0, 
01722            4,     4,     4,     4,     4,     4,     4,     4, 
01723            4,     4,     4,     4,     4,     4,     4,     4, 
01724            4,     4,     4,     4,     4,     4,     4,     4, 
01725            4,     4,     4,     4,     4,     4,     4,     4, 
01726            4,     4,     4,     4,     4,     4,     4,     4, 
01727            4,     4,     4,     4,     4,     4,     4,     4, 
01728            4,     4,     4,     4,     4,     4,     4,     4, 
01729            4,     4,     4,     4,     4,     4,     4,     4, 
01730            4,     4,     4,     4,     4,     4,     4,     4, 
01731            4,     4,     4,     4,     4,     4,     4,     4, 
01732            4,     4,     4,     4,     4,     4,     4,     4, 
01733            4,     4,     4,     4,     4,     4,     4,     4, 
01734            4,     4,     4,     4,     4,     4,     4,     4, 
01735            4,     4,     4,     4,     4,     4,     4,     4, 
01736            4,     4,     4,     4,     4,     4,     4,     4, 
01737            4,     4,     4,     4,     4,     4,     4,     4, 
01738            4,     4,     4,     4,     4,     4,     4,     4, 
01739            4,     4,     4,     4,     4,     4,     4,     4, 
01740            4,     4,     4,     4,     4,     4,     4,     4, 
01741            4,     4,     4,     4,     4,     4,     4,     4, 
01742            4,     4,     4,     4,     4,     4,     4,     4, 
01743            4,     4,     4,     4,     4,     4,     4,     4, 
01744            4,     4,     4,     4,     4,     4,     4,     4, 
01745            4,     4,     4,     4,     4,     4,     4,     4, 
01746            4,     4,     4,     4,     4,     4,     4,     4, 
01747            4,     4,     4,     4,     4,     4,     4,     4, 
01748            4,     4,     4,     4,     4,     4,     4,     4, 
01749            4,     4,     4,     4,     4,     4,     4,     4, 
01750            4,     4,     4,     4,     4,     4,     4,     4, 
01751            4,     4,     4,     4,     4,     4,     4,     4, 
01752            4,     4,     4,     4,     4,     4,     4,     4, 
01753            4,     4,     4,     4,     4,     4,     4,     4, 
01754            4,     4,     4,     4,     4,     4,     4,     4, 
01755            4,     4,     4,     4,     4,   136,     0,     0, 
01756            4,     4,     4,     4,     4,     4,     4,     4, 
01757            4,     4,     4,     4,     4,     4,     4,     4, 
01758            4,     4,     4,     4,     4,     4,     4,     4, 
01759            4,     4,     4,     4,     4,     4,     4,     4, 
01760            4,     4,     4,     4,   137,     0,     0,     0, 
01761            0,     0,     0,     0,     0,     0,     0,     0, 
01762            0,     0,     0,     0,     0,     0,     0,     0, 
01763            0,     0,     0,     0,     0,     0,     0,     0, 
01764            0,     0,     0,     0,     0,     0,     0,     0, 
01765            0,     0,     0,     0,     0,     0,     0,     0, 
01766            0,     0,     0,     0,     0,     0,     0,     0, 
01767            0,     0,     0,     0,     0,     0,     0,     0, 
01768            4,     4,     4,     4,     4,     4,     4,     4, 
01769            4,     4,     4,     4,     4,     4,     4,     4, 
01770            4,     4,     4,     4,     4,     4,     4,     4, 
01771            4,     4,     4,     4,     4,     4,     4,     4, 
01772            4,     4,     4,     4,     4,     4,     4,     4, 
01773            4,     4,     4,     4,     4,     4,     4,     4, 
01774            4,     4,     4,     4,     4,     4,     4,     4, 
01775            4,     4,     4,     4,     4,     4,     4,     4, 
01776            4,     4,     4,     4,     4,     4,     4,     4, 
01777            4,     4,     4,     4,     4,     4,     4,     4, 
01778            4,     4,     4,     4,     4,     4,     4,     4, 
01779            4,     4,     4,     4,     4,   120,     0,     0, 
01780            4,     4,     4,     4,     4,     4,     4,     4, 
01781            4,     4,     4,     4,     4,     4,     4,     4, 
01782            4,     4,     4,     4,     4,     4,     4,     4, 
01783            4,     4,     4,     4,     4,     4,     4,     4, 
01784            4,     4,     4,     4,     4,     4,     4,     4, 
01785            4,     4,     4,     4,     4,     4,     4,     4, 
01786            4,     4,     4,     4,     4,     4,     4,     4, 
01787            4,     4,     4,     4,     4,     4,     4,     4, 
01788            4,     4,     4,     4,     4,     4,     4,     4, 
01789            4,     4,     4,     4,     4,     4,     4,     4, 
01790            4,     4,     4,     4,     4,     4,     4,     4, 
01791            4,     4,     4,     4,     4,     4,     4,     4, 
01792            4,     4,     4,     4,     4,     4,     4,     4, 
01793            4,     4,     4,     4,     4,     4,     4,     4, 
01794            4,     4,     4,     4,     4,     4,     4,     4, 
01795            4,     4,     4,     4,     4,     4,     4,     4, 
01796            4,     4,     4,     4,     4,     4,     4,     4, 
01797            4,     4,     4,     4,     4,     4,     4,     4, 
01798            4,   138,     4,   139,     0,     0,     0,     0, 
01799          140,   141,   142,    29,    29,   143,   144,    29, 
01800           29,    29,    29,    29,    29,    29,    29,    29, 
01801           29,   145,   146,    29,   147,    29,   148,   149, 
01802            0,     0,     0,   150,    29,    29,    29,   151, 
01803            0,     1,     1,   152,     4,   134,   153,     0, 
01804            0,     0,     0,     0,     0,     0,     0,     0, 
01805            0,     0,     0,     0,     0,     0,     0,     0, 
01806            0,     0,     0,     0,     0,     0,     0,     0, 
01807          134,   154,   139,     0,     0,     0,     0,     0, 
01808            4,   155,   156,     0,     0,     0,     0,     0, 
01809            0,     0,     0,     0,     0,     0,     0,     0, 
01810            0,     0,     0,     0,     0,     0,     0,     0, 
01811            0,     0,     0,     0,     0,     0,     0,     0, 
01812            0,     0,     0,     0,     0,     0,     0,     0, 
01813            0,     0,     0,     0,     0,     0,     0,     0, 
01814            0,     0,     0,     0,     0,     0,     0,     0, 
01815            0,     0,     0,     0,     0,     0,     0,     0, 
01816            0,     0,     0,     0,     0,     0,     0,     0, 
01817            0,     0,     0,     0,     0,     0,     0,     0, 
01818            0,     0,     0,     0,     0,     0,     0,     0, 
01819            0,     0,     0,     0,     0,     0,     0,     0, 
01820            0,     0,     0,     0,     0,     0,     0,     0, 
01821            0,     0,     0,     0,     0,     0,     0,     0, 
01822            0,     0,     0,     0,     0,     0,     0,     0, 
01823            0,     0,     0,     0,     0,     0,     0,     0, 
01824            0,     0,     0,     0,     0,     0,     0,     0, 
01825            0,     0,     0,     0,     0,     0,     0,     0, 
01826            0,     0,     0,     0,     0,     0,     0,     0, 
01827            0,     0,     0,     0,     0,     0,     0,     0, 
01828            0,     0,     0,     0,     0,     0,     0,     0, 
01829            0,     0,     0,     0,     0,     0,     0,     0, 
01830            0,     0,     0,     0,     0,     0,     0,     0, 
01831            0,     0,     0,     0,     0,     0,     0,     0, 
01832            0,     0,     0,     0,     0,     0,     0,     0, 
01833            0,     0,     0,     0,     0,     0,     0,     0, 
01834            0,     0,     0,     0,     0,     0,     0,     0, 
01835            0,     0,     0,     0,     0,     0,     0,     0, 
01836            4,     4,     4,     4,     4,     4,     4,    14, 
01837            4,   157,     4,   158,   159,   160,   111,     0, 
01838            0,     0,     0,     0,     0,     0,     0,     0, 
01839            0,     0,     0,     0,     0,     0,     0,     0, 
01840            4,     4,   161,     4,   162,   163,   164,     4, 
01841          165,   166,   167,     4,     4,     4,     4,     4, 
01842            4,     4,     4,     4,     4,   168,     4,     4, 
01843            4,     4,     4,     4,     4,     4,   105,     0, 
01844            0,     0,     0,     0,     0,     0,     0,     0, 
01845            0,     0,     0,     0,     0,     0,     0,     0, 
01846            0,     0,     0,     0,     0,     0,     0,     0, 
01847            0,     0,     0,     0,     0,     0,     0,     0, 
01848            0,     0,     0,     0,     0,     0,     0,     0, 
01849            0,     0,     0,     0,     0,     0,     0,     0, 
01850            0,     0,     0,     0,     0,     0,     0,     0, 
01851            0,     0,     0,     0,     0,     0,     0,     0, 
01852            4,     4,     4,     4,     4,     4,     4,     4, 
01853            4,     4,     4,     4,     4,     4,     4,     4, 
01854            4,     4,     4,     4,     4,     4,     4,     4, 
01855            4,     4,     4,     4,     4,     4,     4,     4, 
01856            4,     4,     4,     4,     4,     4,     4,     4, 
01857            4,     4,     4,     4,     4,     4,     4,     4, 
01858            4,     4,     4,     4,     4,     4,    97,     0, 
01859            0,     0,     0,     0,     0,     0,     0,     0, 
01860            0,     0,     0,     0,     0,     0,     0,     0, 
01861            0,     0,     0,     0,     0,     0,     0,     0, 
01862            0,     0,     0,     0,     0,     0,     0,     0, 
01863            0,     0,     0,     0,     0,     0,     0,     0, 
01864            0,     0,     0,     0,     0,     0,     0,     0, 
01865            0,     0,     0,     0,     0,     0,     0,     0, 
01866            0,     0,     0,     0,     0,     0,     0,     0, 
01867            0,     0,     0,     0,     0,     0,     0,     0, 
01868            0,     0,     0,     0,     0,     0,     0,     0, 
01869            0,     0,     0,     0,     0,     0,     0,     0, 
01870            0,     0,     0,     0,     0,     0,     0,     0, 
01871            0,     0,     0,     0,     0,     0,     0,     0, 
01872            0,     0,     0,     0,     0,     0,     0,     0, 
01873            0,     0,     0,     0,     0,     0,     0,     0, 
01874            0,     0,     0,     0,     0,     0,     0,     0, 
01875            0,     0,     0,     0,     0,     0,     0,     0, 
01876            4,     4,     4,     4,     4,     4,     4,     4, 
01877            4,     4,     4,     4,     4,     4,     4,     4, 
01878          111,     0,     0,     0,     0,     0,     0,     0, 
01879            0,     0,     0,     0,     0,     0,     0,     0, 
01880            0,     0,     0,     0,     0,     0,     0,     0, 
01881            0,     0,     0,     0,     0,     0,     0,     0, 
01882            0,     0,     0,     0,     0,     0,     0,     0, 
01883            0,     0,     0,     0,     0,     0,     0,     0, 
01884            4,     4,     4,     4,     4,     4,     4,     4, 
01885            4,     4,     4,     4,     4,     4,     4,     4, 
01886            4,     4,     4,     4,     4,     4,     4,     4, 
01887            4,     4,     4,     4,     4,     4,     4,     4, 
01888            4,     4,     4,     4,     4,     4,     4,     4, 
01889            4,     4,     4,     4,     4,     4,     4,     4, 
01890            4,     4,     4,     4,     4,     4,     4,     4, 
01891            4,     4,     4,     4,     4,     4,     4,     4, 
01892            4,     4,     4,     4,     4,     4,     4,     4, 
01893            4,     4,     4,     4,     4,     4,     4,     4, 
01894            4,     4,     4,     4,     4,     4,     4,     4, 
01895            4,     4,     4,     4,     4,     4,     4,     4, 
01896            4,     4,     4,     4,     4,     4,     4,     4, 
01897            4,     4,     4,     4,     4,     4,     4,     4, 
01898            4,     4,     4,     4,     4,     4,     4,     4, 
01899            4,     4,     4,     4,     4,     4,     4,   111, 
01900 };
01901 
01902 static const struct {
01903        unsigned char tbl[32];
01904 } nameprep_id11_bidi_table[] = {
01905        {{
01906         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01907         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01908        }},
01909        {{
01910         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01911         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
01912        }},
01913        {{
01914         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0, 
01915         0,  0,  0,  0,  2,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0, 
01916        }},
01917        {{
01918         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01919         2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
01920        }},
01921        {{
01922         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01923         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01924        }},
01925        {{
01926         2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01927         2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01928        }},
01929        {{
01930         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
01931         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01932        }},
01933        {{
01934         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2, 
01935         2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2, 
01936        }},
01937        {{
01938         2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
01939         2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01940        }},
01941        {{
01942         2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, 
01943         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01944        }},
01945        {{
01946         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01947         0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0, 
01948        }},
01949        {{
01950         0,  0,  0,  0,  0,  0,  2,  0,  2,  2,  2,  0,  2,  0,  2,  2,  2, 
01951         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01952        }},
01953        {{
01954         2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01955         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01956        }},
01957        {{
01958         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2, 
01959         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01960        }},
01961        {{
01962         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01963         2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01964        }},
01965        {{
01966         2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
01967         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01968        }},
01969        {{
01970         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01971         2,  2,  2,  2,  2,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0, 
01972        }},
01973        {{
01974         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
01975         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01976        }},
01977        {{
01978         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01979         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01980        }},
01981        {{
01982         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01983         2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
01984        }},
01985        {{
01986         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01987         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
01988        }},
01989        {{
01990         2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  0,  0,  0,  0,  0,  0, 
01991         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01992        }},
01993        {{
01994         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
01995         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0, 
01996        }},
01997        {{
01998         1,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
01999         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02000        }},
02001        {{
02002         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  1, 
02003         1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02004        }},
02005        {{
02006         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02007         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  1, 
02008        }},
02009        {{
02010         0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02011         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0, 
02012        }},
02013        {{
02014         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0, 
02015         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02016        }},
02017        {{
02018         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  0, 
02019         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02020        }},
02021        {{
02022         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02023         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02024        }},
02025        {{
02026         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02027         1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, 
02028        }},
02029        {{
02030         0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02031         0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0, 
02032        }},
02033        {{
02034         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1, 
02035         0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02036        }},
02037        {{
02038         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0, 
02039         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02040        }},
02041        {{
02042         1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02043         1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02044        }},
02045        {{
02046         0,  0,  0,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02047         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02048        }},
02049        {{
02050         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02051         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2, 
02052        }},
02053        {{
02054         2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  0,  0,  0,  2, 
02055         0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
02056        }},
02057        {{
02058         2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02059         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02060        }},
02061        {{
02062         0,  0,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2, 
02063         0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02064        }},
02065        {{
02066         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02067         0,  2,  0,  0,  0,  2,  2,  2,  2,  0,  0,  0,  0,  2,  2, 
02068        }},
02069        {{
02070         2,  0,  0,  0,  0,  0,  0,  2,  2,  0,  0,  2,  2,  0,  0,  0,  0, 
02071         0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  2,  2,  0,  2, 
02072        }},
02073        {{
02074         2,  2,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02075         2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
02076        }},
02077        {{
02078         0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  2, 
02079         0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02080        }},
02081        {{
02082         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02083         0,  2,  2,  0,  2,  2,  0,  2,  2,  0,  0,  0,  0,  2,  2, 
02084        }},
02085        {{
02086         2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02087         0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  0,  2,  0, 
02088        }},
02089        {{
02090         0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
02091         0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02092        }},
02093        {{
02094         0,  0,  0,  2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  2, 
02095         2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02096        }},
02097        {{
02098         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02099         0,  2,  2,  0,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2, 
02100        }},
02101        {{
02102         2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  2,  2,  0,  0,  0,  2, 
02103         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02104        }},
02105        {{
02106         2,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
02107         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02108        }},
02109        {{
02110         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02111         0,  2,  2,  0,  0,  2,  2,  2,  2,  0,  0,  0,  2,  2,  0, 
02112        }},
02113        {{
02114         2,  2,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02115         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02116        }},
02117        {{
02118         0,  0,  0,  2,  0,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2, 
02119         0,  2,  2,  2,  2,  0,  0,  0,  2,  2,  0,  2,  0,  2,  2, 
02120        }},
02121        {{
02122         0,  0,  0,  2,  2,  0,  0,  0,  2,  2,  2,  0,  0,  0,  2,  2,  2, 
02123         2,  2,  2,  2,  2,  0,  2,  2,  2,  0,  0,  0,  0,  2,  2, 
02124        }},
02125        {{
02126         0,  2,  2,  0,  0,  0,  2,  2,  2,  0,  2,  2,  2,  0,  0,  0,  0, 
02127         0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0, 
02128        }},
02129        {{
02130         0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02131         2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02132        }},
02133        {{
02134         0,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2, 
02135         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02136        }},
02137        {{
02138         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02139         2,  2,  2,  0,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
02140        }},
02141        {{
02142         0,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02143         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02144        }},
02145        {{
02146         2,  2,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
02147         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02148        }},
02149        {{
02150         0,  0,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2, 
02151         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02152        }},
02153        {{
02154         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02155         2,  2,  2,  0,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  0, 
02156        }},
02157        {{
02158         2,  2,  2,  2,  2,  0,  0,  2,  2,  0,  2,  2,  0,  0,  0,  0,  0, 
02159         0,  0,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  2,  0, 
02160        }},
02161        {{
02162         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02163         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  2, 
02164        }},
02165        {{
02166         2,  0,  0,  0,  0,  0,  2,  2,  2,  0,  2,  2,  2,  0,  0,  0,  0, 
02167         0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0, 
02168        }},
02169        {{
02170         0,  0,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02171         2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2,  2,  2,  2, 
02172        }},
02173        {{
02174         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02175         2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  0, 
02176        }},
02177        {{
02178         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2, 
02179         2,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
02180        }},
02181        {{
02182         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02183         0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02184        }},
02185        {{
02186         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02187         0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02188        }},
02189        {{
02190         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2, 
02191         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02192        }},
02193        {{
02194         0,  2,  2,  0,  2,  0,  0,  2,  2,  0,  2,  0,  0,  2,  0,  0,  0, 
02195         0,  0,  0,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2, 
02196        }},
02197        {{
02198         0,  2,  2,  2,  0,  2,  0,  2,  0,  0,  2,  2,  0,  2,  2,  2,  2, 
02199         0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0, 
02200        }},
02201        {{
02202         2,  2,  2,  2,  2,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02203         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  0,  0, 
02204        }},
02205        {{
02206         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02207         2,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2, 
02208        }},
02209        {{
02210         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02211         2,  2,  2,  2,  0,  2,  0,  2,  0,  0,  0,  0,  0,  2,  2, 
02212        }},
02213        {{
02214         2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
02215         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02216        }},
02217        {{
02218         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
02219         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02220        }},
02221        {{
02222         0,  0,  0,  0,  0,  2,  0,  0,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
02223         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02224        }},
02225        {{
02226         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02227         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2, 
02228        }},
02229        {{
02230         2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  0,  0,  2,  0, 
02231         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02232        }},
02233        {{
02234         2,  2,  0,  2,  2,  2,  2,  2,  0,  2,  2,  0,  2,  0,  0,  0,  0, 
02235         2,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0, 
02236        }},
02237        {{
02238         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02239         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0, 
02240        }},
02241        {{
02242         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02243         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02244        }},
02245        {{
02246         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02247         2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2,  0,  0,  0,  0, 
02248        }},
02249        {{
02250         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02251         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  2, 
02252        }},
02253        {{
02254         2,  2,  2,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02255         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02256        }},
02257        {{
02258         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02259         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
02260        }},
02261        {{
02262         2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02263         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02264        }},
02265        {{
02266         2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  2,  2,  2,  0,  0,  2, 
02267         2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  2,  2,  2,  0,  0, 
02268        }},
02269        {{
02270         2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  2,  2,  2,  0,  0,  2, 
02271         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02272        }},
02273        {{
02274         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2, 
02275         0,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0, 
02276        }},
02277        {{
02278         2,  0,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  2, 
02279         2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2, 
02280        }},
02281        {{
02282         2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02283         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
02284        }},
02285        {{
02286         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02287         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
02288        }},
02289        {{
02290         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02291         2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02292        }},
02293        {{
02294         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02295         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02296        }},
02297        {{
02298         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02299         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02300        }},
02301        {{
02302         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2, 
02303         2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02304        }},
02305        {{
02306         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02307         2,  0,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02308        }},
02309        {{
02310         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02311         2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02312        }},
02313        {{
02314         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2, 
02315         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02316        }},
02317        {{
02318         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02319         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  2,  2, 
02320        }},
02321        {{
02322         2,  2,  2,  2,  2,  2,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0, 
02323         0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  0,  0, 
02324        }},
02325        {{
02326         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0, 
02327         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02328        }},
02329        {{
02330         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02331         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
02332        }},
02333        {{
02334         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0, 
02335         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02336        }},
02337        {{
02338         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02339         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02340        }},
02341        {{
02342         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02343         2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  0,  0, 
02344        }},
02345        {{
02346         2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  0,  0,  2, 
02347         2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  0,  2,  0,  2, 
02348        }},
02349        {{
02350         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02351         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0, 
02352        }},
02353        {{
02354         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02355         2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0, 
02356        }},
02357        {{
02358         0,  0,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2, 
02359         2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02360        }},
02361        {{
02362         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02363         0,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
02364        }},
02365        {{
02366         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  1,  0, 
02367         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02368        }},
02369        {{
02370         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02371         2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02372        }},
02373        {{
02374         0,  0,  2,  0,  0,  0,  0,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
02375         2,  2,  2,  0,  2,  0,  0,  0,  2,  2,  2,  2,  2,  0,  0, 
02376        }},
02377        {{
02378         0,  0,  0,  0,  2,  0,  2,  0,  2,  0,  2,  2,  2,  2,  0,  2,  2, 
02379         2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2, 
02380        }},
02381        {{
02382         0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0, 
02383         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02384        }},
02385        {{
02386         2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02387         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02388        }},
02389        {{
02390         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02391         0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02392        }},
02393        {{
02394         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02395         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0, 
02396        }},
02397        {{
02398         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02399         0,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02400        }},
02401        {{
02402         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02403         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2, 
02404        }},
02405        {{
02406         0,  0,  0,  0,  0,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02407         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02408        }},
02409        {{
02410         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0, 
02411         2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  0,  0,  0, 
02412        }},
02413        {{
02414         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02415         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  2,  2,  2, 
02416        }},
02417        {{
02418         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02419         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2, 
02420        }},
02421        {{
02422         0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02423         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02424        }},
02425        {{
02426         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02427         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02428        }},
02429        {{
02430         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02431         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
02432        }},
02433        {{
02434         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02435         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2, 
02436        }},
02437        {{
02438         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2, 
02439         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02440        }},
02441        {{
02442         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02443         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0, 
02444        }},
02445        {{
02446         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02447         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  2,  2,  2,  2, 
02448        }},
02449        {{
02450         2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02451         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02452        }},
02453        {{
02454         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0, 
02455         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02456        }},
02457        {{
02458         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  2, 
02459         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02460        }},
02461        {{
02462         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0, 
02463         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02464        }},
02465        {{
02466         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02467         0,  0,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  1,  0,  1, 
02468        }},
02469        {{
02470         1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1, 
02471         1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  0,  1,  0, 
02472        }},
02473        {{
02474         1,  1,  0,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02475         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02476        }},
02477        {{
02478         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02479         1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02480        }},
02481        {{
02482         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02483         0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02484        }},
02485        {{
02486         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02487         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0, 
02488        }},
02489        {{
02490         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
02491         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02492        }},
02493        {{
02494         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0, 
02495         0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02496        }},
02497        {{
02498         1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02499         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02500        }},
02501        {{
02502         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
02503         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0, 
02504        }},
02505        {{
02506         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 
02507         1,  1,  1,  1,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02508        }},
02509        {{
02510         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
02511         1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0, 
02512        }},
02513        {{
02514         0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02515         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02516        }},
02517        {{
02518         0,  0,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  0, 
02519         0,  2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  0,  0,  0, 
02520        }},
02521        {{
02522         2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2, 
02523         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02524        }},
02525        {{
02526         2,  2,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02527         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02528        }},
02529        {{
02530         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0, 
02531         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02532        }},
02533        {{
02534         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
02535         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02536        }},
02537        {{
02538         2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
02539         2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
02540        }},
02541        {{
02542         0,  0,  0,  2,  2,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2, 
02543         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02544        }},
02545        {{
02546         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  2,  2,  2, 
02547         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02548        }},
02549        {{
02550         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02551         2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02552        }},
02553        {{
02554         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02555         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2, 
02556        }},
02557        {{
02558         0,  0,  2,  0,  0,  2,  2,  0,  0,  2,  2,  2,  2,  0,  2,  2,  2, 
02559         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  0,  2,  2,  2, 
02560        }},
02561        {{
02562         2,  0,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02563         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02564        }},
02565        {{
02566         2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  0,  0,  2,  2,  2,  2, 
02567         2,  2,  2,  2,  0,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2, 
02568        }},
02569        {{
02570         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02571         2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  2,  2,  2,  2,  0, 
02572        }},
02573        {{
02574         2,  2,  2,  2,  2,  0,  2,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2, 
02575         0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02576        }},
02577        {{
02578         2,  2,  2,  2,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02579         2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
02580        }},
02581 };
02582 
02583 static const unsigned char nameprep_id11_bidi_data[] = {
02584        idn_biditype_others, 
02585        idn_biditype_r_al, 
02586        idn_biditype_l, 
02587 };
02588