?
Solved

Process took too long time for text()

Posted on 2008-11-19
12
Medium Priority
?
554 Views
Last Modified: 2013-11-18
Hello Experts,

The below xslt code takes the text() and process it took too long time.

<xsl:template match="text()">
            <xsl:variable name="clean">
                  <xsl:call-template name="replace">
                        <xsl:with-param name="text">
                              <xsl:call-template name="lowercase">
                                    <xsl:with-param name="text">
                                          <xsl:text> </xsl:text>
                                          <xsl:value-of select="normalize-space(.)"/>
                                    </xsl:with-param>
                              </xsl:call-template>
                              <xsl:text> </xsl:text>
                        </xsl:with-param>
                  </xsl:call-template>
            </xsl:variable>
            <xsl:analyze-string select="$clean" regex=" ">
                  <xsl:matching-substring/>
                  <xsl:non-matching-substring>
                        <ph>
                              <xsl:value-of select="."/>
                        </ph>
                  </xsl:non-matching-substring>
            </xsl:analyze-string>
      </xsl:template>

      <xsl:template name="lowercase">
            <xsl:param name="text">none</xsl:param>
            <xsl:value-of select="lower-case($text)"/>
      </xsl:template>

      <xsl:template name="replace">
            <xsl:param name="text">none</xsl:param>
            <xsl:call-template name="lookupChar">
                  <xsl:with-param name="text">
                        <xsl:value-of select="$text"/>
                  </xsl:with-param>
            </xsl:call-template>
      </xsl:template>

Can you please suggest the shorter code to process this in minimum time?

Thanks,
Shailesh
0
Comment
Question by:ShaileshShinde
  • 7
  • 5
12 Comments
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 22994926
<xsl:analyze-string select="$clean" regex=" ">
                  <xsl:matching-substring/>
                  <xsl:non-matching-substring>
                        <ph>
                              <xsl:value-of select="."/>
                        </ph>
                  </xsl:non-matching-substring>
            </xsl:analyze-string>

can be replaced by

<xsl:if test="not(contains($clean, ' '))">
                        <ph>
                              <xsl:value-of select="."/>
                        </ph>
</xsl:if>

The recursive function seems an unnecessary mess (why do you have a named template that only lowercases?) But I need to know what is in "lookupChar"
I bet this can be done with a good regeluar expression instead

The major time gain you will get by making the text() template selective.
now you hit the bunch of functions for every single text node, all the white-space nodes included
by making this eg.
<xsl:template match="para/text()"> or whatever your source is, you would gain a lot more
0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23001380
Hello Experts,

The lookupchar template is below, also, I have added the stylesheet as

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://domain.com" xmlns:lookup="java:com.adobe.gep.unicodelookup.UnicodeCharLookup" xmlns:string="java:java.lang.String"
      exclude-result-prefixes="saxon lookup string">

Which looks for unicode.properties file for which contains below...

da-dk=/templates/en-us/samaritan/goodchar.properties
de-de=/templates/en-us/samaritan/goodchar.properties
en-us=/templates/en-us/samaritan/goodchar.properties
es-es=/templates/en-us/samaritan/goodchar.properties
fi-fi=/templates/en-us/samaritan/goodchar.properties
fr-fr=/templates/en-us/samaritan/goodchar.properties
it-it=/templates/en-us/samaritan/goodchar.properties

and goodchar.properties contains attached in code snippet... Also, the xslt we use for all languages.

<!-- LookupChar Template -->
<xsl:template name="lookupChar">
            <xsl:param name="text"/>
            <xsl:param name="flag"/>
            <xsl:if test="string-length($text) > 0">
                  <xsl:variable name="char">
                        <xsl:value-of select="substring($text,1,1)"/>
                  </xsl:variable>
                  <xsl:variable name="lookupChar" select="lookup:getChar($lookup, $char, $locale)"/>
                  <xsl:choose>
                        <xsl:when test="$lookupChar = ''">
                              <xsl:text> </xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                              <xsl:value-of select="$char"/>
                        </xsl:otherwise>
                  </xsl:choose>

                  <xsl:call-template name="lookupChar">
                        <xsl:with-param name="text">
                              <xsl:value-of select="substring-after($text,$char)"/>
                        </xsl:with-param>
                        <xsl:with-param name="flag">
                              <xsl:value-of select="$lookupChar"/>
                        </xsl:with-param>
                  </xsl:call-template>
            </xsl:if>
      </xsl:template>
&#x30;=&#x30;  <!--  number 0  -->
&#x31;=&#x31;  <!--  number 1  -->
&#x32;=&#x32;  <!--  number 2  -->
&#x33;=&#x33;  <!--  number 3  -->
&#x34;=&#x34;  <!--  number 4  -->
&#x35;=&#x35;  <!--  number 5  -->
&#x36;=&#x36;  <!--  number 6  -->
&#x37;=&#x37;  <!--  number 7  -->
&#x38;=&#x38;  <!--  number 8  -->
&#x39;=&#x39;  <!--  number 9  -->
&#x41;=&#x41;  <!--  latin capital letter A  -->
&#x42;=&#x42;  <!--  latin capital letter B  -->
&#x43;=&#x43;  <!--  latin capital letter C  -->
&#x44;=&#x44;  <!--  latin capital letter D  -->
&#x45;=&#x45;  <!--  latin capital letter E  -->
&#x46;=&#x46;  <!--  latin capital letter F  -->
&#x47;=&#x47;  <!--  latin capital letter G  -->
&#x48;=&#x48;  <!--  latin capital letter H  -->
&#x49;=&#x49;  <!--  latin capital letter I  -->
&#x4A;=&#x4A;  <!--  latin capital letter J  -->
&#x4B;=&#x4B;  <!--  latin capital letter K  -->
&#x4C;=&#x4C;  <!--  latin capital letter L  -->
&#x4D;=&#x4D;  <!--  latin capital letter M  -->
&#x4E;=&#x4E;  <!--  latin capital letter N  -->
&#x4F;=&#x4F;  <!--  latin capital letter O  -->
&#x50;=&#x50;  <!--  latin capital letter P  -->
&#x51;=&#x51;  <!--  latin capital letter Q  -->
&#x52;=&#x52;  <!--  latin capital letter R  -->
&#x53;=&#x53;  <!--  latin capital letter S  -->
&#x54;=&#x54;  <!--  latin capital letter T  -->
&#x55;=&#x55;  <!--  latin capital letter U  -->
&#x56;=&#x56;  <!--  latin capital letter V  -->
&#x57;=&#x57;  <!--  latin capital letter W  -->
&#x58;=&#x58;  <!--  latin capital letter X  -->
&#x59;=&#x59;  <!--  latin capital letter Y  -->
&#x5A;=&#x5A;  <!--  latin capital letter Z  -->
&#x61;=&#x61;  <!--  latin small letter a  -->
&#x62;=&#x62;  <!--  latin small letter b  -->
&#x63;=&#x63;  <!--  latin small letter c  -->
&#x64;=&#x64;  <!--  latin small letter d  -->
&#x65;=&#x65;  <!--  latin small letter e  -->
&#x66;=&#x66;  <!--  latin small letter f  -->
&#x67;=&#x67;  <!--  latin small letter g  -->
&#x68;=&#x68;  <!--  latin small letter h  -->
&#x69;=&#x69;  <!--  latin small letter i  -->
&#x6A;=&#x6A;  <!--  latin small letter j  -->
&#x6B;=&#x6B;  <!--  latin small letter k  -->
&#x6C;=&#x6C;  <!--  latin small letter l  -->
&#x6D;=&#x6D;  <!--  latin small letter m  -->
&#x6E;=&#x6E;  <!--  latin small letter n  -->
&#x6F;=&#x6F;  <!--  latin small letter o  -->
&#x70;=&#x70;  <!--  latin small letter p  -->
&#x71;=&#x71;  <!--  latin small letter q  -->
&#x72;=&#x72;  <!--  latin small letter r  -->
&#x73;=&#x73;  <!--  latin small letter s  -->
&#x74;=&#x74;  <!--  latin small letter t  -->
&#x75;=&#x75;  <!--  latin small letter u  -->
&#x76;=&#x76;  <!--  latin small letter v  -->
&#x77;=&#x77;  <!--  latin small letter w  -->
&#x78;=&#x78;  <!--  latin small letter x  -->
&#x79;=&#x79;  <!--  latin small letter y  -->
&#x7A;=&#x7A;  <!--  latin small letter z  -->
 
&#xC0;=&#xC0;  <!--  capital letter a with grave   -->
&#xC1;=&#xC1;  <!--  capital letter a with acute   -->
&#xC2;=&#xC2;  <!--  capital letter a with circumflex   -->
&#xC3;=&#xC3;  <!--  capital letter a with tilde   -->
&#xC4;=&#xC4;  <!--  capital letter a with diaeresis   -->
&#xC5;=&#xC5;  <!--  capital letter a with ring above   -->
&#xC6;=&#xC6;  <!--  capital letter ae   -->
&#xC7;=&#xC7;  <!--  capital letter c with cedilla   -->
&#xC8;=&#xC8;  <!--  capital letter e with grave   -->
&#xC9;=&#xC9;  <!--  capital letter e with acute   -->
&#xCA;=&#xCA;  <!--  capital letter e with circumflex   -->
&#xCB;=&#xCB;  <!--  capital letter e with diaeresis   -->
&#xCC;=&#xCC;  <!--  capital letter i with grave   -->
&#xCD;=&#xCD;  <!--  capital letter i with acute   -->
&#xCE;=&#xCE;  <!--  capital letter i with circumflex   -->
&#xCF;=&#xCF;  <!--  capital letter i with diaeresis   -->
&#xD0;=&#xD0;  <!--  capital letter eth   -->
&#xD1;=&#xD1;  <!--  capital letter n with tilde   -->
&#xD2;=&#xD2;  <!--  capital letter o with grave   -->
&#xD3;=&#xD3;  <!--  capital letter o with acute   -->
&#xD4;=&#xD4;  <!--  capital letter o with circumflex   -->
&#xD5;=&#xD5;  <!--  capital letter o with tilde   -->
&#xD6;=&#xD6;  <!--  capital letter o with diaeresis   -->
 
&#xD8;=&#xD8;  <!--  capital letter o with stroke   -->
&#xD9;=&#xD9;  <!--  capital letter u with grave   -->
&#xDA;=&#xDA;  <!--  capital letter u with acute   -->
&#xDB;=&#xDB;  <!--  capital letter u with circumflex   -->
&#xDC;=&#xDC;  <!--  capital letter u with diaeresis   -->
&#xDD;=&#xDD;  <!--  capital letter y with acute   -->
&#xDE;=&#xDE;  <!--  capital letter thorn   -->
&#xDF;=&#xDF;  <!--  small letter sharp s   -->
&#xE0;=&#xE0;  <!--  small letter a with grave   -->
&#xE1;=&#xE1;  <!--  small letter a with acute   -->
&#xE2;=&#xE2;  <!--  small letter a with circumflex   -->
&#xE3;=&#xE3;  <!--  small letter a with tilde   -->
&#xE4;=&#xE4;  <!--  small letter a with diaeresis   -->
&#xE5;=&#xE5;  <!--  small letter a with ring above   -->
&#xE6;=&#xE6;  <!--  small letter ae   -->
&#xE7;=&#xE7;  <!--  small letter c with cedilla   -->
&#xE8;=&#xE8;  <!--  small letter e with grave   -->
&#xE9;=&#xE9;  <!--  small letter e with acute   -->
&#xEA;=&#xEA;  <!--  small letter e with circumflex   -->
&#xEB;=&#xEB;  <!--  small letter e with diaeresis   -->
&#xEC;=&#xEC;  <!--  small letter i with grave   -->
&#xED;=&#xED;  <!--  small letter i with acute   -->
&#xEE;=&#xEE;  <!--  small letter i with circumflex   -->
&#xEF;=&#xEF;  <!--  small letter i with diaeresis   -->
&#xF0;=&#xF0;  <!--  small letter eth   -->
&#xF1;=&#xF1;  <!--  small letter n with tilde   -->
&#xF2;=&#xF2;  <!--  small letter o with grave   -->
&#xF3;=&#xF3;  <!--  small letter o with acute   -->
&#xF4;=&#xF4;  <!--  small letter o with circumflex   -->
&#xF5;=&#xF5;  <!--  small letter o with tilde   -->
&#xF6;=&#xF6;  <!--  small letter o with diaeresis   -->
 
&#xF8;=&#xF8;  <!--  small letter o with stroke   -->
&#xF9;=&#xF9;  <!--  small letter u with grave   -->
&#xFA;=&#xFA;  <!--  small letter u with acute   -->
&#xFB;=&#xFB;  <!--  small letter u with circumflex   -->
&#xFC;=&#xFC;  <!--  small letter u with diaeresis   -->
&#xFD;=&#xFD;  <!--  small letter y with acute   -->
&#xFE;=&#xFE;  <!--  small letter thorn   -->
&#xFF;=&#xFF;  <!--  small letter y with diaeresis   -->
 
&#x100;=&#x100;  <!-- latin capital letter a with macron    -->
&#x101;=&#x101;  <!-- latin small letter a with macron    -->
&#x102;=&#x102;  <!-- latin capital letter a with breve    -->
&#x103;=&#x103;  <!-- latin small letter a with breve    -->
&#x104;=&#x104;  <!-- latin capital letter a with ogonek    -->
&#x105;=&#x105;  <!-- latin small letter a with ogonek    -->
&#x106;=&#x106;  <!-- latin capital letter c with acute    -->
&#x107;=&#x107;  <!-- latin small letter c with acute    -->
&#x108;=&#x108;  <!-- latin capital letter c with circumflex    -->
&#x109;=&#x109;  <!-- latin small letter c with circumflex    -->
&#x10A;=&#x10A;  <!-- latin capital letter c with dot above    -->
&#x10B;=&#x10B;  <!-- latin small letter c with dot above    -->
&#x10C;=&#x10C;  <!-- latin capital letter c with caron    -->
&#x10D;=&#x10D;  <!-- latin small letter c with caron    -->
&#x10E;=&#x10E;  <!-- latin capital letter d with caron    -->
&#x10F;=&#x10F;  <!-- latin small letter d with caron    -->
&#x110;=&#x110;  <!-- latin capital letter d with stroke    -->
&#x111;=&#x111;  <!-- latin small letter d with stroke    -->
&#x112;=&#x112;  <!-- latin capital letter e with macron    -->
&#x113;=&#x113;  <!-- latin small letter e with macron    -->
&#x114;=&#x114;  <!-- latin capital letter e with breve    -->
&#x115;=&#x115;  <!-- latin small letter e with breve    -->
&#x116;=&#x116;  <!-- latin capital letter e with dot above    -->
&#x117;=&#x117;  <!-- latin small letter e with dot above    -->
&#x118;=&#x118;  <!-- latin capital letter e with ogonek    -->
&#x119;=&#x119;  <!-- latin small letter e with ogonek    -->
&#x11A;=&#x11A;  <!-- latin capital letter e with caron    -->
&#x11B;=&#x11B;  <!-- latin small letter e with caron    -->
&#x11C;=&#x11C;  <!-- latin capital letter g with circumflex    -->
&#x11D;=&#x11D;  <!-- latin small letter g with circumflex    -->
&#x11E;=&#x11E;  <!-- latin capital letter g with breve    -->
&#x11F;=&#x11F;  <!-- latin small letter g with breve    -->
&#x120;=&#x120;  <!-- latin capital letter g with dot above    -->
&#x121;=&#x121;  <!-- latin small letter g with dot above    -->
&#x122;=&#x122;  <!-- latin capital letter g with cedilla    -->
&#x123;=&#x123;  <!-- latin small letter g with cedilla    -->
&#x124;=&#x124;  <!-- latin capital letter h with circumflex    -->
&#x125;=&#x125;  <!-- latin small letter h with circumflex    -->
&#x126;=&#x126;  <!-- latin capital letter h with stroke    -->
&#x127;=&#x127;  <!-- latin small letter h with stroke    -->
&#x128;=&#x128;  <!-- latin capital letter i with tilde    -->
&#x129;=&#x129;  <!-- latin small letter i with tilde    -->
&#x12A;=&#x12A;  <!-- latin capital letter i with macron    -->
&#x12B;=&#x12B;  <!-- latin small letter i with macron    -->
&#x12C;=&#x12C;  <!-- latin capital letter i with breve    -->
&#x12D;=&#x12D;  <!-- latin small letter i with breve    -->
&#x12E;=&#x12E;  <!-- latin capital letter i with ogonek    -->
&#x12F;=&#x12F;  <!-- latin small letter i with ogonek    -->
&#x130;=&#x130;  <!-- latin capital letter i with dot above    -->
&#x131;=&#x131;  <!-- latin small letter dotless i    -->
&#x132;=&#x132;  <!-- latin capital ligature ij    -->
&#x133;=&#x133;  <!-- latin small ligature ij    -->
&#x134;=&#x134;  <!-- latin capital letter j with circumflex    -->
&#x135;=&#x135;  <!-- latin small letter j with circumflex    -->
&#x136;=&#x136;  <!-- latin capital letter k with cedilla    -->
&#x137;=&#x137;  <!-- latin small letter k with cedilla    -->
&#x138;=&#x138;  <!-- latin small letter kra    -->
&#x139;=&#x139;  <!-- latin capital letter l with acute    -->
&#x13A;=&#x13A;  <!-- latin small letter l with acute    -->
&#x13B;=&#x13B;  <!-- latin capital letter l with cedilla    -->
&#x13C;=&#x13C;  <!-- latin small letter l with cedilla    -->
&#x13D;=&#x13D;  <!-- latin capital letter l with caron    -->
&#x13E;=&#x13E;  <!-- latin small letter l with caron    -->
&#x13F;=&#x13F;  <!-- latin capital letter l with middle dot    -->
&#x140;=&#x140;  <!-- latin small letter l with middle dot    -->
&#x141;=&#x141;  <!-- latin capital letter l with stroke    -->
&#x142;=&#x142;  <!-- latin small letter l with stroke    -->
&#x143;=&#x143;  <!-- latin capital letter n with acute    -->
&#x144;=&#x144;  <!-- latin small letter n with acute    -->
&#x145;=&#x145;  <!-- latin capital letter n with cedilla    -->
&#x146;=&#x146;  <!-- latin small letter n with cedilla    -->
&#x147;=&#x147;  <!-- latin capital letter n with caron    -->
&#x148;=&#x148;  <!-- latin small letter n with caron    -->
&#x149;=&#x149;  <!-- latin small letter n preceded by apostroPHE    -->
&#x14A;=&#x14A;  <!-- latin capital letter eng    -->
&#x14B;=&#x14B;  <!-- latin small letter eng    -->
&#x14C;=&#x14C;  <!-- latin capital letter o with macron    -->
&#x14D;=&#x14D;  <!-- latin small letter o with macron    -->
&#x14E;=&#x14E;  <!-- latin capital letter o with breve    -->
&#x14F;=&#x14F;  <!-- latin small letter o with breve    -->
&#x150;=&#x150;  <!-- latin capital letter o with double acute    -->
&#x151;=&#x151;  <!-- latin small letter o with double acute    -->
&#x152;=&#x152;  <!-- latin capital ligature oe    -->
&#x153;=&#x153;  <!-- latin small ligature oe    -->
&#x154;=&#x154;  <!-- latin capital letter r with acute    -->
&#x155;=&#x155;  <!-- latin small letter r with acute    -->
&#x156;=&#x156;  <!-- latin capital letter r with cedilla    -->
&#x157;=&#x157;  <!-- latin small letter r with cedilla    -->
&#x158;=&#x158;  <!-- latin capital letter r with caron    -->
&#x159;=&#x159;  <!-- latin small letter r with caron    -->
&#x15A;=&#x15A;  <!-- latin capital letter s with acute    -->
&#x15B;=&#x15B;  <!-- latin small letter s with acute    -->
&#x15C;=&#x15C;  <!-- latin capital letter s with circumflex    -->
&#x15D;=&#x15D;  <!-- latin small letter s with circumflex    -->
&#x15E;=&#x15E;  <!-- latin capital letter s with cedilla    -->
&#x15F;=&#x15F;  <!-- latin small letter s with cedilla    -->
&#x160;=&#x160;  <!-- latin capital letter s with caron    -->
&#x161;=&#x161;  <!-- latin small letter s with caron    -->
&#x162;=&#x162;  <!-- latin capital letter t with cedilla    -->
&#x163;=&#x163;  <!-- latin small letter t with cedilla    -->
&#x164;=&#x164;  <!-- latin capital letter t with caron    -->
&#x165;=&#x165;  <!-- latin small letter t with caron    -->
&#x166;=&#x166;  <!-- latin capital letter t with stroke    -->
&#x167;=&#x167;  <!-- latin small letter t with stroke    -->
&#x168;=&#x168;  <!-- latin capital letter u with tilde    -->
&#x169;=&#x169;  <!-- latin small letter u with tilde    -->
&#x16A;=&#x16A;  <!-- latin capital letter u with macron    -->
&#x16B;=&#x16B;  <!-- latin small letter u with macron    -->
&#x16C;=&#x16C;  <!-- latin capital letter u with breve    -->
&#x16D;=&#x16D;  <!-- latin small letter u with breve    -->
&#x16E;=&#x16E;  <!-- latin capital letter u with ring above    -->
&#x16F;=&#x16F;  <!-- latin small letter u with ring above    -->
&#x170;=&#x170;  <!-- latin capital letter u with double acute    -->
&#x171;=&#x171;  <!-- latin small letter u with double acute    -->
&#x172;=&#x172;  <!-- latin capital letter u with ogonek    -->
&#x173;=&#x173;  <!-- latin small letter u with ogonek    -->
&#x174;=&#x174;  <!-- latin capital letter w with circumflex    -->
&#x175;=&#x175;  <!-- latin small letter w with circumflex    -->
&#x176;=&#x176;  <!-- latin capital letter y with circumflex    -->
&#x177;=&#x177;  <!-- latin small letter y with circumflex    -->
&#x178;=&#x178;  <!-- latin capital letter y with diaeresis    -->
&#x179;=&#x179;  <!-- latin capital letter z with acute    -->
&#x17A;=&#x17A;  <!-- latin small letter z with acute    -->
&#x17B;=&#x17B;  <!-- latin capital letter z with dot above    -->
&#x17C;=&#x17C;  <!-- latin small letter z with dot above    -->
&#x17D;=&#x17D;  <!-- latin capital letter z with caron    -->
&#x17E;=&#x17E;  <!-- latin small letter z with caron    -->
&#x17F;=&#x17F;  <!-- latin small letter long s    -->
 
&#x180;=&#x180; <!-- LATIN SMALL LETTER B WITH STROKE LATIN SMALL LETTER B BAR        -->
&#x181;=&#x181; <!-- LATIN CAPITAL LETTER B WITH HOOK LATIN CAPITAL LETTER B HOOK        --> 
&#x182;=&#x182; <!-- LATIN CAPITAL LETTER B WITH TOPBAR LATIN CAPITAL LETTER B TOPBAR        --> 
&#x183;=&#x183; <!-- LATIN SMALL LETTER B WITH TOPBAR LATIN SMALL LETTER B TOPBAR        --> 
&#x184;=&#x184; <!-- LATIN CAPITAL LETTER TONE SIX              --> 
&#x185;=&#x185; <!-- LATIN SMALL LETTER TONE SIX              --> 
&#x186;=&#x186; <!-- LATIN CAPITAL LETTER OPEN O              --> 
&#x187;=&#x187; <!-- LATIN CAPITAL LETTER C WITH HOOK LATIN CAPITAL LETTER C HOOK        --> 
&#x188;=&#x188; <!-- LATIN SMALL LETTER C WITH HOOK LATIN SMALL LETTER C HOOK        --> 
&#x189;=&#x189; <!-- LATIN CAPITAL LETTER AFRICAN D              --> 
&#x18A;=&#x18A; <!-- LATIN CAPITAL LETTER D WITH HOOK LATIN CAPITAL LETTER D HOOK        --> 
&#x18B;=&#x18B; <!-- LATIN CAPITAL LETTER D WITH TOPBAR LATIN CAPITAL LETTER D TOPBAR        --> 
&#x18C;=&#x18C; <!-- LATIN SMALL LETTER D WITH TOPBAR LATIN SMALL LETTER D TOPBAR        --> 
&#x18D;=&#x18D; <!-- LATIN SMALL LETTER TURNED DELTA              --> 
&#x18E;=&#x18E; <!-- LATIN CAPITAL LETTER REVERSED E LATIN CAPITAL LETTER TURNED E         --> 
&#x18F;=&#x18F; <!-- LATIN CAPITAL LETTER SCHWA               --> 
&#x190;=&#x190; <!-- LATIN CAPITAL LETTER OPEN E LATIN CAPITAL LETTER EPSILON          -->
&#x191;=&#x191; <!-- LATIN CAPITAL LETTER F WITH HOOK LATIN CAPITAL LETTER F HOOK        -->
&#x192;=&#x192; <!-- LATIN SMALL LETTER F WITH HOOK LATIN SMALL LETTER SCRIPT F        -->
&#x193;=&#x193; <!-- LATIN CAPITAL LETTER G WITH HOOK LATIN CAPITAL LETTER G HOOK        -->
&#x194;=&#x194; <!-- LATIN CAPITAL LETTER GAMMA               -->
&#x195;=&#x195; <!-- LATIN SMALL LETTER HV LATIN SMALL LETTER H V          -->
&#x196;=&#x196; <!-- LATIN CAPITAL LETTER IOTA               -->
&#x197;=&#x197; <!-- LATIN CAPITAL LETTER I WITH STROKE LATIN CAPITAL LETTER BARRED I        -->
&#x198;=&#x198; <!-- LATIN CAPITAL LETTER K WITH HOOK LATIN CAPITAL LETTER K HOOK        -->
&#x199;=&#x199; <!-- LATIN SMALL LETTER K WITH HOOK LATIN SMALL LETTER K HOOK        -->
&#x19A;=&#x19A; <!-- LATIN SMALL LETTER L WITH BAR LATIN SMALL LETTER BARRED L        -->
&#x19B;=&#x19B; <!-- LATIN SMALL LETTER LAMBDA WITH STROKE LATIN SMALL LETTER BARRED LAMBDA        -->
&#x19C;=&#x19C; <!-- LATIN CAPITAL LETTER TURNED M              -->
&#x19D;=&#x19D; <!-- LATIN CAPITAL LETTER N WITH LEFT HOOK LATIN CAPITAL LETTER N HOOK       -->
&#x19E;=&#x19E; <!-- LATIN SMALL LETTER N WITH LONG RIGHT LEG           -->
&#x19F;=&#x19F; <!-- LATIN CAPITAL LETTER O WITH MIDDLE TILDE LATIN CAPITAL LETTER BARRED O       -->
&#x1A0;=&#x1A0; <!-- LATIN CAPITAL LETTER O WITH HORN LATIN CAPITAL LETTER O HORN        -->
&#x1A1;=&#x1A1; <!-- LATIN SMALL LETTER O WITH HORN LATIN SMALL LETTER O HORN        -->
&#x1A2;=&#x1A2; <!-- LATIN CAPITAL LETTER OI LATIN CAPITAL LETTER O I          -->
&#x1A3;=&#x1A3; <!-- LATIN SMALL LETTER OI LATIN SMALL LETTER O I          -->
&#x1A4;=&#x1A4; <!-- LATIN CAPITAL LETTER P WITH HOOK LATIN CAPITAL LETTER P HOOK        -->
&#x1A5;=&#x1A5; <!-- LATIN SMALL LETTER P WITH HOOK LATIN SMALL LETTER P HOOK        -->
&#x1A6;=&#x1A6; <!-- LATIN LETTER YR LATIN LETTER Y R            -->
&#x1A7;=&#x1A7; <!-- LATIN CAPITAL LETTER TONE TWO              -->
&#x1A8;=&#x1A8; <!-- LATIN SMALL LETTER TONE TWO              -->
&#x1A9;=&#x1A9; <!-- LATIN CAPITAL LETTER ESH               -->
&#x1AA;=&#x1AA; <!-- LATIN LETTER REVERSED ESH LOOP              -->
&#x1AB;=&#x1AB; <!-- LATIN SMALL LETTER T WITH PALATAL HOOK LATIN SMALL LETTER T PALATAL HOOK      -->
&#x1AC;=&#x1AC; <!-- LATIN CAPITAL LETTER T WITH HOOK LATIN CAPITAL LETTER T HOOK        -->
&#x1AD;=&#x1AD; <!-- LATIN SMALL LETTER T WITH HOOK LATIN SMALL LETTER T HOOK        -->
&#x1AE;=&#x1AE; <!-- LATIN CAPITAL LETTER T WITH RETROFLEX HOOK LATIN CAPITAL LETTER T RETROFLEX HOOK      -->
&#x1AF;=&#x1AF; <!-- LATIN CAPITAL LETTER U WITH HORN LATIN CAPITAL LETTER U HORN        -->
&#x1B0;=&#x1B0; <!-- LATIN SMALL LETTER U WITH HORN LATIN SMALL LETTER U HORN        -->
&#x1B1;=&#x1B1; <!-- LATIN CAPITAL LETTER UPSILON               -->
&#x1B2;=&#x1B2; <!-- LATIN CAPITAL LETTER V WITH HOOK LATIN CAPITAL LETTER SCRIPT V        -->
&#x1B3;=&#x1B3; <!-- LATIN CAPITAL LETTER Y WITH HOOK LATIN CAPITAL LETTER Y HOOK        -->
&#x1B4;=&#x1B4; <!-- LATIN SMALL LETTER Y WITH HOOK LATIN SMALL LETTER Y HOOK        -->
&#x1B5;=&#x1B5; <!-- LATIN CAPITAL LETTER Z WITH STROKE LATIN CAPITAL LETTER Z BAR        -->
&#x1B6;=&#x1B6; <!-- LATIN SMALL LETTER Z WITH STROKE LATIN SMALL LETTER Z BAR        -->
&#x1B7;=&#x1B7; <!-- LATIN CAPITAL LETTER EZH LATIN CAPITAL LETTER YOGH           -->
&#x1B8;=&#x1B8; <!-- LATIN CAPITAL LETTER EZH REVERSED LATIN CAPITAL LETTER REVERSED YOGH         -->
&#x1B9;=&#x1B9; <!-- LATIN SMALL LETTER EZH REVERSED LATIN SMALL LETTER REVERSED YOGH         -->
&#x1BA;=&#x1BA; <!-- LATIN SMALL LETTER EZH WITH TAIL LATIN SMALL LETTER YOGH WITH TAIL       -->
&#x1BB;=&#x1BB; <!-- LATIN LETTER TWO WITH STROKE LATIN LETTER TWO BAR          -->
&#x1BC;=&#x1BC; <!-- LATIN CAPITAL LETTER TONE FIVE              -->
&#x1BD;=&#x1BD; <!-- LATIN SMALL LETTER TONE FIVE              -->
&#x1BE;=&#x1BE; <!-- LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE LATIN LETTER INVERTED GLOTTAL STOP BAR      -->
&#x1BF;=&#x1BF; <!-- LATIN LETTER WYNN                -->
&#x1C0;=&#x1C0; <!-- LATIN LETTER DENTAL CLICK LATIN LETTER PIPE            -->
&#x1C1;=&#x1C1; <!-- LATIN LETTER LATERAL CLICK LATIN LETTER DOUBLE PIPE           -->
&#x1C2;=&#x1C2; <!-- LATIN LETTER ALVEOLAR CLICK LATIN LETTER PIPE DOUBLE BAR          -->
&#x1C4;=&#x1C4; <!-- LATIN CAPITAL LETTER DZ WITH CARON LATIN CAPITAL LETTER D Z HACEK       -->
&#x1C5;=&#x1C5; <!-- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON LATIN LETTER CAPITAL D SMALL Z HACEK  -->
&#x1C6;=&#x1C6; <!-- LATIN SMALL LETTER DZ WITH CARON LATIN SMALL LETTER D Z HACEK       -->
&#x1C7;=&#x1C7; <!-- LATIN CAPITAL LETTER LJ LATIN CAPITAL LETTER L J          -->
&#x1C8;=&#x1C8; <!-- LATIN CAPITAL LETTER L WITH SMALL LETTER J LATIN LETTER CAPITAL L SMALL J     -->
&#x1C9;=&#x1C9; <!-- LATIN SMALL LETTER LJ LATIN SMALL LETTER L J          -->
&#x1CA;=&#x1CA; <!-- LATIN CAPITAL LETTER NJ LATIN CAPITAL LETTER N J          -->
&#x1CB;=&#x1CB; <!-- LATIN CAPITAL LETTER N WITH SMALL LETTER J LATIN LETTER CAPITAL N SMALL J     -->
&#x1CC;=&#x1CC; <!-- LATIN SMALL LETTER NJ LATIN SMALL LETTER N J          -->
&#x1CD;=&#x1CD; <!-- LATIN CAPITAL LETTER A WITH CARON LATIN CAPITAL LETTER A HACEK        -->
&#x1CE;=&#x1CE; <!-- LATIN SMALL LETTER A WITH CARON LATIN SMALL LETTER A HACEK        -->
&#x1CF;=&#x1CF; <!-- LATIN CAPITAL LETTER I WITH CARON LATIN CAPITAL LETTER I HACEK        -->
&#x1D0;=&#x1D0; <!-- LATIN SMALL LETTER I WITH CARON LATIN SMALL LETTER I HACEK        -->
&#x1D1;=&#x1D1; <!-- LATIN CAPITAL LETTER O WITH CARON LATIN CAPITAL LETTER O HACEK        -->
&#x1D2;=&#x1D2; <!-- LATIN SMALL LETTER O WITH CARON LATIN SMALL LETTER O HACEK        -->
&#x1D3;=&#x1D3; <!-- LATIN CAPITAL LETTER U WITH CARON LATIN CAPITAL LETTER U HACEK        -->
&#x1D4;=&#x1D4; <!-- LATIN SMALL LETTER U WITH CARON LATIN SMALL LETTER U HACEK        -->
&#x1D5;=&#x1D5; <!-- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER U DIAERESIS MACRON     -->
&#x1D6;=&#x1D6; <!-- LATIN SMALL LETTER U WITH DIAERESIS AND MACRON LATIN SMALL LETTER U DIAERESIS MACRON     -->
&#x1D7;=&#x1D7; <!-- LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE LATIN CAPITAL LETTER U DIAERESIS ACUTE     -->
&#x1D8;=&#x1D8; <!-- LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE LATIN SMALL LETTER U DIAERESIS ACUTE     -->
&#x1D9;=&#x1D9; <!-- LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON LATIN CAPITAL LETTER U DIAERESIS HACEK     -->
&#x1DA;=&#x1DA; <!-- LATIN SMALL LETTER U WITH DIAERESIS AND CARON LATIN SMALL LETTER U DIAERESIS HACEK     -->
&#x1DB;=&#x1DB; <!-- LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE LATIN CAPITAL LETTER U DIAERESIS GRAVE     -->
&#x1DC;=&#x1DC; <!-- LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE LATIN SMALL LETTER U DIAERESIS GRAVE     -->
&#x1DD;=&#x1DD; <!-- LATIN SMALL LETTER TURNED E              -->
&#x1DE;=&#x1DE; <!-- LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER A DIAERESIS MACRON     -->
&#x1DF;=&#x1DF; <!-- LATIN SMALL LETTER A WITH DIAERESIS AND MACRON LATIN SMALL LETTER A DIAERESIS MACRON     -->
&#x1E0;=&#x1E0; <!-- LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON LATIN CAPITAL LETTER A DOT MACRON    -->
&#x1E1;=&#x1E1; <!-- LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON LATIN SMALL LETTER A DOT MACRON    -->
&#x1E2;=&#x1E2; <!-- LATIN CAPITAL LETTER AE WITH MACRON LATIN CAPITAL LETTER A E MACRON       -->
&#x1E3;=&#x1E3; <!-- LATIN SMALL LETTER AE WITH MACRON LATIN SMALL LETTER A E MACRON       -->
&#x1E4;=&#x1E4; <!-- LATIN CAPITAL LETTER G WITH STROKE LATIN CAPITAL LETTER G BAR        -->
&#x1E5;=&#x1E5; <!-- LATIN SMALL LETTER G WITH STROKE LATIN SMALL LETTER G BAR        -->
&#x1E6;=&#x1E6; <!-- LATIN CAPITAL LETTER G WITH CARON LATIN CAPITAL LETTER G HACEK        -->
&#x1E7;=&#x1E7; <!-- LATIN SMALL LETTER G WITH CARON LATIN SMALL LETTER G HACEK        -->
&#x1E8;=&#x1E8; <!-- LATIN CAPITAL LETTER K WITH CARON LATIN CAPITAL LETTER K HACEK        -->
&#x1E9;=&#x1E9; <!-- LATIN SMALL LETTER K WITH CARON LATIN SMALL LETTER K HACEK        -->
&#x1EA;=&#x1EA; <!-- LATIN CAPITAL LETTER O WITH OGONEK LATIN CAPITAL LETTER O OGONEK        -->
&#x1EB;=&#x1EB; <!-- LATIN SMALL LETTER O WITH OGONEK LATIN SMALL LETTER O OGONEK        -->
&#x1EC;=&#x1EC; <!-- LATIN CAPITAL LETTER O WITH OGONEK AND MACRON LATIN CAPITAL LETTER O OGONEK MACRON     -->
&#x1ED;=&#x1ED; <!-- LATIN SMALL LETTER O WITH OGONEK AND MACRON LATIN SMALL LETTER O OGONEK MACRON     -->
&#x1EE;=&#x1EE; <!-- LATIN CAPITAL LETTER EZH WITH CARON LATIN CAPITAL LETTER YOGH HACEK        -->
&#x1EF;=&#x1EF; <!-- LATIN SMALL LETTER EZH WITH CARON LATIN SMALL LETTER YOGH HACEK        -->
&#x1F0;=&#x1F0; <!-- LATIN SMALL LETTER J WITH CARON LATIN SMALL LETTER J HACEK        -->
&#x1F1;=&#x1F1; <!-- LATIN CAPITAL LETTER DZ               -->
&#x1F2;=&#x1F2; <!-- LATIN CAPITAL LETTER D WITH SMALL LETTER Z           -->
&#x1F3;=&#x1F3; <!-- LATIN SMALL LETTER DZ               -->
&#x1F4;=&#x1F4; <!-- LATIN CAPITAL LETTER G WITH ACUTE             -->
&#x1F5;=&#x1F5; <!-- LATIN SMALL LETTER G WITH ACUTE             -->
&#x1F6;=&#x1F6; <!-- LATIN CAPITAL LETTER HWAIR               -->
&#x1F7;=&#x1F7; <!-- LATIN CAPITAL LETTER WYNN               -->
&#x1F8;=&#x1F8; <!-- LATIN CAPITAL LETTER N WITH GRAVE             -->
&#x1F9;=&#x1F9; <!-- LATIN SMALL LETTER N WITH GRAVE             -->
&#x1FA;=&#x1FA; <!-- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE          -->
&#x1FB;=&#x1FB; <!-- LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE          -->
&#x1FC;=&#x1FC; <!-- LATIN CAPITAL LETTER AE WITH ACUTE             -->
&#x1FD;=&#x1FD; <!-- LATIN SMALL LETTER AE WITH ACUTE             -->
&#x1FE;=&#x1FE; <!-- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE           -->
&#x1FF;=&#x1FF; <!-- LATIN SMALL LETTER O WITH STROKE AND ACUTE           -->
&#x200;=&#x200; <!-- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE            -->
&#x201;=&#x201; <!-- LATIN SMALL LETTER A WITH DOUBLE GRAVE            -->
&#x202;=&#x202; <!-- LATIN CAPITAL LETTER A WITH INVERTED BREVE            -->
&#x203;=&#x203; <!-- LATIN SMALL LETTER A WITH INVERTED BREVE            -->
&#x204;=&#x204; <!-- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE            -->
&#x205;=&#x205; <!-- LATIN SMALL LETTER E WITH DOUBLE GRAVE            -->
&#x206;=&#x206; <!-- LATIN CAPITAL LETTER E WITH INVERTED BREVE            -->
&#x207;=&#x207; <!-- LATIN SMALL LETTER E WITH INVERTED BREVE            -->
&#x208;=&#x208; <!-- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE            -->
&#x209;=&#x209; <!-- LATIN SMALL LETTER I WITH DOUBLE GRAVE            -->
&#x20A;=&#x20A; <!-- LATIN CAPITAL LETTER I WITH INVERTED BREVE            -->
&#x20B;=&#x20B; <!-- LATIN SMALL LETTER I WITH INVERTED BREVE            -->
&#x20C;=&#x20C; <!-- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE            -->
&#x20D;=&#x20D; <!-- LATIN SMALL LETTER O WITH DOUBLE GRAVE            -->
&#x20E;=&#x20E; <!-- LATIN CAPITAL LETTER O WITH INVERTED BREVE            -->
&#x20F;=&#x20F; <!-- LATIN SMALL LETTER O WITH INVERTED BREVE            -->
&#x210;=&#x210; <!-- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE            -->
&#x211;=&#x211; <!-- LATIN SMALL LETTER R WITH DOUBLE GRAVE            -->
&#x212;=&#x212; <!-- LATIN CAPITAL LETTER R WITH INVERTED BREVE            -->
&#x213;=&#x213; <!-- LATIN SMALL LETTER R WITH INVERTED BREVE            -->
&#x214;=&#x214; <!-- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE            -->
&#x215;=&#x215; <!-- LATIN SMALL LETTER U WITH DOUBLE GRAVE            -->
&#x216;=&#x216; <!-- LATIN CAPITAL LETTER U WITH INVERTED BREVE            -->
&#x217;=&#x217; <!-- LATIN SMALL LETTER U WITH INVERTED BREVE            -->
&#x218;=&#x218; <!-- LATIN CAPITAL LETTER S WITH COMMA BELOW            -->
&#x219;=&#x219; <!-- LATIN SMALL LETTER S WITH COMMA BELOW            -->
&#x21A;=&#x21A; <!-- LATIN CAPITAL LETTER T WITH COMMA BELOW            -->
&#x21B;=&#x21B; <!-- LATIN SMALL LETTER T WITH COMMA BELOW            -->
&#x21C;=&#x21C; <!-- LATIN CAPITAL LETTER YOGH               -->
&#x21D;=&#x21D; <!-- LATIN SMALL LETTER YOGH               -->
&#x21E;=&#x21E; <!-- LATIN CAPITAL LETTER H WITH CARON             -->
&#x21F;=&#x21F; <!-- LATIN SMALL LETTER H WITH CARON             -->
&#x220;=&#x220; <!-- LATIN CAPITAL LETTER N WITH LONG RIGHT LEG           -->
&#x221;=&#x221; <!-- LATIN SMALL LETTER D WITH CURL             -->
&#x222;=&#x222; <!-- LATIN CAPITAL LETTER OU               -->
&#x223;=&#x223; <!-- LATIN SMALL LETTER OU               -->
&#x224;=&#x224; <!-- LATIN CAPITAL LETTER Z WITH HOOK             -->
&#x225;=&#x225; <!-- LATIN SMALL LETTER Z WITH HOOK             -->
&#x226;=&#x226; <!-- LATIN CAPITAL LETTER A WITH DOT ABOVE            -->
&#x227;=&#x227; <!-- LATIN SMALL LETTER A WITH DOT ABOVE            -->
&#x228;=&#x228; <!-- LATIN CAPITAL LETTER E WITH CEDILLA             -->
&#x229;=&#x229; <!-- LATIN SMALL LETTER E WITH CEDILLA             -->
&#x22A;=&#x22A; <!-- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON           -->
&#x22B;=&#x22B; <!-- LATIN SMALL LETTER O WITH DIAERESIS AND MACRON           -->
&#x22C;=&#x22C; <!-- LATIN CAPITAL LETTER O WITH TILDE AND MACRON           -->
&#x22D;=&#x22D; <!-- LATIN SMALL LETTER O WITH TILDE AND MACRON           -->
&#x22E;=&#x22E; <!-- LATIN CAPITAL LETTER O WITH DOT ABOVE            -->
&#x22F;=&#x22F; <!-- LATIN SMALL LETTER O WITH DOT ABOVE            -->
&#x230;=&#x230; <!-- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON          -->
&#x231;=&#x231; <!-- LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON          -->
&#x232;=&#x232; <!-- LATIN CAPITAL LETTER Y WITH MACRON             -->
&#x233;=&#x233; <!-- LATIN SMALL LETTER Y WITH MACRON             -->
&#x234;=&#x234; <!-- LATIN SMALL LETTER L WITH CURL             -->
&#x235;=&#x235; <!-- LATIN SMALL LETTER N WITH CURL             -->
&#x236;=&#x236; <!-- LATIN SMALL LETTER T WITH CURL             -->
&#x237;=&#x237; <!-- LATIN SMALL LETTER DOTLESS J              -->
&#x238;=&#x238; <!-- LATIN SMALL LETTER DB DIGRAPH              -->
&#x239;=&#x239; <!-- LATIN SMALL LETTER QP DIGRAPH              -->
&#x23A;=&#x23A; <!-- LATIN CAPITAL LETTER A WITH STROKE             -->
&#x23B;=&#x23B; <!-- LATIN CAPITAL LETTER C WITH STROKE             -->
&#x23C;=&#x23C; <!-- LATIN SMALL LETTER C WITH STROKE             -->
&#x23D;=&#x23D; <!-- LATIN CAPITAL LETTER L WITH BAR             -->
&#x23E;=&#x23E; <!-- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE            -->
&#x23F;=&#x23F; <!-- LATIN SMALL LETTER S WITH SWASH TAIL            -->
&#x240;=&#x240; <!-- LATIN SMALL LETTER Z WITH SWASH TAIL            -->
&#x241;=&#x241; <!-- LATIN CAPITAL LETTER GLOTTAL STOP              -->
&#x250;=&#x250; <!-- LATIN SMALL LETTER TURNED A              -->
&#x251;=&#x251; <!-- LATIN SMALL LETTER ALPHA LATIN SMALL LETTER SCRIPT A          -->
&#x252;=&#x252; <!-- LATIN SMALL LETTER TURNED ALPHA LATIN SMALL LETTER TURNED SCRIPT A        -->
&#x253;=&#x253; <!-- LATIN SMALL LETTER B WITH HOOK LATIN SMALL LETTER B HOOK        -->
&#x254;=&#x254; <!-- LATIN SMALL LETTER OPEN O              -->
&#x255;=&#x255; <!-- LATIN SMALL LETTER C WITH CURL LATIN SMALL LETTER C CURL        -->
&#x256;=&#x256; <!-- LATIN SMALL LETTER D WITH TAIL LATIN SMALL LETTER D RETROFLEX HOOK       -->
&#x257;=&#x257; <!-- LATIN SMALL LETTER D WITH HOOK LATIN SMALL LETTER D HOOK        -->
&#x258;=&#x258; <!-- LATIN SMALL LETTER REVERSED E              -->
&#x259;=&#x259; <!-- LATIN SMALL LETTER SCHWA               -->
&#x25A;=&#x25A; <!-- LATIN SMALL LETTER SCHWA WITH HOOK LATIN SMALL LETTER SCHWA HOOK        -->
&#x25B;=&#x25B; <!-- LATIN SMALL LETTER OPEN E LATIN SMALL LETTER EPSILON          -->
&#x25C;=&#x25C; <!-- LATIN SMALL LETTER REVERSED OPEN E LATIN SMALL LETTER REVERSED EPSILON        -->
&#x25D;=&#x25D; <!-- LATIN SMALL LETTER REVERSED OPEN E WITH HOOK LATIN SMALL LETTER REVERSED EPSILON HOOK     -->
&#x25E;=&#x25E; <!-- LATIN SMALL LETTER CLOSED REVERSED OPEN E LATIN SMALL LETTER CLOSED REVERSED EPSILON      -->
&#x25F;=&#x25F; <!-- LATIN SMALL LETTER DOTLESS J WITH STROKE LATIN SMALL LETTER DOTLESS J BAR      -->
&#x260;=&#x260; <!-- LATIN SMALL LETTER G WITH HOOK LATIN SMALL LETTER G HOOK        -->
&#x261;=&#x261; <!-- LATIN SMALL LETTER SCRIPT G              -->
&#x262;=&#x262; <!-- LATIN LETTER SMALL CAPITAL G              -->
&#x263;=&#x263; <!-- LATIN SMALL LETTER GAMMA               -->
&#x264;=&#x264; <!-- LATIN SMALL LETTER RAMS HORN LATIN SMALL LETTER BABY GAMMA         -->
&#x265;=&#x265; <!-- LATIN SMALL LETTER TURNED H              -->
&#x266;=&#x266; <!-- LATIN SMALL LETTER H WITH HOOK LATIN SMALL LETTER H HOOK        -->
&#x267;=&#x267; <!-- LATIN SMALL LETTER HENG WITH HOOK LATIN SMALL LETTER HENG HOOK        -->
&#x268;=&#x268; <!-- LATIN SMALL LETTER I WITH STROKE LATIN SMALL LETTER BARRED I        -->
&#x269;=&#x269; <!-- LATIN SMALL LETTER IOTA               -->
&#x26A;=&#x26A; <!-- LATIN LETTER SMALL CAPITAL I              -->
&#x26B;=&#x26B; <!-- LATIN SMALL LETTER L WITH MIDDLE TILDE            -->
&#x26C;=&#x26C; <!-- LATIN SMALL LETTER L WITH BELT LATIN SMALL LETTER L BELT        -->
&#x26D;=&#x26D; <!-- LATIN SMALL LETTER L WITH RETROFLEX HOOK LATIN SMALL LETTER L RETROFLEX HOOK      -->
&#x26E;=&#x26E; <!-- LATIN SMALL LETTER LEZH LATIN SMALL LETTER L YOGH          -->
&#x26F;=&#x26F; <!-- LATIN SMALL LETTER TURNED M              -->
&#x270;=&#x270; <!-- LATIN SMALL LETTER TURNED M WITH LONG LEG           -->
&#x271;=&#x271; <!-- LATIN SMALL LETTER M WITH HOOK LATIN SMALL LETTER M HOOK        -->
&#x272;=&#x272; <!-- LATIN SMALL LETTER N WITH LEFT HOOK LATIN SMALL LETTER N HOOK       -->
&#x273;=&#x273; <!-- LATIN SMALL LETTER N WITH RETROFLEX HOOK LATIN SMALL LETTER N RETROFLEX HOOK      -->
&#x274;=&#x274; <!-- LATIN LETTER SMALL CAPITAL N              -->
&#x275;=&#x275; <!-- LATIN SMALL LETTER BARRED O              -->
&#x276;=&#x276; <!-- LATIN LETTER SMALL CAPITAL OE LATIN LETTER SMALL CAPITAL O E        -->
&#x277;=&#x277; <!-- LATIN SMALL LETTER CLOSED OMEGA              -->
&#x278;=&#x278; <!-- LATIN SMALL LETTER PHI               -->
&#x279;=&#x279; <!-- LATIN SMALL LETTER TURNED R              -->
&#x27A;=&#x27A; <!-- LATIN SMALL LETTER TURNED R WITH LONG LEG           -->
&#x27B;=&#x27B; <!-- LATIN SMALL LETTER TURNED R WITH HOOK LATIN SMALL LETTER TURNED R HOOK      -->
&#x27C;=&#x27C; <!-- LATIN SMALL LETTER R WITH LONG LEG            -->
&#x27D;=&#x27D; <!-- LATIN SMALL LETTER R WITH TAIL LATIN SMALL LETTER R HOOK        -->
&#x27E;=&#x27E; <!-- LATIN SMALL LETTER R WITH FISHHOOK LATIN SMALL LETTER FISHHOOK R        -->
&#x27F;=&#x27F; <!-- LATIN SMALL LETTER REVERSED R WITH FISHHOOK LATIN SMALL LETTER REVERSED FISHHOOK R      -->
 
&#x300;=&#x300; <!--  COMBINING GRAVE ACCENT -->
&#x301;=&#x301; <!--  COMBINING ACUTE ACCENT --> 
&#x302;=&#x302; <!--  COMBINING CIRCUMFLEX ACCENT --> 
&#x303;=&#x303; <!--  COMBINING TILDE   --> 
&#x304;=&#x304; <!--  COMBINING MACRON   --> 
&#x305;=&#x305; <!--  COMBINING OVERLINE   --> 
&#x306;=&#x306; <!--  COMBINING BREVE   --> 
&#x307;=&#x307; <!--  COMBINING DOT ABOVE --> 
&#x308;=&#x308; <!--  COMBINING DIAERESIS   --> 
&#x309;=&#x309; <!--  COMBINING HOOK ABOVE --> 
&#x30A;=&#x30A; <!--  COMBINING RING ABOVE --> 
&#x30B;=&#x30B; <!--  COMBINING DOUBLE ACUTE ACCENT  --> 
&#x30C;=&#x30C; <!--  COMBINING CARON   --> 
&#x30D;=&#x30D; <!--  COMBINING VERTICAL LINE ABOVE  --> 
&#x30F;=&#x30F; <!--  COMBINING DOUBLE GRAVE ACCENT  --> 
&#x310;=&#x310; <!--  COMBINING CANDRABINDU   --> 
&#x311;=&#x311; <!--  COMBINING INVERTED BREVE -->
&#x312;=&#x312; <!--  COMBINING TURNED COMMA ABOVE  -->
&#x313;=&#x313; <!--  COMBINING COMMA ABOVE -->
&#x314;=&#x314; <!--  COMBINING REVERSED COMMA ABOVE  -->
&#x315;=&#x315; <!--  COMBINING COMMA ABOVE RIGHT  -->
&#x316;=&#x316; <!--  COMBINING GRAVE ACCENT BELOW  -->
&#x317;=&#x317; <!--  COMBINING ACUTE ACCENT BELOW  -->
&#x318;=&#x318; <!--  COMBINING LEFT TACK BELOW  -->
&#x319;=&#x319; <!--  COMBINING RIGHT TACK BELOW  -->
&#x31A;=&#x31A; <!--  COMBINING LEFT ANGLE ABOVE  -->
&#x31B;=&#x31B; <!--  COMBINING HORN   -->
&#x31C;=&#x31C; <!--  COMBINING LEFT HALF RING BELOW; -->
&#x31D;=&#x31D; <!--  COMBINING UP TACK BELOW  -->
&#x31E;=&#x31E; <!--  COMBINING DOWN TACK BELOW  -->
&#x31F;=&#x31F; <!--  COMBINING PLUS SIGN BELOW  -->
&#x320;=&#x320; <!--  COMBINING MINUS SIGN BELOW  -->
&#x321;=&#x321; <!--  COMBINING PALATALIZED HOOK BELOW  -->
&#x322;=&#x322; <!--  COMBINING RETROFLEX HOOK BELOW  -->
&#x323;=&#x323; <!--  COMBINING DOT BELOW -->
&#x324;=&#x324; <!--  COMBINING DIAERESIS BELOW -->
&#x325;=&#x325; <!--  COMBINING RING BELOW -->
&#x326;=&#x326; <!--  COMBINING COMMA;BELOW -->
&#x327;=&#x327; <!--  COMBINING CEDILLA   -->
&#x328;=&#x328; <!--  COMBINING OGONEK   -->
&#x329;=&#x329; <!--  COMBINING VERTICAL LINE BELOW  -->
&#x32A;=&#x32A; <!--  COMBINING BRIDGE BELOW -->
&#x32B;=&#x32B; <!--  COMBINING INVERTED DOUBLE ARCH;BELOW; -->
&#x32C;=&#x32C; <!--  COMBINING CARON BELOW -->
&#x32D;=&#x32D; <!--  COMBINING CIRCUMFLEX ACCENT BELOW  -->
&#x32E;=&#x32E; <!--  COMBINING BREVE BELOW -->
&#x32F;=&#x32F; <!--  COMBINING INVERTED BREVE BELOW  -->
&#x330;=&#x330; <!--  COMBINING TILDE BELOW -->
&#x331;=&#x331; <!--  COMBINING MACRON BELOW -->
&#x332;=&#x332; <!--  COMBINING LOW LINE -->
&#x333;=&#x333; <!--  COMBINING DOUBLE LOW LINE  -->
&#x334;=&#x334; <!--  COMBINING TILDE;OVERLAY -->
&#x335;=&#x335; <!--  COMBINING SHORT STROKE;OVERLAY  -->
&#x336;=&#x336; <!--  COMBINING LONG STROKE;OVERLAY  -->
&#x337;=&#x337; <!--  COMBINING SHORT SOLIDUS OVERLAY  -->
&#x338;=&#x338; <!--  COMBINING LONG SOLIDUS OVERLAY  -->
&#x339;=&#x339; <!--  COMBINING RIGHT HALF RING BELOW; -->
&#x33A;=&#x33A; <!--  COMBINING INVERTED BRIDGE BELOW  -->
&#x33B;=&#x33B; <!--  COMBINING SQUARE BELOW -->
&#x33C;=&#x33C; <!--  COMBINING SEAGULL BELOW -->
&#x33D;=&#x33D; <!--  COMBINING X ABOVE -->
&#x33E;=&#x33E; <!--  COMBINING VERTICAL TILDE -->
&#x33F;=&#x33F; <!--  COMBINING DOUBLE;OVERLINE -->
&#x340;=&#x340; <!--  COMBINING GRAVE;TONE;MARK  -->
&#x341;=&#x341; <!--  COMBINING ACUTE;TONE;MARK  -->
&#x342;=&#x342; <!--  COMBINING GREEK PERISPOMENI -->
&#x343;=&#x343; <!--  COMBINING GREEK KORONIS -->
&#x344;=&#x344; <!--  COMBINING GREEK DIALYTIKA;TONOS  -->
&#x345;=&#x345; <!--  COMBINING GREEK YPOGEGRAMMENI -->
&#x346;=&#x346; <!--  COMBINING BRIDGE ABOVE -->
&#x347;=&#x347; <!--  COMBINING EQUALS SIGN BELOW  -->
&#x348;=&#x348; <!--  COMBINING DOUBLE;VERTICAL LINE BELOW; -->
&#x349;=&#x349; <!--  COMBINING LEFT ANGLE BELOW  -->
&#x34A;=&#x34A; <!--  COMBINING NOT TILDE ABOVE  -->
&#x34B;=&#x34B; <!--  COMBINING HOMOTHETIC ABOVE -->
&#x34C;=&#x34C; <!--  COMBINING ALMOST EQUAL TO ABOVE; -->
&#x34D;=&#x34D; <!--  COMBINING LEFT RIGHT ARROW;BELOW; -->
&#x34E;=&#x34E; <!--  COMBINING UPWARDS ARROW;BELOW  -->
&#x34F;=&#x34F; <!--  COMBINING GRAPHEME;JOINER -->
&#x350;=&#x350; <!--  COMBINING RIGHT ARROWHEAD ABOVE  -->
&#x351;=&#x351; <!--  COMBINING LEFT HALF RING ABOVE; -->
&#x352;=&#x352; <!--  COMBINING FERMATA   -->
&#x353;=&#x353; <!--  COMBINING X;BELOW -->
&#x354;=&#x354; <!--  COMBINING LEFT ARROWHEAD BELOW  -->
&#x355;=&#x355; <!--  COMBINING RIGHT ARROWHEAD BELOW  -->
&#x356;=&#x356; <!--  COMBINING RIGHT ARROWHEAD AND UP BELOW -->
&#x357;=&#x357; <!--  COMBINING RIGHT HALF RING ABOVE -->
&#x358;=&#x358; <!--  COMBINING DOT ABOVE RIGHT  -->
&#x359;=&#x359; <!--  COMBINING ASTERISK BELOW -->
&#x35A;=&#x35A; <!--  COMBINING DOUBLE RING BELOW  -->
&#x35B;=&#x35B; <!--  COMBINING ZIGZAG ABOVE -->
&#x35C;=&#x35C; <!--  COMBINING DOUBLE BREVE BELOW  -->
&#x35D;=&#x35D; <!--  COMBINING DOUBLE BREVE -->
&#x35E;=&#x35E; <!--  COMBINING DOUBLE;MACRON -->
&#x35F;=&#x35F; <!--  COMBINING DOUBLE;MACRON BELOW  -->
&#x360;=&#x360; <!--  COMBINING DOUBLE;TILDE -->
&#x361;=&#x361; <!--  COMBINING DOUBLE;INVERTED BREVE  -->
&#x362;=&#x362; <!--  COMBINING DOUBLE RIGHTWARDS ARROW BELOW  -->
&#x363;=&#x363; <!--  COMBINING LATIN SMALL LETTER A  -->
&#x364;=&#x364; <!--  COMBINING LATIN SMALL LETTER E  -->
&#x365;=&#x365; <!--  COMBINING LATIN SMALL LETTER I -->
&#x366;=&#x366; <!--  COMBINING LATIN SMALL LETTER O  -->
&#x367;=&#x367; <!--  COMBINING LATIN SMALL LETTER U  -->
&#x368;=&#x368; <!--  COMBINING LATIN SMALL LETTER C  -->
&#x369;=&#x369; <!--  COMBINING LATIN SMALL LETTER D  -->
&#x36A;=&#x36A; <!--  COMBINING LATIN SMALL LETTER H  -->
&#x36B;=&#x36B; <!--  COMBINING LATIN SMALL LETTER M  -->
&#x36C;=&#x36C; <!--  COMBINING LATIN SMALL LETTER R  -->
&#x36D;=&#x36D; <!--  COMBINING LATIN SMALL LETTER T  -->
&#x36E;=&#x36E; <!--  COMBINING LATIN SMALL LETTER V  -->
&#x36F;=&#x36F; <!--  COMBINING LATIN SMALL LETTER X  -->
&#x374;=&#x374; <!--  GREEK NUMERAL SIGN -->
&#x375;=&#x375; <!--  GREEK LOWER NUMERAL SIGN  -->
&#x37A;=&#x37A; <!--  GREEK YPOGEGRAMMENI   -->
&#x384;=&#x384; <!--  GREEK TONOS   --> 
&#x385;=&#x385; <!--  GREEK DIALYTIKA;TONOS --> 
&#x386;=&#x386; <!--  GREEK CAPITAL LETTER ALPHA WITH  --> 
&#x387;=&#x387; <!--  GREEK ANO;TELEIA --> 
&#x388;=&#x388; <!--  GREEK CAPITAL LETTER EPSILON WITH  --> 
&#x389;=&#x389; <!--  GREEK CAPITAL LETTER ETA WITH  --> 
&#x38A;=&#x38A; <!--  GREEK CAPITAL LETTER IOTA WITH  --> 
&#x38C;=&#x38C; <!--  GREEK CAPITAL LETTER OMICRON WITH  --> 
&#x38E;=&#x38E; <!--  GREEK CAPITAL LETTER UPSILON WITH  --> 
&#x38F;=&#x38F; <!--  GREEK CAPITAL LETTER OMEGA WITH  --> 
&#x390;=&#x390; <!--  GREEK SMALL LETTER IOTA WITH AND;TONOS -->
&#x391;=&#x391; <!--  GREEK CAPITAL LETTER ALPHA  -->
&#x392;=&#x392; <!--  GREEK CAPITAL LETTER BETA  -->
&#x393;=&#x393; <!--  GREEK CAPITAL LETTER GAMMA  -->
&#x394;=&#x394; <!--  GREEK CAPITAL LETTER DELTA  -->
&#x395;=&#x395; <!--  GREEK CAPITAL LETTER EPSILON  -->
&#x396;=&#x396; <!--  GREEK CAPITAL LETTER ZETA  -->
&#x397;=&#x397; <!--  GREEK CAPITAL LETTER ETA  -->
&#x398;=&#x398; <!--  GREEK CAPITAL LETTER THETA  -->
&#x399;=&#x399; <!--  GREEK CAPITAL LETTER IOTA  -->
&#x39A;=&#x39A; <!--  GREEK CAPITAL LETTER KAPPA  -->
&#x39B;=&#x39B; <!--  GREEK CAPITAL LETTER LAMDA  -->
&#x39C;=&#x39C; <!--  GREEK CAPITAL LETTER MU  -->
&#x39D;=&#x39D; <!--  GREEK CAPITAL LETTER NU  -->
&#x39E;=&#x39E; <!--  GREEK CAPITAL LETTER XI  -->
&#x39F;=&#x39F; <!--  GREEK CAPITAL LETTER OMICRON  -->
&#x3A0;=&#x3A0; <!--  GREEK CAPITAL LETTER PI  -->
&#x3A1;=&#x3A1; <!--  GREEK CAPITAL LETTER RHO  --> 
&#x3A3;=&#x3A3; <!--  GREEK CAPITAL LETTER SIGMA  --> 
&#x3A4;=&#x3A4; <!--  GREEK CAPITAL LETTER TAU  --> 
&#x3A5;=&#x3A5; <!--  GREEK CAPITAL LETTER UPSILON  --> 
&#x3A6;=&#x3A6; <!--  GREEK CAPITAL LETTER PHI  --> 
&#x3A7;=&#x3A7; <!--  GREEK CAPITAL LETTER CHI  --> 
&#x3A8;=&#x3A8; <!--  GREEK CAPITAL LETTER PSI  --> 
&#x3A9;=&#x3A9; <!--  GREEK CAPITAL LETTER OMEGA  --> 
&#x3AA;=&#x3AA; <!--  GREEK CAPITAL LETTER IOTA WITH  --> 
&#x3AB;=&#x3AB; <!--  GREEK CAPITAL LETTER UPSILON WITH  --> 
&#x3AC;=&#x3AC; <!--  GREEK SMALL LETTER ALPHA WITH  --> 
&#x3AD;=&#x3AD; <!--  GREEK SMALL LETTER EPSILON WITH  --> 
&#x3AE;=&#x3AE; <!--  GREEK SMALL LETTER ETA WITH  --> 
&#x3AF;=&#x3AF; <!--  GREEK SMALL LETTER IOTA WITH  --> 
&#x3B0;=&#x3B0; <!--  GREEK SMALL LETTER UPSILON WITH AND;TONOS -->
&#x3B1;=&#x3B1; <!--  GREEK SMALL LETTER ALPHA  -->
&#x3B2;=&#x3B2; <!--  GREEK SMALL LETTER BETA  -->
&#x3B3;=&#x3B3; <!--  GREEK SMALL LETTER GAMMA  -->
&#x3B4;=&#x3B4; <!--  GREEK SMALL LETTER DELTA  -->
&#x3B5;=&#x3B5; <!--  GREEK SMALL LETTER EPSILON  -->
&#x3B6;=&#x3B6; <!--  GREEK SMALL LETTER ZETA  -->
&#x3B7;=&#x3B7; <!--  GREEK SMALL LETTER ETA  -->
&#x3B8;=&#x3B8; <!--  GREEK SMALL LETTER THETA  -->
&#x3B9;=&#x3B9; <!--  GREEK SMALL LETTER IOTA  -->
&#x3BA;=&#x3BA; <!--  GREEK SMALL LETTER KAPPA  -->
&#x3BB;=&#x3BB; <!--  GREEK SMALL LETTER LAMDA  -->
&#x3BC;=&#x3BC; <!--  GREEK SMALL LETTER MU  -->
&#x3BD;=&#x3BD; <!--  GREEK SMALL LETTER NU  -->
&#x3BE;=&#x3BE; <!--  GREEK SMALL LETTER XI  -->
&#x3BF;=&#x3BF; <!--  GREEK SMALL LETTER OMICRON  -->
&#x3C0;=&#x3C0; <!--  GREEK SMALL LETTER PI  -->
&#x3C1;=&#x3C1; <!--  GREEK SMALL LETTER RHO  -->
&#x3C2;=&#x3C2; <!--  GREEK SMALL LETTER FINAL SIGMA; -->
&#x3C3;=&#x3C3; <!--  GREEK SMALL LETTER SIGMA  -->
&#x3C4;=&#x3C4; <!--  GREEK SMALL LETTER TAU  -->
&#x3C5;=&#x3C5; <!--  GREEK SMALL LETTER UPSILON  -->
&#x3C6;=&#x3C6; <!--  GREEK SMALL LETTER PHI  -->
&#x3C7;=&#x3C7; <!--  GREEK SMALL LETTER CHI  -->
&#x3C8;=&#x3C8; <!--  GREEK SMALL LETTER PSI  -->
&#x3C9;=&#x3C9; <!--  GREEK SMALL LETTER OMEGA  -->
&#x3CA;=&#x3CA; <!--  GREEK SMALL LETTER IOTA WITH  -->
&#x3CB;=&#x3CB; <!--  GREEK SMALL LETTER UPSILON WITH  -->
&#x3CC;=&#x3CC; <!--  GREEK SMALL LETTER OMICRON WITH  -->
&#x3CD;=&#x3CD; <!--  GREEK SMALL LETTER UPSILON WITH  -->
&#x3CE;=&#x3CE; <!--  GREEK SMALL LETTER OMEGA WITH  -->
&#x3D0;=&#x3D0; <!--  GREEK BETA SYMBOL -->
&#x3D1;=&#x3D1; <!--  GREEK THETA SYMBOL -->
&#x3D2;=&#x3D2; <!--  GREEK UPSILON WITH HOOK SYMBOL  -->
&#x3D3;=&#x3D3; <!--  GREEK UPSILON WITH ACUTE AND SYMBOL -->
&#x3D4;=&#x3D4; <!--  GREEK UPSILON WITH DIAERESIS AND SYMBOL -->
&#x3D5;=&#x3D5; <!--  GREEK PHI SYMBOL -->
&#x3D6;=&#x3D6; <!--  GREEK PI SYMBOL -->
&#x3D7;=&#x3D7; <!--  GREEK KAI SYMBOL -->
&#x3D8;=&#x3D8; <!--  GREEK LETTER ARCHAIC KOPPA  -->
&#x3D9;=&#x3D9; <!--  GREEK SMALL LETTER ARCHAIC KOPPA; -->
&#x3DA;=&#x3DA; <!--  GREEK LETTER STIGMA -->
&#x3DB;=&#x3DB; <!--  GREEK SMALL LETTER STIGMA  -->
&#x3DC;=&#x3DC; <!--  GREEK LETTER DIGAMMA -->
&#x3DD;=&#x3DD; <!--  GREEK SMALL LETTER DIGAMMA  -->
&#x3DE;=&#x3DE; <!--  GREEK LETTER KOPPA -->
&#x3DF;=&#x3DF; <!--  GREEK SMALL LETTER KOPPA  -->
&#x3E0;=&#x3E0; <!--  GREEK LETTER SAMPI -->
&#x3E1;=&#x3E1; <!--  GREEK SMALL LETTER SAMPI  -->
&#x3E2;=&#x3E2; <!--  COPTIC CAPITAL LETTER SHEI  -->
&#x3E3;=&#x3E3; <!--  COPTIC SMALL LETTER SHEI  -->
&#x3E4;=&#x3E4; <!--  COPTIC CAPITAL LETTER FEI  -->
&#x3E5;=&#x3E5; <!--  COPTIC SMALL LETTER FEI  -->
&#x3E6;=&#x3E6; <!--  COPTIC CAPITAL LETTER KHEI  -->
&#x3E7;=&#x3E7; <!--  COPTIC SMALL LETTER KHEI  -->
&#x3E8;=&#x3E8; <!--  COPTIC CAPITAL LETTER HORI  -->
&#x3E9;=&#x3E9; <!--  COPTIC SMALL LETTER HORI  -->
&#x3EA;=&#x3EA; <!--  COPTIC CAPITAL LETTER GANGIA  -->
&#x3EB;=&#x3EB; <!--  COPTIC SMALL LETTER GANGIA  -->
&#x3EC;=&#x3EC; <!--  COPTIC CAPITAL LETTER SHIMA  -->
&#x3ED;=&#x3ED; <!--  COPTIC SMALL LETTER SHIMA  -->
&#x3EE;=&#x3EE; <!--  COPTIC CAPITAL LETTER DEI  -->
&#x3EF;=&#x3EF; <!--  COPTIC SMALL LETTER DEI  -->
&#x3F3;=&#x3F3; <!--  GREEK LETTER YOT -->
&#x3F7;=&#x3F7; <!--  GREEK CAPITAL LETTER SHO  -->
&#x3F8;=&#x3F8; <!--  GREEK SMALL LETTER SHO  -->
&#x3F9;=&#x3F9; <!--  GREEK CAPITAL LUNATE SIGMA SYMBOL  -->
&#x3FA;=&#x3FA; <!--  GREEK CAPITAL LETTER SAN  -->
&#x3FB;=&#x3FB; <!--  GREEK SMALL LETTER SAN  -->
&#x3FD;=&#x3FD; <!--  GREEK CAPITAL REVERSED LUNATE SIGMA; -->
&#x3FE;=&#x3FE; <!--  GREEK CAPITAL DOTTED LUNATE SIGMA; -->
&#x3FF;=&#x3FF; <!--  GREEK CAPITAL REVERSED DOTTED LUNATE SYMBOL -->
 
&#x400;=&#x400; <!--  CYRILLIC CAPITAL LETTER IE WITH  -->
&#x401;=&#x401; <!--  CYRILLIC CAPITAL LETTER IO  -->
&#x402;=&#x402; <!--  CYRILLIC CAPITAL LETTER DJE  -->
&#x403;=&#x403; <!--  CYRILLIC CAPITAL LETTER GJE  -->
&#x404;=&#x404; <!--  CYRILLIC CAPITAL LETTER UKRAINIAN IE  -->
&#x405;=&#x405; <!--  CYRILLIC CAPITAL LETTER DZE  -->
&#x406;=&#x406; <!--  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I  -->
&#x407;=&#x407; <!--  CYRILLIC CAPITAL LETTER YI  -->
&#x408;=&#x408; <!--  CYRILLIC CAPITAL LETTER JE  -->
&#x409;=&#x409; <!--  CYRILLIC CAPITAL LETTER LJE  -->
&#x40A;=&#x40A; <!--  CYRILLIC CAPITAL LETTER NJE  -->
&#x40B;=&#x40B; <!--  CYRILLIC CAPITAL LETTER TSHE  -->
&#x40C;=&#x40C; <!--  CYRILLIC CAPITAL LETTER KJE  -->
&#x40D;=&#x40D; <!--  CYRILLIC CAPITAL LETTER I WITH  -->
&#x40E;=&#x40E; <!--  CYRILLIC CAPITAL LETTER SHORT U  -->
&#x40F;=&#x40F; <!--  CYRILLIC CAPITAL LETTER DZHE  -->
&#x410;=&#x410; <!--  CYRILLIC CAPITAL LETTER A  -->
&#x411;=&#x411; <!--  CYRILLIC CAPITAL LETTER BE  -->
&#x412;=&#x412; <!--  CYRILLIC CAPITAL LETTER VE  -->
&#x413;=&#x413; <!--  CYRILLIC CAPITAL LETTER GHE  -->
&#x414;=&#x414; <!--  CYRILLIC CAPITAL LETTER DE  -->
&#x415;=&#x415; <!--  CYRILLIC CAPITAL LETTER IE  -->
&#x416;=&#x416; <!--  CYRILLIC CAPITAL LETTER ZHE  -->
&#x417;=&#x417; <!--  CYRILLIC CAPITAL LETTER ZE  -->
&#x418;=&#x418; <!--  CYRILLIC CAPITAL LETTER I  -->
&#x419;=&#x419; <!--  CYRILLIC CAPITAL LETTER SHORT I; -->
&#x41A;=&#x41A; <!--  CYRILLIC CAPITAL LETTER KA  -->
&#x41B;=&#x41B; <!--  CYRILLIC CAPITAL LETTER EL  -->
&#x41C;=&#x41C; <!--  CYRILLIC CAPITAL LETTER EM  -->
&#x41D;=&#x41D; <!--  CYRILLIC CAPITAL LETTER EN  -->
&#x41E;=&#x41E; <!--  CYRILLIC CAPITAL LETTER O  -->
&#x41F;=&#x41F; <!--  CYRILLIC CAPITAL LETTER PE  -->
&#x420;=&#x420; <!--  CYRILLIC CAPITAL LETTER ER  -->
&#x421;=&#x421; <!--  CYRILLIC CAPITAL LETTER ES  -->
&#x422;=&#x422; <!--  CYRILLIC CAPITAL LETTER TE  -->
&#x423;=&#x423; <!--  CYRILLIC CAPITAL LETTER U  -->
&#x424;=&#x424; <!--  CYRILLIC CAPITAL LETTER EF  -->
&#x425;=&#x425; <!--  CYRILLIC CAPITAL LETTER HA  -->
&#x426;=&#x426; <!--  CYRILLIC CAPITAL LETTER TSE  -->
&#x427;=&#x427; <!--  CYRILLIC CAPITAL LETTER CHE  -->
&#x428;=&#x428; <!--  CYRILLIC CAPITAL LETTER SHA  -->
&#x429;=&#x429; <!--  CYRILLIC CAPITAL LETTER SHCHA  -->
&#x42A;=&#x42A; <!--  CYRILLIC CAPITAL LETTER HARD SIGN  -->
&#x42B;=&#x42B; <!--  CYRILLIC CAPITAL LETTER YERU  -->
&#x42C;=&#x42C; <!--  CYRILLIC CAPITAL LETTER SOFT SIGN  -->
&#x42D;=&#x42D; <!--  CYRILLIC CAPITAL LETTER E  -->
&#x42E;=&#x42E; <!--  CYRILLIC CAPITAL LETTER YU  -->
&#x42F;=&#x42F; <!--  CYRILLIC CAPITAL LETTER YA  -->
&#x430;=&#x430; <!--  CYRILLIC SMALL LETTER A  -->
&#x431;=&#x431; <!--  CYRILLIC SMALL LETTER BE  -->
&#x432;=&#x432; <!--  CYRILLIC SMALL LETTER VE  -->
&#x433;=&#x433; <!--  CYRILLIC SMALL LETTER GHE  -->
&#x434;=&#x434; <!--  CYRILLIC SMALL LETTER DE  -->
&#x435;=&#x435; <!--  CYRILLIC SMALL LETTER IE  -->
&#x436;=&#x436; <!--  CYRILLIC SMALL LETTER ZHE  -->
&#x437;=&#x437; <!--  CYRILLIC SMALL LETTER ZE  -->
&#x438;=&#x438; <!--  CYRILLIC SMALL LETTER I  -->
&#x439;=&#x439; <!--  CYRILLIC SMALL LETTER SHORT I; -->
&#x43A;=&#x43A; <!--  CYRILLIC SMALL LETTER KA  -->
&#x43B;=&#x43B; <!--  CYRILLIC SMALL LETTER EL  -->
&#x43C;=&#x43C; <!--  CYRILLIC SMALL LETTER EM  -->
&#x43D;=&#x43D; <!--  CYRILLIC SMALL LETTER EN  -->
&#x43E;=&#x43E; <!--  CYRILLIC SMALL LETTER O  -->
&#x43F;=&#x43F; <!--  CYRILLIC SMALL LETTER PE  -->
&#x440;=&#x440; <!--  CYRILLIC SMALL LETTER ER  -->
&#x441;=&#x441; <!--  CYRILLIC SMALL LETTER ES  -->
&#x442;=&#x442; <!--  CYRILLIC SMALL LETTER TE  -->
&#x443;=&#x443; <!--  CYRILLIC SMALL LETTER U  -->
&#x444;=&#x444; <!--  CYRILLIC SMALL LETTER EF  -->
&#x445;=&#x445; <!--  CYRILLIC SMALL LETTER HA  -->
&#x446;=&#x446; <!--  CYRILLIC SMALL LETTER TSE  -->
&#x447;=&#x447; <!--  CYRILLIC SMALL LETTER CHE  -->
&#x448;=&#x448; <!--  CYRILLIC SMALL LETTER SHA  -->
&#x449;=&#x449; <!--  CYRILLIC SMALL LETTER SHCHA  -->
&#x44A;=&#x44A; <!--  CYRILLIC SMALL LETTER HARD;SIGN  -->
&#x44B;=&#x44B; <!--  CYRILLIC SMALL LETTER YERU  -->
&#x44C;=&#x44C; <!--  CYRILLIC SMALL LETTER SOFT SIGN  -->
&#x44D;=&#x44D; <!--  CYRILLIC SMALL LETTER E  -->
&#x44E;=&#x44E; <!--  CYRILLIC SMALL LETTER YU  -->
&#x44F;=&#x44F; <!--  CYRILLIC SMALL LETTER YA  -->
&#x450;=&#x450; <!--  CYRILLIC SMALL LETTER IE WITH  -->
&#x451;=&#x451; <!--  CYRILLIC SMALL LETTER IO  -->
&#x452;=&#x452; <!--  CYRILLIC SMALL LETTER DJE  -->
&#x453;=&#x453; <!--  CYRILLIC SMALL LETTER GJE  -->
&#x454;=&#x454; <!--  CYRILLIC SMALL LETTER UKRAINIAN IE; -->
&#x455;=&#x455; <!--  CYRILLIC SMALL LETTER DZE  -->
&#x456;=&#x456; <!--  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I; -->
&#x457;=&#x457; <!--  CYRILLIC SMALL LETTER YI  -->
&#x458;=&#x458; <!--  CYRILLIC SMALL LETTER JE  -->
&#x459;=&#x459; <!--  CYRILLIC SMALL LETTER LJE  -->
&#x45A;=&#x45A; <!--  CYRILLIC SMALL LETTER NJE  -->
&#x45B;=&#x45B; <!--  CYRILLIC SMALL LETTER TSHE  -->
&#x45C;=&#x45C; <!--  CYRILLIC SMALL LETTER KJE  -->
&#x45D;=&#x45D; <!--  CYRILLIC SMALL LETTER I WITH  -->
&#x45E;=&#x45E; <!--  CYRILLIC SMALL LETTER SHORT U; -->
&#x45F;=&#x45F; <!--  CYRILLIC SMALL LETTER DZHE  -->
&#x460;=&#x460; <!--  CYRILLIC CAPITAL LETTER OMEGA  -->
&#x461;=&#x461; <!--  CYRILLIC SMALL LETTER OMEGA  -->
&#x462;=&#x462; <!--  CYRILLIC CAPITAL LETTER YAT  -->
&#x463;=&#x463; <!--  CYRILLIC SMALL LETTER YAT  -->
&#x464;=&#x464; <!--  CYRILLIC CAPITAL LETTER IOTIFIED;E; -->
&#x465;=&#x465; <!--  CYRILLIC SMALL LETTER IOTIFIED;E; -->
&#x466;=&#x466; <!--  CYRILLIC CAPITAL LETTER LITTLE;YUS  -->
&#x467;=&#x467; <!--  CYRILLIC SMALL LETTER LITTLE;YUS  -->
&#x468;=&#x468; <!--  CYRILLIC CAPITAL LETTER IOTIFIED LITTLE; -->
&#x469;=&#x469; <!--  CYRILLIC SMALL LETTER IOTIFIED LITTLE; -->
&#x46A;=&#x46A; <!--  CYRILLIC CAPITAL LETTER BIG YUS  -->
&#x46B;=&#x46B; <!--  CYRILLIC SMALL LETTER BIG YUS  -->
&#x46C;=&#x46C; <!--  CYRILLIC CAPITAL LETTER IOTIFIED BIG  -->
&#x46D;=&#x46D; <!--  CYRILLIC SMALL LETTER IOTIFIED BIG  -->
&#x46E;=&#x46E; <!--  CYRILLIC CAPITAL LETTER KSI  -->
&#x46F;=&#x46F; <!--  CYRILLIC SMALL LETTER KSI  -->
&#x470;=&#x470; <!--  CYRILLIC CAPITAL LETTER PSI  -->
&#x471;=&#x471; <!--  CYRILLIC SMALL LETTER PSI  --> 
&#x472;=&#x472; <!--  CYRILLIC CAPITAL LETTER FITA  --> 
&#x473;=&#x473; <!--  CYRILLIC SMALL LETTER FITA  --> 
&#x474;=&#x474; <!--  CYRILLIC CAPITAL LETTER IZHITSA  --> 
&#x475;=&#x475; <!--  CYRILLIC SMALL LETTER IZHITSA  --> 
&#x476;=&#x476; <!--  CYRILLIC CAPITAL LETTER IZHITSA WITH GRAVE ACCENT -->
&#x477;=&#x477; <!--  CYRILLIC SMALL LETTER IZHITSA WITH GRAVE ACCENT -->
&#x478;=&#x478; <!--  CYRILLIC CAPITAL LETTER UK  --> 
&#x479;=&#x479; <!--  CYRILLIC SMALL LETTER UK  --> 
&#x47A;=&#x47A; <!--  CYRILLIC CAPITAL LETTER ROUND;OMEGA; --> 
&#x47B;=&#x47B; <!--  CYRILLIC SMALL LETTER ROUND;OMEGA; --> 
&#x47C;=&#x47C; <!--  CYRILLIC CAPITAL LETTER OMEGA WITH  --> 
&#x47D;=&#x47D; <!--  CYRILLIC SMALL LETTER OMEGA WITH  --> 
&#x47E;=&#x47E; <!--  CYRILLIC CAPITAL LETTER OT  --> 
&#x47F;=&#x47F; <!--  CYRILLIC SMALL LETTER OT  --> 
&#x480;=&#x480; <!--  CYRILLIC CAPITAL LETTER KOPPA  --> 
&#x481;=&#x481; <!--  CYRILLIC SMALL LETTER KOPPA  -->
&#x482;=&#x482; <!--  CYRILLIC THOUSANDS SIGN -->
&#x483;=&#x483; <!--  COMBINING CYRILLIC TITLO -->
&#x484;=&#x484; <!--  COMBINING CYRILLIC PALATALIZATION -->
&#x485;=&#x485; <!--  COMBINING CYRILLIC DASIA;PNEUMATA  -->
&#x486;=&#x486; <!--  COMBINING CYRILLIC PSILI;PNEUMATA  -->
&#x488;=&#x488; <!--  COMBINING CYRILLIC HUNDRED;THOUSANDS SIGN  -->
&#x489;=&#x489; <!--  COMBINING CYRILLIC MILLIONS SIGN  -->
&#x48A;=&#x48A; <!--  CYRILLIC CAPITAL LETTER SHORT I TAIL -->
&#x48B;=&#x48B; <!--  CYRILLIC SMALL LETTER SHORT I TAIL -->
&#x48C;=&#x48C; <!--  CYRILLIC CAPITAL LETTER SEMISOFT SIGN  -->
&#x48D;=&#x48D; <!--  CYRILLIC SMALL LETTER SEMISOFT SIGN  -->
&#x48E;=&#x48E; <!--  CYRILLIC CAPITAL LETTER ER WITH  -->
&#x48F;=&#x48F; <!--  CYRILLIC SMALL LETTER ER WITH  -->
&#x490;=&#x490; <!--  CYRILLIC CAPITAL LETTER GHE WITH  -->
&#x491;=&#x491; <!--  CYRILLIC SMALL LETTER GHE WITH  -->
&#x492;=&#x492; <!--  CYRILLIC CAPITAL LETTER GHE WITH  -->
&#x493;=&#x493; <!--  CYRILLIC SMALL LETTER GHE WITH  -->
&#x494;=&#x494; <!--  CYRILLIC CAPITAL LETTER GHE WITH HOOK -->
&#x495;=&#x495; <!--  CYRILLIC SMALL LETTER GHE WITH HOOK -->
&#x496;=&#x496; <!--  CYRILLIC CAPITAL LETTER ZHE WITH  -->
&#x497;=&#x497; <!--  CYRILLIC SMALL LETTER ZHE WITH  -->
&#x498;=&#x498; <!--  CYRILLIC CAPITAL LETTER ZE WITH  -->
&#x499;=&#x499; <!--  CYRILLIC SMALL LETTER ZE WITH  -->
&#x49A;=&#x49A; <!--  CYRILLIC CAPITAL LETTER KA WITH  -->
&#x49B;=&#x49B; <!--  CYRILLIC SMALL LETTER KA WITH  -->
&#x49C;=&#x49C; <!--  CYRILLIC CAPITAL LETTER KA WITH STROKE -->
&#x49D;=&#x49D; <!--  CYRILLIC SMALL LETTER KA WITH STROKE -->
&#x49E;=&#x49E; <!--  CYRILLIC CAPITAL LETTER KA WITH  -->
&#x49F;=&#x49F; <!--  CYRILLIC SMALL LETTER KA WITH  -->
&#x4A0;=&#x4A0; <!--  CYRILLIC CAPITAL LETTER BASHKIR KA; -->
&#x4A1;=&#x4A1; <!--  CYRILLIC SMALL LETTER BASHKIR KA; -->
&#x4A2;=&#x4A2; <!--  CYRILLIC CAPITAL LETTER EN WITH  -->
&#x4A3;=&#x4A3; <!--  CYRILLIC SMALL LETTER EN WITH  -->
&#x4A4;=&#x4A4; <!--  CYRILLIC CAPITAL LIGATURE;EN GHE; -->
&#x4A5;=&#x4A5; <!--  CYRILLIC SMALL LIGATURE;EN GHE; -->
&#x4A6;=&#x4A6; <!--  CYRILLIC CAPITAL LETTER PE WITH HOOK -->
&#x4A7;=&#x4A7; <!--  CYRILLIC SMALL LETTER PE WITH  -->HOOK
&#x4A8;=&#x4A8; <!--  CYRILLIC CAPITAL LETTER ABKHASIAN HA; -->
&#x4A9;=&#x4A9; <!--  CYRILLIC SMALL LETTER ABKHASIAN HA; -->
&#x4AA;=&#x4AA; <!--  CYRILLIC CAPITAL LETTER ES WITH  -->
&#x4AB;=&#x4AB; <!--  CYRILLIC SMALL LETTER ES WITH  -->
&#x4AC;=&#x4AC; <!--  CYRILLIC CAPITAL LETTER TE WITH  -->
&#x4AD;=&#x4AD; <!--  CYRILLIC SMALL LETTER TE WITH  -->
&#x4AE;=&#x4AE; <!--  CYRILLIC CAPITAL LETTER STRAIGHT U; -->
&#x4AF;=&#x4AF; <!--  CYRILLIC SMALL LETTER STRAIGHT U; -->
&#x4B0;=&#x4B0; <!--  CYRILLIC CAPITAL LETTER STRAIGHT U;STROKE -->
&#x4B1;=&#x4B1; <!--  CYRILLIC SMALL LETTER STRAIGHT U;STROKE -->
&#x4B2;=&#x4B2; <!--  CYRILLIC CAPITAL LETTER HA WITH  -->
&#x4B3;=&#x4B3; <!--  CYRILLIC SMALL LETTER HA WITH  -->
&#x4B4;=&#x4B4; <!--  CYRILLIC CAPITAL LIGATURE;TE;TSE; -->
&#x4B5;=&#x4B5; <!--  CYRILLIC SMALL LIGATURE;TE;TSE; -->
&#x4B6;=&#x4B6; <!--  CYRILLIC CAPITAL LETTER CHE WITH  -->
&#x4B7;=&#x4B7; <!--  CYRILLIC SMALL LETTER CHE WITH  -->
&#x4B8;=&#x4B8; <!--  CYRILLIC CAPITAL LETTER CHE WITH STROKE -->
&#x4B9;=&#x4B9; <!--  CYRILLIC SMALL LETTER CHE WITH STROKE -->
&#x4BA;=&#x4BA; <!--  CYRILLIC CAPITAL LETTER SHHA  -->
&#x4BB;=&#x4BB; <!--  CYRILLIC SMALL LETTER SHHA  -->
&#x4BC;=&#x4BC; <!--  CYRILLIC CAPITAL LETTER ABKHASIAN CHE; -->
&#x4BD;=&#x4BD; <!--  CYRILLIC SMALL LETTER ABKHASIAN CHE; -->
&#x4BE;=&#x4BE; <!--  CYRILLIC CAPITAL LETTER ABKHASIAN CHE;DESCENDER -->
&#x4BF;=&#x4BF; <!--  CYRILLIC SMALL LETTER ABKHASIAN CHE;DESCENDER -->
&#x4C0;=&#x4C0; <!--  CYRILLIC LETTER PALOCHKA -->
&#x4C1;=&#x4C1; <!--  CYRILLIC CAPITAL LETTER ZHE WITH  -->
&#x4C2;=&#x4C2; <!--  CYRILLIC SMALL LETTER ZHE WITH  -->
&#x4C3;=&#x4C3; <!--  CYRILLIC CAPITAL LETTER KA WITH  -->
&#x4C4;=&#x4C4; <!--  CYRILLIC SMALL LETTER KA WITH  -->
&#x4C5;=&#x4C5; <!--  CYRILLIC CAPITAL LETTER EL WITH  -->
&#x4C6;=&#x4C6; <!--  CYRILLIC SMALL LETTER EL WITH  -->
&#x4C7;=&#x4C7; <!--  CYRILLIC CAPITAL LETTER EN WITH  -->
&#x4C8;=&#x4C8; <!--  CYRILLIC SMALL LETTER EN WITH  -->
&#x4C9;=&#x4C9; <!--  CYRILLIC CAPITAL LETTER EN WITH  -->
&#x4CA;=&#x4CA; <!--  CYRILLIC SMALL LETTER EN WITH  -->
&#x4CB;=&#x4CB; <!--  CYRILLIC CAPITAL LETTER KHAKASSIAN CHE; -->
&#x4CC;=&#x4CC; <!--  CYRILLIC SMALL LETTER KHAKASSIAN CHE; -->
&#x4CD;=&#x4CD; <!--  CYRILLIC CAPITAL LETTER EM WITH  -->
&#x4CE;=&#x4CE; <!--  CYRILLIC SMALL LETTER EM WITH  -->
&#x4D0;=&#x4D0; <!--  CYRILLIC CAPITAL LETTER A WITH  -->
&#x4D1;=&#x4D1; <!--  CYRILLIC SMALL LETTER A WITH  -->
&#x4D2;=&#x4D2; <!--  CYRILLIC CAPITAL LETTER A WITH  -->
&#x4D3;=&#x4D3; <!--  CYRILLIC SMALL LETTER A WITH  -->
&#x4D4;=&#x4D4; <!--  CYRILLIC CAPITAL LIGATURE A;IE; -->
&#x4D5;=&#x4D5; <!--  CYRILLIC SMALL LIGATURE A;IE; -->
&#x4D6;=&#x4D6; <!--  CYRILLIC CAPITAL LETTER IE WITH  -->
&#x4D7;=&#x4D7; <!--  CYRILLIC SMALL LETTER IE WITH  -->
&#x4D8;=&#x4D8; <!--  CYRILLIC CAPITAL LETTER SCHWA  -->
&#x4D9;=&#x4D9; <!--  CYRILLIC SMALL LETTER SCHWA  -->
&#x4DA;=&#x4DA; <!--  CYRILLIC CAPITAL LETTER SCHWA WITH  -->
&#x4DB;=&#x4DB; <!--  CYRILLIC SMALL LETTER SCHWA WITH  -->
&#x4DC;=&#x4DC; <!--  CYRILLIC CAPITAL LETTER ZHE WITH  -->
&#x4DD;=&#x4DD; <!--  CYRILLIC SMALL LETTER ZHE WITH  -->
&#x4DE;=&#x4DE; <!--  CYRILLIC CAPITAL LETTER ZE WITH  -->
&#x4DF;=&#x4DF; <!--  CYRILLIC SMALL LETTER ZE WITH  -->
&#x4E0;=&#x4E0; <!--  CYRILLIC CAPITAL LETTER ABKHASIAN DZE; -->
&#x4E1;=&#x4E1; <!--  CYRILLIC SMALL LETTER ABKHASIAN DZE; -->
&#x4E2;=&#x4E2; <!--  CYRILLIC CAPITAL LETTER I WITH  -->
&#x4E3;=&#x4E3; <!--  CYRILLIC SMALL LETTER I WITH  -->
&#x4E4;=&#x4E4; <!--  CYRILLIC CAPITAL LETTER I WITH  -->
&#x4E5;=&#x4E5; <!--  CYRILLIC SMALL LETTER I WITH  -->
&#x4E6;=&#x4E6; <!--  CYRILLIC CAPITAL LETTER O WITH  -->
&#x4E7;=&#x4E7; <!--  CYRILLIC SMALL LETTER O WITH  -->
&#x4E8;=&#x4E8; <!--  CYRILLIC CAPITAL LETTER BARRED;O; -->
&#x4E9;=&#x4E9; <!--  CYRILLIC SMALL LETTER BARRED;O; -->
&#x4EA;=&#x4EA; <!--  CYRILLIC CAPITAL LETTER BARRED;O;DIAERESIS -->
&#x4EB;=&#x4EB; <!--  CYRILLIC SMALL LETTER BARRED;O;DIAERESIS -->
&#x4EC;=&#x4EC; <!--  CYRILLIC CAPITAL LETTER E WITH  -->
&#x4ED;=&#x4ED; <!--  CYRILLIC SMALL LETTER E WITH  -->
&#x4EE;=&#x4EE; <!--  CYRILLIC CAPITAL LETTER U WITH  -->
&#x4EF;=&#x4EF; <!--  CYRILLIC SMALL LETTER U WITH  -->
&#x4F0;=&#x4F0; <!--  CYRILLIC CAPITAL LETTER U WITH  -->
&#x4F1;=&#x4F1; <!--  CYRILLIC SMALL LETTER U WITH  -->
&#x4F2;=&#x4F2; <!--  CYRILLIC CAPITAL LETTER U;WITH ACUTE -->
&#x4F3;=&#x4F3; <!--  CYRILLIC SMALL LETTER U;WITH ACUTE -->
&#x4F4;=&#x4F4; <!--  CYRILLIC CAPITAL LETTER CHE WITH  -->
&#x4F5;=&#x4F5; <!--  CYRILLIC SMALL LETTER CHE WITH  -->
&#x4F6;=&#x4F6; <!--  CYRILLIC CAPITAL LETTER GHE WITH  -->
&#x4F7;=&#x4F7; <!--  CYRILLIC SMALL LETTER GHE WITH  -->
&#x4F8;=&#x4F8; <!--  CYRILLIC CAPITAL LETTER YERU WITH  -->
&#x4F9;=&#x4F9; <!--  CYRILLIC SMALL LETTER YERU WITH  -->
 
&#x503;=&#x503; <!-- CYRILLIC SMALL LETTER KOMI DJE        -->
&#x504;=&#x504; <!-- CYRILLIC CAPITAL LETTER KOMI ZJE        -->   
&#x505;=&#x505; <!-- CYRILLIC SMALL LETTER KOMI ZJE        -->   
&#x506;=&#x506; <!-- CYRILLIC CAPITAL LETTER KOMI DZJE        -->   
&#x507;=&#x507; <!-- CYRILLIC SMALL LETTER KOMI DZJE        -->   
&#x508;=&#x508; <!-- CYRILLIC CAPITAL LETTER KOMI LJE        -->   
&#x509;=&#x509; <!-- CYRILLIC SMALL LETTER KOMI LJE        -->   
&#x50A;=&#x50A; <!-- CYRILLIC CAPITAL LETTER KOMI NJE        -->   
&#x50B;=&#x50B; <!-- CYRILLIC SMALL LETTER KOMI NJE        -->   
&#x50C;=&#x50C; <!-- CYRILLIC CAPITAL LETTER KOMI SJE        -->   
&#x50D;=&#x50D; <!-- CYRILLIC SMALL LETTER KOMI SJE        -->   
&#x50E;=&#x50E; <!-- CYRILLIC CAPITAL LETTER KOMI TJE        -->   
&#x50F;=&#x50F; <!-- CYRILLIC SMALL LETTER KOMI TJE        -->   
&#x531;=&#x531; <!-- ARMENIAN CAPITAL LETTER AYB         -->
&#x532;=&#x532; <!-- ARMENIAN CAPITAL LETTER BEN         -->
&#x533;=&#x533; <!-- ARMENIAN CAPITAL LETTER GIM         -->
&#x534;=&#x534; <!-- ARMENIAN CAPITAL LETTER DA         -->
&#x535;=&#x535; <!-- ARMENIAN CAPITAL LETTER ECH         -->
&#x536;=&#x536; <!-- ARMENIAN CAPITAL LETTER ZA         -->
&#x537;=&#x537; <!-- ARMENIAN CAPITAL LETTER EH         -->
&#x538;=&#x538; <!-- ARMENIAN CAPITAL LETTER ET         -->
&#x539;=&#x539; <!-- ARMENIAN CAPITAL LETTER TO         -->
&#x53A;=&#x53A; <!-- ARMENIAN CAPITAL LETTER ZHE         -->
&#x53B;=&#x53B; <!-- ARMENIAN CAPITAL LETTER INI         -->
&#x53C;=&#x53C; <!-- ARMENIAN CAPITAL LETTER LIWN         -->
&#x53D;=&#x53D; <!-- ARMENIAN CAPITAL LETTER XEH         -->
&#x53E;=&#x53E; <!-- ARMENIAN CAPITAL LETTER CA         -->
&#x53F;=&#x53F; <!-- ARMENIAN CAPITAL LETTER KEN         -->
&#x540;=&#x540; <!-- ARMENIAN CAPITAL LETTER HO         -->
&#x541;=&#x541; <!-- ARMENIAN CAPITAL LETTER JA         -->
&#x542;=&#x542; <!-- ARMENIAN CAPITAL LETTER GHAD         -->
&#x543;=&#x543; <!-- ARMENIAN CAPITAL LETTER CHEH         -->
&#x544;=&#x544; <!-- ARMENIAN CAPITAL LETTER MEN         -->
&#x545;=&#x545; <!-- ARMENIAN CAPITAL LETTER YI         -->
&#x546;=&#x546; <!-- ARMENIAN CAPITAL LETTER NOW         -->
&#x547;=&#x547; <!-- ARMENIAN CAPITAL LETTER SHA         -->
&#x548;=&#x548; <!-- ARMENIAN CAPITAL LETTER VO         -->
&#x549;=&#x549; <!-- ARMENIAN CAPITAL LETTER CHA         -->
&#x54A;=&#x54A; <!-- ARMENIAN CAPITAL LETTER PEH         -->
&#x54B;=&#x54B; <!-- ARMENIAN CAPITAL LETTER JHEH         -->
&#x54C;=&#x54C; <!-- ARMENIAN CAPITAL LETTER RA         -->
&#x54D;=&#x54D; <!-- ARMENIAN CAPITAL LETTER SEH         -->
&#x54E;=&#x54E; <!-- ARMENIAN CAPITAL LETTER VEW         -->
&#x54F;=&#x54F; <!-- ARMENIAN CAPITAL LETTER TIWN         -->
&#x550;=&#x550; <!-- ARMENIAN CAPITAL LETTER REH         -->
&#x551;=&#x551; <!-- ARMENIAN CAPITAL LETTER CO         -->
&#x552;=&#x552; <!-- ARMENIAN CAPITAL LETTER YIWN         -->
&#x553;=&#x553; <!-- ARMENIAN CAPITAL LETTER PIWR         -->
&#x554;=&#x554; <!-- ARMENIAN CAPITAL LETTER KEH         -->
&#x555;=&#x555; <!-- ARMENIAN CAPITAL LETTER OH         -->
&#x556;=&#x556; <!-- ARMENIAN CAPITAL LETTER FEH         -->
&#x559;=&#x559; <!-- ARMENIAN MODIFIER LETTER LEFT HALF RING       -->
&#x561;=&#x561; <!-- ARMENIAN SMALL LETTER AYB         -->
&#x562;=&#x562; <!-- ARMENIAN SMALL LETTER BEN         -->
&#x563;=&#x563; <!-- ARMENIAN SMALL LETTER GIM         -->
&#x564;=&#x564; <!-- ARMENIAN SMALL LETTER DA         -->
&#x565;=&#x565; <!-- ARMENIAN SMALL LETTER ECH         -->
&#x566;=&#x566; <!-- ARMENIAN SMALL LETTER ZA         -->
&#x567;=&#x567; <!-- ARMENIAN SMALL LETTER EH         -->
&#x568;=&#x568; <!-- ARMENIAN SMALL LETTER ET         -->
&#x569;=&#x569; <!-- ARMENIAN SMALL LETTER TO         -->
&#x56A;=&#x56A; <!-- ARMENIAN SMALL LETTER ZHE         -->
&#x56B;=&#x56B; <!-- ARMENIAN SMALL LETTER INI         -->
&#x56C;=&#x56C; <!-- ARMENIAN SMALL LETTER LIWN         -->
&#x56D;=&#x56D; <!-- ARMENIAN SMALL LETTER XEH         -->
&#x56E;=&#x56E; <!-- ARMENIAN SMALL LETTER CA         -->
&#x56F;=&#x56F; <!-- ARMENIAN SMALL LETTER KEN         -->
&#x570;=&#x570; <!-- ARMENIAN SMALL LETTER HO         -->
&#x571;=&#x571; <!-- ARMENIAN SMALL LETTER JA         -->
&#x572;=&#x572; <!-- ARMENIAN SMALL LETTER GHAD         -->
&#x573;=&#x573; <!-- ARMENIAN SMALL LETTER CHEH         -->
&#x574;=&#x574; <!-- ARMENIAN SMALL LETTER MEN         -->
&#x575;=&#x575; <!-- ARMENIAN SMALL LETTER YI         -->
&#x576;=&#x576; <!-- ARMENIAN SMALL LETTER NOW         -->
&#x577;=&#x577; <!-- ARMENIAN SMALL LETTER SHA         -->
&#x578;=&#x578; <!-- ARMENIAN SMALL LETTER VO         -->
&#x579;=&#x579; <!-- ARMENIAN SMALL LETTER CHA         -->
&#x57A;=&#x57A; <!-- ARMENIAN SMALL LETTER PEH         -->
&#x57B;=&#x57B; <!-- ARMENIAN SMALL LETTER JHEH         -->
&#x57C;=&#x57C; <!-- ARMENIAN SMALL LETTER RA         -->
&#x57D;=&#x57D; <!-- ARMENIAN SMALL LETTER SEH         -->
&#x57E;=&#x57E; <!-- ARMENIAN SMALL LETTER VEW         -->
&#x57F;=&#x57F; <!-- ARMENIAN SMALL LETTER TIWN         -->
&#x580;=&#x580; <!-- ARMENIAN SMALL LETTER REH         -->
&#x581;=&#x581; <!-- ARMENIAN SMALL LETTER CO         -->
&#x582;=&#x582; <!-- ARMENIAN SMALL LETTER YIWN         -->
&#x583;=&#x583; <!-- ARMENIAN SMALL LETTER PIWR         -->
&#x584;=&#x584; <!-- ARMENIAN SMALL LETTER KEH         -->
&#x585;=&#x585; <!-- ARMENIAN SMALL LETTER OH         -->
&#x586;=&#x586; <!-- ARMENIAN SMALL LETTER FEH         -->
&#x587;=&#x587; <!-- ARMENIAN SMALL LIGATURE ECH YIWN        -->
 
&#x591;=&#x591; <!-- HEBREW ACCENT ETNAHTA          -->
&#x592;=&#x592; <!-- HEBREW ACCENT SEGOL          -->
&#x593;=&#x593; <!-- HEBREW ACCENT SHALSHELET          -->
&#x594;=&#x594; <!-- HEBREW ACCENT ZAQEF QATAN         -->
&#x595;=&#x595; <!-- HEBREW ACCENT ZAQEF GADOL         -->
&#x596;=&#x596; <!-- HEBREW ACCENT TIPEHA          -->
&#x597;=&#x597; <!-- HEBREW ACCENT REVIA          -->
&#x598;=&#x598; <!-- HEBREW ACCENT ZARQA          -->
&#x599;=&#x599; <!-- HEBREW ACCENT PASHTA          -->
&#x59A;=&#x59A; <!-- HEBREW ACCENT YETIV          -->
&#x59B;=&#x59B; <!-- HEBREW ACCENT TEVIR          -->
&#x59C;=&#x59C; <!-- HEBREW ACCENT GERESH          -->
&#x59D;=&#x59D; <!-- HEBREW ACCENT GERESH MUQDAM         -->
&#x59E;=&#x59E; <!-- HEBREW ACCENT GERSHAYIM          -->
&#x59F;=&#x59F; <!-- HEBREW ACCENT QARNEY PARA         -->
&#x5A0;=&#x5A0; <!-- HEBREW ACCENT TELISHA GEDOLA         -->
&#x5A1;=&#x5A1; <!-- HEBREW ACCENT PAZER          -->
&#x5A2;=&#x5A2; <!-- HEBREW ACCENT ATNAH HAFUKH         -->
&#x5A3;=&#x5A3; <!-- HEBREW ACCENT MUNAH          -->
&#x5A4;=&#x5A4; <!-- HEBREW ACCENT MAHAPAKH          -->
&#x5A5;=&#x5A5; <!-- HEBREW ACCENT MERKHA          -->
&#x5A6;=&#x5A6; <!-- HEBREW ACCENT MERKHA KEFULA         -->
&#x5A7;=&#x5A7; <!-- HEBREW ACCENT DARGA          -->
&#x5A8;=&#x5A8; <!-- HEBREW ACCENT QADMA          -->
&#x5A9;=&#x5A9; <!-- HEBREW ACCENT TELISHA QETANA         -->
&#x5AA;=&#x5AA; <!-- HEBREW ACCENT YERAH BEN YOMO        -->
&#x5AB;=&#x5AB; <!-- HEBREW ACCENT OLE          -->
&#x5AC;=&#x5AC; <!-- HEBREW ACCENT ILUY          -->
&#x5AD;=&#x5AD; <!-- HEBREW ACCENT DEHI          -->
&#x5AE;=&#x5AE; <!-- HEBREW ACCENT ZINOR          -->
&#x5AF;=&#x5AF; <!-- HEBREW MARK MASORA CIRCLE         -->
&#x5B0;=&#x5B0; <!-- HEBREW POINT SHEVA          -->
&#x5B1;=&#x5B1; <!-- HEBREW POINT HATAF SEGOL         -->
&#x5B2;=&#x5B2; <!-- HEBREW POINT HATAF PATAH         -->
&#x5B3;=&#x5B3; <!-- HEBREW POINT HATAF QAMATS         -->
&#x5B4;=&#x5B4; <!-- HEBREW POINT HIRIQ          -->
&#x5B5;=&#x5B5; <!-- HEBREW POINT TSERE          -->
&#x5B6;=&#x5B6; <!-- HEBREW POINT SEGOL          -->
&#x5B7;=&#x5B7; <!-- HEBREW POINT PATAH          -->
&#x5B8;=&#x5B8; <!-- HEBREW POINT QAMATS          -->
&#x5B9;=&#x5B9; <!-- HEBREW POINT HOLAM          -->
&#x5BB;=&#x5BB; <!-- HEBREW POINT QUBUTS          -->
&#x5BC;=&#x5BC; <!-- HEBREW POINT DAGESH OR MAPIQ        -->
&#x5BD;=&#x5BD; <!-- HEBREW POINT METEG          -->
&#x5BF;=&#x5BF; <!-- HEBREW POINT RAFE          -->
&#x5C1;=&#x5C1; <!-- HEBREW POINT SHIN DOT         -->
&#x5C2;=&#x5C2; <!-- HEBREW POINT SIN DOT         -->
&#x5C4;=&#x5C4; <!-- HEBREW MARK UPPER DOT         -->
&#x5C5;=&#x5C5; <!-- HEBREW MARK LOWER DOT         -->
&#x5C7;=&#x5C7; <!-- HEBREW POINT QAMATS QATAN         -->
&#x5D0;=&#x5D0; <!-- HEBREW LETTER ALEF          -->
&#x5D1;=&#x5D1; <!-- HEBREW LETTER BET          -->
&#x5D2;=&#x5D2; <!-- HEBREW LETTER GIMEL          -->
&#x5D3;=&#x5D3; <!-- HEBREW LETTER DALET          -->
&#x5D4;=&#x5D4; <!-- HEBREW LETTER HE          -->
&#x5D5;=&#x5D5; <!-- HEBREW LETTER VAV          -->
&#x5D6;=&#x5D6; <!-- HEBREW LETTER ZAYIN          -->
&#x5D7;=&#x5D7; <!-- HEBREW LETTER HET          -->
&#x5D8;=&#x5D8; <!-- HEBREW LETTER TET          -->
&#x5D9;=&#x5D9; <!-- HEBREW LETTER YOD          -->
&#x5DA;=&#x5DA; <!-- HEBREW LETTER FINAL KAF         -->
&#x5DB;=&#x5DB; <!-- HEBREW LETTER KAF          -->
&#x5DC;=&#x5DC; <!-- HEBREW LETTER LAMED          -->
&#x5DD;=&#x5DD; <!-- HEBREW LETTER FINAL MEM         -->
&#x5DE;=&#x5DE; <!-- HEBREW LETTER MEM          -->
&#x5DF;=&#x5DF; <!-- HEBREW LETTER FINAL NUN         -->
&#x5E0;=&#x5E0; <!-- HEBREW LETTER NUN          -->
&#x5E1;=&#x5E1; <!-- HEBREW LETTER SAMEKH          -->
&#x5E2;=&#x5E2; <!-- HEBREW LETTER AYIN          -->
&#x5E3;=&#x5E3; <!-- HEBREW LETTER FINAL PE         -->
&#x5E4;=&#x5E4; <!-- HEBREW LETTER PE          -->
&#x5E5;=&#x5E5; <!-- HEBREW LETTER FINAL TSADI         -->
&#x5E6;=&#x5E6; <!-- HEBREW LETTER TSADI          -->
&#x5E7;=&#x5E7; <!-- HEBREW LETTER QOF          -->
&#x5E8;=&#x5E8; <!-- HEBREW LETTER RESH          -->
&#x5E9;=&#x5E9; <!-- HEBREW LETTER SHIN          -->
&#x5EA;=&#x5EA; <!-- HEBREW LETTER TAV          -->
&#x5F0;=&#x5F0; <!-- HEBREW LIGATURE YIDDISH DOUBLE VAV        -->
&#x5F1;=&#x5F1; <!-- HEBREW LIGATURE YIDDISH VAV YOD        -->
&#x5F2;=&#x5F2; <!-- HEBREW LIGATURE YIDDISH DOUBLE YOD        -->
 
&#x621;=&#x621; <!-- ARABIC LETTER HAMZA          -->
&#x622;=&#x622; <!-- ARABIC LETTER ALEF WITH MADDA ABOVE       -->
&#x623;=&#x623; <!-- ARABIC LETTER ALEF WITH HAMZA ABOVE       -->
&#x624;=&#x624; <!-- ARABIC LETTER WAW WITH HAMZA ABOVE       -->
&#x625;=&#x625; <!-- ARABIC LETTER ALEF WITH HAMZA BELOW       -->
&#x626;=&#x626; <!-- ARABIC LETTER YEH WITH HAMZA ABOVE       -->
&#x627;=&#x627; <!-- ARABIC LETTER ALEF          -->
&#x628;=&#x628; <!-- ARABIC LETTER BEH          -->
&#x629;=&#x629; <!-- ARABIC LETTER TEH MARBUTA         -->
&#x62A;=&#x62A; <!-- ARABIC LETTER TEH          -->
&#x62B;=&#x62B; <!-- ARABIC LETTER THEH          -->
&#x62C;=&#x62C; <!-- ARABIC LETTER JEEM          -->
&#x62D;=&#x62D; <!-- ARABIC LETTER HAH          -->
&#x62E;=&#x62E; <!-- ARABIC LETTER KHAH          -->
&#x62F;=&#x62F; <!-- ARABIC LETTER DAL          -->
&#x630;=&#x630; <!-- ARABIC LETTER THAL          -->
&#x631;=&#x631; <!-- ARABIC LETTER REH          -->
&#x632;=&#x632; <!-- ARABIC LETTER ZAIN          -->
&#x633;=&#x633; <!-- ARABIC LETTER SEEN          -->
&#x634;=&#x634; <!-- ARABIC LETTER SHEEN          -->
&#x635;=&#x635; <!-- ARABIC LETTER SAD          -->
&#x636;=&#x636; <!-- ARABIC LETTER DAD          -->
&#x637;=&#x637; <!-- ARABIC LETTER TAH          -->
&#x638;=&#x638; <!-- ARABIC LETTER ZAH          -->
&#x639;=&#x639; <!-- ARABIC LETTER AIN          -->
&#x63A;=&#x63A; <!-- ARABIC LETTER GHAIN          -->
&#x640;=&#x640; <!-- ARABIC TATWEEL           -->
&#x641;=&#x641; <!-- ARABIC LETTER FEH          -->
&#x642;=&#x642; <!-- ARABIC LETTER QAF          -->
&#x643;=&#x643; <!-- ARABIC LETTER KAF          -->
&#x644;=&#x644; <!-- ARABIC LETTER LAM          -->
&#x645;=&#x645; <!-- ARABIC LETTER MEEM          -->
&#x646;=&#x646; <!-- ARABIC LETTER NOON          -->
&#x647;=&#x647; <!-- ARABIC LETTER HEH          -->
&#x648;=&#x648; <!-- ARABIC LETTER WAW          -->
&#x649;=&#x649; <!-- ARABIC LETTER ALEF MAKSURA         -->
&#x64A;=&#x64A; <!-- ARABIC LETTER YEH          -->
&#x64B;=&#x64B; <!-- ARABIC FATHATAN           -->
&#x64C;=&#x64C; <!-- ARABIC DAMMATAN           -->
&#x64D;=&#x64D; <!-- ARABIC KASRATAN           -->
&#x64E;=&#x64E; <!-- ARABIC FATHA           -->
&#x64F;=&#x64F; <!-- ARABIC DAMMA           -->
&#x650;=&#x650; <!-- ARABIC KASRA           -->
&#x651;=&#x651; <!-- ARABIC SHADDA           -->
&#x652;=&#x652; <!-- ARABIC SUKUN           -->
&#x653;=&#x653; <!-- ARABIC MADDAH ABOVE          -->
&#x654;=&#x654; <!-- ARABIC HAMZA ABOVE          -->
&#x655;=&#x655; <!-- ARABIC HAMZA BELOW          -->
&#x656;=&#x656; <!-- ARABIC SUBSCRIPT ALEF          -->
&#x657;=&#x657; <!-- ARABIC INVERTED DAMMA          -->
&#x658;=&#x658; <!-- ARABIC MARK NOON GHUNNA         -->
&#x659;=&#x659; <!-- ARABIC ZWARAKAY           -->
&#x65A;=&#x65A; <!-- ARABIC VOWEL SIGN SMALL V ABOVE       -->
&#x65B;=&#x65B; <!-- ARABIC VOWEL SIGN INVERTED SMALL V ABOVE      -->
&#x65C;=&#x65C; <!-- ARABIC VOWEL SIGN DOT BELOW        -->
&#x65D;=&#x65D; <!-- ARABIC REVERSED DAMMA          -->
&#x65E;=&#x65E; <!-- ARABIC FATHA WITH TWO DOTS        -->
&#x660;=&#x660; <!-- ARABIC-INDIC DIGIT ZERO          -->
&#x661;=&#x661; <!-- ARABIC-INDIC DIGIT ONE          -->
&#x662;=&#x662; <!-- ARABIC-INDIC DIGIT TWO          -->
&#x663;=&#x663; <!-- ARABIC-INDIC DIGIT THREE          -->
&#x664;=&#x664; <!-- ARABIC-INDIC DIGIT FOUR          -->
&#x665;=&#x665; <!-- ARABIC-INDIC DIGIT FIVE          -->
&#x666;=&#x666; <!-- ARABIC-INDIC DIGIT SIX          -->
&#x667;=&#x667; <!-- ARABIC-INDIC DIGIT SEVEN          -->
&#x668;=&#x668; <!-- ARABIC-INDIC DIGIT EIGHT          -->
&#x669;=&#x669; <!-- ARABIC-INDIC DIGIT NINE          -->
&#x66D;=&#x66D; <!-- ARABIC FIVE POINTED STAR         -->
&#x66E;=&#x66E; <!-- ARABIC LETTER DOTLESS BEH         -->
&#x66F;=&#x66F; <!-- ARABIC LETTER DOTLESS QAF         -->
&#x670;=&#x670; <!-- ARABIC LETTER SUPERSCRIPT ALEF         -->
&#x671;=&#x671; <!-- ARABIC LETTER ALEF WASLA         -->
&#x672;=&#x672; <!-- ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE      -->
&#x673;=&#x673; <!-- ARABIC LETTER ALEF WITH WAVY HAMZA BELOW      -->
&#x674;=&#x674; <!-- ARABIC LETTER HIGH HAMZA         -->
&#x675;=&#x675; <!-- ARABIC LETTER HIGH HAMZA ALEF        -->
&#x676;=&#x676; <!-- ARABIC LETTER HIGH HAMZA WAW        -->
&#x677;=&#x677; <!-- ARABIC LETTER U WITH HAMZA ABOVE       -->
&#x678;=&#x678; <!-- ARABIC LETTER HIGH HAMZA YEH        -->
&#x679;=&#x679; <!-- ARABIC LETTER TTEH          -->
&#x67A;=&#x67A; <!-- ARABIC LETTER TTEHEH          -->
&#x67B;=&#x67B; <!-- ARABIC LETTER BEEH          -->
&#x67C;=&#x67C; <!-- ARABIC LETTER TEH WITH RING        -->
&#x67D;=&#x67D; <!-- ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS     -->
&#x67E;=&#x67E; <!-- ARABIC LETTER PEH          -->
&#x67F;=&#x67F; <!-- ARABIC LETTER TEHEH          -->
&#x680;=&#x680; <!-- ARABIC LETTER BEHEH          -->
&#x681;=&#x681; <!-- ARABIC LETTER HAH WITH HAMZA ABOVE       -->
&#x682;=&#x682; <!-- ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE     -->
&#x683;=&#x683; <!-- ARABIC LETTER NYEH          -->
&#x684;=&#x684; <!-- ARABIC LETTER DYEH          -->
&#x685;=&#x685; <!-- ARABIC LETTER HAH WITH THREE DOTS ABOVE      -->
&#x686;=&#x686; <!-- ARABIC LETTER TCHEH          -->
&#x687;=&#x687; <!-- ARABIC LETTER TCHEHEH          -->
&#x688;=&#x688; <!-- ARABIC LETTER DDAL          -->
&#x689;=&#x689; <!-- ARABIC LETTER DAL WITH RING        -->
&#x68A;=&#x68A; <!-- ARABIC LETTER DAL WITH DOT BELOW       -->
&#x68B;=&#x68B; <!-- ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH    -->
&#x68C;=&#x68C; <!-- ARABIC LETTER DAHAL          -->
&#x68D;=&#x68D; <!-- ARABIC LETTER DDAHAL          -->
&#x68E;=&#x68E; <!-- ARABIC LETTER DUL          -->
&#x68F;=&#x68F; <!-- ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS     -->
&#x690;=&#x690; <!-- ARABIC LETTER DAL WITH FOUR DOTS ABOVE      -->
&#x691;=&#x691; <!-- ARABIC LETTER RREH          -->
&#x692;=&#x692; <!-- ARABIC LETTER REH WITH SMALL V       -->
&#x693;=&#x693; <!-- ARABIC LETTER REH WITH RING        -->
&#x694;=&#x694; <!-- ARABIC LETTER REH WITH DOT BELOW       -->
&#x695;=&#x695; <!-- ARABIC LETTER REH WITH SMALL V BELOW      -->
&#x696;=&#x696; <!-- ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE    -->
&#x697;=&#x697; <!-- ARABIC LETTER REH WITH TWO DOTS ABOVE      -->
&#x698;=&#x698; <!-- ARABIC LETTER JEH          -->
&#x699;=&#x699; <!-- ARABIC LETTER REH WITH FOUR DOTS ABOVE      -->
&#x69A;=&#x69A; <!-- ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE    -->
&#x69B;=&#x69B; <!-- ARABIC LETTER SEEN WITH THREE DOTS BELOW      -->
&#x69C;=&#x69C; <!-- ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE  -->
&#x69D;=&#x69D; <!-- ARABIC LETTER SAD WITH TWO DOTS BELOW      -->
&#x69E;=&#x69E; <!-- ARABIC LETTER SAD WITH THREE DOTS ABOVE      -->
&#x69F;=&#x69F; <!-- ARABIC LETTER TAH WITH THREE DOTS ABOVE      -->
&#x6A0;=&#x6A0; <!-- ARABIC LETTER AIN WITH THREE DOTS ABOVE      -->
&#x6A1;=&#x6A1; <!-- ARABIC LETTER DOTLESS FEH         -->
&#x6A2;=&#x6A2; <!-- ARABIC LETTER FEH WITH DOT MOVED BELOW      -->
&#x6A3;=&#x6A3; <!-- ARABIC LETTER FEH WITH DOT BELOW       -->
&#x6A4;=&#x6A4; <!-- ARABIC LETTER VEH          -->
&#x6A5;=&#x6A5; <!-- ARABIC LETTER FEH WITH THREE DOTS BELOW      -->
&#x6A6;=&#x6A6; <!-- ARABIC LETTER PEHEH          -->
&#x6A7;=&#x6A7; <!-- ARABIC LETTER QAF WITH DOT ABOVE       -->
&#x6A8;=&#x6A8; <!-- ARABIC LETTER QAF WITH THREE DOTS ABOVE      -->
&#x6A9;=&#x6A9; <!-- ARABIC LETTER KEHEH          -->
&#x6AA;=&#x6AA; <!-- ARABIC LETTER SWASH KAF         -->
&#x6AB;=&#x6AB; <!-- ARABIC LETTER KAF WITH RING        -->
&#x6AC;=&#x6AC; <!-- ARABIC LETTER KAF WITH DOT ABOVE       -->
&#x6AD;=&#x6AD; <!-- ARABIC LETTER NG          -->
&#x6AE;=&#x6AE; <!-- ARABIC LETTER KAF WITH THREE DOTS BELOW      -->
&#x6AF;=&#x6AF; <!-- ARABIC LETTER GAF          -->
&#x6B0;=&#x6B0; <!-- ARABIC LETTER GAF WITH RING        -->
&#x6B1;=&#x6B1; <!-- ARABIC LETTER NGOEH          -->
&#x6B2;=&#x6B2; <!-- ARABIC LETTER GAF WITH TWO DOTS BELOW      -->
&#x6B3;=&#x6B3; <!-- ARABIC LETTER GUEH          -->
&#x6B4;=&#x6B4; <!-- ARABIC LETTER GAF WITH THREE DOTS ABOVE      -->
&#x6B5;=&#x6B5; <!-- ARABIC LETTER LAM WITH SMALL V       -->
&#x6B6;=&#x6B6; <!-- ARABIC LETTER LAM WITH DOT ABOVE       -->
&#x6B7;=&#x6B7; <!-- ARABIC LETTER LAM WITH THREE DOTS ABOVE      -->
&#x6B8;=&#x6B8; <!-- ARABIC LETTER LAM WITH THREE DOTS BELOW      -->
&#x6B9;=&#x6B9; <!-- ARABIC LETTER NOON WITH DOT BELOW       -->
&#x6BA;=&#x6BA; <!-- ARABIC LETTER NOON GHUNNA         -->
&#x6BB;=&#x6BB; <!-- ARABIC LETTER RNOON          -->
&#x6BC;=&#x6BC; <!-- ARABIC LETTER NOON WITH RING        -->
&#x6BD;=&#x6BD; <!-- ARABIC LETTER NOON WITH THREE DOTS ABOVE      -->
&#x6BE;=&#x6BE; <!-- ARABIC LETTER HEH DOACHASHMEE         -->
&#x6BF;=&#x6BF; <!-- ARABIC LETTER TCHEH WITH DOT ABOVE       -->
&#x6C0;=&#x6C0; <!-- ARABIC LETTER HEH WITH YEH ABOVE       -->
&#x6C1;=&#x6C1; <!-- ARABIC LETTER HEH GOAL         -->
&#x6C2;=&#x6C2; <!-- ARABIC LETTER HEH GOAL WITH HAMZA ABOVE      -->
&#x6C3;=&#x6C3; <!-- ARABIC LETTER TEH MARBUTA GOAL        -->
&#x6C4;=&#x6C4; <!-- ARABIC LETTER WAW WITH RING        -->
&#x6C5;=&#x6C5; <!-- ARABIC LETTER KIRGHIZ OE         -->
&#x6C6;=&#x6C6; <!-- ARABIC LETTER OE          -->
&#x6C7;=&#x6C7; <!-- ARABIC LETTER U          -->
&#x6C8;=&#x6C8; <!-- ARABIC LETTER YU          -->
&#x6C9;=&#x6C9; <!-- ARABIC LETTER KIRGHIZ YU         -->
&#x6CA;=&#x6CA; <!-- ARABIC LETTER WAW WITH TWO DOTS ABOVE      -->
&#x6CB;=&#x6CB; <!-- ARABIC LETTER VE          -->
&#x6CC;=&#x6CC; <!-- ARABIC LETTER FARSI YEH         -->
&#x6CD;=&#x6CD; <!-- ARABIC LETTER YEH WITH TAIL        -->
&#x6CE;=&#x6CE; <!-- ARABIC LETTER YEH WITH SMALL V       -->
&#x6CF;=&#x6CF; <!-- ARABIC LETTER WAW WITH DOT ABOVE       -->
&#x6D0;=&#x6D0; <!-- ARABIC LETTER E          -->
&#x6D1;=&#x6D1; <!-- ARABIC LETTER YEH WITH THREE DOTS BELOW      -->
&#x6D2;=&#x6D2; <!-- ARABIC LETTER YEH BARREE         -->
&#x6D3;=&#x6D3; <!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE      -->
&#x6D5;=&#x6D5; <!-- ARABIC LETTER AE          -->
&#x6D6;=&#x6D6; <!-- ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA   -->
&#x6D7;=&#x6D7; <!-- ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA   -->
&#x6D8;=&#x6D8; <!-- ARABIC SMALL HIGH MEEM INITIAL FORM       -->
&#x6D9;=&#x6D9; <!-- ARABIC SMALL HIGH LAM ALEF        -->
&#x6DA;=&#x6DA; <!-- ARABIC SMALL HIGH JEEM         -->
&#x6DB;=&#x6DB; <!-- ARABIC SMALL HIGH THREE DOTS        -->
&#x6DC;=&#x6DC; <!-- ARABIC SMALL HIGH SEEN         -->
&#x6DD;=&#x6DD; <!-- ARABIC END OF AYAH         -->
&#x6DE;=&#x6DE; <!-- ARABIC START OF RUB EL HIZB       -->
&#x6DF;=&#x6DF; <!-- ARABIC SMALL HIGH ROUNDED ZERO        -->
&#x6E0;=&#x6E0; <!-- ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO       -->
&#x6E1;=&#x6E1; <!-- ARABIC SMALL HIGH DOTLESS HEAD OF KHAH      -->
&#x6E2;=&#x6E2; <!-- ARABIC SMALL HIGH MEEM ISOLATED FORM       -->
&#x6E3;=&#x6E3; <!-- ARABIC SMALL LOW SEEN         -->
&#x6E4;=&#x6E4; <!-- ARABIC SMALL HIGH MADDA         -->
&#x6E5;=&#x6E5; <!-- ARABIC SMALL WAW          -->
&#x6E6;=&#x6E6; <!-- ARABIC SMALL YEH          -->
&#x6E7;=&#x6E7; <!-- ARABIC SMALL HIGH YEH         -->
&#x6E8;=&#x6E8; <!-- ARABIC SMALL HIGH NOON         -->
&#x6E9;=&#x6E9; <!-- ARABIC PLACE OF SAJDAH         -->
&#x6EA;=&#x6EA; <!-- ARABIC EMPTY CENTRE LOW STOP        -->
&#x6EB;=&#x6EB; <!-- ARABIC EMPTY CENTRE HIGH STOP        -->
&#x6EC;=&#x6EC; <!-- ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE      -->
&#x6ED;=&#x6ED; <!-- ARABIC SMALL LOW MEEM         -->
&#x6EE;=&#x6EE; <!-- ARABIC LETTER DAL WITH INVERTED V       -->
&#x6EF;=&#x6EF; <!-- ARABIC LETTER REH WITH INVERTED V       -->
&#x6F0;=&#x6F0; <!-- EXTENDED ARABIC-INDIC DIGIT ZERO         -->
&#x6F1;=&#x6F1; <!-- EXTENDED ARABIC-INDIC DIGIT ONE         -->
&#x6F2;=&#x6F2; <!-- EXTENDED ARABIC-INDIC DIGIT TWO         -->
&#x6F3;=&#x6F3; <!-- EXTENDED ARABIC-INDIC DIGIT THREE         -->
&#x6F4;=&#x6F4; <!-- EXTENDED ARABIC-INDIC DIGIT FOUR         -->
&#x6F5;=&#x6F5; <!-- EXTENDED ARABIC-INDIC DIGIT FIVE         -->
&#x6F6;=&#x6F6; <!-- EXTENDED ARABIC-INDIC DIGIT SIX         -->
&#x6F7;=&#x6F7; <!-- EXTENDED ARABIC-INDIC DIGIT SEVEN         -->
&#x6F8;=&#x6F8; <!-- EXTENDED ARABIC-INDIC DIGIT EIGHT         -->
&#x6F9;=&#x6F9; <!-- EXTENDED ARABIC-INDIC DIGIT NINE         -->
&#x6FA;=&#x6FA; <!-- ARABIC LETTER SHEEN WITH DOT BELOW       -->
&#x6FB;=&#x6FB; <!-- ARABIC LETTER DAD WITH DOT BELOW       -->
&#x6FC;=&#x6FC; <!-- ARABIC LETTER GHAIN WITH DOT BELOW       -->
&#x6FF;=&#x6FF; <!-- ARABIC LETTER HEH WITH INVERTED V       -->
 
&#x1E26;=&#x1E26;  <!--   latin capital letter h with diaeresis   -->
&#x1E27;=&#x1E27;  <!--   latin small letter h with diaeresis   -->
&#x1E2E;=&#x1E2E;  <!--   latin capital letter i with diaeresis and acute   -->
&#x1E2F;=&#x1E2F;  <!--   latin small letter i with diaeresis and acute   -->
&#x1E4E;=&#x1E4E;  <!--   latin capital letter o with tilde and diaeresis   -->
&#x1E4F;=&#x1E4F;  <!--   latin small letter o with tilde and diaeresis   -->
&#x1E72;=&#x1E72;  <!--   latin capital letter u with diaeresis below   -->
&#x1E73;=&#x1E73;  <!--   latin small letter u with diaeresis below   -->
&#x1E7A;=&#x1E7A;  <!--   latin capital letter u with macron and diaeresis   -->
&#x1E7B;=&#x1E7B;  <!--   latin small letter u with macron and diaeresis   -->
&#x1E84;=&#x1E84;  <!--   latin capital letter w with diaeresis   -->
&#x1E85;=&#x1E85;  <!--   latin small letter w with diaeresis   -->
&#x1E8C;=&#x1E8C;  <!--   latin capital letter x with diaeresis   -->
&#x1E8D;=&#x1E8D;  <!--   latin small letter x with diaeresis   -->
&#x1E97;=&#x1E97;  <!--   latin small letter t with diaeresis   -->

Open in new window

0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23001638
Hello Experts,

I have added the below xslt code in my xslt and found that the strings which are supposed to appear in ph element is not appearing whereas with previous xslt code analyze string it takes all indiviual strings in ph element.

I think the regex=" " and below xslt code seems processing differently.

<xsl:if test="not(contains($clean, ' '))">
                        <ph>
                              <xsl:value-of select="."/>
                        </ph>
</xsl:if>

Also, I have attached the full xslt code for other templates in code snippet.

Thanks,
Shailesh

Thanks,
Shailesh
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://sf.net/saxon"
  xmlns:lookup="java:com.adobe.gep.unicodelookup.UnicodeCharLookup" xmlns:string="java:java.lang.String" exclude-result-prefixes="saxon lookup string">
  <xsl:output encoding="UTF-8" method="xml" indent="yes"/>
  <xsl:param name="locale">en-us</xsl:param>
  <xsl:variable name="lookup" select="lookup:getInstance()"/>
  <xsl:template match="/">
    <dita>
      <xsl:apply-templates/>
      <xsl:call-template name="statements"/>
      <xsl:call-template name="operators"/>
      <xsl:call-template name="charset-codes"/>
      <xsl:call-template name="TimedTextTags"/>
      <xsl:call-template name="specialTypes"/>
      <xsl:call-template name="runtimeErrorDescriptions"/>
      <xsl:call-template name="overviews"/>
      <xsl:call-template name="motionXSD"/>
      <xsl:call-template name="localDatabaseSQLSupport"/>
      <xsl:call-template name="localDatabaseSQLErrorDetails"/>
      <xsl:call-template name="legalNotices"/>
    </dita>
  </xsl:template>
  <xsl:template match="apiPackage//apiClassifier[contains(@class,' topic/topic ')]">
    <xsl:variable name="apiClassifierid" select="@id"/>
    <xsl:variable name="pkg.id" select="ancestor::apiPackage/@id"/>
    <xsl:variable name="dot">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$apiClassifierid"/>
        <xsl:with-param name="find-word" select="'.'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="idcolon">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$dot"/>
        <xsl:with-param name="find-word" select="':'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <topic>
      <xsl:attribute name="id">
        <xsl:value-of select="$idcolon"/>
      </xsl:attribute>
      <xsl:attribute name="href">
        <xsl:variable name="classNameText" select="substring-after($apiClassifierid,':')"/>
        <xsl:variable name="packageNameText" select="substring-before($apiClassifierid,':')"/>
        <xsl:variable name="hlink">
          <xsl:variable name="packageName">
            <xsl:choose>
              <xsl:when test="contains($packageNameText,'globalClassifier:')">
                <xsl:value-of select="' '"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="$packageNameText"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>
          <xsl:variable name="destination" select="concat($packageName,':',$classNameText)"/>
          <xsl:variable name="h1" select="substring-before($destination,':')"/>
          <xsl:variable name="h2" select="substring-after($destination,':')"/>
          <xsl:variable name="file" select="concat(translate($h1,'.','/'),'/',$h2)"/>
          <xsl:variable name="gfile" select="$h2"/>
          <xsl:if test="contains($destination,'.')">
            <xsl:value-of select="$file"/>
          </xsl:if>
          <xsl:if test="not(contains($destination,'.'))">
            <xsl:value-of select="$gfile"/>
          </xsl:if>
        </xsl:variable>
        <xsl:value-of select="$hlink"/>
      </xsl:attribute>
      <title>
        <xsl:variable name="titletext">
          <xsl:value-of select="apiName"/>
        </xsl:variable>
        <ph otherprops="unmodified">
          <xsl:value-of select="normalize-space($titletext)"/>
        </ph>
        <ph otherprops="parsed">
          <xsl:value-of select="lower-case($titletext)"/>
        </ph>
      </title>
      <body>
        <p>
          <ph>
            <xsl:variable name="case" select="lower-case($apiClassifierid)"/>
            <xsl:value-of select="translate($case,':','.')"/>
          </ph>
          <ph>
            <xsl:call-template name="lowercase">
              <xsl:with-param name="text" select="$pkg.id"/>
            </xsl:call-template>
          </ph>
          <xsl:apply-templates select="apiName/text()"/>
          <xsl:apply-templates select=".//apiValue"/>
          <xsl:apply-templates
            select=".//node()[contains(@class,' topic/body ') or contains(@class,' topic/title ') or contains(@class,' topic/topic ')]"/>
          <xsl:apply-templates select=".//styles/style"/>
        </p>
      </body>
    </topic>
    <xsl:apply-templates
      select="apiClassifier[contains(@class,' topic/topic ')]
			[not(contains(@class,' mini-reference/mini-reference ') or
			contains(@class,' mini-task/mini-task '))]"
    />
  </xsl:template>
  <xsl:template match="styles/style">
    <ph>
      <xsl:value-of select="lower-case(@name)"/>
    </ph>
  </xsl:template>
  <xsl:template match="apiValue">
    <ph>
      <xsl:value-of select="lower-case(./apiName)"/>
    </ph>
  </xsl:template>
  <xsl:template match="apiPackage/apiOperation[contains(@class,' topic/topic ')]">
    <xsl:variable name="apiOperationid" select="@id"/>
    <xsl:variable name="pkg.id" select="ancestor::apiPackage/@id"/>
    <xsl:variable name="dot">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$apiOperationid"/>
        <xsl:with-param name="find-word" select="'.'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="idcolon">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$dot"/>
        <xsl:with-param name="find-word" select="':'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <topic>
      <xsl:attribute name="id">
        <xsl:value-of select="$idcolon"/>
      </xsl:attribute>
      <xsl:attribute name="href">
        <xsl:variable name="classNameText" select="substring-after($apiOperationid,':')"/>
        <xsl:variable name="packageNameText" select="substring-before($apiOperationid,':')"/>
        <xsl:variable name="hlink">
          <xsl:variable name="packageName" select="$packageNameText"/>
          <xsl:variable name="destination" select="concat($packageName,':',$classNameText)"/>
          <xsl:variable name="h1" select="substring-before($destination,':')"/>
          <xsl:variable name="h2" select="substring-after($destination,':')"/>
          <xsl:variable name="file" select="concat(translate($h1,'.','/'),'/','package')"/>
          <xsl:variable name="gfile" select="'package'"/>
          <xsl:if test="contains($destination,'.')">
            <xsl:value-of select="$file"/>
          </xsl:if>
          <xsl:if test="not(contains($destination,'.'))">
            <xsl:value-of select="$gfile"/>
          </xsl:if>
        </xsl:variable>
        <xsl:value-of select="$hlink"/>
      </xsl:attribute>
      <title>
        <xsl:variable name="titletext">
          <xsl:value-of select="apiName"/>
        </xsl:variable>
        <ph otherprops="unmodified">
          <xsl:value-of select="normalize-space($titletext)"/>
        </ph>
        <ph otherprops="parsed">
          <xsl:value-of select="lower-case($titletext)"/>
        </ph>
      </title>
      <body>
        <p>
          <ph>
            <xsl:variable name="case" select="lower-case($apiOperationid)"/>
            <xsl:value-of select="translate($case,':','.')"/>
          </ph>
          <ph>
            <xsl:call-template name="lowercase">
              <xsl:with-param name="text" select="$pkg.id"/>
            </xsl:call-template>
          </ph>
          <xsl:apply-templates select="apiName/text()"/>
          <xsl:apply-templates select=".//node()[contains(@class,' topic/title ') or contains(@class,' topic/topic ')]"/>
        </p>
      </body>
    </topic>
  </xsl:template>
  <xsl:template match="apiPackage/apiValue[contains(@class,' topic/topic ')]">
    <xsl:variable name="apiValueid" select="@id"/>
    <xsl:variable name="pkg.id" select="ancestor::apiPackage/@id"/>
    <xsl:variable name="dot">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$apiValueid"/>
        <xsl:with-param name="find-word" select="'.'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="idcolon">
      <xsl:call-template name="replace.id">
        <xsl:with-param name="text-string" select="$dot"/>
        <xsl:with-param name="find-word" select="':'"/>
        <xsl:with-param name="replace-with" select="'_'"/>
      </xsl:call-template>
    </xsl:variable>
    <topic>
      <xsl:attribute name="id">
        <xsl:value-of select="$idcolon"/>
      </xsl:attribute>
      <xsl:attribute name="href">
        <xsl:variable name="classNameText" select="substring-after($apiValueid,':')"/>
        <xsl:variable name="packageNameText" select="substring-before($apiValueid,':')"/>
        <xsl:variable name="hlink">
          <xsl:variable name="packageName" select="$packageNameText"/>
          <xsl:variable name="destination" select="concat($packageName,':',$classNameText)"/>
          <xsl:variable name="h1" select="substring-before($destination,':')"/>
          <xsl:variable name="h2" select="substring-after($destination,':')"/>
          <xsl:variable name="file" select="concat(translate($h1,'.','/'),'/','package')"/>
          <xsl:variable name="gfile" select="'package'"/>
          <xsl:if test="contains($destination,'.')">
            <xsl:value-of select="$file"/>
          </xsl:if>
          <xsl:if test="not(contains($destination,'.'))">
            <xsl:value-of select="$gfile"/>
          </xsl:if>
        </xsl:variable>
        <xsl:value-of select="$hlink"/>
      </xsl:attribute>
      <title>
        <xsl:variable name="titletext">
          <xsl:value-of select="apiName"/>
        </xsl:variable>
        <ph otherprops="unmodified">
          <xsl:value-of select="normalize-space($titletext)"/>
        </ph>
        <ph otherprops="parsed">
          <xsl:value-of select="lower-case($titletext)"/>
        </ph>
      </title>
      <body>
        <p>
          <ph>
            <xsl:variable name="case" select="lower-case($apiValueid)"/>
            <xsl:value-of select="translate($case,':','.')"/>
          </ph>
          <ph>
            <xsl:call-template name="lowercase">
              <xsl:with-param name="text" select="$pkg.id"/>
            </xsl:call-template>
          </ph>
          <xsl:apply-templates select="apiName/text()"/>
          <xsl:apply-templates select=".//node()[contains(@class,' topic/title ') or contains(@class,' topic/topic ')]"/>
        </p>
      </body>
    </topic>
  </xsl:template>
  <xsl:template name="statements">
    <xsl:for-each select="document('../../xml/statements.xml')//statement">
      <xsl:variable name="sts.name">
        <xsl:choose>
          <xsl:when test="contains(@name,'...') or contains(@name,'(') or contains(@name,' ') or contains(@name,'..')"/>
          <xsl:otherwise>
            <xsl:value-of select="@name"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="statements">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- Operators -->
  <xsl:template name="operators">
    <xsl:for-each select="document('../../xml/operators.xml')//operator">
      <xsl:variable name="sts.name">
        <xsl:choose>
          <xsl:when test="contains(@name,'...') or contains(@name,'(') or contains(@name,' ') or contains(@name,'..')"/>
          <xsl:otherwise>
            <xsl:value-of select="@name"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="operators">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- charset-codes -->
  <xsl:template name="charset-codes">
    <xsl:for-each select="document('../../xml/charset-codes.xml')//charset-codes">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'charset-codes'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="charset-codes">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- TimedTextTags -->
  <xsl:template name="TimedTextTags">
    <xsl:for-each select="document('../../xml/TimedTextTags.xml')//TimedTextTags">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'TimedTextTags'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="TimedTextTags">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- specialTypes -->
  <xsl:template name="specialTypes">
    <xsl:for-each select="document('../../xml/specialTypes.xml')//specialType">
      <xsl:variable name="sts.name">
        <xsl:choose>
          <xsl:when test="contains(@name,'*')"/>
          <xsl:otherwise>
            <xsl:value-of select="@name"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="specialTypes">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- runtimeErrorDescriptions -->
  <xsl:template name="runtimeErrorDescriptions">
    <xsl:for-each select="document('../../xml/runtimeErrorDescriptions.xml')/errors">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'runtimeErrors'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="runtimeErrors">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- overviews -->
  <xsl:template name="overviews">
    <xsl:for-each select="document('../../xml/overviews.xml')/overviews/book">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'overview'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="overview">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- motionXSD -->
  <xsl:template name="motionXSD">
    <xsl:for-each select="document('../../xml/motionXSD.xml')//motionXSD">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'motionXSD'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="motionXSD">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- localDatabaseSQLSupport -->
  <xsl:template name="localDatabaseSQLSupport">
    <xsl:for-each select="document('../../xml/localDatabaseSQLSupport.xml')/asdoc/localDatabaseSQLSupport">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'localDatabaseSQLSupport'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="localDatabaseSQLSupport">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- localDatabaseSQLErrorDetails -->
  <xsl:template name="localDatabaseSQLErrorDetails">
    <xsl:for-each select="document('../../xml/localDatabaseSQLErrorDetails.xml')/asdoc/localDatabaseSQLErrorDetails">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'localDatabaseSQLErrorDetails'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="localDatabaseSQLErrorDetails">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  <!-- legalNotices -->
  <xsl:template name="legalNotices">
    <xsl:for-each select="document('../../xml/legalNotices.xml')/legalNotices">
      <xsl:variable name="sts.name">
        <xsl:value-of select="'legalNotices'"/>
      </xsl:variable>
      <xsl:if test="$sts.name!=''">
        <topic id="{$sts.name}" href="legalNotices">
          <title>
            <xsl:variable name="titletext">
              <xsl:value-of select="$sts.name"/>
            </xsl:variable>
            <ph otherprops="unmodified">
              <xsl:value-of select="normalize-space($titletext)"/>
            </ph>
            <ph otherprops="parsed">
              <xsl:value-of select="lower-case($sts.name)"/>
            </ph>
          </title>
          <body>
            <p>
              <ph>
                <xsl:variable name="case" select="lower-case($sts.name)"/>
                <xsl:value-of select="translate($case,':','.')"/>
              </ph>
              <ph>
                <xsl:call-template name="lowercase">
                  <xsl:with-param name="text" select="$sts.name"/>
                </xsl:call-template>
              </ph>
              <xsl:apply-templates select=".//node()"/>
            </p>
          </body>
        </topic>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
  
  <xsl:template match="text()">
    <xsl:variable name="clean">
      <xsl:call-template name="replace">
        <xsl:with-param name="text">
          <xsl:call-template name="lowercase">
            <xsl:with-param name="text">
              <xsl:text> </xsl:text>
              <xsl:value-of select="normalize-space(.)"/>
            </xsl:with-param>
          </xsl:call-template>
          <xsl:text> </xsl:text>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:variable>
    <xsl:analyze-string select="$clean" regex=" ">
      <xsl:matching-substring/>
      <xsl:non-matching-substring>
        <ph>
          <xsl:value-of select="."/>
        </ph>
      </xsl:non-matching-substring>
    </xsl:analyze-string>
 
    <!--xsl:if test="not(contains($clean,' '))">
                  <ph>
                    <xsl:value-of select="."/>
                  </ph>
      </xsl:if-->
  </xsl:template>
 
  <xsl:template name="lowercase">
    <xsl:param name="text">none</xsl:param>
    <xsl:value-of select="lower-case($text)"/>
  </xsl:template>
 
  <xsl:template name="replace">
    <xsl:param name="text">none</xsl:param>
    <xsl:call-template name="lookupChar">
      <xsl:with-param name="text">
        <xsl:value-of select="$text"/>
      </xsl:with-param>
    </xsl:call-template>
  </xsl:template>
 
  <xsl:template name="lookupChar">
    <xsl:param name="text"/>
    <xsl:param name="flag"/>
    <xsl:if test="string-length($text) > 0">
      <xsl:variable name="char">
        <xsl:value-of select="substring($text,1,1)"/>
      </xsl:variable>
      <xsl:variable name="lookupChar" select="lookup:getChar($lookup, $char, $locale)"/>
      <xsl:choose>
        <xsl:when test="$lookupChar = ''">
          <xsl:text> </xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$char"/>
        </xsl:otherwise>
      </xsl:choose>
 
      <xsl:call-template name="lookupChar">
        <xsl:with-param name="text">
          <xsl:value-of select="substring-after($text,$char)"/>
        </xsl:with-param>
        <xsl:with-param name="flag">
          <xsl:value-of select="$lookupChar"/>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>
 
  <xsl:template match="xref | link | adobeindexterm | adobekeyword"/>
 
  <xsl:template match="node()[not(self::text())]" priority="-1">
    <xsl:apply-templates/>
  </xsl:template>
  <xsl:template name="replace.id">
    <xsl:param name="text-string"/>
    <xsl:param name="find-word"/>
    <xsl:param name="replace-with"/>
    <xsl:choose>
      <xsl:when test="contains($text-string,$find-word)">
        <xsl:call-template name="replace.id">
          <xsl:with-param name="text-string"
            select="concat(substring-before($text-string,$find-word),$replace-with,substring-after($text-string,$find-word))"/>
          <xsl:with-param name="find-word" select="$find-word"/>
          <xsl:with-param name="replace-with" select="$replace-with"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$text-string"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template match="apiPackage/apiName/text()"/>
</xsl:stylesheet>

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23010761
??
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 23010920
patience my friend, I will give this a closer look later today... remember that we are volunteers that have a job :-)
0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23010925
yup!!
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 23020730
I see a lot of things going wrong here, but I don't understand all you are doing
(mainly because I miss the definition of some functions for lookup)

You walk through the text nodes, character by character, you don't need to do that using recursion in XSLT2,
you can simply analyse-string on them.
I don't understand the lookup.

Without looking at the code, I have the impression that you are replacing a character entity with... itself?
Why do you do that this way?

So before I can get started, I would like an explanation of what exactly you are trying to do, and a copy of de definition of both lookup: functions

cheers

Geert
0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23026828
Hello Experts,

I have debug the xslt code and found that the <xsl:template name="lookupChar"> is taking too much processing time. Basically what it does it looks each character in goodchar.properties file and construct the string which it adds to ph element.

This process we are using for search and ph elements are playing the role of keywords which when user copied any string from the html content and put it in the search text field and click the button then the result of the search keyword was if it present in any package or class it will display that class or package which contains that keyword.
 

Also, I have already attached in the code snippet previously. which use something like below...
&#x30;=&#x30;  <!--  number 0  -->
&#x31;=&#x31;  <!--  number 1  -->
&#x32;=&#x32;  <!--  number 2  -->
&#x33;=&#x33;  <!--  number 3  -->
&#x34;=&#x34;  <!--  number 4  -->
&#x35;=&#x35;  <!--  number 5  -->
&#x36;=&#x36;  <!--  number 6  -->
&#x37;=&#x37;  <!--  number 7  -->
&#x38;=&#x38;  <!--  number 8  -->
&#x39;=&#x39;  <!--  number 9  -->
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 23033729
I am sorry, I still don't understand
> Basically what it does it looks each character in goodchar.properties file and construct the string which it adds to ph element
constructs teh string how?
I could imagine there was a replacement, but I still don't see how. And yes, "lookupchar" is the bottleneck... that was already obvious.

I still don't have the definition of the two functions as I asked before
0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23035051
Hello Expert,

<xsl:variable name="lookup" select="lookup:getInstance()"/> and <xsl:variable name="lookupChar" select="lookup:getChar($lookup, $char, $locale)"/>

The above two processing is done through the java jar file for following things...

This class provides a lookup for matching a unicode character to its pronounciation string or grouping character
This is done by looking up the character in a sortorder.properties file. To use the class, get a reference to it by calling <code>UnicodeCharLookup lookup = UnicodeCharLookup.getInstance()</code> and To perform a lookup call the following <code>lookup.getChar(term)</code> then Looks up the unicode character for a given character, or the first char of a given string and then The unicode character for the input string or empty string if character not found. Also, Returns the unicode entity corresponding to the first character of the input string
      @param value The string value to convert to entity
      @return The unicode entity
0
 
LVL 60

Accepted Solution

by:
Geert Bormans earned 1000 total points
ID: 23040178
does that mean you are doing something like
é becomes &#233; in the char-lookup?

I have optimised your recursive template for XSLT2.
I am afraid that the bottle neck is in the Java Code, I still don't get completely what you are doing there,
and I don't really want to dive into java code,
but I have a feeling that you could replace that java code with a simple XSLT lookup, using a key and an XPath
let me know if you agree

I by the way don't understand why you pass the $flag, if you don't use it
                        <xsl:with-param name="flag">
                              <xsl:value-of select="$lookupChar"/>
                        </xsl:with-param>

    <xsl:template name="lookupChar">
        <xsl:param name="text"/>
        <xsl:param name="flag"/>
        <xsl:for-each select="for $i in (1 to string-length($text)) return substring($text,$i,1)">
            <xsl:variable name="lookupChar" select="lookup:getChar($lookup, . , $locale)"/>
            <xsl:choose>
                <xsl:when test="$lookupChar = ''">
                    <xsl:text> </xsl:text>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </xsl:template>

Open in new window

0
 
LVL 1

Author Comment

by:ShaileshShinde
ID: 23041188
Hello Experts,

Will test this xslt code with few locales and let you know.


Thanks,
Shailesh
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
SASS allows you to treat your CSS code in a more OOP way. Let's have a look on how you can structure your code in order for it to be easily maintained and reused.
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
Suggested Courses

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question