ArabicShapingEngine.c
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:109k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  * ArabicShapingEngine.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   This file is implemenation for ArabicShapingEngine
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * removed!
  58.  *
  59.  * removed!
  60.  * removed!
  61.  * removed!
  62.  *
  63.  * removed!
  64.  * removed!
  65.  * removed!
  66.  *
  67.  *
  68.  *------------------------------------------------------------------------------
  69.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  70.  *============================================================================
  71.  ****************************************************************************/
  72. #include "MMI_features.h"
  73. #ifdef __MMI_ARSHAPING_ENGINE__
  74. #include "PixtelDataTypes.h"
  75. #include "ArabicShapingEngine.h"
  76. #include "string.h"
  77. const ARABIC_SHAPE_TABLE glyph_base_Tb[] = 
  78. {
  79.     /* NULL */
  80.     {NULL, NULL, NULL, NULL},
  81.     /* HAMZA */
  82.     {N_HAMZA, N_HAMZA, N_HAMZA, N_HAMZA},
  83.     /* MADDA_ON_ALEF */
  84.     {N_MADDA_ON_ALEF, L_MADDA_ON_ALEF, R_MADDA_ON_ALEF, M_MADDA_ON_ALEF},
  85.     /* HAMZA_ON_ALEF */
  86.     {N_HAMZA_ON_ALEF, L_HAMZA_ON_ALEF, R_HAMZA_ON_ALEF, M_HAMZA_ON_ALEF},
  87.     /* HAMZA_ON_WOW */
  88.     {N_HAMZA_ON_WOW, L_HAMZA_ON_WOW, R_HAMZA_ON_WOW, M_HAMZA_ON_WOW},
  89.     /* HAMZA_UNDER_ALEF */
  90.     {N_HAMZA_UNDER_ALEF, L_HAMZA_UNDER_ALEF, R_HAMZA_UNDER_ALEF, M_HAMZA_UNDER_ALEF},
  91.     /* HAMZA_ON_YEH */
  92.     {N_HAMZA_ON_YEH, L_HAMZA_ON_YEH, R_HAMZA_ON_YEH, M_HAMZA_ON_YEH},
  93.     /* ALEF */
  94.     {N_ALEF, L_ALEF, R_ALEF, M_ALEF},
  95.     /* BEH */
  96.     {N_BEH, L_BEH, R_BEH, M_BEH},
  97.     /* TEH_MARBUTA */
  98.     {N_TEH_MARBUTA, L_TEH_MARBUTA, R_TEH_MARBUTA, M_TEH_MARBUTA},
  99.     /* TEH */
  100.     {N_TEH, L_TEH, R_TEH, M_TEH},
  101.     /* THEH */
  102.     {N_THEH, L_THEH, R_THEH, M_THEH},
  103.     /* JEEM */
  104.     {N_JEEM, L_JEEM, R_JEEM, M_JEEM},
  105.     /* HAH */
  106.     {N_HAH, L_HAH, R_HAH, M_HAH},
  107.     /* KHAH */
  108.     {N_KHAH, L_KHAH, R_KHAH, M_KHAH},
  109.     /* DAL */
  110.     {N_DAL, L_DAL, R_DAL, M_DAL},
  111.     /* THAL */
  112.     {N_THAL, L_THAL, R_THAL, M_THAL},
  113.     /* REH */
  114.     {N_REH, L_REH, R_REH, M_REH},
  115.     /* ZAIN */
  116.     {N_ZAIN, L_ZAIN, R_ZAIN, M_ZAIN},
  117.     /* SEEN */
  118.     {N_SEEN, L_SEEN, R_SEEN, M_SEEN},
  119.     /* SHEEN */
  120.     {N_SHEEN, L_SHEEN, R_SHEEN, M_SHEEN},
  121.     /* SAD */
  122.     {N_SAD, L_SAD, R_SAD, M_SAD},
  123.     /* DAD */
  124.     {N_DAD, L_DAD, R_DAD, M_DAD},
  125.     /* TAH */
  126.     {N_TAH, L_TAH, R_TAH, M_TAH},
  127.     /* ZAH */
  128.     {N_ZAH, L_ZAH, R_ZAH, M_ZAH},
  129.     /* AIN */
  130.     {N_AIN, L_AIN, R_AIN, M_AIN},
  131.     /* GHAIN */
  132.     {N_GHAIN, L_GHAIN, R_GHAIN, M_GHAIN},
  133.     /* NULL */
  134.     {NULL, NULL, NULL, NULL},
  135.     /* NULL */
  136.     {NULL, NULL, NULL, NULL},
  137.     /* NULL */
  138.     {NULL, NULL, NULL, NULL},
  139.     /* NULL */
  140.     {NULL, NULL, NULL, NULL},
  141.     /* NULL */
  142.     {NULL, NULL, NULL, NULL},
  143.     /* TATWEEL */
  144.     {N_TATWEEL, N_TATWEEL, N_TATWEEL, N_TATWEEL},
  145.     /* FEH */
  146.     {N_FEH, L_FEH, R_FEH, M_FEH},
  147.     /* QAF */
  148.     {N_QAF, L_QAF, R_QAF, M_QAF},
  149.     /* KAF */
  150.     {N_KAF, L_KAF, R_KAF, M_KAF},
  151.     /* LAM */
  152.     {N_LAM, L_LAM, R_LAM, M_LAM},
  153.     /* MEEM */
  154.     {N_MEEM, L_MEEM, R_MEEM, M_MEEM},
  155.     /* NOON */
  156.     {N_NOON, L_NOON, R_NOON, M_NOON},
  157.     /* HEH */
  158.     {N_HEH, L_HEH, R_HEH, M_HEH},
  159.     /* WAW */
  160.     {N_WAW, L_WAW, R_WAW, M_WAW},
  161.     /* ALEF_MAKSURA */
  162.     {N_ALEF_MAKSURA, L_ALEF_MAKSURA, R_ALEF_MAKSURA, M_ALEF_MAKSURA},
  163.     /* YEH */
  164.     {N_YEH, L_YEH, R_YEH, M_YEH},
  165.     /* PMT START PERSIAN */
  166.     /* NULL */
  167.     {NULL, NULL, NULL, NULL},
  168.     /* NULL */
  169.     {NULL, NULL, NULL, NULL},
  170.     /* NULL */
  171.     {NULL, NULL, NULL, NULL},
  172.     /* NULL */
  173.     {NULL, NULL, NULL, NULL},
  174.     /* NULL */
  175.     {NULL, NULL, NULL, NULL},
  176.     /* NULL */
  177.     {NULL, NULL, NULL, NULL},
  178.     /* NULL */
  179.     {NULL, NULL, NULL, NULL},
  180.     /* NULL */
  181.     {NULL, NULL, NULL, NULL},
  182.     /* NULL */
  183.     {NULL, NULL, NULL, NULL},
  184.     /* NULL */
  185.     {NULL, NULL, NULL, NULL},
  186.     /* NULL */
  187.     {NULL, NULL, NULL, NULL},
  188.     /* NULL */
  189.     {NULL, NULL, NULL, NULL},
  190.     /* NULL */
  191.     {NULL, NULL, NULL, NULL},
  192.     /* NULL */
  193.     {NULL, NULL, NULL, NULL},
  194.     /* NULL */
  195.     {NULL, NULL, NULL, NULL},
  196.     /* NULL */
  197.     {NULL, NULL, NULL, NULL},
  198.     /* NULL */
  199.     {NULL, NULL, NULL, NULL},
  200.     /* NULL */
  201.     {NULL, NULL, NULL, NULL},
  202.     /* NULL */
  203.     {NULL, NULL, NULL, NULL},
  204.     /* NULL */
  205.     {NULL, NULL, NULL, NULL},
  206.     /* NULL */
  207.     {NULL, NULL, NULL, NULL},
  208.     /* NULL */
  209.     {NULL, NULL, NULL, NULL},
  210.     /* NULL */
  211.     {NULL, NULL, NULL, NULL},
  212.     /* NULL */
  213.     {NULL, NULL, NULL, NULL},
  214.     /* NULL */
  215.     {NULL, NULL, NULL, NULL},
  216.     /* NULL */
  217.     {NULL, NULL, NULL, NULL},
  218.     /* NULL */
  219.     {NULL, NULL, NULL, NULL},
  220.     /* NULL */
  221.     {NULL, NULL, NULL, NULL},
  222.     /* NULL */
  223.     {NULL, NULL, NULL, NULL},
  224.     /* NULL */
  225.     {NULL, NULL, NULL, NULL},
  226.     /* NULL */
  227.     {NULL, NULL, NULL, NULL},
  228.     /* NULL */
  229.     {NULL, NULL, NULL, NULL},
  230.     /* NULL */
  231.     {NULL, NULL, NULL, NULL},
  232.     /* NULL */
  233.     {NULL, NULL, NULL, NULL},
  234.     /* NULL */
  235.     {NULL, NULL, NULL, NULL},
  236.     /* NULL */
  237.     {NULL, NULL, NULL, NULL},
  238.     /* NULL */
  239.     {NULL, NULL, NULL, NULL},
  240.     /* NULL */
  241.     {NULL, NULL, NULL, NULL},
  242.     /* NULL */
  243.     {NULL, NULL, NULL, NULL},
  244.     /* NULL */
  245.     {NULL, NULL, NULL, NULL},
  246.     /* NULL */
  247.     {NULL, NULL, NULL, NULL},
  248.     /* NULL */
  249.     {NULL, NULL, NULL, NULL},
  250.     /* NULL */
  251.     {NULL, NULL, NULL, NULL},
  252.     /* NULL */
  253.     {NULL, NULL, NULL, NULL},
  254.     /* NULL */
  255.     {NULL, NULL, NULL, NULL},
  256.     /* NULL */
  257.     {NULL, NULL, NULL, NULL},
  258.     /* NULL */
  259.     {NULL, NULL, NULL, NULL},
  260.     /* NULL */
  261.     {NULL, NULL, NULL, NULL},
  262.     /* NULL */
  263.     {NULL, NULL, NULL, NULL},
  264.     /* NULL */
  265.     {NULL, NULL, NULL, NULL},
  266.     /* NULL */
  267.     {NULL, NULL, NULL, NULL},
  268.     /* PEH */
  269.     {N_PEH, L_PEH, R_PEH, M_PEH},
  270.     /* NULL */
  271.     {NULL, NULL, NULL, NULL},
  272.     /* NULL */
  273.     {NULL, NULL, NULL, NULL},
  274.     /* NULL */
  275.     {NULL, NULL, NULL, NULL},
  276.     /* NULL */
  277.     {NULL, NULL, NULL, NULL},
  278.     /* NULL */
  279.     {NULL, NULL, NULL, NULL},
  280.     /* NULL */
  281.     {NULL, NULL, NULL, NULL},
  282.     /* NULL */
  283.     {NULL, NULL, NULL, NULL},
  284.     /* TCHEH */
  285.     {N_TCHEH, L_TCHEH, R_TCHEH, M_TCHEH},
  286.     /* NULL */
  287.     {NULL, NULL, NULL, NULL},
  288.     /* NULL */
  289.     {NULL, NULL, NULL, NULL},
  290.     /* NULL */
  291.     {NULL, NULL, NULL, NULL},
  292.     /* NULL */
  293.     {NULL, NULL, NULL, NULL},
  294.     /* NULL */
  295.     {NULL, NULL, NULL, NULL},
  296.     /* NULL */
  297.     {NULL, NULL, NULL, NULL},
  298.     /* NULL */
  299.     {NULL, NULL, NULL, NULL},
  300.     /* NULL */
  301.     {NULL, NULL, NULL, NULL},
  302.     /* NULL */
  303.     {NULL, NULL, NULL, NULL},
  304.     /* NULL */
  305.     {NULL, NULL, NULL, NULL},
  306.     /* NULL */
  307.     {NULL, NULL, NULL, NULL},
  308.     /* NULL */
  309.     {NULL, NULL, NULL, NULL},
  310.     /* NULL */
  311.     {NULL, NULL, NULL, NULL},
  312.     /* NULL */
  313.     {NULL, NULL, NULL, NULL},
  314.     /* NULL */
  315.     {NULL, NULL, NULL, NULL},
  316.     /* NULL */
  317.     {NULL, NULL, NULL, NULL},
  318.     /* NULL */
  319.     {NULL, NULL, NULL, NULL},
  320.     /* JEH */
  321.     {N_JEH, L_JEH, R_JEH, M_JEH},
  322.     /* NULL */
  323.     {NULL, NULL, NULL, NULL},
  324.     /* NULL */
  325.     {NULL, NULL, NULL, NULL},
  326.     /* NULL */
  327.     {NULL, NULL, NULL, NULL},
  328.     /* NULL */
  329.     {NULL, NULL, NULL, NULL},
  330.     /* NULL */
  331.     {NULL, NULL, NULL, NULL},
  332.     /* NULL */
  333.     {NULL, NULL, NULL, NULL},
  334.     /* NULL */
  335.     {NULL, NULL, NULL, NULL},
  336.     /* NULL */
  337.     {NULL, NULL, NULL, NULL},
  338.     /* NULL */
  339.     {NULL, NULL, NULL, NULL},
  340.     /* NULL */
  341.     {NULL, NULL, NULL, NULL},
  342.     /* NULL */
  343.     {NULL, NULL, NULL, NULL},
  344.     /* NULL */
  345.     {NULL, NULL, NULL, NULL},
  346.     /* NULL */
  347.     {NULL, NULL, NULL, NULL},
  348.     /* NULL */
  349.     {NULL, NULL, NULL, NULL},
  350.     /* NULL */
  351.     {NULL, NULL, NULL, NULL},
  352.     /* NULL */
  353.     {NULL, NULL, NULL, NULL},
  354.     /* KHEHEH */
  355.     {N_KHEHEH, L_KHEHEH, R_KHEHEH, M_KHEHEH},
  356.     /* NULL */
  357.     {NULL, NULL, NULL, NULL},
  358.     /* NULL */
  359.     {NULL, NULL, NULL, NULL},
  360.     /* NULL */
  361.     {NULL, NULL, NULL, NULL},
  362.     /* NULL */
  363.     {NULL, NULL, NULL, NULL},
  364.     /* NULL */
  365.     {NULL, NULL, NULL, NULL},
  366.     /* GAF */
  367.     {N_GAF, L_GAF, R_GAF, M_GAF},
  368.     /* NULL */
  369.     {NULL, NULL, NULL, NULL},
  370.     /* NULL */
  371.     {NULL, NULL, NULL, NULL},
  372.     /* NULL */
  373.     {NULL, NULL, NULL, NULL},
  374.     /* NULL */
  375.     {NULL, NULL, NULL, NULL},
  376.     /* NULL */
  377.     {NULL, NULL, NULL, NULL},
  378.     /* NULL */
  379.     {NULL, NULL, NULL, NULL},
  380.     /* NULL */
  381.     {NULL, NULL, NULL, NULL},
  382.     /* NULL */
  383.     {NULL, NULL, NULL, NULL},
  384.     /* NULL */
  385.     {NULL, NULL, NULL, NULL},
  386.     /* NULL */
  387.     {NULL, NULL, NULL, NULL},
  388.     /* NULL */
  389.     {NULL, NULL, NULL, NULL},
  390.     /* NULL */
  391.     {NULL, NULL, NULL, NULL},
  392.     /* NULL */
  393.     {NULL, NULL, NULL, NULL},
  394.     /* NULL */
  395.     {NULL, NULL, NULL, NULL},
  396.     /* NULL */
  397.     {NULL, NULL, NULL, NULL},
  398.     /* NULL */
  399.     {NULL, NULL, NULL, NULL},
  400.     /* NULL */
  401.     {NULL, NULL, NULL, NULL},
  402.     /* NULL */
  403.     {NULL, NULL, NULL, NULL},
  404.     /* NULL */
  405.     {NULL, NULL, NULL, NULL},
  406.     /* NULL */
  407.     {NULL, NULL, NULL, NULL},
  408.     /* NULL */
  409.     {NULL, NULL, NULL, NULL},
  410.     /* NULL */
  411.     {NULL, NULL, NULL, NULL},
  412.     /* NULL */
  413.     {NULL, NULL, NULL, NULL},
  414.     /* NULL */
  415.     {NULL, NULL, NULL, NULL},
  416.     /* NULL */
  417.     {NULL, NULL, NULL, NULL},
  418.     /* NULL */
  419.     {NULL, NULL, NULL, NULL},
  420.     /* NULL */
  421.     {NULL, NULL, NULL, NULL},
  422.     /* NULL */
  423.     {NULL, NULL, NULL, NULL},
  424.     /* FARSIYEH */
  425.     {N_FARSIYEH, L_FARSIYEH, R_FARSIYEH, M_FARSIYEH}
  426. };
  427. /* START PMTARABIC 20060904 */
  428. const ARABIC_SHAPE_TABLE glyph_Tb_B[] = 
  429. {
  430.     /* NULL */
  431.     {NULL, NULL, NULL, NULL},
  432.     /* NULL */
  433.     {NULL, NULL, NULL, NULL},
  434.     /* NULL */
  435.     {NULL, NULL, NULL, NULL},
  436.     /* NULL */
  437.     {NULL, NULL, NULL, NULL},
  438.     /* NULL */
  439.     {NULL, NULL, NULL, NULL},
  440.     /* NULL */
  441.     {NULL, NULL, NULL, NULL},
  442.     /* NULL */
  443.     {NULL, NULL, NULL, NULL},
  444.     /* NULL */
  445.     {NULL, NULL, NULL, NULL},
  446.     /* NULL */
  447.     {NULL, NULL, NULL, NULL},
  448.     /* NULL */
  449.     {NULL, NULL, NULL, NULL},
  450.     /* NULL */
  451.     {NULL, NULL, NULL, NULL},
  452.     /* NULL */
  453.     {NULL, NULL, NULL, NULL},
  454.     /* NULL */
  455.     {NULL, NULL, NULL, NULL},
  456.     /* NULL */
  457.     {NULL, NULL, NULL, NULL},
  458.     /* NULL */
  459.     {NULL, NULL, NULL, NULL},
  460.     /* NULL */
  461.     {NULL, NULL, NULL, NULL},
  462.     /* HAMZA */
  463.     {N_HAMZA_FORM_B, N_HAMZA_FORM_B, N_HAMZA_FORM_B, N_HAMZA_FORM_B},
  464.     /* MADDA_ON_ALEF */
  465.     {N_MADDA_ON_ALEF_FORM_B, L_MADDA_ON_ALEF, R_MADDA_ON_ALEF, M_MADDA_ON_ALEF},
  466.     /* NULL */
  467.     {NULL, NULL, NULL, NULL},
  468.     /* HAMZA_ON_ALEF */
  469.     {N_HAMZA_ON_ALEF_FORM_B, L_HAMZA_ON_ALEF, R_HAMZA_ON_ALEF, M_HAMZA_ON_ALEF},
  470.     /* NULL */
  471.     {NULL, NULL, NULL, NULL},
  472.     /* HAMZA_ON_WOW */
  473.     {N_HAMZA_ON_WOW_FORM_B, L_HAMZA_ON_WOW, R_HAMZA_ON_WOW, M_HAMZA_ON_WOW},
  474.     /* NULL */
  475.     {NULL, NULL, NULL, NULL},
  476.     /* HAMZA_UNDER_ALEF */
  477.     {N_HAMZA_UNDER_ALEF_FORM_B, L_HAMZA_UNDER_ALEF, R_HAMZA_UNDER_ALEF, M_HAMZA_UNDER_ALEF},
  478.     /* NULL */
  479.     {NULL, NULL, NULL, NULL},
  480.     /* HAMZA_ON_YEH */
  481.     {N_HAMZA_ON_YEH_FORM_B, L_HAMZA_ON_YEH, R_HAMZA_ON_YEH, M_HAMZA_ON_YEH},
  482.     /* NULL */
  483.     {NULL, NULL, NULL, NULL},
  484.     /* NULL */
  485.     {NULL, NULL, NULL, NULL},
  486.     /* NULL */
  487.     {NULL, NULL, NULL, NULL},
  488.     /* ALEF */
  489.     {N_ALEF_FORM_B, L_ALEF, R_ALEF, M_ALEF},
  490.     /* NULL */
  491.     {NULL, NULL, NULL, NULL},
  492.     /* BEH */
  493.     {N_BEH_FORM_B, L_BEH, R_BEH, M_BEH},
  494.     /* NULL */
  495.     {NULL, NULL, NULL, NULL},
  496.     /* NULL */
  497.     {NULL, NULL, NULL, NULL},
  498.     /* NULL */
  499.     {NULL, NULL, NULL, NULL},
  500.     /* TEH_MARBUTA */
  501.     {N_TEH_MARBUTA_FORM_B, L_TEH_MARBUTA, R_TEH_MARBUTA, M_TEH_MARBUTA},
  502.     /* NULL */
  503.     {NULL, NULL, NULL, NULL},
  504.     /* TEH */
  505.     {N_TEH_FORM_B, L_TEH, R_TEH, M_TEH},
  506.     /* NULL */
  507.     {NULL, NULL, NULL, NULL},
  508.     /* NULL */
  509.     {NULL, NULL, NULL, NULL},
  510.     /* NULL */
  511.     {NULL, NULL, NULL, NULL},
  512.     /* THEH */
  513.     {N_THEH_FORM_B, L_THEH, R_THEH, M_THEH},
  514.     /* NULL */
  515.     {NULL, NULL, NULL, NULL},
  516.     /* NULL */
  517.     {NULL, NULL, NULL, NULL},
  518.     /* NULL */
  519.     {NULL, NULL, NULL, NULL},
  520.     /* JEEM */
  521.     {N_JEEM_FORM_B, L_JEEM, R_JEEM, M_JEEM},
  522.     /* NULL */
  523.     {NULL, NULL, NULL, NULL},
  524.     /* NULL */
  525.     {NULL, NULL, NULL, NULL},
  526.     /* NULL */
  527.     {NULL, NULL, NULL, NULL},
  528.     /* HAH */
  529.     {N_HAH_FORM_B, L_HAH, R_HAH, M_HAH},
  530.     /* NULL */
  531.     {NULL, NULL, NULL, NULL},
  532.     /* NULL */
  533.     {NULL, NULL, NULL, NULL},
  534.     /* NULL */
  535.     {NULL, NULL, NULL, NULL},
  536.     /* KHAH */
  537.     {N_KHAH_FORM_B, L_KHAH, R_KHAH, M_KHAH},
  538.     /* NULL */
  539.     {NULL, NULL, NULL, NULL},
  540.     /* NULL */
  541.     {NULL, NULL, NULL, NULL},
  542.     /* NULL */
  543.     {NULL, NULL, NULL, NULL},
  544.     /* DAL */
  545.     {N_DAL_FORM_B, L_DAL, R_DAL, M_DAL},
  546.     /* NULL */
  547.     {NULL, NULL, NULL, NULL},
  548.     /* THAL */
  549.     {N_THAL_FORM_B, L_THAL, R_THAL, M_THAL},
  550.     /* NULL */
  551.     {NULL, NULL, NULL, NULL},
  552.     /* REH */
  553.     {N_REH_FORM_B, L_REH, R_REH, M_REH},
  554.     /* NULL */
  555.     {NULL, NULL, NULL, NULL},
  556.     /* ZAIN */
  557.     {N_ZAIN_FORM_B, L_ZAIN, R_ZAIN, M_ZAIN},
  558.     /* NULL */
  559.     {NULL, NULL, NULL, NULL},
  560.     /* SEEN */
  561.     {N_SEEN_FORM_B, L_SEEN, R_SEEN, M_SEEN},
  562.     /* NULL */
  563.     {NULL, NULL, NULL, NULL},
  564.     /* NULL */
  565.     {NULL, NULL, NULL, NULL},
  566.     /* NULL */
  567.     {NULL, NULL, NULL, NULL},
  568.     /* SHEEN */
  569.     {N_SHEEN_FORM_B, L_SHEEN, R_SHEEN, M_SHEEN},
  570.     /* NULL */
  571.     {NULL, NULL, NULL, NULL},
  572.     /* NULL */
  573.     {NULL, NULL, NULL, NULL},
  574.     /* NULL */
  575.     {NULL, NULL, NULL, NULL},
  576.     /* SAD */
  577.     {N_SAD_FORM_B, L_SAD, R_SAD, M_SAD},
  578.     /* NULL */
  579.     {NULL, NULL, NULL, NULL},
  580.     /* NULL */
  581.     {NULL, NULL, NULL, NULL},
  582.     /* NULL */
  583.     {NULL, NULL, NULL, NULL},
  584.     /* DAD */
  585.     {N_DAD_FORM_B, L_DAD, R_DAD, M_DAD},
  586.     /* NULL */
  587.     {NULL, NULL, NULL, NULL},
  588.     /* NULL */
  589.     {NULL, NULL, NULL, NULL},
  590.     /* NULL */
  591.     {NULL, NULL, NULL, NULL},
  592.     /* TAH */
  593.     {N_TAH_FORM_B, L_TAH, R_TAH, M_TAH},
  594.     /* NULL */
  595.     {NULL, NULL, NULL, NULL},
  596.     /* NULL */
  597.     {NULL, NULL, NULL, NULL},
  598.     /* NULL */
  599.     {NULL, NULL, NULL, NULL},
  600.     /* ZAH */
  601.     {N_ZAH_FORM_B, L_ZAH, R_ZAH, M_ZAH},
  602.     /* NULL */
  603.     {NULL, NULL, NULL, NULL},
  604.     /* NULL */
  605.     {NULL, NULL, NULL, NULL},
  606.     /* NULL */
  607.     {NULL, NULL, NULL, NULL},
  608.     /* AIN */
  609.     {N_AIN_FORM_B, L_AIN, R_AIN, M_AIN},
  610.     /* NULL */
  611.     {NULL, NULL, NULL, NULL},
  612.     /* NULL */
  613.     {NULL, NULL, NULL, NULL},
  614.     /* NULL */
  615.     {NULL, NULL, NULL, NULL},
  616.     /* GHAIN */
  617.     {N_GHAIN_FORM_B, L_GHAIN, R_GHAIN, M_GHAIN},
  618.     /* NULL */
  619.     {NULL, NULL, NULL, NULL},
  620.     /* NULL */
  621.     {NULL, NULL, NULL, NULL},
  622.     /* NULL */
  623.     {NULL, NULL, NULL, NULL},    
  624.     /* FEH */
  625.     {N_FEH_FORM_B, L_FEH, R_FEH, M_FEH},
  626.     /* NULL */
  627.     {NULL, NULL, NULL, NULL},
  628.     /* NULL */
  629.     {NULL, NULL, NULL, NULL},
  630.     /* NULL */
  631.     {NULL, NULL, NULL, NULL},
  632.     /* QAF */
  633.     {N_QAF_FORM_B, L_QAF, R_QAF, M_QAF},
  634.     /* NULL */
  635.     {NULL, NULL, NULL, NULL},
  636.     /* NULL */
  637.     {NULL, NULL, NULL, NULL},
  638.     /* NULL */
  639.     {NULL, NULL, NULL, NULL},
  640.     /* KAF */
  641.     {N_KAF_FORM_B, L_KAF, R_KAF, M_KAF},
  642.     /* NULL */
  643.     {NULL, NULL, NULL, NULL},
  644.     /* NULL */
  645.     {NULL, NULL, NULL, NULL},
  646.     /* NULL */
  647.     {NULL, NULL, NULL, NULL},
  648.     /* LAM */
  649.     {N_LAM_FORM_B, L_LAM, R_LAM, M_LAM},
  650.     /* NULL */
  651.     {NULL, NULL, NULL, NULL},
  652.     /* NULL */
  653.     {NULL, NULL, NULL, NULL},
  654.     /* NULL */
  655.     {NULL, NULL, NULL, NULL},
  656.     /* MEEM */
  657.     {N_MEEM_FORM_B, L_MEEM, R_MEEM, M_MEEM},
  658.     /* NULL */
  659.     {NULL, NULL, NULL, NULL},
  660.     /* NULL */
  661.     {NULL, NULL, NULL, NULL},
  662.     /* NULL */
  663.     {NULL, NULL, NULL, NULL},
  664.     /* NOON */
  665.     {N_NOON_FORM_B, L_NOON, R_NOON, M_NOON},
  666.     /* NULL */
  667.     {NULL, NULL, NULL, NULL},
  668.     /* NULL */
  669.     {NULL, NULL, NULL, NULL},
  670.     /* NULL */
  671.     {NULL, NULL, NULL, NULL},
  672.     /* HEH */
  673.     {N_HEH_FORM_B, L_HEH, R_HEH, M_HEH},
  674.     /* NULL */
  675.     {NULL, NULL, NULL, NULL},
  676.     /* NULL */
  677.     {NULL, NULL, NULL, NULL},
  678.     /* NULL */
  679.     {NULL, NULL, NULL, NULL},
  680.     /* WAW */
  681.     {N_WAW_FORM_B, L_WAW, R_WAW, M_WAW},
  682.     /* NULL */
  683.     {NULL, NULL, NULL, NULL},
  684.     /* ALEF_MAKSURA */
  685.     {N_ALEF_MAKSURA_FORM_B, L_ALEF_MAKSURA, R_ALEF_MAKSURA, M_ALEF_MAKSURA},
  686.     /* NULL */
  687.     {NULL, NULL, NULL, NULL},
  688.     /* YEH */
  689.     {N_YEH_FORM_B, L_YEH, R_YEH, M_YEH},
  690.     /* NULL */
  691.     {NULL, NULL, NULL, NULL},
  692.     /* NULL */
  693.     {NULL, NULL, NULL, NULL},
  694.     /* NULL */
  695.     {NULL, NULL, NULL, NULL},
  696.     /* NULL */
  697.     {NULL, NULL, NULL, NULL},
  698.     /* NULL */
  699.     {NULL, NULL, NULL, NULL},
  700.     /* NULL */
  701.     {NULL, NULL, NULL, NULL},
  702.     /* NULL */
  703.     {NULL, NULL, NULL, NULL},
  704.     /* NULL */
  705.     {NULL, NULL, NULL, NULL},
  706.     /* NULL */
  707.     {NULL, NULL, NULL, NULL},
  708.     /* NULL */
  709.     {NULL, NULL, NULL, NULL},
  710.     /* NULL */
  711.     {NULL, NULL, NULL, NULL},
  712.     /* NULL */
  713.     {NULL, NULL, NULL, NULL},
  714.     /* NULL */
  715.     {NULL, NULL, NULL, NULL},
  716.     /* NULL */
  717.     {NULL, NULL, NULL, NULL},
  718. };
  719. //PMT PERSIAN START - Ailsa
  720. const ARABIC_SHAPE_TABLE glyph_Tb_A[] = 
  721. {
  722.     /* NULL */
  723.     {NULL, NULL, NULL, NULL},
  724.     /* NULL */
  725.     {NULL, NULL, NULL, NULL},
  726.     /* NULL */
  727.     {NULL, NULL, NULL, NULL},
  728.     /* NULL */
  729.     {NULL, NULL, NULL, NULL},
  730.     /* NULL */
  731.     {NULL, NULL, NULL, NULL},
  732.     /* NULL */
  733.     {NULL, NULL, NULL, NULL},
  734.     /* NULL */
  735.     {NULL, NULL, NULL, NULL},
  736.     /* NULL */
  737.     {NULL, NULL, NULL, NULL},
  738.     /* NULL */
  739.     {NULL, NULL, NULL, NULL},
  740.     /* NULL */
  741.     {NULL, NULL, NULL, NULL},
  742.     /* NULL */
  743.     {NULL, NULL, NULL, NULL},
  744.     /* NULL */
  745.     {NULL, NULL, NULL, NULL},
  746.     /* NULL */
  747.     {NULL, NULL, NULL, NULL},
  748.     /* NULL */
  749.     {NULL, NULL, NULL, NULL},
  750.     /* NULL */
  751.     {NULL, NULL, NULL, NULL},
  752.     /* NULL */
  753.     {NULL, NULL, NULL, NULL},
  754.     /* NULL */
  755.     {NULL, NULL, NULL, NULL},
  756.     /* NULL */
  757.     {NULL, NULL, NULL, NULL},
  758.     /* NULL */
  759.     {NULL, NULL, NULL, NULL},
  760.     /* NULL */
  761.     {NULL, NULL, NULL, NULL},
  762.     /* NULL */
  763.     {NULL, NULL, NULL, NULL},
  764.     /* NULL */
  765.     {NULL, NULL, NULL, NULL},
  766.     /* NULL */
  767.     {NULL, NULL, NULL, NULL},
  768.     /* NULL */
  769.     {NULL, NULL, NULL, NULL},
  770.     /* NULL */
  771.     {NULL, NULL, NULL, NULL},
  772.     /* NULL */
  773.     {NULL, NULL, NULL, NULL},
  774.     /* NULL */
  775.     {NULL, NULL, NULL, NULL},
  776.     /* NULL */
  777.     {NULL, NULL, NULL, NULL},
  778.     /* NULL */
  779.     {NULL, NULL, NULL, NULL},
  780.     /* NULL */
  781.     {NULL, NULL, NULL, NULL},
  782.     /* NULL */
  783.     {NULL, NULL, NULL, NULL},
  784.     /* NULL */
  785.     {NULL, NULL, NULL, NULL},
  786.     /* NULL */
  787.     {NULL, NULL, NULL, NULL},
  788.     /* NULL */
  789.     {NULL, NULL, NULL, NULL},
  790.     /* PEH */
  791.     {N_PEH_FORM_A, L_PEH, R_PEH, M_PEH},
  792.     /* NULL */
  793.     {NULL, NULL, NULL, NULL},
  794.     /* NULL */
  795.     {NULL, NULL, NULL, NULL},
  796.     /* NULL */
  797.     {NULL, NULL, NULL, NULL},
  798.     /* NULL */
  799.     {NULL, NULL, NULL, NULL},
  800.     /* NULL */
  801.     {NULL, NULL, NULL, NULL},
  802.     /* NULL */
  803.     {NULL, NULL, NULL, NULL},
  804.     /* NULL */
  805.     {NULL, NULL, NULL, NULL},
  806.     /* TCHEH */
  807.     {N_TCHEH_FORM_A, L_TCHEH, R_TCHEH, M_TCHEH},
  808.     /* NULL */
  809.     {NULL, NULL, NULL, NULL},
  810.     /* NULL */
  811.     {NULL, NULL, NULL, NULL},
  812.     /* NULL */
  813.     {NULL, NULL, NULL, NULL},
  814.     /* NULL */
  815.     {NULL, NULL, NULL, NULL},
  816.     /* NULL */
  817.     {NULL, NULL, NULL, NULL},
  818.     /* NULL */
  819.     {NULL, NULL, NULL, NULL},
  820.     /* NULL */
  821.     {NULL, NULL, NULL, NULL},
  822.     /* NULL */
  823.     {NULL, NULL, NULL, NULL},
  824.     /* NULL */
  825.     {NULL, NULL, NULL, NULL},
  826.     /* NULL */
  827.     {NULL, NULL, NULL, NULL},
  828.     /* NULL */
  829.     {NULL, NULL, NULL, NULL},
  830.     /* NULL */
  831.     {NULL, NULL, NULL, NULL},
  832.     /* NULL */
  833.     {NULL, NULL, NULL, NULL},
  834.     /* NULL */
  835.     {NULL, NULL, NULL, NULL},
  836.     /* NULL */
  837.     {NULL, NULL, NULL, NULL},
  838.     /* JEH */
  839.     {N_JEH_FORM_A, L_JEH, R_JEH, M_JEH},
  840.     /* NULL */
  841.     {NULL, NULL, NULL, NULL},
  842.     /* NULL */
  843.     {NULL, NULL, NULL, NULL},
  844.     /* NULL */
  845.     {NULL, NULL, NULL, NULL},
  846.     /* KHEHEH */
  847.     {N_KHEHEH_FORM_A, L_KHEHEH, R_KHEHEH, M_KHEHEH},
  848.     /* NULL */
  849.     {NULL, NULL, NULL, NULL},
  850.     /* NULL */
  851.     {NULL, NULL, NULL, NULL},
  852.     /* NULL */
  853.     {NULL, NULL, NULL, NULL},
  854.     /* GAF */
  855.     {N_GAF_FORM_A, L_GAF, R_GAF, M_GAF},
  856.     /* NULL */
  857.     {NULL, NULL, NULL, NULL},
  858.     /* NULL */
  859.     {NULL, NULL, NULL, NULL},
  860.     /* NULL */
  861.     {NULL, NULL, NULL, NULL},
  862.     /* NULL */
  863.     {NULL, NULL, NULL, NULL},
  864.     /* NULL */
  865.     {NULL, NULL, NULL, NULL},
  866.     /* NULL */
  867.     {NULL, NULL, NULL, NULL},
  868.     /* NULL */
  869.     {NULL, NULL, NULL, NULL},
  870.     /* NULL */
  871.     {NULL, NULL, NULL, NULL},
  872.     /* NULL */
  873.     {NULL, NULL, NULL, NULL},
  874.     /* NULL */
  875.     {NULL, NULL, NULL, NULL},
  876.     /* NULL */
  877.     {NULL, NULL, NULL, NULL},
  878.     /* NULL */
  879.     {NULL, NULL, NULL, NULL},
  880.     /* NULL */
  881.     {NULL, NULL, NULL, NULL},
  882.     /* NULL */
  883.     {NULL, NULL, NULL, NULL},
  884.     /* NULL */
  885.     {NULL, NULL, NULL, NULL},
  886.     /* NULL */
  887.     {NULL, NULL, NULL, NULL},
  888.     /* NULL */
  889.     {NULL, NULL, NULL, NULL},
  890.     /* NULL */
  891.     {NULL, NULL, NULL, NULL},
  892.     /* NULL */
  893.     {NULL, NULL, NULL, NULL},
  894.     /* NULL */
  895.     {NULL, NULL, NULL, NULL},
  896.     /* NULL */
  897.     {NULL, NULL, NULL, NULL},
  898.     /* NULL */
  899.     {NULL, NULL, NULL, NULL},
  900.     /* NULL */
  901.     {NULL, NULL, NULL, NULL},
  902.     /* NULL */
  903.     {NULL, NULL, NULL, NULL},
  904.     /* NULL */
  905.     {NULL, NULL, NULL, NULL},
  906.     /* NULL */
  907.     {NULL, NULL, NULL, NULL},
  908.     /* NULL */
  909.     {NULL, NULL, NULL, NULL},
  910.     /* NULL */
  911.     {NULL, NULL, NULL, NULL},
  912.     /* NULL */
  913.     {NULL, NULL, NULL, NULL},
  914.     /* NULL */
  915.     {NULL, NULL, NULL, NULL},
  916.     /* NULL */
  917.     {NULL, NULL, NULL, NULL},
  918.     /* NULL */
  919.     {NULL, NULL, NULL, NULL},
  920.     /* NULL */
  921.     {NULL, NULL, NULL, NULL},
  922.     /* NULL */
  923.     {NULL, NULL, NULL, NULL},
  924.     /* NULL */
  925.     {NULL, NULL, NULL, NULL},
  926.     /* NULL */
  927.     {NULL, NULL, NULL, NULL},
  928.     /* NULL */
  929.     {NULL, NULL, NULL, NULL},
  930.     /* NULL */
  931.     {NULL, NULL, NULL, NULL},
  932.     /* NULL */
  933.     {NULL, NULL, NULL, NULL},
  934.     /* NULL */
  935.     {NULL, NULL, NULL, NULL},
  936.     /* NULL */
  937.     {NULL, NULL, NULL, NULL},
  938.     /* NULL */
  939.     {NULL, NULL, NULL, NULL},
  940.     /* NULL */
  941.     {NULL, NULL, NULL, NULL},
  942.     /* NULL */
  943.     {NULL, NULL, NULL, NULL},
  944.     /* NULL */
  945.     {NULL, NULL, NULL, NULL},
  946.     /* NULL */
  947.     {NULL, NULL, NULL, NULL},
  948.     /* NULL */
  949.     {NULL, NULL, NULL, NULL},
  950.     /* NULL */
  951.     {NULL, NULL, NULL, NULL},
  952.     /* NULL */
  953.     {NULL, NULL, NULL, NULL},
  954.     /* NULL */
  955.     {NULL, NULL, NULL, NULL},
  956.     /* NULL */
  957.     {NULL, NULL, NULL, NULL},
  958.     /* NULL */
  959.     {NULL, NULL, NULL, NULL},
  960.     /* NULL */
  961.     {NULL, NULL, NULL, NULL},
  962.     /* NULL */
  963.     {NULL, NULL, NULL, NULL},
  964.     /* NULL */
  965.     {NULL, NULL, NULL, NULL},
  966.     /* NULL */
  967.     {NULL, NULL, NULL, NULL},
  968.     /* NULL */
  969.     {NULL, NULL, NULL, NULL},
  970.     /* NULL */
  971.     {NULL, NULL, NULL, NULL},
  972.     /* NULL */
  973.     {NULL, NULL, NULL, NULL},
  974.     /* NULL */
  975.     {NULL, NULL, NULL, NULL},
  976.     /* NULL */
  977.     {NULL, NULL, NULL, NULL},
  978.     /* NULL */
  979.     {NULL, NULL, NULL, NULL},
  980.     /* NULL */
  981.     {NULL, NULL, NULL, NULL},
  982.     /* NULL */
  983.     {NULL, NULL, NULL, NULL},
  984.     /* NULL */
  985.     {NULL, NULL, NULL, NULL},
  986.     /* NULL */
  987.     {NULL, NULL, NULL, NULL},
  988.     /* NULL */
  989.     {NULL, NULL, NULL, NULL},
  990.     /* NULL */
  991.     {NULL, NULL, NULL, NULL},
  992.     /* NULL */
  993.     {NULL, NULL, NULL, NULL},
  994.     /* NULL */
  995.     {NULL, NULL, NULL, NULL},
  996.     /* NULL */
  997.     {NULL, NULL, NULL, NULL},
  998.     /* NULL */
  999.     {NULL, NULL, NULL, NULL},
  1000.     /* NULL */
  1001.     {NULL, NULL, NULL, NULL},
  1002.     /* NULL */
  1003.     {NULL, NULL, NULL, NULL},
  1004.     /* NULL */
  1005.     {NULL, NULL, NULL, NULL},
  1006.     /* NULL */
  1007.     {NULL, NULL, NULL, NULL},
  1008.     /* NULL */
  1009.     {NULL, NULL, NULL, NULL},
  1010.     /* NULL */
  1011.     {NULL, NULL, NULL, NULL},
  1012.     /* NULL */
  1013.     {NULL, NULL, NULL, NULL},
  1014.     /* NULL */
  1015.     {NULL, NULL, NULL, NULL},
  1016.     /* NULL */
  1017.     {NULL, NULL, NULL, NULL},
  1018.     /* NULL */
  1019.     {NULL, NULL, NULL, NULL},
  1020.     /* NULL */
  1021.     {NULL, NULL, NULL, NULL},
  1022.     /* NULL */
  1023.     {NULL, NULL, NULL, NULL},
  1024.     /* NULL */
  1025.     {NULL, NULL, NULL, NULL},
  1026.     /* NULL */
  1027.     {NULL, NULL, NULL, NULL},
  1028.     /* NULL */
  1029.     {NULL, NULL, NULL, NULL},
  1030.     /* NULL */
  1031.     {NULL, NULL, NULL, NULL},
  1032.     /* NULL */
  1033.     {NULL, NULL, NULL, NULL},
  1034.     /* NULL */
  1035.     {NULL, NULL, NULL, NULL},
  1036.     /* NULL */
  1037.     {NULL, NULL, NULL, NULL},
  1038.     /* NULL */
  1039.     {NULL, NULL, NULL, NULL},
  1040.     /* NULL */
  1041.     {NULL, NULL, NULL, NULL},
  1042.     /* NULL */
  1043.     {NULL, NULL, NULL, NULL},
  1044.     /* NULL */
  1045.     {NULL, NULL, NULL, NULL},
  1046.     /* NULL */
  1047.     {NULL, NULL, NULL, NULL},
  1048.     /* NULL */
  1049.     {NULL, NULL, NULL, NULL},
  1050.     /* NULL */
  1051.     {NULL, NULL, NULL, NULL},
  1052.     /* NULL */
  1053.     {NULL, NULL, NULL, NULL},
  1054.     /* NULL */
  1055.     {NULL, NULL, NULL, NULL},
  1056.     /* NULL */
  1057.     {NULL, NULL, NULL, NULL},
  1058.     /* NULL */
  1059.     {NULL, NULL, NULL, NULL},
  1060.     /* NULL */
  1061.     {NULL, NULL, NULL, NULL},
  1062.     /* NULL */
  1063.     {NULL, NULL, NULL, NULL},
  1064.     /* NULL */
  1065.     {NULL, NULL, NULL, NULL},
  1066.     /* FARSIYEH */
  1067.     {N_FARSIYEH_FORM_A, L_FARSIYEH, R_FARSIYEH, M_FARSIYEH},
  1068.     /* NULL */
  1069.     {NULL, NULL, NULL, NULL},
  1070.     /* NULL */
  1071.     {NULL, NULL, NULL, NULL},
  1072.     /* NULL */
  1073.     {NULL, NULL, NULL, NULL},
  1074.     /* NULL */
  1075.     {NULL, NULL, NULL, NULL},
  1076.     /* NULL */
  1077.     {NULL, NULL, NULL, NULL},
  1078.     /* NULL */
  1079.     {NULL, NULL, NULL, NULL},
  1080.     /* NULL */
  1081.     {NULL, NULL, NULL, NULL},
  1082.     /* NULL */
  1083.     {NULL, NULL, NULL, NULL},
  1084.     /* NULL */
  1085.     {NULL, NULL, NULL, NULL},
  1086.     /* NULL */
  1087.     {NULL, NULL, NULL, NULL},
  1088.     /* NULL */
  1089.     {NULL, NULL, NULL, NULL},
  1090.     /* NULL */
  1091.     {NULL, NULL, NULL, NULL},
  1092.     /* NULL */
  1093.     {NULL, NULL, NULL, NULL},
  1094.     /* NULL */
  1095.     {NULL, NULL, NULL, NULL},
  1096.     /* NULL */
  1097.     {NULL, NULL, NULL, NULL},
  1098.     /* NULL */
  1099.     {NULL, NULL, NULL, NULL},
  1100.     /* NULL */
  1101.     {NULL, NULL, NULL, NULL},
  1102.     /* NULL */
  1103.     {NULL, NULL, NULL, NULL},
  1104.     /* NULL */
  1105.     {NULL, NULL, NULL, NULL},
  1106.     /* NULL */
  1107.     {NULL, NULL, NULL, NULL},
  1108.     /* NULL */
  1109.     {NULL, NULL, NULL, NULL},
  1110.     /* NULL */
  1111.     {NULL, NULL, NULL, NULL},
  1112.     /* NULL */
  1113.     {NULL, NULL, NULL, NULL},
  1114.     /* NULL */
  1115.     {NULL, NULL, NULL, NULL},
  1116.     /* NULL */
  1117.     {NULL, NULL, NULL, NULL},
  1118.     /* NULL */
  1119.     {NULL, NULL, NULL, NULL},
  1120.     /* NULL */
  1121.     {NULL, NULL, NULL, NULL},
  1122.     /* NULL */
  1123.     {NULL, NULL, NULL, NULL},
  1124.     /* NULL */
  1125.     {NULL, NULL, NULL, NULL},
  1126.     /* NULL */
  1127.     {NULL, NULL, NULL, NULL},
  1128.     /* NULL */
  1129.     {NULL, NULL, NULL, NULL},
  1130.     /* NULL */
  1131.     {NULL, NULL, NULL, NULL},
  1132.     /* NULL */
  1133.     {NULL, NULL, NULL, NULL},
  1134.     /* NULL */
  1135.     {NULL, NULL, NULL, NULL},
  1136.     /* NULL */
  1137.     {NULL, NULL, NULL, NULL},
  1138.     /* NULL */
  1139.     {NULL, NULL, NULL, NULL},
  1140.     /* NULL */
  1141.     {NULL, NULL, NULL, NULL},
  1142.     /* NULL */
  1143.     {NULL, NULL, NULL, NULL},
  1144.     /* NULL */
  1145.     {NULL, NULL, NULL, NULL},
  1146.     /* NULL */
  1147.     {NULL, NULL, NULL, NULL},
  1148.     /* NULL */
  1149.     {NULL, NULL, NULL, NULL},
  1150.     /* NULL */
  1151.     {NULL, NULL, NULL, NULL},
  1152.     /* NULL */
  1153.     {NULL, NULL, NULL, NULL},
  1154.     /* NULL */
  1155.     {NULL, NULL, NULL, NULL},
  1156.     /* NULL */
  1157.     {NULL, NULL, NULL, NULL},
  1158.     /* NULL */
  1159.     {NULL, NULL, NULL, NULL},
  1160.     /* NULL */
  1161.     {NULL, NULL, NULL, NULL},
  1162.     /* NULL */
  1163.     {NULL, NULL, NULL, NULL},
  1164.     /* NULL */
  1165.     {NULL, NULL, NULL, NULL},
  1166.     /* NULL */
  1167.     {NULL, NULL, NULL, NULL},
  1168.     /* NULL */
  1169.     {NULL, NULL, NULL, NULL},
  1170.     /* NULL */
  1171.     {NULL, NULL, NULL, NULL},
  1172.     /* NULL */
  1173.     {NULL, NULL, NULL, NULL},
  1174.     /* NULL */
  1175.     {NULL, NULL, NULL, NULL},
  1176.     /* NULL */
  1177.     {NULL, NULL, NULL, NULL},
  1178.     /* NULL */
  1179.     {NULL, NULL, NULL, NULL},
  1180.     /* NULL */
  1181.     {NULL, NULL, NULL, NULL},
  1182.     /* NULL */
  1183.     {NULL, NULL, NULL, NULL},
  1184.     /* NULL */
  1185.     {NULL, NULL, NULL, NULL},
  1186.     /* NULL */
  1187.     {NULL, NULL, NULL, NULL},
  1188.     /* NULL */
  1189.     {NULL, NULL, NULL, NULL},
  1190.     /* NULL */
  1191.     {NULL, NULL, NULL, NULL},
  1192.     /* NULL */
  1193.     {NULL, NULL, NULL, NULL},
  1194.     /* NULL */
  1195.     {NULL, NULL, NULL, NULL},
  1196.     /* NULL */
  1197.     {NULL, NULL, NULL, NULL},
  1198.     /* NULL */
  1199.     {NULL, NULL, NULL, NULL},
  1200.     /* NULL */
  1201.     {NULL, NULL, NULL, NULL},
  1202.     /* NULL */
  1203.     {NULL, NULL, NULL, NULL},
  1204.     /* NULL */
  1205.     {NULL, NULL, NULL, NULL},
  1206.     /* NULL */
  1207.     {NULL, NULL, NULL, NULL},
  1208.     /* NULL */
  1209.     {NULL, NULL, NULL, NULL},
  1210.     /* NULL */
  1211.     {NULL, NULL, NULL, NULL},
  1212.     /* NULL */
  1213.     {NULL, NULL, NULL, NULL},
  1214.     /* NULL */
  1215.     {NULL, NULL, NULL, NULL},
  1216.     /* NULL */
  1217.     {NULL, NULL, NULL, NULL},
  1218.     /* NULL */
  1219.     {NULL, NULL, NULL, NULL},
  1220.     /* NULL */
  1221.     {NULL, NULL, NULL, NULL},
  1222.     /* NULL */
  1223.     {NULL, NULL, NULL, NULL},
  1224.     /* NULL */
  1225.     {NULL, NULL, NULL, NULL},
  1226.     /* NULL */
  1227.     {NULL, NULL, NULL, NULL},
  1228.     /* NULL */
  1229.     {NULL, NULL, NULL, NULL},
  1230.     /* NULL */
  1231.     {NULL, NULL, NULL, NULL},
  1232.     /* NULL */
  1233.     {NULL, NULL, NULL, NULL},
  1234.     /* NULL */
  1235.     {NULL, NULL, NULL, NULL},
  1236.     /* NULL */
  1237.     {NULL, NULL, NULL, NULL},
  1238.     /* NULL */
  1239.     {NULL, NULL, NULL, NULL},
  1240.     /* NULL */
  1241.     {NULL, NULL, NULL, NULL},
  1242.     /* NULL */
  1243.     {NULL, NULL, NULL, NULL},
  1244.     /* NULL */
  1245.     {NULL, NULL, NULL, NULL},
  1246.     /* NULL */
  1247.     {NULL, NULL, NULL, NULL},
  1248.     /* NULL */
  1249.     {NULL, NULL, NULL, NULL},
  1250.     /* NULL */
  1251.     {NULL, NULL, NULL, NULL},
  1252.     /* NULL */
  1253.     {NULL, NULL, NULL, NULL},
  1254.     /* NULL */
  1255.     {NULL, NULL, NULL, NULL},
  1256.     /* NULL */
  1257.     {NULL, NULL, NULL, NULL},
  1258.     /* NULL */
  1259.     {NULL, NULL, NULL, NULL},
  1260.     /* NULL */
  1261.     {NULL, NULL, NULL, NULL},
  1262.     /* NULL */
  1263.     {NULL, NULL, NULL, NULL},
  1264.     /* NULL */
  1265.     {NULL, NULL, NULL, NULL},
  1266.     /* NULL */
  1267.     {NULL, NULL, NULL, NULL},
  1268.     /* NULL */
  1269.     {NULL, NULL, NULL, NULL},
  1270.     /* NULL */
  1271.     {NULL, NULL, NULL, NULL},
  1272.     /* NULL */
  1273.     {NULL, NULL, NULL, NULL},
  1274.     /* NULL */
  1275.     {NULL, NULL, NULL, NULL},
  1276.     /* NULL */
  1277.     {NULL, NULL, NULL, NULL},
  1278.     /* NULL */
  1279.     {NULL, NULL, NULL, NULL},
  1280.     /* NULL */
  1281.     {NULL, NULL, NULL, NULL},
  1282.     /* NULL */
  1283.     {NULL, NULL, NULL, NULL},
  1284.     /* NULL */
  1285.     {NULL, NULL, NULL, NULL},
  1286.     /* NULL */
  1287.     {NULL, NULL, NULL, NULL},
  1288.     /* NULL */
  1289.     {NULL, NULL, NULL, NULL},
  1290.     /* NULL */
  1291.     {NULL, NULL, NULL, NULL},
  1292.     /* NULL */
  1293.     {NULL, NULL, NULL, NULL},
  1294.     /* NULL */
  1295.     {NULL, NULL, NULL, NULL},
  1296.     /* NULL */
  1297.     {NULL, NULL, NULL, NULL},
  1298.     /* NULL */
  1299.     {NULL, NULL, NULL, NULL},
  1300.     /* NULL */
  1301.     {NULL, NULL, NULL, NULL},
  1302.     /* NULL */
  1303.     {NULL, NULL, NULL, NULL},
  1304.     /* NULL */
  1305.     {NULL, NULL, NULL, NULL},
  1306.     /* NULL */
  1307.     {NULL, NULL, NULL, NULL},
  1308.     /* NULL */
  1309.     {NULL, NULL, NULL, NULL},
  1310.     /* NULL */
  1311.     {NULL, NULL, NULL, NULL},
  1312.     /* NULL */
  1313.     {NULL, NULL, NULL, NULL},
  1314.     /* NULL */
  1315.     {NULL, NULL, NULL, NULL},
  1316.     /* NULL */
  1317.     {NULL, NULL, NULL, NULL},
  1318.     /* NULL */
  1319.     {NULL, NULL, NULL, NULL},
  1320.     /* NULL */
  1321.     {NULL, NULL, NULL, NULL},
  1322.     /* NULL */
  1323.     {NULL, NULL, NULL, NULL},
  1324.     /* NULL */
  1325.     {NULL, NULL, NULL, NULL},
  1326.     /* NULL */
  1327.     {NULL, NULL, NULL, NULL},
  1328.     /* NULL */
  1329.     {NULL, NULL, NULL, NULL},
  1330.     /* NULL */
  1331.     {NULL, NULL, NULL, NULL},
  1332.     /* NULL */
  1333.     {NULL, NULL, NULL, NULL},
  1334.     /* NULL */
  1335.     {NULL, NULL, NULL, NULL},
  1336.     /* NULL */
  1337.     {NULL, NULL, NULL, NULL},
  1338.     /* NULL */
  1339.     {NULL, NULL, NULL, NULL},
  1340.     /* NULL */
  1341.     {NULL, NULL, NULL, NULL},
  1342.     /* NULL */
  1343.     {NULL, NULL, NULL, NULL},
  1344.     /* NULL */
  1345.     {NULL, NULL, NULL, NULL},
  1346.     /* NULL */
  1347.     {NULL, NULL, NULL, NULL},
  1348.     /* NULL */
  1349.     {NULL, NULL, NULL, NULL},
  1350.     /* NULL */
  1351.     {NULL, NULL, NULL, NULL},
  1352.     /* NULL */
  1353.     {NULL, NULL, NULL, NULL},
  1354.     /* NULL */
  1355.     {NULL, NULL, NULL, NULL},
  1356.     /* NULL */
  1357.     {NULL, NULL, NULL, NULL},
  1358.     /* NULL */
  1359.     {NULL, NULL, NULL, NULL},
  1360.     /* NULL */
  1361.     {NULL, NULL, NULL, NULL},
  1362.     /* NULL */
  1363.     {NULL, NULL, NULL, NULL},
  1364.     /* NULL */
  1365.     {NULL, NULL, NULL, NULL},
  1366.     /* NULL */
  1367.     {NULL, NULL, NULL, NULL},
  1368.     /* NULL */
  1369.     {NULL, NULL, NULL, NULL},
  1370.     /* NULL */
  1371.     {NULL, NULL, NULL, NULL},
  1372.     /* NULL */
  1373.     {NULL, NULL, NULL, NULL},
  1374.     /* NULL */
  1375.     {NULL, NULL, NULL, NULL},
  1376.     /* NULL */
  1377.     {NULL, NULL, NULL, NULL},
  1378.     /* NULL */
  1379.     {NULL, NULL, NULL, NULL},
  1380.     /* NULL */
  1381.     {NULL, NULL, NULL, NULL},
  1382.     /* NULL */
  1383.     {NULL, NULL, NULL, NULL},
  1384.     /* NULL */
  1385.     {NULL, NULL, NULL, NULL},
  1386.     /* NULL */
  1387.     {NULL, NULL, NULL, NULL},
  1388.     /* NULL */
  1389.     {NULL, NULL, NULL, NULL},
  1390.     /* NULL */
  1391.     {NULL, NULL, NULL, NULL},
  1392.     /* NULL */
  1393.     {NULL, NULL, NULL, NULL},
  1394.     /* NULL */
  1395.     {NULL, NULL, NULL, NULL},
  1396.     /* NULL */
  1397.     {NULL, NULL, NULL, NULL},
  1398.     /* NULL */
  1399.     {NULL, NULL, NULL, NULL},
  1400.     /* NULL */
  1401.     {NULL, NULL, NULL, NULL},
  1402.     /* NULL */
  1403.     {NULL, NULL, NULL, NULL},
  1404.     /* NULL */
  1405.     {NULL, NULL, NULL, NULL},
  1406.     /* NULL */
  1407.     {NULL, NULL, NULL, NULL},
  1408.     /* NULL */
  1409.     {NULL, NULL, NULL, NULL},
  1410.     /* NULL */
  1411.     {NULL, NULL, NULL, NULL},
  1412.     /* NULL */
  1413.     {NULL, NULL, NULL, NULL},
  1414.     /* NULL */
  1415.     {NULL, NULL, NULL, NULL},
  1416.     /* NULL */
  1417.     {NULL, NULL, NULL, NULL},
  1418.     /* NULL */
  1419.     {NULL, NULL, NULL, NULL},
  1420.     /* NULL */
  1421.     {NULL, NULL, NULL, NULL},
  1422.     /* NULL */
  1423.     {NULL, NULL, NULL, NULL},
  1424.     /* NULL */
  1425.     {NULL, NULL, NULL, NULL},
  1426.     /* NULL */
  1427.     {NULL, NULL, NULL, NULL},
  1428.     /* NULL */
  1429.     {NULL, NULL, NULL, NULL},
  1430.     /* NULL */
  1431.     {NULL, NULL, NULL, NULL},
  1432.     /* NULL */
  1433.     {NULL, NULL, NULL, NULL},
  1434.     /* NULL */
  1435.     {NULL, NULL, NULL, NULL},
  1436.     /* NULL */
  1437.     {NULL, NULL, NULL, NULL},
  1438.     /* NULL */
  1439.     {NULL, NULL, NULL, NULL},
  1440.     /* NULL */
  1441.     {NULL, NULL, NULL, NULL},
  1442.     /* NULL */
  1443.     {NULL, NULL, NULL, NULL},
  1444.     /* NULL */
  1445.     {NULL, NULL, NULL, NULL},
  1446.     /* NULL */
  1447.     {NULL, NULL, NULL, NULL},
  1448.     /* NULL */
  1449.     {NULL, NULL, NULL, NULL},
  1450.     /* NULL */
  1451.     {NULL, NULL, NULL, NULL},
  1452.     /* NULL */
  1453.     {NULL, NULL, NULL, NULL},
  1454.     /* NULL */
  1455.     {NULL, NULL, NULL, NULL},
  1456.     /* NULL */
  1457.     {NULL, NULL, NULL, NULL},
  1458.     /* NULL */
  1459.     {NULL, NULL, NULL, NULL},
  1460.     /* NULL */
  1461.     {NULL, NULL, NULL, NULL},
  1462.     /* NULL */
  1463.     {NULL, NULL, NULL, NULL},
  1464.     /* NULL */
  1465.     {NULL, NULL, NULL, NULL},
  1466.     /* NULL */
  1467.     {NULL, NULL, NULL, NULL},
  1468.     /* NULL */
  1469.     {NULL, NULL, NULL, NULL},
  1470.     /* NULL */
  1471.     {NULL, NULL, NULL, NULL},
  1472.     /* NULL */
  1473.     {NULL, NULL, NULL, NULL},
  1474.     /* NULL */
  1475.     {NULL, NULL, NULL, NULL},
  1476.     /* NULL */
  1477.     {NULL, NULL, NULL, NULL},
  1478.     /* NULL */
  1479.     {NULL, NULL, NULL, NULL},
  1480.     /* NULL */
  1481.     {NULL, NULL, NULL, NULL},
  1482.     /* NULL */
  1483.     {NULL, NULL, NULL, NULL},
  1484.     /* NULL */
  1485.     {NULL, NULL, NULL, NULL},
  1486.     /* NULL */
  1487.     {NULL, NULL, NULL, NULL},
  1488.     /* NULL */
  1489.     {NULL, NULL, NULL, NULL},
  1490.     /* NULL */
  1491.     {NULL, NULL, NULL, NULL},
  1492.     /* NULL */
  1493.     {NULL, NULL, NULL, NULL},
  1494.     /* NULL */
  1495.     {NULL, NULL, NULL, NULL},
  1496.     /* NULL */
  1497.     {NULL, NULL, NULL, NULL},
  1498.     /* NULL */
  1499.     {NULL, NULL, NULL, NULL},
  1500.     /* NULL */
  1501.     {NULL, NULL, NULL, NULL},
  1502.     /* NULL */
  1503.     {NULL, NULL, NULL, NULL},
  1504.     /* NULL */
  1505.     {NULL, NULL, NULL, NULL},
  1506.     /* NULL */
  1507.     {NULL, NULL, NULL, NULL},
  1508.     /* NULL */
  1509.     {NULL, NULL, NULL, NULL},
  1510.     /* NULL */
  1511.     {NULL, NULL, NULL, NULL},
  1512.     /* NULL */
  1513.     {NULL, NULL, NULL, NULL},
  1514.     /* NULL */
  1515.     {NULL, NULL, NULL, NULL},
  1516.     /* NULL */
  1517.     {NULL, NULL, NULL, NULL},
  1518.     /* NULL */
  1519.     {NULL, NULL, NULL, NULL},
  1520.     /* NULL */
  1521.     {NULL, NULL, NULL, NULL},
  1522.     /* NULL */
  1523.     {NULL, NULL, NULL, NULL},
  1524.     /* NULL */
  1525.     {NULL, NULL, NULL, NULL},
  1526.     /* NULL */
  1527.     {NULL, NULL, NULL, NULL},
  1528.     /* NULL */
  1529.     {NULL, NULL, NULL, NULL},
  1530.     /* NULL */
  1531.     {NULL, NULL, NULL, NULL},
  1532.     /* NULL */
  1533.     {NULL, NULL, NULL, NULL},
  1534.     /* NULL */
  1535.     {NULL, NULL, NULL, NULL},
  1536.     /* NULL */
  1537.     {NULL, NULL, NULL, NULL},
  1538.     /* NULL */
  1539.     {NULL, NULL, NULL, NULL},
  1540.     /* NULL */
  1541.     {NULL, NULL, NULL, NULL},
  1542.     /* NULL */
  1543.     {NULL, NULL, NULL, NULL},
  1544.     /* NULL */
  1545.     {NULL, NULL, NULL, NULL},
  1546.     /* NULL */
  1547.     {NULL, NULL, NULL, NULL},
  1548.     /* NULL */
  1549.     {NULL, NULL, NULL, NULL},
  1550.     /* NULL */
  1551.     {NULL, NULL, NULL, NULL},
  1552.     /* NULL */
  1553.     {NULL, NULL, NULL, NULL},
  1554.     /* NULL */
  1555.     {NULL, NULL, NULL, NULL},
  1556.     /* NULL */
  1557.     {NULL, NULL, NULL, NULL},
  1558.     /* NULL */
  1559.     {NULL, NULL, NULL, NULL},
  1560.     /* NULL */
  1561.     {NULL, NULL, NULL, NULL},
  1562.     /* NULL */
  1563.     {NULL, NULL, NULL, NULL},
  1564.     /* NULL */
  1565.     {NULL, NULL, NULL, NULL},
  1566.     /* NULL */
  1567.     {NULL, NULL, NULL, NULL},
  1568.     /* NULL */
  1569.     {NULL, NULL, NULL, NULL},
  1570.     /* NULL */
  1571.     {NULL, NULL, NULL, NULL},
  1572.     /* NULL */
  1573.     {NULL, NULL, NULL, NULL},
  1574.     /* NULL */
  1575.     {NULL, NULL, NULL, NULL},
  1576.     /* NULL */
  1577.     {NULL, NULL, NULL, NULL},
  1578.     /* NULL */
  1579.     {NULL, NULL, NULL, NULL},
  1580.     /* NULL */
  1581.     {NULL, NULL, NULL, NULL},
  1582.     /* NULL */
  1583.     {NULL, NULL, NULL, NULL},
  1584.     /* NULL */
  1585.     {NULL, NULL, NULL, NULL},
  1586.     /* NULL */
  1587.     {NULL, NULL, NULL, NULL},
  1588.     /* NULL */
  1589.     {NULL, NULL, NULL, NULL},
  1590.     /* NULL */
  1591.     {NULL, NULL, NULL, NULL},
  1592.     /* NULL */
  1593.     {NULL, NULL, NULL, NULL},
  1594.     /* NULL */
  1595.     {NULL, NULL, NULL, NULL},
  1596.     /* NULL */
  1597.     {NULL, NULL, NULL, NULL},
  1598.     /* NULL */
  1599.     {NULL, NULL, NULL, NULL},
  1600.     /* NULL */
  1601.     {NULL, NULL, NULL, NULL},
  1602.     /* NULL */
  1603.     {NULL, NULL, NULL, NULL},
  1604.     /* NULL */
  1605.     {NULL, NULL, NULL, NULL},
  1606.     /* NULL */
  1607.     {NULL, NULL, NULL, NULL},
  1608.     /* NULL */
  1609.     {NULL, NULL, NULL, NULL},
  1610.     /* NULL */
  1611.     {NULL, NULL, NULL, NULL},
  1612.     /* NULL */
  1613.     {NULL, NULL, NULL, NULL},
  1614.     /* NULL */
  1615.     {NULL, NULL, NULL, NULL},
  1616.     /* NULL */
  1617.     {NULL, NULL, NULL, NULL},
  1618.     /* NULL */
  1619.     {NULL, NULL, NULL, NULL},
  1620.     /* NULL */
  1621.     {NULL, NULL, NULL, NULL},
  1622.     /* NULL */
  1623.     {NULL, NULL, NULL, NULL},
  1624.     /* NULL */
  1625.     {NULL, NULL, NULL, NULL},
  1626.     /* NULL */
  1627.     {NULL, NULL, NULL, NULL},
  1628.     /* NULL */
  1629.     {NULL, NULL, NULL, NULL},
  1630.     /* NULL */
  1631.     {NULL, NULL, NULL, NULL},
  1632.     /* NULL */
  1633.     {NULL, NULL, NULL, NULL},
  1634.     /* NULL */
  1635.     {NULL, NULL, NULL, NULL},
  1636.     /* NULL */
  1637.     {NULL, NULL, NULL, NULL},
  1638.     /* NULL */
  1639.     {NULL, NULL, NULL, NULL},
  1640.     /* NULL */
  1641.     {NULL, NULL, NULL, NULL},
  1642.     /* NULL */
  1643.     {NULL, NULL, NULL, NULL},
  1644.     /* NULL */
  1645.     {NULL, NULL, NULL, NULL},
  1646.     /* NULL */
  1647.     {NULL, NULL, NULL, NULL},
  1648.     /* NULL */
  1649.     {NULL, NULL, NULL, NULL},
  1650.     /* NULL */
  1651.     {NULL, NULL, NULL, NULL},
  1652.     /* NULL */
  1653.     {NULL, NULL, NULL, NULL},
  1654.     /* NULL */
  1655.     {NULL, NULL, NULL, NULL},
  1656.     /* NULL */
  1657.     {NULL, NULL, NULL, NULL},
  1658.     /* NULL */
  1659.     {NULL, NULL, NULL, NULL},
  1660.     /* NULL */
  1661.     {NULL, NULL, NULL, NULL},
  1662.     /* NULL */
  1663.     {NULL, NULL, NULL, NULL},
  1664.     /* NULL */
  1665.     {NULL, NULL, NULL, NULL},
  1666.     /* NULL */
  1667.     {NULL, NULL, NULL, NULL},
  1668.     /* NULL */
  1669.     {NULL, NULL, NULL, NULL},
  1670.     /* NULL */
  1671.     {NULL, NULL, NULL, NULL},
  1672.     /* NULL */
  1673.     {NULL, NULL, NULL, NULL},
  1674.     /* NULL */
  1675.     {NULL, NULL, NULL, NULL},
  1676.     /* NULL */
  1677.     {NULL, NULL, NULL, NULL},
  1678.     /* NULL */
  1679.     {NULL, NULL, NULL, NULL},
  1680.     /* NULL */
  1681.     {NULL, NULL, NULL, NULL},
  1682.     /* NULL */
  1683.     {NULL, NULL, NULL, NULL},
  1684.     /* NULL */
  1685.     {NULL, NULL, NULL, NULL},
  1686.     /* NULL */
  1687.     {NULL, NULL, NULL, NULL},
  1688.     /* NULL */
  1689.     {NULL, NULL, NULL, NULL},
  1690.     /* NULL */
  1691.     {NULL, NULL, NULL, NULL},
  1692.     /* NULL */
  1693.     {NULL, NULL, NULL, NULL},
  1694.     /* NULL */
  1695.     {NULL, NULL, NULL, NULL},
  1696.     /* NULL */
  1697.     {NULL, NULL, NULL, NULL},
  1698.     /* NULL */
  1699.     {NULL, NULL, NULL, NULL},
  1700.     /* NULL */
  1701.     {NULL, NULL, NULL, NULL},
  1702.     /* NULL */
  1703.     {NULL, NULL, NULL, NULL},
  1704.     /* NULL */
  1705.     {NULL, NULL, NULL, NULL},
  1706.     /* NULL */
  1707.     {NULL, NULL, NULL, NULL},
  1708.     /* NULL */
  1709.     {NULL, NULL, NULL, NULL},
  1710.     /* NULL */
  1711.     {NULL, NULL, NULL, NULL},
  1712.     /* NULL */
  1713.     {NULL, NULL, NULL, NULL},
  1714.     /* NULL */
  1715.     {NULL, NULL, NULL, NULL},
  1716.     /* NULL */
  1717.     {NULL, NULL, NULL, NULL},
  1718.     /* NULL */
  1719.     {NULL, NULL, NULL, NULL},
  1720.     /* NULL */
  1721.     {NULL, NULL, NULL, NULL},
  1722.     /* NULL */
  1723.     {NULL, NULL, NULL, NULL},
  1724.     /* NULL */
  1725.     {NULL, NULL, NULL, NULL},
  1726.     /* NULL */
  1727.     {NULL, NULL, NULL, NULL},
  1728.     /* NULL */
  1729.     {NULL, NULL, NULL, NULL},
  1730.     /* NULL */
  1731.     {NULL, NULL, NULL, NULL},
  1732.     /* NULL */
  1733.     {NULL, NULL, NULL, NULL},
  1734.     /* NULL */
  1735.     {NULL, NULL, NULL, NULL},
  1736.     /* NULL */
  1737.     {NULL, NULL, NULL, NULL},
  1738.     /* NULL */
  1739.     {NULL, NULL, NULL, NULL},
  1740.     /* NULL */
  1741.     {NULL, NULL, NULL, NULL},
  1742.     /* NULL */
  1743.     {NULL, NULL, NULL, NULL},
  1744.     /* NULL */
  1745.     {NULL, NULL, NULL, NULL},
  1746.     /* NULL */
  1747.     {NULL, NULL, NULL, NULL},
  1748.     /* NULL */
  1749.     {NULL, NULL, NULL, NULL},
  1750.     /* NULL */
  1751.     {NULL, NULL, NULL, NULL},
  1752.     /* NULL */
  1753.     {NULL, NULL, NULL, NULL},
  1754.     /* NULL */
  1755.     {NULL, NULL, NULL, NULL},
  1756.     /* NULL */
  1757.     {NULL, NULL, NULL, NULL},
  1758.     /* NULL */
  1759.     {NULL, NULL, NULL, NULL},
  1760.     /* NULL */
  1761.     {NULL, NULL, NULL, NULL},
  1762.     /* NULL */
  1763.     {NULL, NULL, NULL, NULL},
  1764.     /* NULL */
  1765.     {NULL, NULL, NULL, NULL},
  1766.     /* NULL */
  1767.     {NULL, NULL, NULL, NULL},
  1768.     /* NULL */
  1769.     {NULL, NULL, NULL, NULL},
  1770.     /* NULL */
  1771.     {NULL, NULL, NULL, NULL},
  1772.     /* NULL */
  1773.     {NULL, NULL, NULL, NULL},
  1774.     /* NULL */
  1775.     {NULL, NULL, NULL, NULL},
  1776.     /* NULL */
  1777.     {NULL, NULL, NULL, NULL},
  1778.     /* NULL */
  1779.     {NULL, NULL, NULL, NULL},
  1780.     /* NULL */
  1781.     {NULL, NULL, NULL, NULL},
  1782.     /* NULL */
  1783.     {NULL, NULL, NULL, NULL},
  1784.     /* NULL */
  1785.     {NULL, NULL, NULL, NULL},
  1786.     /* NULL */
  1787.     {NULL, NULL, NULL, NULL},
  1788.     /* NULL */
  1789.     {NULL, NULL, NULL, NULL},
  1790.     /* NULL */
  1791.     {NULL, NULL, NULL, NULL},
  1792.     /* NULL */
  1793.     {NULL, NULL, NULL, NULL},
  1794.     /* NULL */
  1795.     {NULL, NULL, NULL, NULL},
  1796.     /* NULL */
  1797.     {NULL, NULL, NULL, NULL},
  1798.     /* NULL */
  1799.     {NULL, NULL, NULL, NULL},
  1800.     /* NULL */
  1801.     {NULL, NULL, NULL, NULL},
  1802.     /* NULL */
  1803.     {NULL, NULL, NULL, NULL},
  1804.     /* NULL */
  1805.     {NULL, NULL, NULL, NULL},
  1806.     /* NULL */
  1807.     {NULL, NULL, NULL, NULL},
  1808.     /* NULL */
  1809.     {NULL, NULL, NULL, NULL},
  1810.     /* NULL */
  1811.     {NULL, NULL, NULL, NULL},
  1812.     /* NULL */
  1813.     {NULL, NULL, NULL, NULL},
  1814.     /* NULL */
  1815.     {NULL, NULL, NULL, NULL},
  1816.     /* NULL */
  1817.     {NULL, NULL, NULL, NULL},
  1818.     /* NULL */
  1819.     {NULL, NULL, NULL, NULL},
  1820.     /* NULL */
  1821.     {NULL, NULL, NULL, NULL},
  1822.     /* NULL */
  1823.     {NULL, NULL, NULL, NULL},
  1824.     /* NULL */
  1825.     {NULL, NULL, NULL, NULL},
  1826.     /* NULL */
  1827.     {NULL, NULL, NULL, NULL},
  1828.     /* NULL */
  1829.     {NULL, NULL, NULL, NULL},
  1830.     /* NULL */
  1831.     {NULL, NULL, NULL, NULL},
  1832.     /* NULL */
  1833.     {NULL, NULL, NULL, NULL},
  1834.     /* NULL */
  1835.     {NULL, NULL, NULL, NULL},
  1836.     /* NULL */
  1837.     {NULL, NULL, NULL, NULL},
  1838.     /* NULL */
  1839.     {NULL, NULL, NULL, NULL},
  1840.     /* NULL */
  1841.     {NULL, NULL, NULL, NULL},
  1842.     /* NULL */
  1843.     {NULL, NULL, NULL, NULL},
  1844.     /* NULL */
  1845.     {NULL, NULL, NULL, NULL},
  1846.     /* NULL */
  1847.     {NULL, NULL, NULL, NULL},
  1848.     /* NULL */
  1849.     {NULL, NULL, NULL, NULL},
  1850.     /* NULL */
  1851.     {NULL, NULL, NULL, NULL},
  1852.     /* NULL */
  1853.     {NULL, NULL, NULL, NULL},
  1854.     /* NULL */
  1855.     {NULL, NULL, NULL, NULL},
  1856.     /* NULL */
  1857.     {NULL, NULL, NULL, NULL},
  1858.     /* NULL */
  1859.     {NULL, NULL, NULL, NULL},
  1860.     /* NULL */
  1861.     {NULL, NULL, NULL, NULL},
  1862.     /* NULL */
  1863.     {NULL, NULL, NULL, NULL},
  1864.     /* NULL */
  1865.     {NULL, NULL, NULL, NULL},
  1866.     /* NULL */
  1867.     {NULL, NULL, NULL, NULL},
  1868.     /* NULL */
  1869.     {NULL, NULL, NULL, NULL},
  1870.     /* NULL */
  1871.     {NULL, NULL, NULL, NULL},
  1872.     /* NULL */
  1873.     {NULL, NULL, NULL, NULL},
  1874.     /* NULL */
  1875.     {NULL, NULL, NULL, NULL},
  1876.     /* NULL */
  1877.     {NULL, NULL, NULL, NULL},
  1878.     /* NULL */
  1879.     {NULL, NULL, NULL, NULL},
  1880.     /* NULL */
  1881.     {NULL, NULL, NULL, NULL},
  1882.     /* NULL */
  1883.     {NULL, NULL, NULL, NULL},
  1884.     /* NULL */
  1885.     {NULL, NULL, NULL, NULL},
  1886.     /* NULL */
  1887.     {NULL, NULL, NULL, NULL},
  1888.     /* NULL */
  1889.     {NULL, NULL, NULL, NULL},
  1890.     /* NULL */
  1891.     {NULL, NULL, NULL, NULL},
  1892.     /* NULL */
  1893.     {NULL, NULL, NULL, NULL},
  1894.     /* NULL */
  1895.     {NULL, NULL, NULL, NULL},
  1896.     /* NULL */
  1897.     {NULL, NULL, NULL, NULL},
  1898.     /* NULL */
  1899.     {NULL, NULL, NULL, NULL},
  1900.     /* NULL */
  1901.     {NULL, NULL, NULL, NULL},
  1902.     /* NULL */
  1903.     {NULL, NULL, NULL, NULL},
  1904.     /* NULL */
  1905.     {NULL, NULL, NULL, NULL},
  1906.     /* NULL */
  1907.     {NULL, NULL, NULL, NULL},
  1908.     /* NULL */
  1909.     {NULL, NULL, NULL, NULL},
  1910.     /* NULL */
  1911.     {NULL, NULL, NULL, NULL},
  1912.     /* NULL */
  1913.     {NULL, NULL, NULL, NULL},
  1914.     /* NULL */
  1915.     {NULL, NULL, NULL, NULL},
  1916.     /* NULL */
  1917.     {NULL, NULL, NULL, NULL},
  1918.     /* NULL */
  1919.     {NULL, NULL, NULL, NULL},
  1920.     /* NULL */
  1921.     {NULL, NULL, NULL, NULL},
  1922.     /* NULL */
  1923.     {NULL, NULL, NULL, NULL},
  1924.     /* NULL */
  1925.     {NULL, NULL, NULL, NULL},
  1926.     /* NULL */
  1927.     {NULL, NULL, NULL, NULL},
  1928.     /* NULL */
  1929.     {NULL, NULL, NULL, NULL},
  1930.     /* NULL */
  1931.     {NULL, NULL, NULL, NULL},
  1932.     /* NULL */
  1933.     {NULL, NULL, NULL, NULL},
  1934.     /* NULL */
  1935.     {NULL, NULL, NULL, NULL},
  1936.     /* NULL */
  1937.     {NULL, NULL, NULL, NULL},
  1938.     /* NULL */
  1939.     {NULL, NULL, NULL, NULL},
  1940.     /* NULL */
  1941.     {NULL, NULL, NULL, NULL},
  1942.     /* NULL */
  1943.     {NULL, NULL, NULL, NULL},
  1944.     /* NULL */
  1945.     {NULL, NULL, NULL, NULL},
  1946.     /* NULL */
  1947.     {NULL, NULL, NULL, NULL},
  1948.     /* NULL */
  1949.     {NULL, NULL, NULL, NULL},
  1950.     /* NULL */
  1951.     {NULL, NULL, NULL, NULL},
  1952.     /* NULL */
  1953.     {NULL, NULL, NULL, NULL},
  1954.     /* NULL */
  1955.     {NULL, NULL, NULL, NULL},
  1956.     /* NULL */
  1957.     {NULL, NULL, NULL, NULL},
  1958.     /* NULL */
  1959.     {NULL, NULL, NULL, NULL},
  1960.     /* NULL */
  1961.     {NULL, NULL, NULL, NULL},
  1962.     /* NULL */
  1963.     {NULL, NULL, NULL, NULL},
  1964.     /* NULL */
  1965.     {NULL, NULL, NULL, NULL},
  1966.     /* NULL */
  1967.     {NULL, NULL, NULL, NULL},
  1968.     /* NULL */
  1969.     {NULL, NULL, NULL, NULL},
  1970.     /* NULL */
  1971.     {NULL, NULL, NULL, NULL},
  1972.     /* NULL */
  1973.     {NULL, NULL, NULL, NULL},
  1974.     /* NULL */
  1975.     {NULL, NULL, NULL, NULL},
  1976.     /* NULL */
  1977.     {NULL, NULL, NULL, NULL},
  1978.     /* NULL */
  1979.     {NULL, NULL, NULL, NULL},
  1980.     /* NULL */
  1981.     {NULL, NULL, NULL, NULL},
  1982.     /* NULL */
  1983.     {NULL, NULL, NULL, NULL},
  1984.     /* NULL */
  1985.     {NULL, NULL, NULL, NULL},
  1986.     /* NULL */
  1987.     {NULL, NULL, NULL, NULL},
  1988.     /* NULL */
  1989.     {NULL, NULL, NULL, NULL},
  1990.     /* NULL */
  1991.     {NULL, NULL, NULL, NULL},
  1992.     /* NULL */
  1993.     {NULL, NULL, NULL, NULL},
  1994.     /* NULL */
  1995.     {NULL, NULL, NULL, NULL},
  1996.     /* NULL */
  1997.     {NULL, NULL, NULL, NULL},
  1998.     /* NULL */
  1999.     {NULL, NULL, NULL, NULL},
  2000.     /* NULL */
  2001.     {NULL, NULL, NULL, NULL},
  2002.     /* NULL */
  2003.     {NULL, NULL, NULL, NULL},
  2004.     /* NULL */
  2005.     {NULL, NULL, NULL, NULL},
  2006.     /* NULL */
  2007.     {NULL, NULL, NULL, NULL},
  2008.     /* NULL */
  2009.     {NULL, NULL, NULL, NULL},
  2010.     /* NULL */
  2011.     {NULL, NULL, NULL, NULL},
  2012.     /* NULL */
  2013.     {NULL, NULL, NULL, NULL},
  2014.     /* NULL */
  2015.     {NULL, NULL, NULL, NULL},
  2016.     /* NULL */
  2017.     {NULL, NULL, NULL, NULL},
  2018.     /* NULL */
  2019.     {NULL, NULL, NULL, NULL},
  2020.     /* NULL */
  2021.     {NULL, NULL, NULL, NULL},
  2022.     /* NULL */
  2023.     {NULL, NULL, NULL, NULL},
  2024.     /* NULL */
  2025.     {NULL, NULL, NULL, NULL},
  2026.     /* NULL */
  2027.     {NULL, NULL, NULL, NULL},
  2028.     /* NULL */
  2029.     {NULL, NULL, NULL, NULL},
  2030.     /* NULL */
  2031.     {NULL, NULL, NULL, NULL},
  2032.     /* NULL */
  2033.     {NULL, NULL, NULL, NULL},
  2034.     /* NULL */
  2035.     {NULL, NULL, NULL, NULL},
  2036.     /* NULL */
  2037.     {NULL, NULL, NULL, NULL},
  2038.     /* NULL */
  2039.     {NULL, NULL, NULL, NULL},
  2040.     /* NULL */
  2041.     {NULL, NULL, NULL, NULL},
  2042.     /* NULL */
  2043.     {NULL, NULL, NULL, NULL},
  2044.     /* NULL */
  2045.     {NULL, NULL, NULL, NULL},
  2046.     /* NULL */
  2047.     {NULL, NULL, NULL, NULL},
  2048.     /* NULL */
  2049.     {NULL, NULL, NULL, NULL},
  2050.     /* NULL */
  2051.     {NULL, NULL, NULL, NULL},
  2052.     /* NULL */
  2053.     {NULL, NULL, NULL, NULL},
  2054.     /* NULL */
  2055.     {NULL, NULL, NULL, NULL},
  2056.     /* NULL */
  2057.     {NULL, NULL, NULL, NULL},
  2058.     /* NULL */
  2059.     {NULL, NULL, NULL, NULL},
  2060.     /* NULL */
  2061.     {NULL, NULL, NULL, NULL},
  2062.     /* NULL */
  2063.     {NULL, NULL, NULL, NULL},
  2064.     /* NULL */
  2065.     {NULL, NULL, NULL, NULL},
  2066.     /* NULL */
  2067.     {NULL, NULL, NULL, NULL},
  2068.     /* NULL */
  2069.     {NULL, NULL, NULL, NULL},
  2070.     /* NULL */
  2071.     {NULL, NULL, NULL, NULL},
  2072.     /* NULL */
  2073.     {NULL, NULL, NULL, NULL},
  2074.     /* NULL */
  2075.     {NULL, NULL, NULL, NULL},
  2076.     /* NULL */
  2077.     {NULL, NULL, NULL, NULL},
  2078.     /* NULL */
  2079.     {NULL, NULL, NULL, NULL},
  2080.     /* NULL */
  2081.     {NULL, NULL, NULL, NULL},
  2082.     /* NULL */
  2083.     {NULL, NULL, NULL, NULL},
  2084.     /* NULL */
  2085.     {NULL, NULL, NULL, NULL},
  2086.     /* NULL */
  2087.     {NULL, NULL, NULL, NULL},
  2088.     /* NULL */
  2089.     {NULL, NULL, NULL, NULL},
  2090.     /* NULL */
  2091.     {NULL, NULL, NULL, NULL},
  2092.     /* NULL */
  2093.     {NULL, NULL, NULL, NULL},
  2094.     /* NULL */
  2095.     {NULL, NULL, NULL, NULL}
  2096. };
  2097. //PMT PERSIAN END - Ailsa
  2098. const LIGATURE_INFO_TABLE L_LAM_Tbl[] = 
  2099. {
  2100.     /* (Lam)l + (Madda_on_alef)r */
  2101.     {2, 1, LANGUAGE_FOR_LIGATURE, {L_LAM, R_MADDA_ON_ALEF, 0x0}, {N_MADDA_ON_LAMALEF, 0x0}},
  2102. /* (Lam)l + (Hamza_on_alef)r */
  2103.     {2, 1, LANGUAGE_FOR_LIGATURE, {L_LAM, R_HAMZA_ON_ALEF, 0x0}, {N_HAMZA_ON_LAMALEF, 0x0}},
  2104.     /* (Lam)l + (Hamza_under_alef)r */
  2105.     {2, 1, LANGUAGE_FOR_LIGATURE, {L_LAM, R_HAMZA_UNDER_ALEF, 0x0}, {N_HAMZA_UNDER_LAMALEF, 0x0}},
  2106. /* (Lam)l + (Alef)r */
  2107.     {2, 1, LANGUAGE_FOR_LIGATURE, {L_LAM, R_ALEF, 0x0}, {N_LAMALEF, 0x0}},
  2108. /* (Lam)l + (Alef)m + (Hamza)n */
  2109.     {3, 1, LANGUAGE_FOR_LIGATURE, {L_LAM, M_ALEF, N_HAMZA, 0x0}, {N_HAMZA_ON_LAMALEF, 0x0}}
  2110. };
  2111. const LIGATURE_INFO_TABLE M_LAM_Tbl[] = 
  2112. {
  2113.     /* (Lam)m + (Madda_on_alef)r */
  2114.     {2, 1, LANGUAGE_FOR_LIGATURE, {M_LAM, R_MADDA_ON_ALEF, 0x0}, {R_MADDA_ON_LAMALEF, 0x0}},
  2115. /* (Lam)m + (Hamza_on_alef)r */
  2116.     {2, 1, LANGUAGE_FOR_LIGATURE, {M_LAM, R_HAMZA_ON_ALEF, 0x0}, {R_HAMZA_ON_LAMALEF, 0x0}},
  2117.     /* (Lam)m + (Hamza_under_alef)r */
  2118.     {2, 1, LANGUAGE_FOR_LIGATURE, {M_LAM, R_HAMZA_UNDER_ALEF, 0x0}, {R_HAMZA_UNDER_LAMALEF, 0x0}},
  2119. /* (Lam)m + (Alef)r */
  2120.     {2, 1, LANGUAGE_FOR_LIGATURE, {M_LAM, R_ALEF, 0x0}, {R_LAMALEF, 0x0}},
  2121. /* (Lam)m + (Alef)m + (Hamza)n */
  2122.     {3, 1, LANGUAGE_FOR_LIGATURE, {M_LAM, M_ALEF, N_HAMZA, 0x0}, {R_HAMZA_ON_LAMALEF, 0x0}}
  2123. };
  2124. const ARABIC_MAIN_TABLE Arabic_base_Tbl[] = 
  2125. {
  2126. {NULL, 0, 0} //0x0620
  2127.     ,
  2128. {NULL, 0, 0} //0x0621
  2129.     ,
  2130. {NULL, 0, 0} //0x0622
  2131.     ,
  2132. {NULL, 0, 0} //0x0623
  2133.     ,
  2134. {NULL, 0, 0} //0x0624
  2135.     ,
  2136. {NULL, 0, 0}
  2137.     ,
  2138. {NULL, 0, 0}
  2139.     ,
  2140. {NULL, 0, 0}
  2141.     ,
  2142. {NULL, 0, 0}
  2143.     ,
  2144. {NULL, 0, 0}
  2145.     ,
  2146. {NULL, 0, 0}
  2147.     ,
  2148. {NULL, 0, 0}
  2149.     ,
  2150. {NULL, 0, 0}
  2151.     ,
  2152. {NULL, 0, 0}
  2153.     ,
  2154. {NULL, 0, 0}
  2155.     ,
  2156. {NULL, 0, 0}   
  2157.     ,
  2158. {NULL, 0, 0}
  2159.     ,
  2160. {NULL, 0, 0}
  2161.     ,
  2162. {NULL, 0, 0}
  2163.     ,
  2164. {NULL, 0, 0}
  2165.     ,
  2166. {NULL, 0, 0}
  2167.     ,
  2168. {NULL, 0, 0}
  2169.     ,
  2170. {NULL, 0, 0}
  2171.     ,
  2172. {NULL, 0, 0}
  2173.     ,
  2174. {NULL, 0, 0}
  2175.     ,
  2176. {NULL, 0, 0}
  2177.     ,
  2178. {NULL, 0, 0}
  2179.     ,
  2180. {NULL, 0, 0}
  2181.     ,
  2182. {NULL, 0, 0}
  2183.     ,
  2184. {NULL, 0, 0}
  2185.     ,
  2186. {NULL, 0, 0}
  2187.     ,
  2188. {NULL, 0, 0}   
  2189.     ,
  2190. {NULL, 0, 0}
  2191.     ,
  2192. {NULL, 0, 0}
  2193.     ,
  2194. {NULL, 0, 0}
  2195.     ,
  2196. {NULL, 0, 0}
  2197.     ,
  2198. {NULL, 0, 0}
  2199.     ,
  2200. {NULL, 0, 0}
  2201.     ,
  2202. {NULL, 0, 0}
  2203.     ,
  2204. {NULL, 0, 0}
  2205.     ,
  2206. {NULL, 0, 0}
  2207.     ,
  2208. {NULL, 0, 0}
  2209.     ,
  2210. {NULL, 0, 0}
  2211.     ,
  2212. {NULL, 0, 0}
  2213.     ,
  2214. {NULL, 0, 0}
  2215.     ,
  2216. {NULL, 0, 0}
  2217.     ,
  2218. {NULL, 0, 0}
  2219.     ,
  2220. {NULL, 0, 0}   
  2221.     ,
  2222. {NULL, 0, 0}
  2223.     ,
  2224. {NULL, 0, 0}
  2225.     ,
  2226. {NULL, 0, 0}
  2227.     ,
  2228. {NULL, 0, 0}
  2229.     ,
  2230. {NULL, 0, 0}
  2231.     ,
  2232. {NULL, 0, 0}
  2233.     ,
  2234. {NULL, 0, 0}
  2235.     ,
  2236. {NULL, 0, 0}
  2237.     ,
  2238. {NULL, 0, 0}
  2239.     ,
  2240. {NULL, 0, 0}
  2241.     ,
  2242. {NULL, 0, 0}
  2243.     ,
  2244. {NULL, 0, 0}
  2245.     ,
  2246. {NULL, 0, 0}
  2247.     ,
  2248. {NULL, 0, 0}
  2249.     ,
  2250. {NULL, 0, 0}
  2251.     ,
  2252. {NULL, 0, 0}   
  2253.     ,
  2254. {NULL, 0, 0}
  2255.     ,
  2256. {NULL, 0, 0}
  2257.     ,
  2258. {NULL, 0, 0}
  2259.     ,
  2260. {NULL, 0, 0}
  2261.     ,
  2262. {NULL, 0, 0}
  2263.     ,
  2264. {NULL, 0, 0}
  2265.     ,
  2266. {NULL, 0, 0}
  2267.     ,
  2268. {NULL, 0, 0}
  2269.     ,
  2270. {NULL, 0, 0}
  2271.     ,
  2272. {NULL, 0, 0}
  2273.     ,
  2274. {NULL, 0, 0}
  2275.     ,
  2276. {NULL, 0, 0}
  2277.     ,
  2278. {NULL, 0, 0}
  2279.     ,
  2280. {NULL, 0, 0}
  2281.     ,
  2282. {NULL, 0, 0}
  2283.     ,
  2284. {NULL, 0, 0}   
  2285.     ,
  2286. {NULL, 0, 0}
  2287.     ,
  2288. {NULL, 0, 0}
  2289.     ,
  2290. {NULL, 0, 0}
  2291.     ,
  2292. {NULL, 0, 0}
  2293.     ,
  2294. {NULL, 0, 0}
  2295.     ,
  2296. {NULL, 0, 0}
  2297.     ,
  2298. {NULL, 0, 0}
  2299.     ,
  2300. {NULL, 0, 0}
  2301.     ,
  2302. {NULL, 0, 0}
  2303.     ,
  2304. {NULL, 0, 0}
  2305.     ,
  2306. {NULL, 0, 0}
  2307.     ,
  2308. {NULL, 0, 0}
  2309.     ,
  2310. {NULL, 0, 0}
  2311.     ,
  2312. {NULL, 0, 0}
  2313.     ,
  2314. {NULL, 0, 0}
  2315.     ,
  2316. {NULL, 0, 0}   
  2317.     ,
  2318. {NULL, 0, 0}
  2319.     ,
  2320. {NULL, 0, 0}
  2321.     ,
  2322. {NULL, 0, 0}
  2323.     ,
  2324. {NULL, 0, 0}
  2325.     ,
  2326. {NULL, 0, 0}
  2327.     ,
  2328. {NULL, 0, 0}
  2329.     ,
  2330. {NULL, 0, 0}
  2331.     ,
  2332. {NULL, 0, 0}
  2333.     ,
  2334. {NULL, 0, 0}
  2335.     ,
  2336. {NULL, 0, 0}
  2337.     ,
  2338. {NULL, 0, 0}
  2339.     ,
  2340. {NULL, 0, 0}
  2341.     ,
  2342. {NULL, 0, 0}
  2343.     ,
  2344. {NULL, 0, 0}
  2345.     ,
  2346. {NULL, 0, 0}
  2347.     ,
  2348. {NULL, 0, 0}   
  2349.     ,
  2350. {NULL, 0, 0}
  2351.     ,
  2352. {NULL, 0, 0}
  2353.     ,
  2354. {NULL, 0, 0}
  2355.     ,
  2356. {NULL, 0, 0}
  2357.     ,
  2358. {NULL, 0, 0}
  2359.     ,
  2360. {NULL, 0, 0}
  2361.     ,
  2362. {NULL, 0, 0}
  2363.     ,
  2364. {NULL, 0, 0}
  2365.     ,
  2366. {NULL, 0, 0}
  2367.     ,
  2368. {NULL, 0, 0}
  2369.     ,
  2370. {NULL, 0, 0}
  2371.     ,
  2372. {NULL, 0, 0}
  2373.     ,
  2374. {NULL, 0, 0}
  2375.     ,
  2376. {NULL, 0, 0}
  2377.     ,
  2378. {NULL, 0, 0}
  2379.     ,
  2380. {NULL, 0, 0}   
  2381.     ,
  2382. {NULL, 0, 0}
  2383.     ,
  2384. {NULL, 0, 0}
  2385.     ,
  2386. {NULL, 0, 0}
  2387.     ,
  2388. {NULL, 0, 0}
  2389.     ,
  2390. {NULL, 0, 0}
  2391.     ,
  2392. {NULL, 0, 0}
  2393.     ,
  2394. {NULL, 0, 0}
  2395.     ,
  2396. {NULL, 0, 0}
  2397.     ,
  2398. {NULL, 0, 0}
  2399.     ,
  2400. {NULL, 0, 0}
  2401.     ,
  2402. {NULL, 0, 0}
  2403.     ,
  2404. {NULL, 0, 0}
  2405.     ,
  2406. {NULL, 0, 0}
  2407.     ,
  2408. {NULL, 0, 0}
  2409.     ,
  2410. {NULL, 0, 0}
  2411.     ,
  2412. {NULL, 0, 0}   
  2413.     ,
  2414. {NULL, 0, 0}
  2415.     ,
  2416. {NULL, 0, 0}
  2417.     ,
  2418. {NULL, 0, 0}
  2419.     ,
  2420. {NULL, 0, 0}
  2421.     ,
  2422. {NULL, 0, 0}
  2423.     ,
  2424. {NULL, 0, 0}
  2425.     ,
  2426. {NULL, 0, 0}
  2427.     ,
  2428. {NULL, 0, 0}
  2429.     ,
  2430. {NULL, 0, 0}
  2431.     ,
  2432. {NULL, 0, 0}
  2433.     ,
  2434. {NULL, 0, 0}
  2435.     ,
  2436. {NULL, 0, 0}
  2437.     ,
  2438. {NULL, 0, 0}
  2439.     ,
  2440. {NULL, 0, 0}
  2441.     ,
  2442. {NULL, 0, 0}
  2443.     ,
  2444. {NULL, 0, 0}   
  2445.     ,
  2446. {NULL, 0, 0}
  2447.     ,
  2448. {NULL, 0, 0}
  2449.     ,
  2450. {NULL, 0, 0}
  2451.     ,
  2452. {NULL, 0, 0}
  2453.     ,
  2454. {NULL, 0, 0}
  2455.     ,
  2456. {NULL, 0, 0}
  2457.     ,
  2458. {NULL, 0, 0}
  2459.     ,
  2460. {NULL, 0, 0}
  2461.     ,
  2462. {NULL, 0, 0}
  2463.     ,
  2464. {NULL, 0, 0}
  2465.     ,
  2466. {NULL, 0, 0}
  2467.     ,
  2468. {NULL, 0, 0}
  2469.     ,
  2470. {NULL, 0, 0}
  2471.     ,
  2472. {NULL, 0, 0}
  2473.     ,
  2474. {NULL, 0, 0}
  2475.     ,
  2476. {NULL, 0, 0}   
  2477.     ,
  2478. {NULL, 0, 0}
  2479.     ,
  2480. {NULL, 0, 0}
  2481.     ,
  2482. {NULL, 0, 0}
  2483.     ,
  2484. {NULL, 0, 0}
  2485.     ,
  2486. {NULL, 0, 0}
  2487.     ,
  2488. {NULL, 0, 0}
  2489.     ,
  2490. {NULL, 0, 0}
  2491.     ,
  2492. {NULL, 0, 0}
  2493.     ,
  2494. {NULL, 0, 0}
  2495.     ,
  2496. {NULL, 0, 0}
  2497.     ,
  2498. {NULL, 0, 0}
  2499.     ,
  2500. {NULL, 0, 0}
  2501.     ,
  2502. {NULL, 0, 0}
  2503.     ,
  2504. {NULL, 0, 0}
  2505.     ,
  2506. {NULL, 0, 0}
  2507.     ,
  2508. {NULL, 0, 0}   
  2509.     ,
  2510. {NULL, 0, 0}
  2511.     ,
  2512. {NULL, 0, 0}
  2513.     ,
  2514. {NULL, 0, 0}
  2515.     ,
  2516. {NULL, 0, 0}
  2517.     ,
  2518. {NULL, 0, 0}
  2519.     ,
  2520. {NULL, 0, 0}
  2521.     ,
  2522. {NULL, 0, 0}
  2523.     ,
  2524. {NULL, 0, 0}
  2525.     ,
  2526. {NULL, 0, 0}
  2527.     ,
  2528. {NULL, 0, 0}
  2529.     ,
  2530. {NULL, 0, 0}
  2531.     ,
  2532. {NULL, 0, 0}
  2533.     ,
  2534. {NULL, 0, 0}
  2535.     ,
  2536. {NULL, 0, 0}
  2537.     ,
  2538. {NULL, 0, 0}
  2539.     ,
  2540. {NULL, 0, 0}   
  2541.     ,
  2542. {NULL, 0, 0}
  2543.     ,
  2544. {NULL, 0, 0}
  2545.     ,
  2546. {NULL, 0, 0}
  2547.     ,
  2548. {NULL, 0, 0}
  2549.     ,
  2550. {NULL, 0, 0}
  2551.     ,
  2552. {NULL, 0, 0}
  2553.     ,
  2554. {NULL, 0, 0}
  2555.     ,
  2556. {NULL, 0, 0}
  2557.     ,
  2558. {NULL, 0, 0}
  2559.     ,
  2560. {NULL, 0, 0}
  2561.     ,
  2562. {NULL, 0, 0}
  2563.     ,
  2564. {NULL, 0, 0}
  2565.     ,
  2566. {NULL, 0, 0}
  2567.     ,
  2568. {NULL, 0, 0}
  2569.     ,
  2570. {NULL, 0, 0}
  2571.     ,
  2572. {NULL, 0, 0}
  2573. };
  2574. const ARABIC_MAIN_TABLE Arabic_Tbl_B[] = 
  2575. {
  2576. {NULL, 0, 0}   //FE70
  2577.     ,
  2578. {NULL, 0, 0}   //FE71
  2579.     ,
  2580. {NULL, 0, 0}   //FE72
  2581.     ,
  2582. {NULL, 0, 0}   //FE73
  2583.     ,
  2584. {NULL, 0, 0}
  2585.     ,
  2586. {NULL, 0, 0}
  2587.     ,
  2588. {NULL, 0, 0}
  2589.     ,
  2590. {NULL, 0, 0}
  2591.     ,
  2592. {NULL, 0, 0}
  2593.     ,
  2594. {NULL, 0, 0}
  2595.     ,
  2596. {NULL, 0, 0}
  2597.     ,
  2598. {NULL, 0, 0}
  2599.     ,
  2600. {NULL, 0, 0}
  2601.     ,
  2602. {NULL, 0, 0}
  2603.     ,
  2604. {NULL, 0, 0}
  2605.     ,
  2606. {NULL, 0, 0}
  2607.     ,
  2608. {NULL, 0, 0}   
  2609.     ,
  2610. {NULL, 0, 0}
  2611.     ,
  2612. {NULL, 0, 0}
  2613.     ,
  2614. {NULL, 0, 0}
  2615.     ,
  2616. {NULL, 0, 0}
  2617.     ,
  2618. {NULL, 0, 0}
  2619.     ,
  2620. {NULL, 0, 0}
  2621.     ,
  2622. {NULL, 0, 0}
  2623.     ,
  2624. {NULL, 0, 0}
  2625.     ,
  2626. {NULL, 0, 0}
  2627.     ,
  2628. {NULL, 0, 0}
  2629.     ,
  2630. {NULL, 0, 0}
  2631.     ,
  2632. {NULL, 0, 0}
  2633.     ,
  2634. {NULL, 0, 0}
  2635.     ,
  2636. {NULL, 0, 0}
  2637.     ,
  2638. {NULL, 0, 0}
  2639.     ,
  2640. {NULL, 0, 0}   
  2641.     ,
  2642. {NULL, 0, 0}
  2643.     ,
  2644. {NULL, 0, 0}
  2645.     ,
  2646. {NULL, 0, 0}
  2647.     ,
  2648. {NULL, 0, 0}
  2649.     ,
  2650. {NULL, 0, 0}
  2651.     ,
  2652. {NULL, 0, 0}
  2653.     ,
  2654. {NULL, 0, 0}
  2655.     ,
  2656. {NULL, 0, 0}
  2657.     ,
  2658. {NULL, 0, 0}
  2659.     ,
  2660. {NULL, 0, 0}
  2661.     ,
  2662. {NULL, 0, 0}
  2663.     ,
  2664. {NULL, 0, 0}
  2665.     ,
  2666. {NULL, 0, 0}
  2667.     ,
  2668. {NULL, 0, 0}
  2669.     ,
  2670. {NULL, 0, 0}
  2671.     ,
  2672. {NULL, 0, 0}   
  2673.     ,
  2674. {NULL, 0, 0}
  2675.     ,
  2676. {NULL, 0, 0}
  2677.     ,
  2678. {NULL, 0, 0}
  2679.     ,
  2680. {NULL, 0, 0}
  2681.     ,
  2682. {NULL, 0, 0}
  2683.     ,
  2684. {NULL, 0, 0}
  2685.     ,
  2686. {NULL, 0, 0}
  2687.     ,
  2688. {NULL, 0, 0}
  2689.     ,
  2690. {NULL, 0, 0}
  2691.     ,
  2692. {NULL, 0, 0}
  2693.     ,
  2694. {NULL, 0, 0}
  2695.     ,
  2696. {NULL, 0, 0}
  2697.     ,
  2698. {NULL, 0, 0}
  2699.     ,
  2700. {NULL, 0, 0}
  2701.     ,
  2702. {NULL, 0, 0}
  2703.     ,
  2704. {NULL, 0, 0}   
  2705.     ,
  2706. {NULL, 0, 0}
  2707.     ,
  2708. {NULL, 0, 0}
  2709.     ,
  2710. {NULL, 0, 0}
  2711.     ,
  2712. {NULL, 0, 0}
  2713.     ,
  2714. {NULL, 0, 0}
  2715.     ,
  2716. {NULL, 0, 0}
  2717.     ,
  2718. {NULL, 0, 0}
  2719.     ,
  2720. {NULL, 0, 0}
  2721.     ,
  2722. {NULL, 0, 0}
  2723.     ,
  2724. {NULL, 0, 0}
  2725.     ,
  2726. {NULL, 0, 0}
  2727.     ,
  2728. {NULL, 0, 0}
  2729.     ,
  2730. {NULL, 0, 0}
  2731.     ,
  2732. {NULL, 0, 0}
  2733.     ,
  2734. {NULL, 0, 0}
  2735.     ,
  2736. {NULL, 0, 0}   
  2737.     ,
  2738. {NULL, 0, 0}
  2739.     ,
  2740. {NULL, 0, 0}
  2741.     ,
  2742. {NULL, 0, 0}
  2743.     ,
  2744. {NULL, 0, 0}
  2745.     ,
  2746. {NULL, 0, 0}
  2747.     ,
  2748. {NULL, 0, 0}
  2749.     ,
  2750. {NULL, 0, 0}
  2751.     ,
  2752. {NULL, 0, 0}
  2753.     ,
  2754. {NULL, 0, 0}
  2755.     ,
  2756. {NULL, 0, 0}
  2757.     ,
  2758. {NULL, 0, 0}
  2759.     ,
  2760. {NULL, 0, 0}
  2761.     ,
  2762. {NULL, 0, 0}
  2763.     ,
  2764. {NULL, 0, 0}
  2765.     ,
  2766. {NULL, 0, 0}
  2767.     ,
  2768. {NULL, 0, 0}   
  2769.     ,
  2770. {NULL, 0, 0}
  2771.     ,
  2772. {NULL, 0, 0}
  2773.     ,
  2774. {NULL, 0, 0}
  2775.     ,
  2776. {NULL, 0, 0}
  2777.     ,
  2778. {NULL, 0, 0}
  2779.     ,
  2780. {NULL, 0, 0}
  2781.     ,
  2782. {NULL, 0, 0}
  2783.     ,
  2784. {NULL, 0, 0}
  2785.     ,
  2786. {NULL, 0, 0}
  2787.     ,
  2788. {NULL, 0, 0}
  2789.     ,
  2790. {NULL, 0, 0}
  2791.     ,
  2792. {NULL, 0, 0}
  2793.     ,
  2794. {NULL, 0, 0}
  2795.     ,
  2796. {NULL, 0, 0}
  2797.     ,
  2798.     {L_LAM_Tbl, sizeof(L_LAM_Tbl) / sizeof(L_LAM_Tbl[0]), 3}
  2799.     ,
  2800.     {M_LAM_Tbl, sizeof(M_LAM_Tbl) / sizeof(M_LAM_Tbl[0]), 3}
  2801.     ,
  2802.     {NULL, 0, 0}
  2803.     ,
  2804.     {NULL, 0, 0}
  2805.     ,
  2806.     {NULL, 0, 0}
  2807.     ,
  2808.     {NULL, 0, 0}
  2809.     ,
  2810.     {NULL, 0, 0}
  2811.     ,
  2812.     {NULL, 0, 0}
  2813.     ,
  2814.     {NULL, 0, 0}
  2815.     ,
  2816.     {NULL, 0, 0}
  2817.     ,
  2818.     {NULL, 0, 0}
  2819.     ,
  2820.     {NULL, 0, 0}
  2821.     ,
  2822.     {NULL, 0, 0}
  2823.     ,
  2824.     {NULL, 0, 0}
  2825.     ,
  2826.     {NULL, 0, 0}
  2827.     ,
  2828.     {NULL, 0, 0}
  2829.     ,
  2830.     {NULL, 0, 0}
  2831.     ,
  2832.     {NULL, 0, 0}
  2833.     ,
  2834.     {NULL, 0, 0}
  2835.     ,
  2836.     {NULL, 0, 0}
  2837.     ,
  2838.     {NULL, 0, 0}
  2839.     ,
  2840.     {NULL, 0, 0}
  2841.     ,
  2842.     {NULL, 0, 0}
  2843.     ,
  2844.     {NULL, 0, 0}
  2845.     ,
  2846.     {NULL, 0, 0}
  2847.     ,
  2848.     {NULL, 0, 0}
  2849.     ,
  2850.     {NULL, 0, 0}
  2851.     ,
  2852.     {NULL, 0, 0}
  2853.     ,
  2854.     {NULL, 0, 0}
  2855.     ,
  2856.     {NULL, 0, 0}
  2857.     ,
  2858.     {NULL, 0, 0}
  2859.     ,
  2860.     {NULL, 0, 0}
  2861.     ,
  2862.     {NULL, 0, 0}
  2863.     /* PMT END PERSIAN */
  2864. };
  2865. /* PMT START PERSIAN */
  2866. const ARABIC_MAIN_TABLE Arabic_Tbl_A[] = 
  2867. {
  2868.     {NULL, 0, 0}    /* 0xFB50 */
  2869.     ,
  2870.     {NULL, 0, 0}
  2871.     ,
  2872.     {NULL, 0, 0}
  2873.     ,
  2874.     {NULL, 0, 0}
  2875.     ,
  2876.     {NULL, 0, 0}
  2877.     ,
  2878.     {NULL, 0, 0}
  2879.     ,
  2880.     {NULL, 0, 0}
  2881.     ,
  2882.     {NULL, 0, 0}
  2883.     ,
  2884.     {NULL, 0, 0}
  2885.     ,
  2886.     {NULL, 0, 0}
  2887.     ,
  2888.     {NULL, 0, 0}
  2889.     ,
  2890.     {NULL, 0, 0}
  2891.     ,
  2892.     {NULL, 0, 0}
  2893.     ,
  2894.     {NULL, 0, 0}
  2895.     ,
  2896.     {NULL, 0, 0}
  2897.     ,
  2898.     {NULL, 0, 0}
  2899.     ,
  2900.     {NULL, 0, 0}
  2901.     ,
  2902.     {NULL, 0, 0}
  2903.     ,
  2904.     {NULL, 0, 0}
  2905.     ,
  2906.     {NULL, 0, 0}
  2907.     ,
  2908.     {NULL, 0, 0}
  2909.     ,
  2910.     {NULL, 0, 0}
  2911.     ,
  2912.     {NULL, 0, 0}
  2913.     ,
  2914.     {NULL, 0, 0}
  2915.     ,
  2916.     {NULL, 0, 0}
  2917.     ,
  2918.     {NULL, 0, 0}
  2919.     ,
  2920.     {NULL, 0, 0}
  2921.     ,
  2922.     {NULL, 0, 0}
  2923.     ,
  2924.     {NULL, 0, 0}
  2925.     ,
  2926.     {NULL, 0, 0}
  2927.     ,
  2928.     {NULL, 0, 0}
  2929.     ,
  2930.     {NULL, 0, 0}
  2931.     ,
  2932.     {NULL, 0, 0}
  2933.     ,
  2934.     {NULL, 0, 0}
  2935.     ,
  2936.     {NULL, 0, 0}
  2937.     ,
  2938.     {NULL, 0, 0}
  2939.     ,
  2940.     {NULL, 0, 0}
  2941.     ,
  2942.     {NULL, 0, 0}
  2943.     ,
  2944.     {NULL, 0, 0}
  2945.     ,
  2946.     {NULL, 0, 0}
  2947.     ,
  2948.     {NULL, 0, 0}
  2949.     ,
  2950.     {NULL, 0, 0}
  2951.     ,
  2952.     {NULL, 0, 0}
  2953.     ,
  2954.     {NULL, 0, 0}
  2955.     ,
  2956.     {NULL, 0, 0}
  2957.     ,
  2958.     {NULL, 0, 0}
  2959.     ,
  2960.     {NULL, 0, 0}
  2961.     ,
  2962.     {NULL, 0, 0}
  2963.     ,
  2964.     {NULL, 0, 0}
  2965.     ,
  2966.     {NULL, 0, 0}
  2967.     ,
  2968.     {NULL, 0, 0}
  2969.     ,
  2970.     {NULL, 0, 0}
  2971.     ,
  2972.     {NULL, 0, 0}
  2973.     ,
  2974.     {NULL, 0, 0}
  2975.     ,
  2976.     {NULL, 0, 0}
  2977.     ,
  2978.     {NULL, 0, 0}
  2979.     ,
  2980.     {NULL, 0, 0}
  2981.     ,
  2982.     {NULL, 0, 0}
  2983.     ,
  2984.     {NULL, 0, 0}
  2985.     ,
  2986.     {NULL, 0, 0}
  2987.     ,
  2988.     {NULL, 0, 0}
  2989.     ,
  2990.     {NULL, 0, 0}
  2991.     ,
  2992.     {NULL, 0, 0}
  2993.     ,
  2994.     {NULL, 0, 0}
  2995.     ,
  2996.     {NULL, 0, 0}
  2997.     ,
  2998.     {NULL, 0, 0}
  2999.     ,
  3000.     {NULL, 0, 0}
  3001.     ,
  3002.     {NULL, 0, 0}
  3003.     ,
  3004.     {NULL, 0, 0}
  3005.     ,
  3006.     {NULL, 0, 0}
  3007.     ,
  3008.     {NULL, 0, 0}
  3009.     ,
  3010.     {NULL, 0, 0}
  3011.     ,
  3012.     {NULL, 0, 0}
  3013.     ,
  3014.     {NULL, 0, 0}
  3015.     ,
  3016.     {NULL, 0, 0}
  3017.     ,
  3018.     {NULL, 0, 0}
  3019.     ,
  3020.     {NULL, 0, 0}
  3021.     ,
  3022.     {NULL, 0, 0}
  3023.     ,
  3024.     {NULL, 0, 0}
  3025.     ,
  3026.     {NULL, 0, 0}
  3027.     ,
  3028.     {NULL, 0, 0}
  3029.     ,
  3030.     {NULL, 0, 0}
  3031.     ,
  3032.     {NULL, 0, 0}
  3033.     ,
  3034.     {NULL, 0, 0}
  3035.     ,
  3036.     {NULL, 0, 0}
  3037.     ,
  3038.     {NULL, 0, 0}
  3039.     ,
  3040.     {NULL, 0, 0}
  3041.     ,
  3042.     {NULL, 0, 0}
  3043.     ,
  3044.     {NULL, 0, 0}
  3045.     ,
  3046.     {NULL, 0, 0}
  3047.     ,
  3048.     {NULL, 0, 0}
  3049.     ,
  3050.     {NULL, 0, 0}
  3051.     ,
  3052.     {NULL, 0, 0}
  3053.     ,
  3054.     {NULL, 0, 0}
  3055.     ,
  3056.     {NULL, 0, 0}
  3057.     ,
  3058.     {NULL, 0, 0}
  3059.     ,
  3060.     {NULL, 0, 0}
  3061.     ,
  3062.     {NULL, 0, 0}
  3063.     ,
  3064.     {NULL, 0, 0}
  3065.     ,
  3066.     {NULL, 0, 0}
  3067.     ,
  3068.     {NULL, 0, 0}
  3069.     ,
  3070.     {NULL, 0, 0}
  3071.     ,
  3072.     {NULL, 0, 0}
  3073.     ,
  3074.     {NULL, 0, 0}
  3075.     ,
  3076.     {NULL, 0, 0}
  3077.     ,
  3078.     {NULL, 0, 0}
  3079.     ,
  3080.     {NULL, 0, 0}
  3081.     ,
  3082.     {NULL, 0, 0}
  3083.     ,
  3084.     {NULL, 0, 0}
  3085.     ,
  3086.     {NULL, 0, 0}
  3087.     ,
  3088.     {NULL, 0, 0}
  3089.     ,
  3090.     {NULL, 0, 0}
  3091.     ,
  3092.     {NULL, 0, 0}
  3093.     ,
  3094.     {NULL, 0, 0}
  3095.     ,
  3096.     {NULL, 0, 0}
  3097.     ,
  3098.     {NULL, 0, 0}
  3099.     ,
  3100.     {NULL, 0, 0}
  3101.     ,
  3102.     {NULL, 0, 0}
  3103.     ,
  3104.     {NULL, 0, 0}
  3105.     ,
  3106.     {NULL, 0, 0}
  3107.     ,
  3108.     {NULL, 0, 0}
  3109.     ,
  3110.     {NULL, 0, 0}
  3111.     ,
  3112.     {NULL, 0, 0}
  3113.     ,
  3114.     {NULL, 0, 0}
  3115.     ,
  3116.     {NULL, 0, 0}
  3117.     ,
  3118.     {NULL, 0, 0}
  3119.     ,
  3120.     {NULL, 0, 0}
  3121.     ,
  3122.     {NULL, 0, 0}
  3123.     ,
  3124.     {NULL, 0, 0}
  3125.     ,
  3126.     {NULL, 0, 0}
  3127.     ,
  3128.     {NULL, 0, 0}
  3129.     ,
  3130.     {NULL, 0, 0}
  3131.     ,
  3132.     {NULL, 0, 0}
  3133.     ,
  3134.     {NULL, 0, 0}
  3135.     ,
  3136.     {NULL, 0, 0}
  3137.     ,
  3138.     {NULL, 0, 0}
  3139.     ,
  3140.     {NULL, 0, 0}
  3141.     ,
  3142.     {NULL, 0, 0}
  3143.     ,
  3144.     {NULL, 0, 0}
  3145.     ,
  3146.     {NULL, 0, 0}
  3147.     ,
  3148.     {NULL, 0, 0}
  3149.     ,
  3150.     {NULL, 0, 0}
  3151.     ,
  3152.     {NULL, 0, 0}
  3153.     ,
  3154.     {NULL, 0, 0}
  3155.     ,
  3156.     {NULL, 0, 0}
  3157.     ,
  3158.     {NULL, 0, 0}
  3159.     ,
  3160.     {NULL, 0, 0}
  3161.     ,
  3162.     {NULL, 0, 0}
  3163.     ,
  3164.     {NULL, 0, 0}
  3165.     ,
  3166.     {NULL, 0, 0}
  3167.     ,
  3168.     {NULL, 0, 0}
  3169.     ,
  3170.     {NULL, 0, 0}
  3171.     ,
  3172.     {NULL, 0, 0}
  3173.     ,
  3174.     {NULL, 0, 0}
  3175.     ,
  3176.     {NULL, 0, 0}
  3177.     ,
  3178.     {NULL, 0, 0}
  3179.     ,
  3180.     {NULL, 0, 0}
  3181.     ,
  3182.     {NULL, 0, 0}
  3183.     ,
  3184.     {NULL, 0, 0}
  3185.     ,
  3186.     {NULL, 0, 0}
  3187.     ,
  3188.     {NULL, 0, 0}
  3189.     ,
  3190.     {NULL, 0, 0}
  3191.     ,
  3192.     {NULL, 0, 0}
  3193.     ,
  3194.     {NULL, 0, 0}
  3195.     ,
  3196.     {NULL, 0, 0}
  3197.     ,
  3198.     {NULL, 0, 0}
  3199.     ,
  3200.     {NULL, 0, 0}
  3201.     ,
  3202.     {NULL, 0, 0}
  3203.     ,
  3204.     {NULL, 0, 0}
  3205.     ,
  3206.     {NULL, 0, 0}
  3207.     ,
  3208.     {NULL, 0, 0}
  3209.     ,
  3210.     {NULL, 0, 0}
  3211.     ,
  3212.     {NULL, 0, 0}
  3213.     ,
  3214.     {NULL, 0, 0}
  3215.     ,
  3216.     {NULL, 0, 0}
  3217.     ,
  3218.     {NULL, 0, 0}
  3219.     ,
  3220.     {NULL, 0, 0}
  3221.     ,
  3222.     {NULL, 0, 0}
  3223.     ,
  3224.     {NULL, 0, 0}
  3225.     ,
  3226.     {NULL, 0, 0}
  3227.     ,
  3228.     {NULL, 0, 0}
  3229.     ,
  3230.     {NULL, 0, 0}
  3231.     ,
  3232.     {NULL, 0, 0}
  3233.     ,
  3234.     {NULL, 0, 0}
  3235.     ,
  3236.     {NULL, 0, 0}
  3237.     ,
  3238.     {NULL, 0, 0}
  3239.     ,
  3240.     {NULL, 0, 0}
  3241.     ,
  3242.     {NULL, 0, 0}
  3243.     ,
  3244.     {NULL, 0, 0}
  3245.     ,
  3246.     {NULL, 0, 0}
  3247.     ,
  3248.     {NULL, 0, 0}
  3249.     ,
  3250.     {NULL, 0, 0}
  3251.     ,
  3252.     {NULL, 0, 0}
  3253.     ,
  3254.     {NULL, 0, 0}
  3255.     ,
  3256.     {NULL, 0, 0}
  3257.     ,
  3258.     {NULL, 0, 0}
  3259.     ,
  3260.     {NULL, 0, 0}
  3261.     ,
  3262.     {NULL, 0, 0}
  3263.     ,
  3264.     {NULL, 0, 0}
  3265.     ,
  3266.     {NULL, 0, 0}
  3267.     ,
  3268.     {NULL, 0, 0}
  3269.     ,
  3270.     {NULL, 0, 0}
  3271.     ,
  3272.     {NULL, 0, 0}
  3273.     ,
  3274.     {NULL, 0, 0}
  3275.     ,
  3276.     {NULL, 0, 0}
  3277.     ,
  3278.     {NULL, 0, 0}
  3279.     ,
  3280.     {NULL, 0, 0}
  3281.     ,
  3282.     {NULL, 0, 0}
  3283.     ,
  3284.     {NULL, 0, 0}
  3285.     ,
  3286.     {NULL, 0, 0}
  3287.     ,
  3288.     {NULL, 0, 0}
  3289.     ,
  3290.     {NULL, 0, 0}
  3291.     ,
  3292.     {NULL, 0, 0}
  3293.     ,
  3294.     {NULL, 0, 0}
  3295.     ,
  3296.     {NULL, 0, 0}
  3297.     ,
  3298.     {NULL, 0, 0}
  3299.     ,
  3300.     {NULL, 0, 0}
  3301.     ,
  3302.     {NULL, 0, 0}
  3303.     ,
  3304.     {NULL, 0, 0}
  3305.     ,
  3306.     {NULL, 0, 0}
  3307.     ,
  3308.     {NULL, 0, 0}
  3309.     ,
  3310.     {NULL, 0, 0}
  3311.     ,
  3312.     {NULL, 0, 0}
  3313.     ,
  3314.     {NULL, 0, 0}
  3315.     ,
  3316.     {NULL, 0, 0}
  3317.     ,
  3318.     {NULL, 0, 0}
  3319.     ,
  3320.     {NULL, 0, 0}
  3321.     ,
  3322.     {NULL, 0, 0}
  3323.     ,
  3324.     {NULL, 0, 0}
  3325.     ,
  3326.     {NULL, 0, 0}
  3327.     ,
  3328.     {NULL, 0, 0}
  3329.     ,
  3330.     {NULL, 0, 0}
  3331.     ,
  3332.     {NULL, 0, 0}
  3333.     ,
  3334.     {NULL, 0, 0}
  3335.     ,
  3336.     {NULL, 0, 0}
  3337.     ,
  3338.     {NULL, 0, 0}
  3339.     ,
  3340.     {NULL, 0, 0}
  3341.     ,
  3342.     {NULL, 0, 0}
  3343.     ,
  3344.     {NULL, 0, 0}
  3345.     ,
  3346.     {NULL, 0, 0}
  3347.     ,
  3348.     {NULL, 0, 0}
  3349.     ,
  3350.     {NULL, 0, 0}
  3351.     ,
  3352.     {NULL, 0, 0}
  3353.     ,
  3354.     {NULL, 0, 0}
  3355.     ,
  3356.     {NULL, 0, 0}
  3357.     ,
  3358.     {NULL, 0, 0}
  3359.     ,
  3360.     {NULL, 0, 0}
  3361.     ,
  3362.     {NULL, 0, 0}
  3363.     ,
  3364.     {NULL, 0, 0}
  3365.     ,
  3366.     {NULL, 0, 0}
  3367.     ,
  3368.     {NULL, 0, 0}
  3369.     ,
  3370.     {NULL, 0, 0}
  3371.     ,
  3372.     {NULL, 0, 0}
  3373.     ,
  3374.     {NULL, 0, 0}
  3375.     ,
  3376.     {NULL, 0, 0}
  3377.     ,
  3378.     {NULL, 0, 0}
  3379.     ,
  3380.     {NULL, 0, 0}
  3381.     ,
  3382.     {NULL, 0, 0}
  3383.     ,
  3384.     {NULL, 0, 0}
  3385.     ,
  3386.     {NULL, 0, 0}
  3387.     ,
  3388.     {NULL, 0, 0}
  3389.     ,
  3390.     {NULL, 0, 0}
  3391.     ,
  3392.     {NULL, 0, 0}
  3393.     ,
  3394.     {NULL, 0, 0}
  3395.     ,
  3396.     {NULL, 0, 0}
  3397.     ,
  3398.     {NULL, 0, 0}
  3399.     ,
  3400.     {NULL, 0, 0}
  3401.     ,
  3402.     {NULL, 0, 0}
  3403.     ,
  3404.     {NULL, 0, 0}
  3405.     ,
  3406.     {NULL, 0, 0}
  3407.     ,
  3408.     {NULL, 0, 0}
  3409.     ,
  3410.     {NULL, 0, 0}
  3411.     ,
  3412.     {NULL, 0, 0}
  3413.     ,
  3414.     {NULL, 0, 0}
  3415.     ,
  3416.     {NULL, 0, 0}
  3417.     ,
  3418.     {NULL, 0, 0}
  3419.     ,
  3420.     {NULL, 0, 0}
  3421.     ,
  3422.     {NULL, 0, 0}
  3423.     ,
  3424.     {NULL, 0, 0}
  3425.     ,
  3426.     {NULL, 0, 0}
  3427.     ,
  3428.     {NULL, 0, 0}
  3429.     ,
  3430.     {NULL, 0, 0}
  3431.     ,
  3432.     {NULL, 0, 0}
  3433.     ,
  3434.     {NULL, 0, 0}
  3435.     ,
  3436.     {NULL, 0, 0}
  3437.     ,
  3438.     {NULL, 0, 0}
  3439.     ,
  3440.     {NULL, 0, 0}
  3441.     ,
  3442.     {NULL, 0, 0}
  3443.     ,
  3444.     {NULL, 0, 0}
  3445.     ,
  3446.     {NULL, 0, 0}
  3447.     ,
  3448.     {NULL, 0, 0}
  3449.     ,
  3450.     {NULL, 0, 0}
  3451.     ,
  3452.     {NULL, 0, 0}
  3453.     ,
  3454.     {NULL, 0, 0}
  3455.     ,
  3456.     {NULL, 0, 0}
  3457.     ,
  3458.     {NULL, 0, 0}
  3459.     ,
  3460.     {NULL, 0, 0}
  3461.     ,
  3462.     {NULL, 0, 0}
  3463.     ,
  3464.     {NULL, 0, 0}
  3465.     ,
  3466.     {NULL, 0, 0}
  3467.     ,
  3468.     {NULL, 0, 0}
  3469.     ,
  3470.     {NULL, 0, 0}
  3471.     ,
  3472.     {NULL, 0, 0}
  3473.     ,
  3474.     {NULL, 0, 0}
  3475.     ,
  3476.     {NULL, 0, 0}
  3477.     ,
  3478.     {NULL, 0, 0}
  3479.     ,
  3480.     {NULL, 0, 0}
  3481.     ,
  3482.     {NULL, 0, 0}
  3483.     ,
  3484.     {NULL, 0, 0}
  3485.     ,
  3486.     {NULL, 0, 0}
  3487.     ,
  3488.     {NULL, 0, 0}
  3489.     ,
  3490.     {NULL, 0, 0}
  3491.     ,
  3492.     {NULL, 0, 0}
  3493.     ,
  3494.     {NULL, 0, 0}
  3495.     ,
  3496.     {NULL, 0, 0}
  3497.     ,
  3498.     {NULL, 0, 0}
  3499.     ,
  3500.     {NULL, 0, 0}
  3501.     ,
  3502.     {NULL, 0, 0}
  3503.     ,
  3504.     {NULL, 0, 0}
  3505.     ,
  3506.     {NULL, 0, 0}
  3507.     ,
  3508.     {NULL, 0, 0}
  3509.     ,
  3510.     {NULL, 0, 0}
  3511.     ,
  3512.     {NULL, 0, 0}
  3513.     ,
  3514.     {NULL, 0, 0}
  3515.     ,
  3516.     {NULL, 0, 0}
  3517.     ,
  3518.     {NULL, 0, 0}
  3519.     ,
  3520.     {NULL, 0, 0}
  3521.     ,
  3522.     {NULL, 0, 0}
  3523.     ,
  3524.     {NULL, 0, 0}
  3525.     ,
  3526.     {NULL, 0, 0}
  3527.     ,
  3528.     {NULL, 0, 0}
  3529.     ,
  3530.     {NULL, 0, 0}
  3531.     ,
  3532.     {NULL, 0, 0}
  3533.     ,
  3534.     {NULL, 0, 0}
  3535.     ,
  3536.     {NULL, 0, 0}
  3537.     ,
  3538.     {NULL, 0, 0}
  3539.     ,
  3540.     {NULL, 0, 0}
  3541.     ,
  3542.     {NULL, 0, 0}
  3543.     ,
  3544.     {NULL, 0, 0}
  3545.     ,
  3546.     {NULL, 0, 0}
  3547.     ,
  3548.     {NULL, 0, 0}
  3549.     ,
  3550.     {NULL, 0, 0}
  3551.     ,
  3552.     {NULL, 0, 0}
  3553.     ,
  3554.     {NULL, 0, 0}
  3555.     ,
  3556.     {NULL, 0, 0}
  3557.     ,
  3558.     {NULL, 0, 0}
  3559.     ,
  3560.     {NULL, 0, 0}
  3561.     ,
  3562.     {NULL, 0, 0}
  3563.     ,
  3564.     {NULL, 0, 0}
  3565.     ,
  3566.     {NULL, 0, 0}
  3567.     ,
  3568.     {NULL, 0, 0}
  3569.     ,
  3570.     {NULL, 0, 0}
  3571.     ,
  3572.     {NULL, 0, 0}
  3573.     ,
  3574.     {NULL, 0, 0}
  3575.     ,
  3576.     {NULL, 0, 0}
  3577.     ,
  3578.     {NULL, 0, 0}
  3579.     ,
  3580.     {NULL, 0, 0}
  3581.     ,
  3582.     {NULL, 0, 0}
  3583.     ,
  3584.     {NULL, 0, 0}
  3585.     ,
  3586.     {NULL, 0, 0}
  3587.     ,
  3588.     {NULL, 0, 0}
  3589.     ,
  3590.     {NULL, 0, 0}
  3591.     ,
  3592.     {NULL, 0, 0}
  3593.     ,
  3594.     {NULL, 0, 0}
  3595.     ,
  3596.     {NULL, 0, 0}
  3597.     ,
  3598.     {NULL, 0, 0}
  3599.     ,
  3600.     {NULL, 0, 0}
  3601.     ,
  3602.     {NULL, 0, 0}
  3603.     ,
  3604.     {NULL, 0, 0}
  3605.     ,
  3606.     {NULL, 0, 0}
  3607.     ,
  3608.     {NULL, 0, 0}
  3609.     ,
  3610.     {NULL, 0, 0}
  3611.     ,
  3612.     {NULL, 0, 0}
  3613.     ,
  3614.     {NULL, 0, 0}
  3615.     ,
  3616.     {NULL, 0, 0}
  3617.     ,
  3618.     {NULL, 0, 0}
  3619.     ,
  3620.     {NULL, 0, 0}
  3621.     ,
  3622.     {NULL, 0, 0}
  3623.     ,
  3624.     {NULL, 0, 0}
  3625.     ,
  3626.     {NULL, 0, 0}
  3627.     ,
  3628.     {NULL, 0, 0}
  3629.     ,
  3630.     {NULL, 0, 0}
  3631.     ,
  3632.     {NULL, 0, 0}
  3633.     ,
  3634.     {NULL, 0, 0}
  3635.     ,
  3636.     {NULL, 0, 0}
  3637.     ,
  3638.     {NULL, 0, 0}
  3639.     ,
  3640.     {NULL, 0, 0}
  3641.     ,
  3642.     {NULL, 0, 0}
  3643.     ,
  3644.     {NULL, 0, 0}
  3645.     ,
  3646.     {NULL, 0, 0}
  3647.     ,
  3648.     {NULL, 0, 0}
  3649.     ,
  3650.     {NULL, 0, 0}
  3651.     ,
  3652.     {NULL, 0, 0}
  3653.     ,
  3654.     {NULL, 0, 0}
  3655.     ,
  3656.     {NULL, 0, 0}
  3657.     ,
  3658.     {NULL, 0, 0}
  3659.     ,
  3660.     {NULL, 0, 0}
  3661.     ,
  3662.     {NULL, 0, 0}
  3663.     ,
  3664.     {NULL, 0, 0}
  3665.     ,
  3666.     {NULL, 0, 0}
  3667.     ,
  3668.     {NULL, 0, 0}
  3669.     ,
  3670.     {NULL, 0, 0}
  3671.     ,
  3672.     {NULL, 0, 0}
  3673.     ,
  3674.     {NULL, 0, 0}
  3675.     ,
  3676.     {NULL, 0, 0}
  3677.     ,
  3678.     {NULL, 0, 0}
  3679.     ,
  3680.     {NULL, 0, 0}
  3681.     ,
  3682.     {NULL, 0, 0}
  3683.     ,
  3684.     {NULL, 0, 0}
  3685.     ,
  3686.     {NULL, 0, 0}
  3687.     ,
  3688.     {NULL, 0, 0}
  3689.     ,
  3690.     {NULL, 0, 0}
  3691.     ,
  3692.     {NULL, 0, 0}
  3693.     ,
  3694.     {NULL, 0, 0}
  3695.     ,
  3696.     {NULL, 0, 0}
  3697.     ,
  3698.     {NULL, 0, 0}
  3699.     ,
  3700.     {NULL, 0, 0}
  3701.     ,
  3702.     {NULL, 0, 0}
  3703.     ,
  3704.     {NULL, 0, 0}
  3705.     ,
  3706.     {NULL, 0, 0}
  3707.     ,
  3708.     {NULL, 0, 0}
  3709.     ,
  3710.     {NULL, 0, 0}
  3711.     ,
  3712.     {NULL, 0, 0}
  3713.     ,
  3714.     {NULL, 0, 0}
  3715.     ,
  3716.     {NULL, 0, 0}
  3717.     ,
  3718.     {NULL, 0, 0}
  3719.     ,
  3720.     {NULL, 0, 0}
  3721.     ,
  3722.     {NULL, 0, 0}
  3723.     ,
  3724.     {NULL, 0, 0}
  3725.     ,
  3726.     {NULL, 0, 0}
  3727.     ,
  3728.     {NULL, 0, 0}
  3729.     ,
  3730.     {NULL, 0, 0}
  3731.     ,
  3732.     {NULL, 0, 0}
  3733.     ,
  3734.     {NULL, 0, 0}
  3735.     ,
  3736.     {NULL, 0, 0}
  3737.     ,
  3738.     {NULL, 0, 0}
  3739.     ,
  3740.     {NULL, 0, 0}
  3741.     ,
  3742.     {NULL, 0, 0}
  3743.     ,
  3744.     {NULL, 0, 0}
  3745.     ,
  3746.     {NULL, 0, 0}
  3747.     ,
  3748.     {NULL, 0, 0}
  3749.     ,
  3750.     {NULL, 0, 0}
  3751.     ,
  3752.     {NULL, 0, 0}
  3753.     ,
  3754.     {NULL, 0, 0}
  3755.     ,
  3756.     {NULL, 0, 0}
  3757.     ,
  3758.     {NULL, 0, 0}
  3759.     ,
  3760.     {NULL, 0, 0}
  3761.     ,
  3762.     {NULL, 0, 0}
  3763.     ,
  3764.     {NULL, 0, 0}
  3765.     ,
  3766.     {NULL, 0, 0}
  3767.     ,
  3768.     {NULL, 0, 0}
  3769.     ,
  3770.     {NULL, 0, 0}
  3771.     ,
  3772.     {NULL, 0, 0}
  3773.     ,
  3774.     {NULL, 0, 0}
  3775.     ,
  3776.     {NULL, 0, 0}
  3777.     ,
  3778.     {NULL, 0, 0}
  3779.     ,
  3780.     {NULL, 0, 0}
  3781.     ,
  3782.     {NULL, 0, 0}
  3783.     ,
  3784.     {NULL, 0, 0}
  3785.     ,
  3786.     {NULL, 0, 0}
  3787.     ,
  3788.     {NULL, 0, 0}
  3789.     ,
  3790.     {NULL, 0, 0}
  3791.     ,
  3792.     {NULL, 0, 0}
  3793.     ,
  3794.     {NULL, 0, 0}
  3795.     ,
  3796.     {NULL, 0, 0}
  3797.     ,
  3798.     {NULL, 0, 0}
  3799.     ,
  3800.     {NULL, 0, 0}
  3801.     ,
  3802.     {NULL, 0, 0}
  3803.     ,
  3804.     {NULL, 0, 0}
  3805.     ,
  3806.     {NULL, 0, 0}
  3807.     ,
  3808.     {NULL, 0, 0}
  3809.     ,
  3810.     {NULL, 0, 0}
  3811.     ,
  3812.     {NULL, 0, 0}
  3813.     ,
  3814.     {NULL, 0, 0}
  3815.     ,
  3816.     {NULL, 0, 0}
  3817.     ,
  3818.     {NULL, 0, 0}
  3819.     ,
  3820.     {NULL, 0, 0}
  3821.     ,
  3822.     {NULL, 0, 0}
  3823.     ,
  3824.     {NULL, 0, 0}
  3825.     ,
  3826.     {NULL, 0, 0}
  3827.     ,
  3828.     {NULL, 0, 0}
  3829.     ,
  3830.     {NULL, 0, 0}
  3831.     ,
  3832.     {NULL, 0, 0}
  3833.     ,
  3834.     {NULL, 0, 0}
  3835.     ,
  3836.     {NULL, 0, 0}
  3837.     ,
  3838.     {NULL, 0, 0}
  3839.     ,
  3840.     {NULL, 0, 0}
  3841.     ,
  3842.     {NULL, 0, 0}
  3843.     ,
  3844.     {NULL, 0, 0}
  3845.     ,
  3846.     {NULL, 0, 0}
  3847.     ,
  3848.     {NULL, 0, 0}
  3849.     ,
  3850.     {NULL, 0, 0}
  3851.     ,
  3852.     {NULL, 0, 0}
  3853.     ,
  3854.     {NULL, 0, 0}
  3855.     ,
  3856.     {NULL, 0, 0}
  3857.     ,
  3858.     {NULL, 0, 0}
  3859.     ,
  3860.     {NULL, 0, 0}
  3861.     ,
  3862.     {NULL, 0, 0}
  3863.     ,
  3864.     {NULL, 0, 0}
  3865.     ,
  3866.     {NULL, 0, 0}
  3867.     ,
  3868.     {NULL, 0, 0}
  3869.     ,
  3870.     {NULL, 0, 0}
  3871.     ,
  3872.     {NULL, 0, 0}
  3873.     ,
  3874.     {NULL, 0, 0}
  3875.     ,
  3876.     {NULL, 0, 0}
  3877.     ,
  3878.     {NULL, 0, 0}
  3879.     ,
  3880.     {NULL, 0, 0}
  3881.     ,
  3882.     {NULL, 0, 0}
  3883.     ,
  3884.     {NULL, 0, 0}
  3885.     ,
  3886.     {NULL, 0, 0}
  3887.     ,
  3888.     {NULL, 0, 0}
  3889.     ,
  3890.     {NULL, 0, 0}
  3891.     ,
  3892.     {NULL, 0, 0}
  3893.     ,
  3894.     {NULL, 0, 0}
  3895.     ,
  3896.     {NULL, 0, 0}
  3897.     ,
  3898.     {NULL, 0, 0}
  3899.     ,
  3900.     {NULL, 0, 0}
  3901.     ,
  3902.     {NULL, 0, 0}
  3903.     ,
  3904.     {NULL, 0, 0}
  3905.     ,
  3906.     {NULL, 0, 0}
  3907.     ,
  3908.     {NULL, 0, 0}
  3909.     ,
  3910.     {NULL, 0, 0}
  3911.     ,
  3912.     {NULL, 0, 0}
  3913.     ,
  3914.     {NULL, 0, 0}
  3915.     ,
  3916.     {NULL, 0, 0}
  3917.     ,
  3918.     {NULL, 0, 0}
  3919.     ,
  3920.     {NULL, 0, 0}
  3921.     ,
  3922.     {NULL, 0, 0}
  3923.     ,
  3924.     {NULL, 0, 0}
  3925.     ,
  3926.     {NULL, 0, 0}
  3927.     ,
  3928.     {NULL, 0, 0}
  3929.     ,
  3930.     {NULL, 0, 0}
  3931.     ,
  3932.     {NULL, 0, 0}
  3933.     ,
  3934.     {NULL, 0, 0}
  3935.     ,
  3936.     {NULL, 0, 0}
  3937.     ,
  3938.     {NULL, 0, 0}
  3939.     ,
  3940.     {NULL, 0, 0}
  3941.     ,
  3942.     {NULL, 0, 0}
  3943.     ,
  3944.     {NULL, 0, 0}
  3945.     ,
  3946.     {NULL, 0, 0}
  3947.     ,
  3948.     {NULL, 0, 0}
  3949.     ,
  3950.     {NULL, 0, 0}
  3951.     ,
  3952.     {NULL, 0, 0}
  3953.     ,
  3954.     {NULL, 0, 0}
  3955.     ,
  3956.     {NULL, 0, 0}
  3957.     ,
  3958.     {NULL, 0, 0}
  3959.     ,
  3960.     {NULL, 0, 0}
  3961.     ,
  3962.     {NULL, 0, 0}
  3963.     ,
  3964.     {NULL, 0, 0}
  3965.     ,
  3966.     {NULL, 0, 0}
  3967.     ,
  3968.     {NULL, 0, 0}
  3969.     ,
  3970.     {NULL, 0, 0}
  3971.     ,
  3972.     {NULL, 0, 0}
  3973.     ,
  3974.     {NULL, 0, 0}
  3975.     ,
  3976.     {NULL, 0, 0}
  3977.     ,
  3978.     {NULL, 0, 0}
  3979.     ,
  3980.     {NULL, 0, 0}
  3981.     ,
  3982.     {NULL, 0, 0}
  3983.     ,
  3984.     {NULL, 0, 0}
  3985.     ,
  3986.     {NULL, 0, 0}
  3987.     ,
  3988.     {NULL, 0, 0}
  3989.     ,
  3990.     {NULL, 0, 0}
  3991.     ,
  3992.     {NULL, 0, 0}
  3993.     ,
  3994.     {NULL, 0, 0}
  3995.     ,
  3996.     {NULL, 0, 0}
  3997.     ,
  3998.     {NULL, 0, 0}
  3999.     ,
  4000.     {NULL, 0, 0}
  4001.     ,
  4002.     {NULL, 0, 0}
  4003.     ,
  4004.     {NULL, 0, 0}
  4005.     ,
  4006.     {NULL, 0, 0}
  4007.     ,
  4008.     {NULL, 0, 0}
  4009.     ,
  4010.     {NULL, 0, 0}
  4011.     ,
  4012.     {NULL, 0, 0}
  4013.     ,
  4014.     {NULL, 0, 0}
  4015.     ,
  4016.     {NULL, 0, 0}
  4017.     ,
  4018.     {NULL, 0, 0}
  4019.     ,
  4020.     {NULL, 0, 0}
  4021.     ,
  4022.     {NULL, 0, 0}
  4023.     ,
  4024.     {NULL, 0, 0}
  4025.     ,
  4026.     {NULL, 0, 0}
  4027.     ,
  4028.     {NULL, 0, 0}
  4029.     ,
  4030.     {NULL, 0, 0}
  4031.     ,
  4032.     {NULL, 0, 0}
  4033.     ,
  4034.     {NULL, 0, 0}
  4035.     ,
  4036.     {NULL, 0, 0}
  4037.     ,
  4038.     {NULL, 0, 0}
  4039.     ,
  4040.     {NULL, 0, 0}
  4041.     ,
  4042.     {NULL, 0, 0}
  4043.     ,
  4044.     {NULL, 0, 0}
  4045.     ,
  4046.     {NULL, 0, 0}
  4047.     ,
  4048.     {NULL, 0, 0}
  4049.     ,
  4050.     {NULL, 0, 0}
  4051.     ,
  4052.     {NULL, 0, 0}
  4053.     ,
  4054.     {NULL, 0, 0}
  4055.     ,
  4056.     {NULL, 0, 0}
  4057.     ,
  4058.     {NULL, 0, 0}
  4059.     ,
  4060.     {NULL, 0, 0}
  4061.     ,
  4062.     {NULL, 0, 0}
  4063.     ,
  4064.     {NULL, 0, 0}
  4065.     ,
  4066.     {NULL, 0, 0}
  4067.     ,
  4068.     {NULL, 0, 0}
  4069.     ,
  4070.     {NULL, 0, 0}
  4071.     ,
  4072.     {NULL, 0, 0}
  4073.     ,
  4074.     {NULL, 0, 0}
  4075.     ,
  4076.     {NULL, 0, 0}
  4077.     ,
  4078.     {NULL, 0, 0}
  4079.     ,
  4080.     {NULL, 0, 0}
  4081.     ,
  4082.     {NULL, 0, 0}
  4083.     ,
  4084.     {NULL, 0, 0}
  4085.     ,
  4086.     {NULL, 0, 0}
  4087.     ,
  4088.     {NULL, 0, 0}
  4089.     ,
  4090.     {NULL, 0, 0}
  4091.     ,
  4092.     {NULL, 0, 0}
  4093.     ,
  4094.     {NULL, 0, 0}
  4095.     ,
  4096.     {NULL, 0, 0}
  4097.     ,
  4098.     {NULL, 0, 0}
  4099.     ,
  4100.     {NULL, 0, 0}
  4101.     ,
  4102.     {NULL, 0, 0}
  4103.     ,
  4104.     {NULL, 0, 0}
  4105.     ,
  4106.     {NULL, 0, 0}
  4107.     ,
  4108.     {NULL, 0, 0}
  4109.     ,
  4110.     {NULL, 0, 0}
  4111.     ,
  4112.     {NULL, 0, 0}
  4113.     ,
  4114.     {NULL, 0, 0}
  4115.     ,
  4116.     {NULL, 0, 0}
  4117.     ,
  4118.     {NULL, 0, 0}
  4119.     ,
  4120.     {NULL, 0, 0}
  4121.     ,
  4122.     {NULL, 0, 0}
  4123.     ,
  4124.     {NULL, 0, 0}
  4125.     ,
  4126.     {NULL, 0, 0}
  4127.     ,
  4128.     {NULL, 0, 0}
  4129.     ,
  4130.     {NULL, 0, 0}
  4131.     ,
  4132.     {NULL, 0, 0}
  4133.     ,
  4134.     {NULL, 0, 0}
  4135.     ,
  4136.     {NULL, 0, 0}
  4137.     ,
  4138.     {NULL, 0, 0}
  4139.     ,
  4140.     {NULL, 0, 0}
  4141.     ,
  4142.     {NULL, 0, 0}
  4143.     ,
  4144.     {NULL, 0, 0}
  4145.     ,
  4146.     {NULL, 0, 0}
  4147.     ,
  4148. {NULL, 0, 0}
  4149.     ,
  4150. {NULL, 0, 0}
  4151.     ,
  4152. {NULL, 0, 0}
  4153.     ,
  4154. {NULL, 0, 0}
  4155.     ,
  4156. {NULL, 0, 0}
  4157.     ,
  4158. {NULL, 0, 0}
  4159.     ,
  4160. {NULL, 0, 0}
  4161.     ,
  4162. {NULL, 0, 0}
  4163.     ,
  4164. {NULL, 0, 0}
  4165.     ,
  4166. {NULL, 0, 0}
  4167.     ,
  4168. {NULL, 0, 0}
  4169.     ,
  4170. {NULL, 0, 0}
  4171.     ,
  4172. {NULL, 0, 0}
  4173.     ,
  4174. {NULL, 0, 0}
  4175.     ,
  4176. {NULL, 0, 0}   
  4177.     ,
  4178. {NULL, 0, 0}
  4179.     ,
  4180. {NULL, 0, 0}
  4181.     ,
  4182. {NULL, 0, 0}
  4183.     ,
  4184. {NULL, 0, 0}
  4185.     ,
  4186. {NULL, 0, 0}
  4187.     ,
  4188. {NULL, 0, 0}
  4189.     ,
  4190. {NULL, 0, 0}
  4191.     ,
  4192. {NULL, 0, 0}
  4193.     ,
  4194.     {NULL, 0, 0}
  4195.     ,
  4196.     {NULL, 0, 0}
  4197.     ,
  4198.     {NULL, 0, 0}
  4199.     ,
  4200.     {NULL, 0, 0}
  4201.     ,
  4202. {NULL, 0, 0}
  4203.     ,
  4204. {NULL, 0, 0}
  4205.     ,
  4206. {NULL, 0, 0}
  4207.     ,
  4208. {NULL, 0, 0}
  4209.     ,
  4210.     {NULL, 0, 0}
  4211.     ,
  4212.     {NULL, 0, 0}
  4213.     ,
  4214.     {NULL, 0, 0}
  4215.     ,
  4216.     {NULL, 0, 0}
  4217.     ,
  4218.     {NULL, 0, 0}
  4219.     ,
  4220.     {NULL, 0, 0}
  4221.     ,
  4222.     {NULL, 0, 0}
  4223.     ,
  4224.     {NULL, 0, 0}
  4225.     ,
  4226.     {NULL, 0, 0}
  4227.     ,
  4228.     {NULL, 0, 0}
  4229.     ,
  4230.     {NULL, 0, 0}
  4231.     ,
  4232.     {NULL, 0, 0}
  4233.     ,
  4234.     {NULL, 0, 0}
  4235.     ,
  4236. {NULL, 0, 0}
  4237.     ,
  4238. {NULL, 0, 0}    
  4239. };
  4240. const U8 g_arabic_base_char_array[] = 
  4241. {
  4242.     FALSE, //0x0620
  4243.     FALSE,
  4244.     FALSE,
  4245.     FALSE,
  4246.     FALSE,
  4247.     FALSE,
  4248.     TRUE,
  4249.     FALSE,
  4250.     TRUE,
  4251.     TRUE,
  4252.     TRUE,
  4253.     TRUE,
  4254.     TRUE,
  4255.     TRUE,
  4256.     TRUE,
  4257.     FALSE,
  4258.     FALSE,
  4259.     FALSE,
  4260.     FALSE,
  4261.     TRUE,
  4262.     TRUE,
  4263.     TRUE,
  4264.     TRUE,
  4265.     TRUE,
  4266.     TRUE,
  4267.     TRUE,
  4268.     TRUE,
  4269.     FALSE,
  4270.     FALSE,
  4271.     FALSE,
  4272.     FALSE,
  4273.     FALSE,
  4274.     FALSE,    
  4275.     TRUE,
  4276.     TRUE,
  4277.     TRUE,
  4278.     TRUE,
  4279.     TRUE,
  4280.     TRUE,
  4281.     TRUE,
  4282.     FALSE,
  4283.     TRUE,
  4284.     TRUE,
  4285.     FALSE,
  4286.     FALSE,
  4287.     FALSE,
  4288.     FALSE,
  4289.     FALSE,
  4290.     FALSE,
  4291.     FALSE,
  4292.     FALSE,
  4293.     FALSE,
  4294.     FALSE,
  4295.     FALSE,
  4296.     FALSE,
  4297.     FALSE,
  4298.     FALSE,
  4299.     FALSE,
  4300.     FALSE,
  4301.     FALSE,
  4302.     FALSE,
  4303.     FALSE,
  4304.     FALSE,
  4305.     FALSE,
  4306.     FALSE,
  4307.     FALSE,
  4308.     FALSE,
  4309.     FALSE,
  4310.     FALSE,
  4311.     FALSE,
  4312.     FALSE,
  4313.     FALSE,
  4314.     FALSE,
  4315.     FALSE,
  4316.     FALSE,
  4317.     FALSE,
  4318.     FALSE,
  4319.     FALSE,
  4320.     FALSE,
  4321.     FALSE,
  4322.     FALSE,
  4323.     FALSE,
  4324.     FALSE,
  4325.     FALSE,
  4326.     FALSE,
  4327.     FALSE,
  4328.     FALSE,
  4329.     FALSE,
  4330.     FALSE,
  4331.     FALSE,
  4332.     FALSE,
  4333.     FALSE,
  4334.     FALSE,
  4335.     FALSE,
  4336.     TRUE,
  4337.     FALSE,
  4338.     FALSE,
  4339.     FALSE,
  4340.     FALSE,
  4341.     FALSE,
  4342.     FALSE,
  4343.     FALSE,
  4344.     TRUE,
  4345.     FALSE,
  4346.     FALSE,
  4347.     FALSE,
  4348.     FALSE,
  4349.     FALSE,
  4350.     FALSE,
  4351.     FALSE,
  4352.     FALSE,
  4353.     FALSE,
  4354.     FALSE,
  4355.     FALSE,
  4356.     FALSE,
  4357.     FALSE,
  4358.     FALSE,
  4359.     FALSE,
  4360.     FALSE,
  4361.     FALSE,
  4362.     FALSE,
  4363.     FALSE,
  4364.     FALSE,
  4365.     FALSE,
  4366.     FALSE,
  4367.     FALSE,
  4368.     FALSE,
  4369.     FALSE,
  4370.     FALSE,
  4371.     FALSE,
  4372.     FALSE,
  4373.     FALSE,
  4374.     FALSE,
  4375.     FALSE,
  4376.     FALSE,
  4377.     FALSE,
  4378.     FALSE,
  4379.     TRUE,
  4380.     FALSE,
  4381.     FALSE,
  4382.     FALSE,
  4383.     FALSE,
  4384.     FALSE,
  4385.     TRUE,
  4386.     FALSE,
  4387.     FALSE,
  4388.     FALSE,
  4389.     FALSE,
  4390.     FALSE,
  4391.     FALSE,
  4392.     FALSE,
  4393.     FALSE,
  4394.     FALSE,
  4395.     FALSE,
  4396.     FALSE,
  4397.     FALSE,
  4398.     FALSE,
  4399.     FALSE,
  4400.     FALSE,
  4401.     FALSE,
  4402.     FALSE,
  4403.     FALSE,
  4404.     FALSE,
  4405.     FALSE,
  4406.     FALSE,
  4407.     FALSE,
  4408.     FALSE,
  4409.     FALSE,
  4410.     FALSE,
  4411.     FALSE,
  4412.     FALSE,
  4413.     FALSE,
  4414.     TRUE,
  4415.     FALSE,
  4416.     FALSE,
  4417.     FALSE,
  4418.     FALSE,
  4419.     FALSE,
  4420.     FALSE,
  4421.     FALSE,
  4422.     FALSE,
  4423.     FALSE,
  4424.     FALSE,
  4425.     FALSE,
  4426.     FALSE,
  4427.     FALSE,
  4428.     FALSE,
  4429.     FALSE,
  4430.     FALSE,
  4431.     FALSE,
  4432.     FALSE,
  4433.     FALSE,
  4434.     FALSE,
  4435.     FALSE,
  4436.     FALSE,
  4437.     FALSE,
  4438.     FALSE,
  4439.     FALSE,
  4440.     FALSE,
  4441.     FALSE,
  4442.     FALSE,
  4443.     FALSE,
  4444.     FALSE,
  4445.     FALSE,
  4446.     FALSE,
  4447.     FALSE,
  4448.     FALSE,
  4449.     FALSE,
  4450.     FALSE,
  4451.     FALSE,
  4452.     FALSE,
  4453.     FALSE,
  4454.     FALSE,
  4455.     FALSE,
  4456.     FALSE,
  4457.     FALSE,
  4458.     FALSE,
  4459.     FALSE,
  4460.     FALSE,
  4461.     FALSE,
  4462.     FALSE,
  4463.     FALSE,
  4464.     FALSE,
  4465.     FALSE
  4466. };
  4467. const U8 g_arabic_form_A_char_array[] = 
  4468. {
  4469.     FALSE,
  4470.     FALSE,
  4471.     FALSE,
  4472.     FALSE,
  4473.     FALSE,
  4474.     FALSE,
  4475.     TRUE,
  4476.     FALSE,
  4477.     FALSE,
  4478.     FALSE,
  4479.     FALSE,
  4480.     FALSE,
  4481.     FALSE,
  4482.     FALSE,
  4483.     FALSE,
  4484.     FALSE,
  4485.     FALSE,
  4486.     FALSE,
  4487.     FALSE,
  4488.     FALSE,
  4489.     FALSE,
  4490.     FALSE,
  4491.     FALSE,
  4492.     FALSE,
  4493.     FALSE,
  4494.     FALSE,
  4495.     FALSE,
  4496.     FALSE,
  4497.     FALSE,
  4498.     FALSE,
  4499.     FALSE,
  4500.     FALSE,
  4501.     FALSE,
  4502.     FALSE,
  4503.     FALSE,
  4504.     FALSE,
  4505.     FALSE,
  4506.     FALSE,
  4507.     FALSE,
  4508.     FALSE,
  4509.     FALSE,
  4510.     FALSE,
  4511.     TRUE,
  4512.     FALSE,
  4513.     FALSE,
  4514.     FALSE,
  4515.     FALSE,
  4516.     FALSE,
  4517.     FALSE,
  4518.     FALSE,
  4519.     FALSE,
  4520.     FALSE,
  4521.     FALSE,
  4522.     FALSE,
  4523.     FALSE,
  4524.     FALSE,
  4525.     FALSE,
  4526.     FALSE,
  4527.     FALSE,
  4528.     FALSE,
  4529.     FALSE,
  4530.     FALSE,
  4531.     TRUE,
  4532.     FALSE,
  4533.     FALSE,
  4534.     FALSE,
  4535.     TRUE,
  4536.     FALSE,
  4537.     FALSE,
  4538.     FALSE,
  4539.     FALSE,
  4540.     FALSE,
  4541.     FALSE,
  4542.     FALSE,
  4543.     FALSE,
  4544.     FALSE,
  4545.     FALSE,
  4546.     FALSE,
  4547.     FALSE,
  4548.     FALSE,
  4549.     FALSE,
  4550.     FALSE,
  4551.     FALSE,
  4552.     FALSE,
  4553.     FALSE,
  4554.     FALSE,
  4555.     FALSE,
  4556.     FALSE,
  4557.     FALSE,
  4558.     FALSE,
  4559.     FALSE,
  4560.     FALSE,
  4561.     FALSE,
  4562.     FALSE,
  4563.     FALSE,
  4564.     FALSE,
  4565.     FALSE,
  4566.     FALSE,
  4567.     FALSE,
  4568.     FALSE,
  4569.     FALSE,
  4570.     FALSE,
  4571.     FALSE,
  4572.     FALSE,
  4573.     FALSE,
  4574.     FALSE,
  4575.     FALSE,
  4576.     FALSE,
  4577.     FALSE,
  4578.     FALSE,
  4579.     FALSE,
  4580.     FALSE,
  4581.     FALSE,
  4582.     FALSE,
  4583.     FALSE,
  4584.     FALSE,
  4585.     FALSE,
  4586.     FALSE,
  4587.     FALSE,
  4588.     FALSE,
  4589.     FALSE,
  4590.     FALSE,
  4591.     FALSE,
  4592.     FALSE,
  4593.     FALSE,
  4594.     FALSE,
  4595.     FALSE,
  4596.     FALSE,
  4597.     FALSE,
  4598.     FALSE,
  4599.     FALSE,
  4600.     FALSE,
  4601.     FALSE,
  4602.     FALSE,
  4603.     FALSE,
  4604.     FALSE,
  4605.     FALSE,
  4606.     FALSE,
  4607.     FALSE,
  4608.     FALSE,
  4609.     FALSE,
  4610.     FALSE,
  4611.     FALSE,
  4612.     FALSE,
  4613.     FALSE,
  4614.     FALSE,
  4615.     FALSE,
  4616.     FALSE,
  4617.     FALSE,
  4618.     FALSE,
  4619.     FALSE,
  4620.     FALSE,
  4621.     FALSE,
  4622.     FALSE,
  4623.     FALSE,
  4624.     FALSE,
  4625.     FALSE,
  4626.     FALSE,
  4627.     FALSE,
  4628.     FALSE,
  4629.     FALSE,
  4630.     FALSE,
  4631.     FALSE,
  4632.     FALSE,
  4633.     FALSE,
  4634.     FALSE,
  4635.     FALSE,
  4636.     FALSE,
  4637.     FALSE,
  4638.     FALSE,
  4639.     FALSE,
  4640.     FALSE,
  4641.     TRUE,
  4642.     FALSE,
  4643.     FALSE,
  4644.     FALSE,
  4645.     FALSE,
  4646.     FALSE,
  4647.     FALSE,
  4648.     FALSE,
  4649.     FALSE,
  4650.     FALSE,
  4651.     FALSE,
  4652.     FALSE,
  4653.     FALSE,
  4654.     FALSE,
  4655.     FALSE,
  4656.     FALSE,
  4657.     FALSE,
  4658.     FALSE,
  4659.     FALSE,
  4660.     FALSE,
  4661.     FALSE,
  4662.     FALSE,
  4663.     FALSE,
  4664.     FALSE,
  4665.     FALSE,
  4666.     FALSE,
  4667.     FALSE,
  4668.     FALSE,
  4669.     FALSE,
  4670.     FALSE,
  4671.     FALSE,
  4672.     FALSE,
  4673.     FALSE,
  4674.     FALSE,
  4675.     FALSE,
  4676.     FALSE,
  4677.     FALSE,
  4678.     FALSE,
  4679.     FALSE,
  4680.     FALSE,
  4681.     FALSE,
  4682.     FALSE,
  4683.     FALSE,
  4684.     FALSE,
  4685.     FALSE,
  4686.     FALSE,
  4687.     FALSE,
  4688.     FALSE,
  4689.     FALSE,
  4690.     FALSE,
  4691.     FALSE,
  4692.     FALSE,
  4693.     FALSE,
  4694.     FALSE,
  4695.     FALSE,
  4696.     FALSE,
  4697.     FALSE,
  4698.     FALSE,
  4699.     FALSE,
  4700.     FALSE,
  4701.     FALSE,
  4702.     FALSE,
  4703.     FALSE,
  4704.     FALSE,
  4705.     FALSE,
  4706.     FALSE,
  4707.     FALSE,
  4708.     FALSE,
  4709.     FALSE,
  4710.     FALSE,
  4711.     FALSE,
  4712.     FALSE,
  4713.     FALSE,
  4714.     FALSE,
  4715.     FALSE,
  4716.     FALSE,
  4717.     FALSE,
  4718.     FALSE,
  4719.     FALSE,
  4720.     FALSE,
  4721.     FALSE,
  4722.     FALSE,
  4723.     FALSE,
  4724.     FALSE,
  4725.     FALSE,
  4726.     FALSE,
  4727.     FALSE,
  4728.     FALSE,
  4729.     FALSE,
  4730.     FALSE,
  4731.     FALSE,
  4732.     FALSE,
  4733.     FALSE,
  4734.     FALSE,
  4735.     FALSE,
  4736.     FALSE,
  4737.     FALSE,
  4738.     FALSE,
  4739.     FALSE,
  4740.     FALSE,
  4741.     FALSE,
  4742.     FALSE,
  4743.     FALSE,
  4744.     FALSE,
  4745.     FALSE,
  4746.     FALSE,
  4747.     FALSE,
  4748.     FALSE,
  4749.     FALSE,
  4750.     FALSE,
  4751.     FALSE,
  4752.     FALSE,
  4753.     FALSE,
  4754.     FALSE,
  4755.     FALSE,
  4756.     FALSE,
  4757.     FALSE,
  4758.     FALSE,
  4759.     FALSE,
  4760.     FALSE,
  4761.     FALSE,
  4762.     FALSE,
  4763.     FALSE,
  4764.     FALSE,
  4765.     FALSE,
  4766.     FALSE,
  4767.     FALSE,
  4768.     FALSE,
  4769.     FALSE,
  4770.     FALSE,
  4771.     FALSE,
  4772.     FALSE,
  4773.     FALSE,
  4774.     FALSE,
  4775.     FALSE,
  4776.     FALSE,
  4777.     FALSE,
  4778.     FALSE,
  4779.     FALSE,
  4780.     FALSE,
  4781.     FALSE,
  4782.     FALSE,
  4783.     FALSE,
  4784.     FALSE,
  4785.     FALSE,
  4786.     FALSE,
  4787.     FALSE,
  4788.     FALSE,
  4789.     FALSE,
  4790.     FALSE,
  4791.     FALSE,
  4792.     FALSE,
  4793.     FALSE,
  4794.     FALSE,
  4795.     FALSE,
  4796.     FALSE,
  4797.     FALSE,
  4798.     FALSE,
  4799.     FALSE,
  4800.     FALSE,
  4801.     FALSE,
  4802.     FALSE,
  4803.     FALSE,
  4804.     FALSE,
  4805.     FALSE,
  4806.     FALSE,
  4807.     FALSE,
  4808.     FALSE,
  4809.     FALSE,
  4810.     FALSE,
  4811.     FALSE,
  4812.     FALSE,
  4813.     FALSE,
  4814.     FALSE,
  4815.     FALSE,
  4816.     FALSE,
  4817.     FALSE,
  4818.     FALSE,
  4819.     FALSE,
  4820.     FALSE,
  4821.     FALSE,
  4822.     FALSE,
  4823.     FALSE,
  4824.     FALSE,
  4825.     FALSE,
  4826.     FALSE,
  4827.     FALSE,
  4828.     FALSE,
  4829.     FALSE,
  4830.     FALSE,
  4831.     FALSE,
  4832.     FALSE,
  4833.     FALSE,
  4834.     FALSE,
  4835.     FALSE,
  4836.     FALSE,
  4837.     FALSE,
  4838.     FALSE,
  4839.     FALSE,
  4840.     FALSE,
  4841.     FALSE,
  4842.     FALSE,
  4843.     FALSE,
  4844.     FALSE,
  4845.     FALSE,
  4846.     FALSE,
  4847.     FALSE,
  4848.     FALSE,
  4849.     FALSE,
  4850.     FALSE,
  4851.     FALSE,
  4852.     FALSE,
  4853.     FALSE,
  4854.     FALSE,
  4855.     FALSE,
  4856.     FALSE,
  4857.     FALSE,
  4858.     FALSE,
  4859.     FALSE,
  4860.     FALSE,
  4861.     FALSE,
  4862.     FALSE,
  4863.     FALSE,
  4864.     FALSE,
  4865.     FALSE,
  4866.     FALSE,
  4867.     FALSE,
  4868.     FALSE,
  4869.     FALSE,
  4870.     FALSE,
  4871.     FALSE,
  4872.     FALSE,
  4873.     FALSE,
  4874.     FALSE,
  4875.     FALSE,
  4876.     FALSE,
  4877.     FALSE,
  4878.     FALSE,
  4879.     FALSE,
  4880.     FALSE,
  4881.     FALSE,
  4882.     FALSE,
  4883.     FALSE,
  4884.     FALSE,
  4885.     FALSE,
  4886.     FALSE,
  4887.     FALSE,
  4888.     FALSE,
  4889.     FALSE,
  4890.     FALSE,
  4891.     FALSE,
  4892.     FALSE,
  4893.     FALSE,
  4894.     FALSE,
  4895.     FALSE,
  4896.     FALSE,
  4897.     FALSE,
  4898.     FALSE,
  4899.     FALSE,
  4900.     FALSE,
  4901.     FALSE,
  4902.     FALSE,
  4903.     FALSE,
  4904.     FALSE,
  4905.     FALSE,
  4906.     FALSE,
  4907.     FALSE,
  4908.     FALSE,
  4909.     FALSE,
  4910.     FALSE,
  4911.     FALSE,
  4912.     FALSE,
  4913.     FALSE,
  4914.     FALSE,
  4915.     FALSE,
  4916.     FALSE,
  4917.     FALSE,
  4918.     FALSE,
  4919.     FALSE,
  4920.     FALSE,
  4921.     FALSE,
  4922.     FALSE,
  4923.     FALSE,
  4924.     FALSE,
  4925.     FALSE,
  4926.     FALSE,
  4927.     FALSE,
  4928.     FALSE,
  4929.     FALSE,
  4930.     FALSE,
  4931.     FALSE,
  4932.     FALSE,
  4933.     FALSE,
  4934.     FALSE,
  4935.     FALSE,
  4936.     FALSE,
  4937.     FALSE,
  4938.     FALSE,
  4939.     FALSE,
  4940.     FALSE,
  4941.     FALSE,
  4942.     FALSE,
  4943.     FALSE,
  4944.     FALSE,
  4945.     FALSE,
  4946.     FALSE,
  4947.     FALSE,
  4948.     FALSE,
  4949.     FALSE,
  4950.     FALSE,
  4951.     FALSE,
  4952.     FALSE,
  4953.     FALSE,
  4954.     FALSE,
  4955.     FALSE,
  4956.     FALSE,
  4957.     FALSE,
  4958.     FALSE,
  4959.     FALSE,
  4960.     FALSE,
  4961.     FALSE,
  4962.     FALSE,
  4963.     FALSE,
  4964.     FALSE,
  4965.     FALSE,
  4966.     FALSE,
  4967.     FALSE,
  4968.     FALSE,
  4969.     FALSE,
  4970.     FALSE,
  4971.     FALSE,
  4972.     FALSE,
  4973.     FALSE,
  4974.     FALSE,
  4975.     FALSE,
  4976.     FALSE,
  4977.     FALSE,
  4978.     FALSE,
  4979.     FALSE,
  4980.     FALSE,
  4981.     FALSE,
  4982.     FALSE,
  4983.     FALSE,
  4984.     FALSE,
  4985.     FALSE,
  4986.     FALSE,
  4987.     FALSE,
  4988.     FALSE,
  4989.     FALSE,
  4990.     FALSE,
  4991.     FALSE,
  4992.     FALSE,
  4993.     FALSE,
  4994.     FALSE,
  4995.     FALSE,
  4996.     FALSE,
  4997.     FALSE,
  4998.     FALSE,
  4999.     FALSE,
  5000.     FALSE,
  5001.     FALSE,
  5002.     FALSE,
  5003.     FALSE,
  5004.     FALSE,
  5005.     FALSE,
  5006.     FALSE,
  5007.     FALSE,
  5008.     FALSE,
  5009.     FALSE,
  5010.     FALSE,
  5011.     FALSE,
  5012.     FALSE,
  5013.     FALSE,
  5014.     FALSE,
  5015.     FALSE,
  5016.     FALSE,
  5017.     FALSE,
  5018.     FALSE,
  5019.     FALSE,
  5020.     FALSE,
  5021.     FALSE,
  5022.     FALSE,
  5023.     FALSE,
  5024.     FALSE,
  5025.     FALSE,
  5026.     FALSE,
  5027.     FALSE,
  5028.     FALSE,
  5029.     FALSE,
  5030.     FALSE,
  5031.     FALSE,
  5032.     FALSE,
  5033.     FALSE,
  5034.     FALSE,
  5035.     FALSE,
  5036.     FALSE,
  5037.     FALSE,
  5038.     FALSE,
  5039.     FALSE,
  5040.     FALSE,
  5041.     FALSE,
  5042.     FALSE,
  5043.     FALSE,
  5044.     FALSE,
  5045.     FALSE,
  5046.     FALSE,
  5047.     FALSE,
  5048.     FALSE,
  5049.     FALSE,
  5050.     FALSE,
  5051.     FALSE,
  5052.     FALSE,
  5053.     FALSE,
  5054.     FALSE,
  5055.     FALSE,
  5056.     FALSE,
  5057.     FALSE,
  5058.     FALSE,
  5059.     FALSE,
  5060.     FALSE,
  5061.     FALSE,
  5062.     FALSE,
  5063.     FALSE,
  5064.     FALSE,
  5065.     FALSE,
  5066.     FALSE,
  5067.     FALSE,
  5068.     FALSE,
  5069.     FALSE,
  5070.     FALSE,
  5071.     FALSE,
  5072.     FALSE,
  5073.     FALSE,
  5074.     FALSE,
  5075.     FALSE,
  5076.     FALSE,
  5077.     FALSE,
  5078.     FALSE,
  5079.     FALSE,
  5080.     FALSE,
  5081.     FALSE,
  5082.     FALSE,
  5083.     FALSE,
  5084.     FALSE,
  5085.     FALSE,
  5086.     FALSE,
  5087.     FALSE,
  5088.     FALSE,
  5089.     FALSE,
  5090.     FALSE,
  5091.     FALSE,
  5092.     FALSE,
  5093.     FALSE,
  5094.     FALSE,
  5095.     FALSE,
  5096.     FALSE,
  5097.     FALSE,
  5098.     FALSE,
  5099.     FALSE,
  5100.     FALSE,
  5101.     FALSE,
  5102.     FALSE,
  5103.     FALSE,
  5104.     FALSE,
  5105.     FALSE,
  5106.     FALSE,
  5107.     FALSE,
  5108.     FALSE,
  5109.     FALSE,
  5110.     FALSE,
  5111.     FALSE,
  5112.     FALSE,
  5113.     FALSE,
  5114.     FALSE,
  5115.     FALSE,
  5116.     FALSE,
  5117.     FALSE,
  5118.     FALSE,
  5119.     FALSE,
  5120.     FALSE,
  5121.     FALSE,
  5122.     FALSE,
  5123.     FALSE,
  5124.     FALSE,
  5125.     FALSE,
  5126.     FALSE,
  5127.     FALSE,
  5128.     FALSE,
  5129.     FALSE,
  5130.     FALSE,
  5131.     FALSE,
  5132.     FALSE,
  5133.     FALSE,
  5134.     FALSE,
  5135.     FALSE,
  5136.     FALSE,
  5137.     FALSE,
  5138.     FALSE,
  5139.     FALSE,
  5140.     FALSE,
  5141.     FALSE,
  5142.     FALSE,
  5143.     FALSE,
  5144.     FALSE,
  5145.     FALSE,
  5146.     FALSE,
  5147.     FALSE,
  5148.     FALSE,
  5149.     FALSE,
  5150.     FALSE,
  5151.     FALSE,
  5152.     FALSE,
  5153.     FALSE,
  5154.     FALSE,
  5155.     FALSE
  5156. //PMT PERSIAN start- add by Ailsa
  5157. };
  5158. const U8 g_arabic_form_B_char_array[] =
  5159. {
  5160.     FALSE,  //FE70
  5161.     FALSE,
  5162.     FALSE,
  5163.     FALSE,
  5164.     FALSE,
  5165.     FALSE,    
  5166.     FALSE,
  5167.     FALSE,
  5168.     FALSE,
  5169.     FALSE,
  5170.     FALSE,
  5171.     FALSE,    
  5172.     FALSE,
  5173.     FALSE,
  5174.     FALSE,
  5175.     FALSE,
  5176.     FALSE,
  5177.     FALSE,    
  5178.     FALSE,
  5179.     FALSE,
  5180.     FALSE,
  5181.     FALSE,
  5182.     FALSE,
  5183.     FALSE,    
  5184.     FALSE,
  5185.     TRUE,
  5186.     FALSE,
  5187.     FALSE,
  5188.     FALSE,
  5189.     FALSE,    
  5190.     FALSE,
  5191.     TRUE,
  5192.     FALSE,
  5193.     FALSE,
  5194.     FALSE,
  5195.     FALSE,    
  5196.     FALSE,
  5197.     TRUE,
  5198.     FALSE,
  5199.     FALSE,
  5200.     FALSE,
  5201.     TRUE,
  5202.     FALSE,
  5203.     FALSE,
  5204.     FALSE,
  5205.     TRUE,
  5206.     FALSE,
  5207.     FALSE,    
  5208.     FALSE,
  5209.     TRUE,
  5210.     FALSE,
  5211.     FALSE,
  5212.     FALSE,
  5213.     TRUE,
  5214.     FALSE,
  5215.     FALSE,
  5216.     FALSE,
  5217.     FALSE,
  5218.     FALSE,
  5219.     FALSE,    
  5220.     FALSE,
  5221.     FALSE,
  5222.     FALSE,
  5223.     FALSE,
  5224.     FALSE,
  5225.     TRUE,
  5226.     FALSE,
  5227.     FALSE,
  5228.     FALSE,
  5229.     TRUE,
  5230.     FALSE,
  5231.     FALSE,    
  5232.     FALSE,
  5233.     TRUE,
  5234.     FALSE,
  5235.     FALSE,
  5236.     FALSE,
  5237.     TRUE,
  5238.     FALSE,
  5239.     FALSE,
  5240.     FALSE,
  5241.     TRUE,
  5242.     FALSE,
  5243.     FALSE,    
  5244.     FALSE,
  5245.     TRUE,
  5246.     FALSE,
  5247.     FALSE,
  5248.     FALSE,
  5249.     TRUE,
  5250.     FALSE,
  5251.     FALSE,
  5252.     FALSE,
  5253.     TRUE,
  5254.     FALSE,
  5255.     FALSE,    
  5256.     FALSE,
  5257.     TRUE,
  5258.     FALSE,
  5259.     FALSE,
  5260.     FALSE,
  5261.     TRUE,
  5262.     FALSE,
  5263.     FALSE,
  5264.     FALSE,
  5265.     TRUE,
  5266.     FALSE,
  5267.     FALSE,    
  5268.     FALSE,
  5269.     TRUE,
  5270.     FALSE,
  5271.     FALSE,
  5272.     FALSE,
  5273.     TRUE,
  5274.     FALSE,
  5275.     FALSE,
  5276.     FALSE,
  5277.     TRUE,
  5278.     FALSE,
  5279.     FALSE,    
  5280.     FALSE,
  5281.     TRUE,
  5282.     FALSE,
  5283.     FALSE,
  5284.     FALSE,
  5285.     FALSE,    
  5286.     FALSE,
  5287.     TRUE,
  5288.     FALSE,
  5289.     TRUE,
  5290.     FALSE,
  5291.     FALSE,    
  5292.     FALSE,
  5293.     FALSE,
  5294.     FALSE,
  5295.     FALSE,
  5296.     FALSE,
  5297.     FALSE,    
  5298.     FALSE,
  5299.     FALSE,
  5300.     FALSE,
  5301.     FALSE,
  5302.     FALSE,
  5303.     FALSE
  5304. };
  5305. /* PMT END PERSIAN */
  5306. /*****************************************************************************
  5307.  * FUNCTION
  5308.  *  ArabicShapeEngine
  5309.  * DESCRIPTION
  5310.  *  
  5311.  * PARAMETERS
  5312.  *  length          [IN]        
  5313.  *  text_buffer     [IN]        
  5314.  * RETURNS
  5315.  *  void
  5316.  *****************************************************************************/
  5317. void ArabicShapeEngine(PU16 length, PU16 text_buffer)
  5318. {
  5319.     /*----------------------------------------------------------------*/
  5320.     /* Local Variables                                                */
  5321.     /*----------------------------------------------------------------*/
  5322.     /*----------------------------------------------------------------*/
  5323.     /* Code Body                                                      */
  5324.     /*----------------------------------------------------------------*/
  5325.     ArabicShapeEngine2(length, text_buffer, NULL, NULL);
  5326. }
  5327. /*****************************************************************************
  5328.  * FUNCTION
  5329.  *  ArabicShapeEngine2
  5330.  * DESCRIPTION
  5331.  *  
  5332.  * PARAMETERS
  5333.  *  length          [IN]        
  5334.  *  text_buffer     [IN]        
  5335.  *  pOrgToSha       [IN]        
  5336.  *  pShaToOrg       [IN]        
  5337.  * RETURNS
  5338.  *  void
  5339.  *****************************************************************************/
  5340. void ArabicShapeEngine2(PU16 length, PU16 text_buffer, PU16 pOrgToSha, PU16 pShaToOrg)
  5341. {
  5342.     /*----------------------------------------------------------------*/
  5343.     /* Local Variables                                                */
  5344.     /*----------------------------------------------------------------*/
  5345.     const ARABIC_SHAPE_TABLE *glyph_form = glyph_base_Tb;
  5346.     U16 preChar = 0;
  5347.     U16 postChar = 0;
  5348.     U16 current_character;
  5349.     U16 count = 0;
  5350.     U16 temp_length = *length;
  5351. BOOL is_arabic_char_present = 0;
  5352.     
  5353.     /*----------------------------------------------------------------*/
  5354.     /* Code Body                                                      */
  5355.     /*----------------------------------------------------------------*/
  5356.     while (temp_length)
  5357.     {
  5358.         current_character = text_buffer[count];
  5359.         if (UI_ARABIC_FORM_B_RANGE(current_character))
  5360.         {
  5361.             glyph_form = glyph_Tb_B;
  5362.         }
  5363.         else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5364.         {
  5365.             glyph_form = glyph_Tb_A;
  5366.         }
  5367.         else
  5368.         {
  5369.             glyph_form = glyph_base_Tb;
  5370.         }
  5371.         postChar = text_buffer[count + 1];
  5372.         if (temp_length == 1)
  5373.         {
  5374.             postChar = 0;
  5375.         }
  5376.         
  5377.         if (UI_ARABIC_CHARACTER_RANGE(current_character)||UI_ARABIC_FORM_B_RANGE(current_character)) //check for current character in Arabic
  5378.         {
  5379. is_arabic_char_present = 1;
  5380.             if (UI_ARABIC_CHARACTER_RANGE(preChar)||UI_ARABIC_FORM_B_RANGE(preChar)) //check for previous character in arabic
  5381.             {
  5382.                 if (UI_ARABIC_CHARACTER_RANGE(postChar)||UI_ARABIC_FORM_B_RANGE(postChar)) //check for next character
  5383.                 {//Middle Form
  5384.                     if (WHETHER_JOIN_CHARACTER(preChar)) //check if previous character has joining form
  5385.                     {
  5386.                         preChar = current_character;
  5387.                         if (UI_ARABIC_FORM_B_RANGE(current_character))
  5388.                         {
  5389.                             current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].middleForm;
  5390.                             if (current_character == NULL)
  5391.                             {
  5392.                                 current_character = preChar;
  5393.                             }
  5394.                         }
  5395.                         else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5396.                         {
  5397.                             current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].middleForm;
  5398.                             if (current_character == NULL)
  5399.                             {
  5400.                                 current_character = preChar;
  5401.                             }
  5402.                         }
  5403.                         else
  5404.                         {
  5405.                             current_character = glyph_form[UNICODE_ARABIC(current_character)].middleForm;
  5406.                         }
  5407.                     }
  5408.                     else //check for previous character not having joining form
  5409.                     {
  5410.                         preChar = current_character;
  5411.                         if (UI_ARABIC_FORM_B_RANGE(current_character))
  5412.                         {
  5413.                             current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].preForm;
  5414.                             if (current_character == NULL)
  5415.                             {
  5416.                                 current_character = preChar;
  5417.                             }
  5418.                         }
  5419.                         else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5420.                         {
  5421.                             current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].preForm;
  5422.                             if (current_character == NULL)
  5423.                             {
  5424.                                 current_character = preChar;
  5425.                             }
  5426.                         }
  5427.                         else
  5428.                         {
  5429.                             current_character = glyph_form[UNICODE_ARABIC(current_character)].preForm;
  5430.                         }
  5431.                     }
  5432.                 }
  5433.                 else //if previous character is Arabic but next character is not Arabic or null
  5434.                 {//Post Form
  5435.                     if (WHETHER_JOIN_CHARACTER(preChar))
  5436.                     {
  5437.                         preChar = current_character;
  5438.                         if (UI_ARABIC_FORM_B_RANGE(current_character))
  5439.                         {
  5440.                             current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].postForm;
  5441.                             if (current_character == NULL)
  5442.                             {
  5443.                                 current_character = preChar;
  5444.                             }
  5445.                         }
  5446.                         else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5447.                         {
  5448.                             current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].postForm;
  5449.                             if (current_character == NULL)
  5450.                             {
  5451.                                 current_character = preChar;
  5452.                             }
  5453.                         }
  5454.                         else
  5455.                         {
  5456.                             current_character = glyph_form[UNICODE_ARABIC(current_character)].postForm;
  5457.                         }
  5458.                     }
  5459.                     else
  5460.                     {//check for previous character not having joining form
  5461.                         preChar = current_character;
  5462.                         if (UI_ARABIC_FORM_B_RANGE(current_character))
  5463.                         {
  5464.                             current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].nominalForm;
  5465.                             if (current_character == NULL)
  5466.                             {
  5467.                                 current_character = preChar;
  5468.                             }
  5469.                         }
  5470.                         else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5471.                         {
  5472.                             current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].nominalForm;
  5473.                             if (current_character == NULL)
  5474.                             {
  5475.                                 current_character = preChar;
  5476.                             }
  5477.                         }
  5478.                         else
  5479.                         {
  5480.                             current_character = glyph_form[UNICODE_ARABIC(current_character)].nominalForm;
  5481.                         }
  5482.                     }
  5483.                 }
  5484.             }
  5485.             else if (UI_ARABIC_CHARACTER_RANGE(postChar)||UI_ARABIC_FORM_B_RANGE(postChar)) //if previous character is null then check for next char in arabic
  5486.             {//Pre Form
  5487.                 preChar = current_character;
  5488.                 if (UI_ARABIC_FORM_B_RANGE(current_character))
  5489.                 {
  5490.                     current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].preForm;
  5491.                     if (current_character == NULL)
  5492.                     {
  5493.                         current_character = preChar;
  5494.                     }
  5495.                 }
  5496.                 else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5497.                 {
  5498.                     current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].preForm;
  5499.                     if (current_character == NULL)
  5500.                     {
  5501.                         current_character = preChar;
  5502.                     }
  5503.                 }
  5504.                 else
  5505.                 {
  5506.                     current_character = glyph_form[UNICODE_ARABIC(current_character)].preForm;
  5507.                 }
  5508.             }
  5509.             else //if previous and next characters are not in arabic
  5510.             {
  5511.                 preChar = current_character;
  5512.                 if (UI_ARABIC_FORM_B_RANGE(current_character))
  5513.                 {
  5514.                     current_character = glyph_form[UNICODE_ARABIC_FORM_B(current_character)].nominalForm;
  5515.                     if (current_character == NULL)
  5516.                     {
  5517.                         current_character = preChar;
  5518.                     }
  5519.                 }
  5520.                 else if (UI_ARABIC_FORM_A_RANGE(current_character))
  5521.                 {
  5522.                     current_character = glyph_form[UNICODE_ARABIC_FORM_A(current_character)].nominalForm;
  5523.                     if (current_character == NULL)
  5524.                     {
  5525.                         current_character = preChar;
  5526.                     }
  5527.                 }
  5528.                 else
  5529.                 {
  5530.                     current_character = glyph_form[UNICODE_ARABIC(current_character)].nominalForm;
  5531.                 }
  5532.             }
  5533.             if ((current_character == 0x644))
  5534.             {
  5535.                 current_character = 0xFEDD;
  5536.             }
  5537.             else if ((current_character == 0x647))
  5538.             {
  5539.                 current_character = 0xFEE9;
  5540.             }
  5541.             text_buffer[count] = current_character;
  5542.             
  5543.         }
  5544.         else //if current character is not in arabic
  5545.         {
  5546.             preChar = 0;
  5547.             postChar = 0;
  5548.         }
  5549.         count = count + 1;
  5550.         temp_length = temp_length - 1;
  5551.     }
  5552. if(is_arabic_char_present) //if arabic character present in text_buffer then calls rules API
  5553. {
  5554. arabic_ligature_rules(text_buffer, length, pOrgToSha, pShaToOrg);
  5555. }
  5556. }
  5557. /*****************************************************************************
  5558.  * FUNCTION
  5559.  *  arabic_ligature_rules
  5560.  * DESCRIPTION
  5561.  *  
  5562.  * PARAMETERS
  5563.  *  text_buffer [IN]        
  5564.  *  length      [IN]        
  5565.  *  pOrgToSha   [IN]        
  5566.  *  pShaToOrg   [IN]        
  5567.  * RETURNS
  5568.  *  void
  5569.  *****************************************************************************/
  5570. void arabic_ligature_rules(PU16 text_buffer, PU16 length, PU16 pOrgToSha, PU16 pShaToOrg)
  5571. {
  5572. /*----------------------------------------------------------------*/
  5573.     /* Local Variables                                                */
  5574.     /*----------------------------------------------------------------*/
  5575.     
  5576.     ARABIC_MAIN_TABLE ind_table;
  5577.     const LIGATURE_INFO_TABLE *char_table;
  5578. U16 input_buffer[ARABIC_LIGATURE_LENGTH];
  5579. U16 current_character;
  5580. U16 ch_index;
  5581.     S32 size;    
  5582.     S32 max_size;    
  5583. U16 count = 0;
  5584. U16 read_count = 0;
  5585.     U8 is_req_orginal_to_shape_position = 0;
  5586.     U8 is_req_shape_to_original_position = 0;
  5587.     /*----------------------------------------------------------------*/
  5588.     /* Code Body                                                      */
  5589.     /*----------------------------------------------------------------*/
  5590.     if (pOrgToSha != NULL)
  5591.     {
  5592.         is_req_orginal_to_shape_position = 1;
  5593.     }
  5594.     if (pShaToOrg != NULL)
  5595.     {
  5596.         is_req_shape_to_original_position = 1;
  5597.     }
  5598. while(read_count < *length)
  5599. {
  5600. current_character = text_buffer[read_count];
  5601.         if (is_req_orginal_to_shape_position)
  5602.         {
  5603.             pOrgToSha[read_count] = count;
  5604.         }
  5605.         text_buffer[count] = current_character;
  5606.         if (is_req_shape_to_original_position)
  5607.         {
  5608.             pShaToOrg[count] = read_count;
  5609.         }
  5610.         if (UI_ARABIC_FORM_B_RANGE(current_character) || UI_ARABIC_FORM_A_RANGE(current_character))
  5611.         {
  5612.             if (UI_ARABIC_FORM_A_RANGE(current_character))
  5613.             {
  5614.                 ch_index = UNICODE_ARABIC_FORM_A(current_character);    /* find the index of character in main table */
  5615.                 ind_table = Arabic_Tbl_A[ch_index]; /* gets the individual charactr's table in main table */
  5616.             }
  5617.             else
  5618.             {
  5619.                 ch_index = UNICODE_ARABIC_FORM_B(current_character);    /* find the index of character in main table */
  5620.                 ind_table = Arabic_Tbl_B[ch_index]; /* gets the individual charactr's table in main table */
  5621.             }
  5622.             char_table = ind_table.glyphinfo;   /* holds the add. of individual character */
  5623.             size = ind_table.nsize;
  5624.             max_size = ind_table.maxInputGlyphSize;
  5625.             if (char_table != NULL)
  5626.             {
  5627.                 S32 i;
  5628.                 for (i = 0; i < max_size; i++)
  5629.                 {
  5630.                     input_buffer[i] = text_buffer[read_count + i];
  5631.                 }
  5632.                 while (size)
  5633.                 {
  5634.                     size--;
  5635.                     if (memcmp(char_table[size].Input_glyph, input_buffer, char_table[size].nInputLen * 2) == 0)
  5636.                     {
  5637.                         memcpy(input_buffer, char_table[size].Output_glyph, char_table[size].nOutputLen * 2);
  5638.                         input_buffer[char_table[size].nOutputLen] = (U16) NULL;
  5639.                         if (is_req_orginal_to_shape_position)
  5640.                         {
  5641.                             for(i=read_count;i<read_count+char_table[size].nInputLen;i++)
  5642.                             {
  5643.                                 pOrgToSha[i] = count;
  5644.                             }
  5645.                         }                
  5646. read_count += char_table[size].nInputLen-1;
  5647. break;
  5648. }
  5649. }
  5650. for(i=0;i<char_table[size].nOutputLen;i++)
  5651. {
  5652. text_buffer[count+i] = input_buffer[i];
  5653. }
  5654.                 if (is_req_shape_to_original_position)
  5655.                 {
  5656.                     for(i=0;i<char_table[size].nOutputLen-1;i++)
  5657.     {
  5658.                         pShaToOrg[count+i+1]=read_count;
  5659.                     }
  5660.                 }
  5661.                 count+=char_table[size].nOutputLen-1;
  5662. }
  5663. else
  5664. {
  5665. text_buffer[count] = current_character;                
  5666. }
  5667. }
  5668. else
  5669. {
  5670. text_buffer[count] = current_character;
  5671.         }
  5672. count++;
  5673. read_count++;
  5674. }
  5675. *length = (U16)count;
  5676. for(;count<read_count;count++)
  5677. {
  5678. text_buffer[count] = (U16) NULL;
  5679. }
  5680. }
  5681. #endif /* __MMI_ARSHAPING_ENGINE__ */ 
  5682. /* PMT END PERSIAN */