diff --git a/PKG-INFO b/PKG-INFO
index f72c76122c70ff5993af360ec32b1bc55d9c2fe0..9014429356322b9422a2bb7069bc7a5adcc22ebc 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: regex
-Version: 2020.11.13
+Version: 2021.10.8
 Summary: Alternative regular expression module, to replace re.
 Home-page: https://bitbucket.org/mrabarnett/mrab-regex
 Author: Matthew Barnett
@@ -16,6 +16,11 @@ Description: Introduction
         
         The re module's behaviour with zero-width matches changed in Python 3.7, and this module will follow that behaviour when compiled for Python 3.7.
         
+        PyPy
+        ----
+        
+        This module is targeted at CPython. It expects that all codepoints are the same width, so it won't behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.
+        
         Old vs new behaviour
         --------------------
         
@@ -137,7 +142,7 @@ Description: Introduction
         Unicode
         -------
         
-        This module supports Unicode 13.0.0.
+        This module supports Unicode 14.0.0.
         
         Full Unicode case-folding is supported.
         
@@ -1075,11 +1080,11 @@ Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 Classifier: Topic :: Scientific/Engineering :: Information Analysis
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: Text Processing
diff --git a/README.rst b/README.rst
index 622c000811416210017c76dc2f88702b41eb8388..304f2b116b05b7da1509b8c63f67fcf7cd21c63b 100644
--- a/README.rst
+++ b/README.rst
@@ -8,6 +8,11 @@ Note
 
 The re module's behaviour with zero-width matches changed in Python 3.7, and this module will follow that behaviour when compiled for Python 3.7.
 
+PyPy
+----
+
+This module is targeted at CPython. It expects that all codepoints are the same width, so it won't behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.
+
 Old vs new behaviour
 --------------------
 
@@ -129,7 +134,7 @@ The regex module releases the GIL during matching on instances of the built-in (
 Unicode
 -------
 
-This module supports Unicode 13.0.0.
+This module supports Unicode 14.0.0.
 
 Full Unicode case-folding is supported.
 
diff --git a/docs/Features.html b/docs/Features.html
index 34d0e4b5ba3d3c6ee729c02a4863f53463f9a5bd..1704c4aef8ee42d760db6e4a11318332516b9c93 100644
--- a/docs/Features.html
+++ b/docs/Features.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.15.2: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.17: http://docutils.sourceforge.net/" />
 <title>Features.rst</title>
 <style type="text/css">
 
@@ -371,6 +371,10 @@ ul.auto-toc {
 <h1>Note</h1>
 <p>The re module's behaviour with zero-width matches changed in Python 3.7, and this module will follow that behaviour when compiled for Python 3.7.</p>
 </div>
+<div class="section" id="pypy">
+<h1>PyPy</h1>
+<p>This module is targeted at CPython. It expects that all codepoints are the same width, so it won't behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.</p>
+</div>
 <div class="section" id="old-vs-new-behaviour">
 <h1>Old vs new behaviour</h1>
 <p>In order to be compatible with the re module, this module has 2 behaviours:</p>
@@ -461,7 +465,7 @@ ul.auto-toc {
 </div>
 <div class="section" id="unicode">
 <h1>Unicode</h1>
-<p>This module supports Unicode 13.0.0.</p>
+<p>This module supports Unicode 14.0.0.</p>
 <p>Full Unicode case-folding is supported.</p>
 </div>
 <div class="section" id="additional-features">
@@ -480,10 +484,10 @@ ul.auto-toc {
 <p>This is not quite the same as putting a lookaround in the first branch of a pair of alternatives.</p>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'(?:(?=\d)\d+\b|\w+)'</span><span class="punctuation">,</span> <span class="literal string single">'123abc'</span><span class="punctuation">))</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'(?:(?=\d)\d+\b|\w+)'</span><span class="punctuation">,</span> <span class="literal string single">'123abc'</span><span class="punctuation">))</span>
 <span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">6</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'123abc'</span><span class="operator">&gt;</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'(?(?=\d)\d+\b|\w+)'</span><span class="punctuation">,</span> <span class="literal string single">'123abc'</span><span class="punctuation">))</span>
-<span class="name builtin pseudo">None</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'(?(?=\d)\d+\b|\w+)'</span><span class="punctuation">,</span> <span class="literal string single">'123abc'</span><span class="punctuation">))</span>
+<span class="keyword constant">None</span>
 </pre>
 <p>In the first example, the lookaround matched, but the remainder of the first branch failed to match, and so the second branch was attempted, whereas in the second example, the lookaround matched, and the first branch failed to match, but the second branch was <strong>not</strong> attempted.</p>
 </div>
@@ -545,19 +549,19 @@ ul.auto-toc {
 <p>Examples:</p>
 <pre class="code python literal-block">
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w)+&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abc&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{1}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{1}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'c'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{1[0]} {1[1]} {1[2]}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{1[0]}</span><span class="literal string double"> </span><span class="literal string interpol">{1[1]}</span><span class="literal string double"> </span><span class="literal string interpol">{1[2]}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'a b c'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{1[-1]} {1[-2]} {1[-3]}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{1[-1]}</span><span class="literal string double"> </span><span class="literal string interpol">{1[-2]}</span><span class="literal string double"> </span><span class="literal string interpol">{1[-3]}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'c b a'</span>
 <span class="operator">&gt;&gt;&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(?P&lt;letter&gt;\w)+&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abc&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{letter}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{letter}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'c'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{letter[0]} {letter[1]} {letter[2]}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{letter[0]}</span><span class="literal string double"> </span><span class="literal string interpol">{letter[1]}</span><span class="literal string double"> </span><span class="literal string interpol">{letter[2]}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'a b c'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{letter[-1]} {letter[-2]} {letter[-3]}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{letter[-1]}</span><span class="literal string double"> </span><span class="literal string interpol">{letter[-2]}</span><span class="literal string double"> </span><span class="literal string interpol">{letter[-3]}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'c b a'</span>
 </pre>
 </div>
@@ -576,45 +580,45 @@ ul.auto-toc {
 <p>Match objects have a <tt class="docutils literal">partial</tt> attribute, which is <tt class="docutils literal">True</tt> if it's a partial match.</p>
 <p>For example, if you wanted a user to enter a 4-digit number and check it character by character as it was being entered:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">compile</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'\d{4}'</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">compile</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string single">'\d</span><span class="literal string interpol">{4}</span><span class="literal string single">'</span><span class="punctuation">)</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># Initially, nothing has been entered:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">''</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
-<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">0</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">''</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="operator">&gt;</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">''</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
+<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">0</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">''</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="operator">&gt;</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># An empty string is OK, but it's only a partial match.</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># The user enters a letter:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'a'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
-<span class="name builtin pseudo">None</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'a'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
+<span class="keyword constant">None</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># It'll never match.</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># The user deletes that and enters a digit:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'1'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
-<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">1</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'1'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="operator">&gt;</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'1'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
+<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">1</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'1'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="operator">&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># It matches this far, but it's only a partial match.</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># The user enters 2 more digits:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
-<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">3</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="operator">&gt;</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
+<span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">3</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="operator">&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># It matches this far, but it's only a partial match.</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># The user enters another digit:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'1234'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'1234'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
 <span class="operator">&lt;</span><span class="name">regex</span><span class="operator">.</span><span class="name">Match</span> <span class="name builtin">object</span><span class="punctuation">;</span> <span class="name">span</span><span class="operator">=</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">4</span><span class="punctuation">),</span> <span class="name">match</span><span class="operator">=</span><span class="literal string single">'1234'</span><span class="operator">&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># It's a complete match.</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># If the user enters another digit:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'12345'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">))</span>
-<span class="name builtin pseudo">None</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">pattern</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string single">'12345'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">))</span>
+<span class="keyword constant">None</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># It's no longer a match.</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># This is a partial match:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">partial</span>
-<span class="name builtin pseudo">True</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">partial</span>
+<span class="keyword constant">True</span>
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="comment single"># This is a complete match:</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string single">'1233'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">partial</span>
-<span class="name builtin pseudo">False</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">pattern</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string single">'1233'</span><span class="punctuation">,</span> <span class="name">partial</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">partial</span>
+<span class="keyword constant">False</span>
 </pre>
 </div>
 <div class="section" id="operator-not-working-correctly-with-sub-hg-issue-106">
@@ -711,13 +715,13 @@ ul.auto-toc {
 <p><tt class="docutils literal">fullmatch</tt> behaves like <tt class="docutils literal">match</tt>, except that it must match all of the string.</p>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abc&quot;</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abc&quot;</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
 <span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">3</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcx&quot;</span><span class="punctuation">))</span>
-<span class="name builtin pseudo">None</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcx&quot;</span><span class="punctuation">,</span> <span class="name">endpos</span><span class="operator">=</span><span class="literal number integer">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcx&quot;</span><span class="punctuation">))</span>
+<span class="keyword constant">None</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcx&quot;</span><span class="punctuation">,</span> <span class="name">endpos</span><span class="operator">=</span><span class="literal number integer">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
 <span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">3</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;xabcy&quot;</span><span class="punctuation">,</span> <span class="name">pos</span><span class="operator">=</span><span class="literal number integer">1</span><span class="punctuation">,</span> <span class="name">endpos</span><span class="operator">=</span><span class="literal number integer">4</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">regex</span><span class="operator">.</span><span class="name">fullmatch</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;abc&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;xabcy&quot;</span><span class="punctuation">,</span> <span class="name">pos</span><span class="operator">=</span><span class="literal number integer">1</span><span class="punctuation">,</span> <span class="name">endpos</span><span class="operator">=</span><span class="literal number integer">4</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">span</span><span class="punctuation">())</span>
 <span class="punctuation">(</span><span class="literal number integer">1</span><span class="punctuation">,</span> <span class="literal number integer">4</span><span class="punctuation">)</span>
 <span class="operator">&gt;&gt;&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;a.*?&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcd&quot;</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">)</span>
@@ -731,9 +735,9 @@ ul.auto-toc {
 <p><tt class="docutils literal">subf</tt> and <tt class="docutils literal">subfn</tt> are alternatives to <tt class="docutils literal">sub</tt> and <tt class="docutils literal">subn</tt> respectively. When passed a replacement string, they treat it as a format string.</p>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">subf</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w+) (\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;{0} =&gt; {2} {1}&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">subf</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w+) (\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;</span><span class="literal string interpol">{0}</span><span class="literal string double"> =&gt; </span><span class="literal string interpol">{2}</span><span class="literal string double"> </span><span class="literal string interpol">{1}</span><span class="literal string double">&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'foo bar =&gt; bar foo'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">subf</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(?P&lt;word1&gt;\w+) (?P&lt;word2&gt;\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;{word2} {word1}&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">subf</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(?P&lt;word1&gt;\w+) (?P&lt;word2&gt;\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;</span><span class="literal string interpol">{word2}</span><span class="literal string double"> </span><span class="literal string interpol">{word1}</span><span class="literal string double">&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'bar foo'</span>
 </pre>
 </div>
@@ -743,11 +747,11 @@ ul.auto-toc {
 <p>Examples:</p>
 <pre class="code python literal-block">
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w+) (\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{0} =&gt; {2} {1}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{0}</span><span class="literal string double"> =&gt; </span><span class="literal string interpol">{2}</span><span class="literal string double"> </span><span class="literal string interpol">{1}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'foo bar =&gt; bar foo'</span>
 <span class="operator">&gt;&gt;&gt;</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">match</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(?P&lt;word1&gt;\w+) (?P&lt;word2&gt;\w+)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;foo bar&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;{word2} {word1}&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">expandf</span><span class="punctuation">(</span><span class="literal string double">&quot;</span><span class="literal string interpol">{word2}</span><span class="literal string double"> </span><span class="literal string interpol">{word1}</span><span class="literal string double">&quot;</span><span class="punctuation">)</span>
 <span class="literal string single">'bar foo'</span>
 </pre>
 </div>
@@ -757,15 +761,15 @@ ul.auto-toc {
 <p>Example:</p>
 <pre class="code python literal-block">
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">search</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\w+&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;Hello world&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">())</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">())</span>
 <span class="name">Hello</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">string</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">string</span><span class="punctuation">)</span>
 <span class="name">Hello</span> <span class="name">world</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">detach_string</span><span class="punctuation">()</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">())</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">())</span>
 <span class="name">Hello</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">string</span><span class="punctuation">)</span>
-<span class="name builtin pseudo">None</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="operator">.</span><span class="name">string</span><span class="punctuation">)</span>
+<span class="keyword constant">None</span>
 </pre>
 </div>
 <div class="section" id="recursive-patterns-hg-issue-27">
@@ -782,7 +786,7 @@ ul.auto-toc {
 
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">search</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w)(?:(?R)|(\w?))\1&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;kayak&quot;</span><span class="punctuation">)</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span> <span class="literal number integer">1</span><span class="punctuation">,</span> <span class="literal number integer">2</span><span class="punctuation">)</span>
-<span class="punctuation">(</span><span class="literal string single">'kayak'</span><span class="punctuation">,</span> <span class="literal string single">'k'</span><span class="punctuation">,</span> <span class="name builtin pseudo">None</span><span class="punctuation">)</span>
+<span class="punctuation">(</span><span class="literal string single">'kayak'</span><span class="punctuation">,</span> <span class="literal string single">'k'</span><span class="punctuation">,</span> <span class="keyword constant">None</span><span class="punctuation">)</span>
 </pre>
 <p>The first two examples show how the subpattern within the capture group is reused, but is _not_ itself a capture group. In other words, <tt class="docutils literal">&quot;(Tarzan|Jane) loves <span class="pre">(?1)&quot;</span></tt> is equivalent to <tt class="docutils literal">&quot;(Tarzan|Jane) loves <span class="pre">(?:Tarzan|Jane)&quot;</span></tt>.</p>
 <p>It's possible to backtrack into a recursed or repeated group.</p>
@@ -908,7 +912,7 @@ ul.auto-toc {
 </pre>
 <p>The order of the items is irrelevant, they are treated as a set. The named lists are available as the <tt class="docutils literal">.named_lists</tt> attribute of the pattern object :</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">p</span><span class="operator">.</span><span class="name">named_lists</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">p</span><span class="operator">.</span><span class="name">named_lists</span><span class="punctuation">)</span>
 <span class="comment single"># Python 3</span>
 <span class="punctuation">{</span><span class="literal string single">'options'</span><span class="punctuation">:</span> <span class="name builtin">frozenset</span><span class="punctuation">({</span><span class="literal string single">'fifth'</span><span class="punctuation">,</span> <span class="literal string single">'first'</span><span class="punctuation">,</span> <span class="literal string single">'fourth'</span><span class="punctuation">,</span> <span class="literal string single">'second'</span><span class="punctuation">,</span> <span class="literal string single">'third'</span><span class="punctuation">})}</span>
 <span class="comment single"># Python 2</span>
@@ -923,9 +927,9 @@ ul.auto-toc {
   <span class="name">File</span> <span class="literal string double">&quot;C:\Python37\lib\site-packages</span><span class="literal string escape">\r</span><span class="literal string double">egex</span><span class="literal string escape">\r</span><span class="literal string double">egex.py&quot;</span><span class="punctuation">,</span> <span class="name">line</span> <span class="literal number integer">348</span><span class="punctuation">,</span> <span class="operator word">in</span> <span class="name builtin">compile</span>
     <span class="keyword">return</span> <span class="name">_compile</span><span class="punctuation">(</span><span class="name">pattern</span><span class="punctuation">,</span> <span class="name">flags</span><span class="punctuation">,</span> <span class="name">ignore_unused</span><span class="punctuation">,</span> <span class="name">kwargs</span><span class="punctuation">)</span>
   <span class="name">File</span> <span class="literal string double">&quot;C:\Python37\lib\site-packages</span><span class="literal string escape">\r</span><span class="literal string double">egex</span><span class="literal string escape">\r</span><span class="literal string double">egex.py&quot;</span><span class="punctuation">,</span> <span class="name">line</span> <span class="literal number integer">585</span><span class="punctuation">,</span> <span class="operator word">in</span> <span class="name">_compile</span>
-    <span class="keyword">raise</span> <span class="name exception">ValueError</span><span class="punctuation">(</span><span class="literal string single">'unused keyword argument {!a}'</span><span class="operator">.</span><span class="name">format</span><span class="punctuation">(</span><span class="name">any_one</span><span class="punctuation">))</span>
+    <span class="keyword">raise</span> <span class="name exception">ValueError</span><span class="punctuation">(</span><span class="literal string single">'unused keyword argument </span><span class="literal string interpol">{!a}</span><span class="literal string single">'</span><span class="operator">.</span><span class="name">format</span><span class="punctuation">(</span><span class="name">any_one</span><span class="punctuation">))</span>
 <span class="name exception">ValueError</span><span class="punctuation">:</span> <span class="name">unused</span> <span class="name">keyword</span> <span class="name">argument</span> <span class="literal string single">'other_options'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">p</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">compile</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\L&lt;options&gt;&quot;</span><span class="punctuation">,</span> <span class="name">options</span><span class="operator">=</span><span class="name">option_set</span><span class="punctuation">,</span> <span class="name">other_options</span><span class="operator">=</span><span class="punctuation">[],</span> <span class="name">ignore_unused</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">p</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">compile</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\L&lt;options&gt;&quot;</span><span class="punctuation">,</span> <span class="name">options</span><span class="operator">=</span><span class="name">option_set</span><span class="punctuation">,</span> <span class="name">other_options</span><span class="operator">=</span><span class="punctuation">[],</span> <span class="name">ignore_unused</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span>
 <span class="operator">&gt;&gt;&gt;</span>
 </pre>
 </div>
@@ -968,9 +972,9 @@ ul.auto-toc {
 <p>regex.escape has an additional keyword parameter <tt class="docutils literal">special_only</tt>. When True, only 'special' regex characters, such as '?', are escaped.</p>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo!?&quot;</span><span class="punctuation">,</span> <span class="name">special_only</span><span class="operator">=</span><span class="name builtin pseudo">False</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo!?&quot;</span><span class="punctuation">,</span> <span class="name">special_only</span><span class="operator">=</span><span class="keyword constant">False</span><span class="punctuation">)</span>
 <span class="literal string single">'foo</span><span class="literal string escape">\\</span><span class="literal string single">!</span><span class="literal string escape">\\</span><span class="literal string single">?'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo!?&quot;</span><span class="punctuation">,</span> <span class="name">special_only</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo!?&quot;</span><span class="punctuation">,</span> <span class="name">special_only</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span>
 <span class="literal string single">'foo!</span><span class="literal string escape">\\</span><span class="literal string single">?'</span>
 </pre>
 </div>
@@ -979,9 +983,9 @@ ul.auto-toc {
 <p>regex.escape has an additional keyword parameter <tt class="docutils literal">literal_spaces</tt>. When True, spaces are not escaped.</p>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo bar!?&quot;</span><span class="punctuation">,</span> <span class="name">literal_spaces</span><span class="operator">=</span><span class="name builtin pseudo">False</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo bar!?&quot;</span><span class="punctuation">,</span> <span class="name">literal_spaces</span><span class="operator">=</span><span class="keyword constant">False</span><span class="punctuation">)</span>
 <span class="literal string single">'foo</span><span class="literal string escape">\\</span><span class="literal string single"> bar!</span><span class="literal string escape">\\</span><span class="literal string single">?'</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo bar!?&quot;</span><span class="punctuation">,</span> <span class="name">literal_spaces</span><span class="operator">=</span><span class="name builtin pseudo">True</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">escape</span><span class="punctuation">(</span><span class="literal string double">&quot;foo bar!?&quot;</span><span class="punctuation">,</span> <span class="name">literal_spaces</span><span class="operator">=</span><span class="keyword constant">True</span><span class="punctuation">)</span>
 <span class="literal string single">'foo bar!</span><span class="literal string escape">\\</span><span class="literal string single">?'</span>
 </pre>
 </div>
@@ -1008,7 +1012,7 @@ ul.auto-toc {
 </ul>
 <p>Examples:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">search</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w{3})+&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;123456789&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">search</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(\w</span><span class="literal string interpol">{3}</span><span class="literal string double">)+&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;123456789&quot;</span><span class="punctuation">)</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">group</span><span class="punctuation">(</span><span class="literal number integer">1</span><span class="punctuation">)</span>
 <span class="literal string single">'789'</span>
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span><span class="operator">.</span><span class="name">captures</span><span class="punctuation">(</span><span class="literal number integer">1</span><span class="punctuation">)</span>
@@ -1071,11 +1075,11 @@ ul.auto-toc {
 <p>A match object accepts access to the captured groups via subscripting and slicing:</p>
 <pre class="code python literal-block">
 <span class="operator">&gt;&gt;&gt;</span> <span class="name">m</span> <span class="operator">=</span> <span class="name">regex</span><span class="operator">.</span><span class="name">search</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;(?P&lt;before&gt;.*?)(?P&lt;num&gt;\d+)(?P&lt;after&gt;.*)&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;pqr123stu&quot;</span><span class="punctuation">)</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">[</span><span class="literal string double">&quot;before&quot;</span><span class="punctuation">])</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">[</span><span class="literal string double">&quot;before&quot;</span><span class="punctuation">])</span>
 <span class="name">pqr</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">))</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">))</span>
 <span class="literal number integer">4</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">[:])</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name builtin">print</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">[:])</span>
 <span class="punctuation">(</span><span class="literal string single">'pqr123stu'</span><span class="punctuation">,</span> <span class="literal string single">'pqr'</span><span class="punctuation">,</span> <span class="literal string single">'123'</span><span class="punctuation">,</span> <span class="literal string single">'stu'</span><span class="punctuation">)</span>
 </pre>
 </div>
@@ -1127,9 +1131,9 @@ ul.auto-toc {
 <p><tt class="docutils literal">\G</tt></p>
 <p>A search anchor has been added. It matches at the position where each search started/continued and can be used for contiguous matches or in negative variable-length lookbehinds to limit how far back the lookbehind goes:</p>
 <pre class="code python literal-block">
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">findall</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\w{2}&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcd ef&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">findall</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\w</span><span class="literal string interpol">{2}</span><span class="literal string double">&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcd ef&quot;</span><span class="punctuation">)</span>
 <span class="punctuation">[</span><span class="literal string single">'ab'</span><span class="punctuation">,</span> <span class="literal string single">'cd'</span><span class="punctuation">,</span> <span class="literal string single">'ef'</span><span class="punctuation">]</span>
-<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">findall</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\G\w{2}&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcd ef&quot;</span><span class="punctuation">)</span>
+<span class="operator">&gt;&gt;&gt;</span> <span class="name">regex</span><span class="operator">.</span><span class="name">findall</span><span class="punctuation">(</span><span class="literal string affix">r</span><span class="literal string double">&quot;\G\w</span><span class="literal string interpol">{2}</span><span class="literal string double">&quot;</span><span class="punctuation">,</span> <span class="literal string double">&quot;abcd ef&quot;</span><span class="punctuation">)</span>
 <span class="punctuation">[</span><span class="literal string single">'ab'</span><span class="punctuation">,</span> <span class="literal string single">'cd'</span><span class="punctuation">]</span>
 </pre>
 <ul class="simple">
@@ -1198,7 +1202,7 @@ ul.auto-toc {
   <span class="name">File</span> <span class="literal string double">&quot;&lt;stdin&gt;&quot;</span><span class="punctuation">,</span> <span class="name">line</span> <span class="literal number integer">1</span><span class="punctuation">,</span> <span class="operator word">in</span> <span class="operator">&lt;</span><span class="name">module</span><span class="operator">&gt;</span>
   <span class="name">File</span> <span class="literal string double">&quot;C:\Python37\lib\site-packages</span><span class="literal string escape">\r</span><span class="literal string double">egex</span><span class="literal string escape">\r</span><span class="literal string double">egex.py&quot;</span><span class="punctuation">,</span> <span class="name">line</span> <span class="literal number integer">276</span><span class="punctuation">,</span> <span class="operator word">in</span> <span class="name">sub</span>
     <span class="name">endpos</span><span class="punctuation">,</span> <span class="name">concurrent</span><span class="punctuation">,</span> <span class="name">timeout</span><span class="punctuation">)</span>
-<span class="name">TimeoutError</span><span class="punctuation">:</span> <span class="name">regex</span> <span class="name">timed</span> <span class="name">out</span>
+<span class="name exception">TimeoutError</span><span class="punctuation">:</span> <span class="name">regex</span> <span class="name">timed</span> <span class="name">out</span>
 </pre>
 </div>
 </div>
diff --git a/docs/Features.rst b/docs/Features.rst
index 622c000811416210017c76dc2f88702b41eb8388..304f2b116b05b7da1509b8c63f67fcf7cd21c63b 100644
--- a/docs/Features.rst
+++ b/docs/Features.rst
@@ -8,6 +8,11 @@ Note
 
 The re module's behaviour with zero-width matches changed in Python 3.7, and this module will follow that behaviour when compiled for Python 3.7.
 
+PyPy
+----
+
+This module is targeted at CPython. It expects that all codepoints are the same width, so it won't behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.
+
 Old vs new behaviour
 --------------------
 
@@ -129,7 +134,7 @@ The regex module releases the GIL during matching on instances of the built-in (
 Unicode
 -------
 
-This module supports Unicode 13.0.0.
+This module supports Unicode 14.0.0.
 
 Full Unicode case-folding is supported.
 
diff --git a/regex.egg-info/PKG-INFO b/regex.egg-info/PKG-INFO
index f72c76122c70ff5993af360ec32b1bc55d9c2fe0..9014429356322b9422a2bb7069bc7a5adcc22ebc 100644
--- a/regex.egg-info/PKG-INFO
+++ b/regex.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: regex
-Version: 2020.11.13
+Version: 2021.10.8
 Summary: Alternative regular expression module, to replace re.
 Home-page: https://bitbucket.org/mrabarnett/mrab-regex
 Author: Matthew Barnett
@@ -16,6 +16,11 @@ Description: Introduction
         
         The re module's behaviour with zero-width matches changed in Python 3.7, and this module will follow that behaviour when compiled for Python 3.7.
         
+        PyPy
+        ----
+        
+        This module is targeted at CPython. It expects that all codepoints are the same width, so it won't behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.
+        
         Old vs new behaviour
         --------------------
         
@@ -137,7 +142,7 @@ Description: Introduction
         Unicode
         -------
         
-        This module supports Unicode 13.0.0.
+        This module supports Unicode 14.0.0.
         
         Full Unicode case-folding is supported.
         
@@ -1075,11 +1080,11 @@ Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 Classifier: Topic :: Scientific/Engineering :: Information Analysis
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: Text Processing
diff --git a/regex_2/_regex.c b/regex_2/_regex.c
index 6fc162735cc38c126766b12a6c8cb847108c4312..126dac8e330be252205be117a3483807620741c0 100644
--- a/regex_2/_regex.c
+++ b/regex_2/_regex.c
@@ -6388,13 +6388,13 @@ Py_LOCAL_INLINE(BOOL) build_fast_tables_rev(RE_State* state, RE_Node* node,
 
 /* Performs a string search. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6409,7 +6409,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6576,13 +6576,13 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_fld_rev(RE_State* state, RE_Node*
 
 /* Performs a string search, ignoring case. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6597,7 +6597,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6617,13 +6617,14 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
 
 /* Performs a string search, backwards, ignoring case. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
-  node, Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  node, Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial)
+  {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6638,7 +6639,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6658,13 +6659,13 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
 
 /* Performs a string search, backwards. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_rev(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6679,7 +6680,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_rev(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -8077,7 +8078,8 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING(RE_State* state, RE_Node* node,
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search(state, node, text_pos, state->slice_end, is_partial);
+    return string_search(state, node, text_pos, state->slice_end, TRUE,
+      is_partial);
 }
 
 /* Searches for a string, ignoring case. */
@@ -8116,7 +8118,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_IGN(RE_State* state, RE_Node*
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search_ign(state, node, text_pos, state->slice_end,
+    return string_search_ign(state, node, text_pos, state->slice_end, TRUE,
       is_partial);
 }
 
@@ -8129,7 +8131,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_IGN_REV(RE_State* state,
         return text_pos;
 
     return string_search_ign_rev(state, node, text_pos, state->slice_start,
-      is_partial);
+      TRUE, is_partial);
 }
 
 /* Searches for a string, backwards. */
@@ -8140,7 +8142,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_REV(RE_State* state, RE_Node*
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search_rev(state, node, text_pos, state->slice_start,
+    return string_search_rev(state, node, text_pos, state->slice_start, TRUE,
       is_partial);
 }
 
@@ -9466,11 +9468,13 @@ too_wide:
     return NULL;
 }
 
+/* Calculates the total number of errors. */
 Py_LOCAL_INLINE(size_t) total_errors(size_t* fuzzy_counts) {
     return fuzzy_counts[RE_FUZZY_DEL] + fuzzy_counts[RE_FUZZY_INS] +
       fuzzy_counts[RE_FUZZY_SUB];
 }
 
+/* Calculates the total cost of the errors. */
 Py_LOCAL_INLINE(size_t) total_cost(size_t* fuzzy_counts, RE_Node* fuzzy_node) {
     RE_CODE* values;
 
@@ -9764,6 +9768,9 @@ Py_LOCAL_INLINE(BOOL) fuzzy_ext_match(RE_State* state, RE_Node* fuzzy_node,
   Py_ssize_t pos) {
     RE_Node* test_node;
 
+    if (!fuzzy_node)
+        return TRUE;
+
     test_node = fuzzy_node->nonstring.next_2.node;
     if (!test_node)
         return TRUE;
@@ -9942,6 +9949,8 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
     if (!this_error_permitted(state, data->fuzzy_type))
         return RE_ERROR_FAILURE;
 
+    data->new_text_pos = state->text_pos;
+
     switch (data->fuzzy_type) {
     case RE_FUZZY_DEL:
         /* Could a character at text_pos have been deleted? */
@@ -9952,6 +9961,7 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
             data->new_string_pos += step;
         else
             data->new_node = data->new_node->next_1.node;
+
         return RE_ERROR_SUCCESS;
     case RE_FUZZY_INS:
         /* Could the character at text_pos have been inserted? */
@@ -9968,16 +9978,18 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
                 return RE_ERROR_FAILURE;
 
             data->new_text_pos = new_pos;
+
             return RE_ERROR_SUCCESS;
         }
 
-        return check_fuzzy_partial(state, new_pos);
+        return check_fuzzy_partial(state, data->new_text_pos);
     case RE_FUZZY_SUB:
         /* Could the character at text_pos have been substituted? */
         if (step == 0)
             return RE_ERROR_FAILURE;
 
         new_pos = data->new_text_pos + step;
+
         if (state->slice_start <= new_pos && new_pos <= state->slice_end) {
             if (!fuzzy_ext_match(state, state->fuzzy_node, data->new_text_pos))
                 return RE_ERROR_FAILURE;
@@ -9999,8 +10011,8 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
 }
 
 /* Tries a fuzzy match of an item of width 0 or 1. */
-Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
-  text_pos, RE_Node** node, RE_INT8 step) {
+Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, RE_Node**
+  node, RE_INT8 step) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
     TRACE(("<<fuzzy_match_item>>\n"))
@@ -10012,7 +10024,6 @@ Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
         return RE_ERROR_FAILURE;
     }
 
-    data.new_text_pos = *text_pos;
     data.new_node = *node;
 
     if (step == 0) {
@@ -10029,8 +10040,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (data.fuzzy_type = 0; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10052,7 +10062,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, *text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10068,7 +10078,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = data.new_node;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10079,9 +10089,8 @@ found:
 
 /* Retries a fuzzy match of a item of width 0 or 1. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
-  search, Py_ssize_t* text_pos, RE_Node** node, BOOL advance) {
+  search, RE_Node** node, BOOL advance) {
     size_t* fuzzy_counts;
-    Py_ssize_t curr_text_pos;
     RE_FuzzyData data;
     RE_INT8 step;
     RE_Node* curr_node;
@@ -10095,14 +10104,13 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&curr_node))
         return RE_ERROR_MEMORY;
 
-    data.new_text_pos = curr_text_pos;
     data.new_node = curr_node;
     data.step = step;
 
@@ -10114,8 +10122,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     step = advance ? data.step : 0;
 
@@ -10139,7 +10146,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10155,7 +10162,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = data.new_node;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10165,19 +10172,18 @@ found:
 }
 
 /* Tries a fuzzy insertion of characters, initially 0, after a string. */
-Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, Py_ssize_t text_pos, int
-  step, RE_Node* node) {
+Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, int step, RE_Node* node) {
     Py_ssize_t limit;
 
     limit = step > 0 ? state->slice_end : state->slice_start;
 
-    if (text_pos == limit || !insertion_permitted(state, state->fuzzy_node,
-      state->fuzzy_counts))
+    if (state->text_pos == limit || !insertion_permitted(state,
+      state->fuzzy_node, state->fuzzy_counts))
         return RE_ERROR_SUCCESS;
 
     if (!push_int8(state, &state->bstack, (RE_INT8)step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, 0))
         return RE_ERROR_MEMORY;
@@ -10192,11 +10198,9 @@ Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, Py_ssize_t text_pos, int
 }
 
 /* Retries a fuzzy insertion of characters after a string. */
-Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
-  RE_Node** node) {
+Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, RE_Node** node) {
     RE_Node* curr_node;
     Py_ssize_t count;
-    Py_ssize_t curr_text_pos;
     RE_INT8 step;
     Py_ssize_t limit;
 
@@ -10206,15 +10210,16 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
         return RE_ERROR_MEMORY;
     if (!pop_ssize(state, &state->bstack, &count))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &step))
         return RE_ERROR_MEMORY;
 
     limit = step > 0 ? state->slice_end : state->slice_start;
 
-    if (curr_text_pos == limit || !insertion_permitted(state,
-      state->fuzzy_node, state->fuzzy_counts)) {
+    if (state->text_pos == limit || !insertion_permitted(state,
+      state->fuzzy_node, state->fuzzy_counts) || !fuzzy_ext_match(state,
+      curr_node->nonstring.next_2.node, state->text_pos)) {
         while (count > 0) {
             unrecord_fuzzy(state);
             --state->fuzzy_counts[RE_FUZZY_INS];
@@ -10224,12 +10229,12 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
         return RE_ERROR_FAILURE;
     }
 
-    curr_text_pos += step;
+    state->text_pos += step;
     ++count;
 
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, count))
         return RE_ERROR_MEMORY;
@@ -10240,21 +10245,20 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
 
     /* bstack: step text_pos count node FUZZY_INSERT */
 
-    if (!record_fuzzy(state, RE_FUZZY_INS, curr_text_pos - step))
+    if (!record_fuzzy(state, RE_FUZZY_INS, state->text_pos - step))
         return RE_ERROR_MEMORY;
 
     ++state->fuzzy_counts[RE_FUZZY_INS];
     ++state->capture_change;
 
-    *text_pos = curr_text_pos;
     *node = curr_node;
 
     return RE_ERROR_SUCCESS;
 }
 
 /* Tries a fuzzy match of a string. */
-Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, Py_ssize_t* string_pos, RE_INT8 step) {
+Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search, RE_Node*
+  node, Py_ssize_t* string_pos, RE_INT8 step) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
     TRACE(("<<fuzzy_match_string>>\n"))
@@ -10266,15 +10270,13 @@ Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search,
         return RE_ERROR_FAILURE;
     }
 
-    data.new_text_pos = *text_pos;
     data.new_string_pos = *string_pos;
     data.step = step;
 
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (data.fuzzy_type = 0; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10298,7 +10300,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, *text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10307,14 +10309,13 @@ found:
 
     /* bstack: node step string_pos text_pos fuzzy_type op */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      data.new_text_pos : data.new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *string_pos = data.new_string_pos;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10325,11 +10326,9 @@ found:
 
 /* Retries a fuzzy match of a string. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_string(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, Py_ssize_t* string_pos) {
+  BOOL search, RE_Node** node, Py_ssize_t* string_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t curr_text_pos;
-    Py_ssize_t curr_string_pos;
     RE_Node* new_node;
     TRACE(("<<retry_fuzzy_match_string>>\n"))
 
@@ -10341,25 +10340,23 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_string_pos))
+    if (!pop_ssize(state, &state->bstack, string_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &data.step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&new_node))
         return RE_ERROR_MEMORY;
 
-    data.new_text_pos = curr_text_pos;
-    data.new_string_pos = curr_string_pos;
+    data.new_string_pos = *string_pos;
 
     --fuzzy_counts[data.fuzzy_type];
 
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (++data.fuzzy_type; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10381,17 +10378,16 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, data.step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_string_pos))
+    if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      data.new_text_pos : data.new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     /* bstack: node step string_pos text_pos fuzzy_type op */
@@ -10399,7 +10395,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *string_pos = data.new_string_pos;
 
@@ -10414,43 +10410,51 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_string_fld(RE_State* state, RE_FuzzyData*
   data) {
     int new_pos;
 
-    if (this_error_permitted(state, data->fuzzy_type)) {
-        switch (data->fuzzy_type) {
-        case RE_FUZZY_DEL:
-            /* Could a character at text_pos have been deleted? */
-            data->new_string_pos += data->step;
-            return RE_ERROR_SUCCESS;
-        case RE_FUZZY_INS:
-            /* Could the character at text_pos have been inserted? */
-            if (!data->permit_insertion)
+    if (!this_error_permitted(state, data->fuzzy_type))
+        return RE_ERROR_FAILURE;
+
+    data->new_text_pos = state->text_pos;
+
+    switch (data->fuzzy_type) {
+    case RE_FUZZY_DEL:
+        /* Could a character at text_pos have been deleted? */
+        data->new_string_pos += data->step;
+
+        return RE_ERROR_SUCCESS;
+    case RE_FUZZY_INS:
+        /* Could the character at text_pos have been inserted? */
+        if (!data->permit_insertion)
+            return RE_ERROR_FAILURE;
+
+        new_pos = data->new_folded_pos + data->step;
+
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match(state, state->fuzzy_node,
+              data->new_string_pos))
                 return RE_ERROR_FAILURE;
 
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match(state, state->fuzzy_node,
-                  data->new_string_pos))
-                    return RE_ERROR_FAILURE;
+            data->new_folded_pos = new_pos;
 
-                data->new_folded_pos = new_pos;
-                return RE_ERROR_SUCCESS;
-            }
+            return RE_ERROR_SUCCESS;
+        }
 
-            return check_fuzzy_partial(state, new_pos);
-        case RE_FUZZY_SUB:
-            /* Could the character at text_pos have been substituted? */
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match(state, state->fuzzy_node,
-                  data->new_string_pos))
-                    return RE_ERROR_FAILURE;
+        return check_fuzzy_partial(state, new_pos);
+    case RE_FUZZY_SUB:
+        /* Could the character at text_pos have been substituted? */
+        new_pos = data->new_folded_pos + data->step;
 
-                data->new_folded_pos = new_pos;
-                data->new_string_pos += data->step;
-                return RE_ERROR_SUCCESS;
-            }
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match(state, state->fuzzy_node,
+              data->new_string_pos))
+                return RE_ERROR_FAILURE;
 
-            return check_fuzzy_partial(state, new_pos);
+            data->new_folded_pos = new_pos;
+            data->new_string_pos += data->step;
+
+            return RE_ERROR_SUCCESS;
         }
+
+        return check_fuzzy_partial(state, new_pos);
     }
 
     return RE_ERROR_FAILURE;
@@ -10458,18 +10462,19 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_string_fld(RE_State* state, RE_FuzzyData*
 
 /* Tries a fuzzy match of a string, ignoring case. */
 Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, Py_ssize_t* string_pos, int* folded_pos,
-  int folded_len, RE_INT8 step) {
+  RE_Node* node, Py_ssize_t* string_pos, int* folded_pos, int folded_len,
+  RE_INT8 step) {
     size_t* fuzzy_counts;
-    Py_ssize_t new_text_pos;
     RE_FuzzyData data;
+    TRACE(("<<fuzzy_match_string_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
-    if (!any_error_permitted(state))
+    if (!any_error_permitted(state)) {
+        TRACE(("    return RE_ERROR_FAILURE\n"))
         return RE_ERROR_FAILURE;
+    }
 
-    new_text_pos = *text_pos;
     data.new_string_pos = *string_pos;
     data.new_folded_pos = *folded_pos;
     data.folded_len = folded_len;
@@ -10478,7 +10483,8 @@ Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10499,6 +10505,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10512,7 +10519,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10523,30 +10530,30 @@ found:
      * op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *string_pos = data.new_string_pos;
     *folded_pos = data.new_folded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
 /* Retries a fuzzy match of a string, ignoring case. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, Py_ssize_t* string_pos,
-  int* folded_pos) {
+  BOOL search, RE_Node** node, Py_ssize_t* string_pos, int* folded_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t new_text_pos;
     int curr_folded_pos;
-    Py_ssize_t curr_string_pos;
     RE_Node* new_node;
+    TRACE(("<<retry_fuzzy_match_string_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
@@ -10557,20 +10564,20 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &new_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &data.folded_len))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &curr_folded_pos))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_string_pos))
+    if (!pop_ssize(state, &state->bstack, string_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &data.step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&new_node))
         return RE_ERROR_MEMORY;
 
-    data.new_string_pos = curr_string_pos;
+    data.new_string_pos = *string_pos;
     data.new_folded_pos = curr_folded_pos;
 
     --fuzzy_counts[data.fuzzy_type];
@@ -10578,7 +10585,8 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (data.step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10599,6 +10607,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10606,35 +10615,37 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, data.step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_string_pos))
+    if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, curr_folded_pos))
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, data.folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
+        return RE_ERROR_MEMORY;
+
     /* bstack: node step string_pos folded_pos folded_len text_pos fuzzy_type
      * op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
-        return RE_ERROR_MEMORY;
-
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *string_pos = data.new_string_pos;
     *folded_pos = data.new_folded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
@@ -10643,43 +10654,51 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_group_fld(RE_State* state, RE_FuzzyData*
   data) {
     int new_pos;
 
-    if (this_error_permitted(state, data->fuzzy_type)) {
-        switch (data->fuzzy_type) {
-        case RE_FUZZY_DEL:
-            /* Could a character at text_pos have been deleted? */
-            data->new_gfolded_pos += data->step;
-            return RE_ERROR_SUCCESS;
-        case RE_FUZZY_INS:
-            /* Could the character at text_pos have been inserted? */
-            if (!data->permit_insertion)
+    if (!this_error_permitted(state, data->fuzzy_type))
+        return RE_ERROR_FAILURE;
+
+    data->new_text_pos = state->text_pos;
+
+    switch (data->fuzzy_type) {
+    case RE_FUZZY_DEL:
+        /* Could a character at text_pos have been deleted? */
+        data->new_gfolded_pos += data->step;
+
+        return RE_ERROR_SUCCESS;
+    case RE_FUZZY_INS:
+        /* Could the character at text_pos have been inserted? */
+        if (!data->permit_insertion)
+            return RE_ERROR_FAILURE;
+
+        new_pos = data->new_folded_pos + data->step;
+
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
+              data->new_folded_pos))
                 return RE_ERROR_FAILURE;
 
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
-                  data->new_folded_pos))
-                    return RE_ERROR_FAILURE;
+            data->new_folded_pos = new_pos;
 
-                data->new_folded_pos = new_pos;
-                return RE_ERROR_SUCCESS;
-            }
+            return RE_ERROR_SUCCESS;
+        }
 
-            return check_fuzzy_partial(state, new_pos);
-        case RE_FUZZY_SUB:
-            /* Could the character at text_pos have been substituted? */
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
-                  data->new_folded_pos))
-                    return RE_ERROR_FAILURE;
+        return check_fuzzy_partial(state, new_pos);
+    case RE_FUZZY_SUB:
+        /* Could the character at text_pos have been substituted? */
+        new_pos = data->new_folded_pos + data->step;
 
-                data->new_folded_pos = new_pos;
-                data->new_gfolded_pos += data->step;
-                return RE_ERROR_SUCCESS;
-            }
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
+              data->new_folded_pos))
+                return RE_ERROR_FAILURE;
+
+            data->new_folded_pos = new_pos;
+            data->new_gfolded_pos += data->step;
 
-            return check_fuzzy_partial(state, new_pos);
+            return RE_ERROR_SUCCESS;
         }
+
+        return check_fuzzy_partial(state, new_pos);
     }
 
     return RE_ERROR_FAILURE;
@@ -10687,19 +10706,20 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_group_fld(RE_State* state, RE_FuzzyData*
 
 /* Tries a fuzzy match of a group reference, ignoring case. */
 Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, int* folded_pos, int folded_len,
-  Py_ssize_t* group_pos, int* gfolded_pos, int gfolded_len, RE_INT8 step) {
+  RE_Node* node, int* folded_pos, int folded_len, Py_ssize_t* group_pos, int*
+  gfolded_pos, int gfolded_len, RE_INT8 step) {
     size_t* fuzzy_counts;
-    Py_ssize_t new_text_pos;
     RE_FuzzyData data;
     Py_ssize_t new_group_pos;
+    TRACE(("<<fuzzy_match_group_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
-    if (!any_error_permitted(state))
+    if (!any_error_permitted(state)) {
+        TRACE(("    return RE_ERROR_FAILURE\n"))
         return RE_ERROR_FAILURE;
+    }
 
-    new_text_pos = *text_pos;
     data.new_folded_pos = *folded_pos;
     data.folded_len = folded_len;
     new_group_pos = *group_pos;
@@ -10709,7 +10729,8 @@ Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (data.step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10730,6 +10751,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10747,7 +10769,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10758,33 +10780,35 @@ found:
      * folded_len text_pos fuzzy_type op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *group_pos = new_group_pos;
     *folded_pos = data.new_folded_pos;
     *gfolded_pos = data.new_gfolded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
 /* Retries a fuzzy match of a group reference, ignoring case. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, int* folded_pos,
-  Py_ssize_t* group_pos, int* gfolded_pos) {
+  BOOL search, RE_Node** node, int* folded_pos, Py_ssize_t* group_pos, int*
+  gfolded_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t new_text_pos;
     int new_folded_pos;
     Py_ssize_t new_group_pos;
     int gfolded_len;
     int new_gfolded_pos;
     RE_Node* new_node;
+    TRACE(("<<retry_fuzzy_match_group_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
@@ -10796,7 +10820,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &new_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &data.folded_len))
         return RE_ERROR_MEMORY;
@@ -10821,8 +10845,8 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor ||
-      data.new_folded_pos != data.folded_len;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor
+      || data.new_folded_pos != data.folded_len;
 
     for (++data.fuzzy_type; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10836,6 +10860,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10853,30 +10878,32 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, data.folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
+        return RE_ERROR_MEMORY;
+
     /* bstack: node step gfolded_pos gfolded_len group_pos folded_pos
      * folded_len text_pos fuzzy_type op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
-        return RE_ERROR_MEMORY;
-
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *group_pos = new_group_pos;
     *folded_pos = data.new_folded_pos;
     *gfolded_pos = data.new_gfolded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
@@ -10914,7 +10941,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos > state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11047,7 +11074,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos > state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_ign(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11092,7 +11119,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos < state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_ign_rev(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11137,7 +11164,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos < state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_rev(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11668,8 +11695,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11689,8 +11715,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11710,8 +11735,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11731,8 +11755,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11752,8 +11775,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11773,8 +11795,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11816,8 +11837,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -11884,8 +11904,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11908,8 +11927,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11931,8 +11949,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11954,8 +11971,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -12016,8 +12032,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12037,8 +12052,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12058,8 +12072,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12256,6 +12269,8 @@ advance:
             /* Save the inner fuzzy info. */
             if (!push_fuzzy_counts(state, &state->bstack, state->fuzzy_counts))
                 return RE_ERROR_MEMORY;
+            if (!push_ssize(state, &state->bstack, 0))
+                return RE_ERROR_MEMORY;
             if (!push_pointer(state, &state->bstack, state->fuzzy_node))
                 return RE_ERROR_MEMORY;
             if (!push_ssize(state, &state->bstack, state->text_pos))
@@ -12776,8 +12791,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12796,8 +12810,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12816,8 +12829,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12837,8 +12849,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12858,8 +12869,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12878,8 +12888,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12925,8 +12934,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -13573,8 +13581,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13597,8 +13604,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13620,8 +13626,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13643,8 +13648,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13687,8 +13691,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13711,8 +13714,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13734,8 +13736,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13757,8 +13758,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13802,8 +13802,8 @@ advance:
                     ++string_pos;
                     ++state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, 1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, 1);
                     if (status < 0)
                         return status;
 
@@ -13893,9 +13893,9 @@ advance:
                     ++folded_pos;
                     ++gfolded_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_group_fld(state, search,
-                      &state->text_pos, node, &folded_pos, folded_len,
-                      &string_pos, &gfolded_pos, gfolded_len, 1);
+                    status = fuzzy_match_group_fld(state, search, node,
+                      &folded_pos, folded_len, &string_pos, &gfolded_pos,
+                      gfolded_len, 1);
                     if (status < 0)
                         return status;
 
@@ -13994,9 +13994,9 @@ advance:
                     --folded_pos;
                     --gfolded_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_group_fld(state, search,
-                      &state->text_pos, node, &folded_pos, folded_len,
-                      &string_pos, &gfolded_pos, gfolded_len, -1);
+                    status = fuzzy_match_group_fld(state, search, node,
+                      &folded_pos, folded_len, &string_pos, &gfolded_pos,
+                      gfolded_len, -1);
                     if (status < 0)
                         return status;
 
@@ -14060,8 +14060,8 @@ advance:
                     ++string_pos;
                     ++state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, 1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, 1);
                     if (status < 0)
                         return status;
 
@@ -14117,8 +14117,8 @@ advance:
                     --string_pos;
                     --state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, -1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, -1);
                     if (status < 0)
                         return status;
 
@@ -14173,8 +14173,8 @@ advance:
                     --string_pos;
                     --state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, -1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, -1);
                     if (status < 0)
                         return status;
 
@@ -14200,8 +14200,7 @@ advance:
             if (state->text_pos == state->search_anchor)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14226,8 +14225,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -14252,8 +14250,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -14277,8 +14274,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -14302,8 +14298,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -14421,8 +14416,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14441,8 +14435,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14461,8 +14454,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14481,8 +14473,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14520,8 +14511,8 @@ advance:
                         ++string_pos;
                         ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, 1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, 1);
                         if (status < 0)
                             return status;
 
@@ -14537,8 +14528,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, 1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, 1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14610,9 +14600,8 @@ advance:
                         if (folded_pos >= folded_len)
                             ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, 1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, 1);
                         if (status < 0)
                             return status;
 
@@ -14631,9 +14620,8 @@ advance:
 
                 if (node->status & RE_STATUS_FUZZY) {
                     while (folded_pos < folded_len) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, 1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, 1);
                         if (status < 0)
                             return status;
 
@@ -14719,9 +14707,8 @@ advance:
                         if (folded_pos <= 0)
                             --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, -1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, -1);
                         if (status < 0)
                             return status;
 
@@ -14740,9 +14727,8 @@ advance:
 
                 if (node->status & RE_STATUS_FUZZY) {
                     while (folded_pos > 0) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, -1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, -1);
                         if (status < 0)
                             return status;
 
@@ -14795,8 +14781,8 @@ advance:
                         ++string_pos;
                         ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, 1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, 1);
                         if (status < 0)
                             return status;
 
@@ -14812,8 +14798,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, 1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, 1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14853,8 +14838,8 @@ advance:
                         --string_pos;
                         --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, -1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, -1);
                         if (status < 0)
                             return status;
 
@@ -14870,8 +14855,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, -1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, -1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14911,8 +14895,8 @@ advance:
                         --string_pos;
                         --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, -1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, -1);
                         if (status < 0)
                             return status;
 
@@ -14928,8 +14912,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, -1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, -1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -15026,8 +15009,7 @@ backtrack:
         case RE_OP_SET_UNION_REV: /* Set union, backwards. */
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_item(state, op, search,
-              &state->text_pos, &node, TRUE);
+            status = retry_fuzzy_match_item(state, op, search, &node, TRUE);
             if (status < 0)
                 return status;
 
@@ -15128,8 +15110,7 @@ backtrack:
         case RE_OP_START_OF_WORD: /* At the start of a word. */
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_item(state, op, search,
-              &state->text_pos, &node, FALSE);
+            status = retry_fuzzy_match_item(state, op, search, &node, FALSE);
             if (status < 0)
                 return status;
 
@@ -15274,6 +15255,7 @@ backtrack:
         {
             RE_Node* inner_node;
             size_t inner_counts[RE_FUZZY_COUNT];
+            size_t insertions;
             TRACE(("%s\n", re_op_text[op]))
 
             /* sstack: -
@@ -15287,6 +15269,8 @@ backtrack:
                 return RE_ERROR_MEMORY;
             if (!pop_pointer(state, &state->bstack, (void*)&inner_node))
                 return RE_ERROR_MEMORY;
+            if (!pop_size(state, &state->bstack, &insertions))
+                return RE_ERROR_MEMORY;
             if (!pop_fuzzy_counts(state, &state->bstack, inner_counts))
                 return RE_ERROR_MEMORY;
 
@@ -15295,8 +15279,10 @@ backtrack:
              * bstack: -
              */
 
-            if (insertion_permitted(state, inner_node, inner_counts) &&
-              fuzzy_ext_match(state, inner_node, state->text_pos)) {
+            if (insertion_permitted(state, inner_node, inner_counts) && 
+              total_errors(state->fuzzy_counts) + total_errors(inner_counts) < 
+              state->max_errors && fuzzy_ext_match(state, inner_node, 
+              state->text_pos)) {
                 RE_INT8 step;
                 Py_ssize_t limit;
 
@@ -15320,6 +15306,8 @@ backtrack:
                     if (!push_fuzzy_counts(state, &state->bstack,
                       inner_counts))
                         return RE_ERROR_MEMORY;
+                    if (!push_size(state, &state->bstack, insertions + 1))
+                        return RE_ERROR_MEMORY;
                     if (!push_pointer(state, &state->bstack, inner_node))
                         return RE_ERROR_MEMORY;
                     if (!push_ssize(state, &state->bstack, state->text_pos))
@@ -15359,6 +15347,8 @@ backtrack:
              * bstack: -
              */
 
+            inner_counts[RE_FUZZY_INS] -= insertions;
+
             /* Restore the inner fuzzy info. */
             Py_MEMCPY(state->fuzzy_counts, inner_counts,
               sizeof(state->fuzzy_counts));
@@ -15538,7 +15528,7 @@ backtrack:
         case RE_OP_FUZZY_INSERT:
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_insert(state, &state->text_pos, &node);
+            status = retry_fuzzy_insert(state, &node);
             if (status < 0)
                 return status;
 
@@ -15781,7 +15771,7 @@ backtrack:
                             break;
 
                         found = string_search_rev(state, test, pos + length,
-                          limit, &is_partial);
+                          limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -15917,7 +15907,7 @@ backtrack:
                             break;
 
                         found = string_search_ign_rev(state, test, pos +
-                          length, limit, &is_partial);
+                          length, limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -15955,7 +15945,7 @@ backtrack:
                             break;
 
                         found = string_search_ign(state, test, pos - length,
-                          limit, &is_partial);
+                          limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -15993,7 +15983,7 @@ backtrack:
                             break;
 
                         found = string_search(state, test, pos - length, limit,
-                          &is_partial);
+                          FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16448,7 +16438,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search(state, test, pos + 1, limit +
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16626,7 +16616,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_ign(state, test, pos + 1, limit +
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16686,7 +16676,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_ign_rev(state, test, pos - 1,
-                          limit - length, &is_partial);
+                          limit - length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16746,7 +16736,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_rev(state, test, pos - 1, limit -
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -17040,8 +17030,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_string(state, op, search,
-              &state->text_pos, &node, &string_pos);
+            status = retry_fuzzy_match_string(state, op, search, &node,
+              &string_pos);
             if (status < 0)
                 return status;
 
@@ -17056,8 +17046,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_group_fld(state, op, search,
-              &state->text_pos, &node, &folded_pos, &string_pos, &gfolded_pos);
+            status = retry_fuzzy_match_group_fld(state, op, search, &node,
+              &folded_pos, &string_pos, &gfolded_pos);
             if (status < 0)
                 return status;
 
@@ -17126,8 +17116,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_string_fld(state, op, search,
-              &state->text_pos, &node, &string_pos, &folded_pos);
+            status = retry_fuzzy_match_string_fld(state, op, search, &node,
+              &string_pos, &folded_pos);
             if (status < 0)
                 return status;
 
@@ -17299,8 +17289,7 @@ Py_LOCAL_INLINE(void) init_best_list(RE_BestList* best_list) {
 }
 
 /* Finalises the list of best matches found so far. */
-Py_LOCAL_INLINE(void) fini_best_list(RE_State* state, RE_BestList*
-  best_list) {
+Py_LOCAL_INLINE(void) fini_best_list(RE_State* state, RE_BestList* best_list) {
     safe_dealloc(state, best_list->entries);
     best_list->capacity = 0;
     best_list->count = 0;
@@ -17436,11 +17425,6 @@ Py_LOCAL_INLINE(int) do_best_fuzzy_match(RE_State* state, BOOL search) {
         }
 
         start_pos = state->match_pos;
-
-        /* Should we keep searching? */
-        if (!search)
-            break;
-
         state->max_errors = fewest_errors - 1;
     }
 
@@ -22138,7 +22122,7 @@ PyDoc_STRVAR(pattern_subfn_doc,
     of pattern with the replacement format.");
 
 PyDoc_STRVAR(pattern_split_doc,
-    "split(string, string, maxsplit=0, concurrent=None) --> list.\n\
+    "split(string, maxsplit=0, concurrent=None) --> list.\n\
     Split string by the occurrences of pattern.");
 
 PyDoc_STRVAR(pattern_splititer_doc,
@@ -23224,7 +23208,6 @@ Py_LOCAL_INLINE(BOOL) mark_named_groups(PatternObject* pattern) {
 Py_LOCAL_INLINE(BOOL) can_test_past(RE_Node* node) {
     switch (node->op) {
     case RE_OP_END_GROUP:
-    case RE_OP_END_LAZY_REPEAT:
     case RE_OP_START_GROUP:
         return TRUE;
     case RE_OP_GREEDY_REPEAT:
@@ -23724,7 +23707,8 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) {
     RE_Node* test_node;
     int status;
 
-    /* codes: FUZZY, flags, constraints, ..., end or:    FUZZY_EXT, flags,
+    /* codes: FUZZY, flags, constraints, ..., end
+     * or:    FUZZY_EXT, flags,
      * constraints, ... next ..., end.
      */
     is_ext = args->code[0] == RE_OP_FUZZY_EXT;
@@ -23799,8 +23783,13 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) {
     /* Append the fuzzy sequence. */
     add_node(args->end, start_node);
     add_node(start_node, subargs.start);
-    if (test_node)
+    if (test_node) {
         add_node(start_node, test_node);
+        /* The END_FUZZY node needs access to the charset, if any, in case of
+           fuzzy insertion at the end.
+        */
+        end_node->nonstring.next_2.node = start_node;
+    }
     add_node(subargs.end, end_node);
     args->end = end_node;
     args->all_atomic = FALSE;
@@ -24775,14 +24764,11 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) {
         /* Extract the minimum number of repeats out of a repeat if it contains
          * a repeat.
          */
-        BOOL extracted_min;
         size_t index;
         RE_Node* repeat_node;
         RE_CompileArgs subargs;
 
-        extracted_min = FALSE;
-
-        if (min_count > 0 && contains_repeat(args->code, args->end_code)) {
+        if (min_count > 0) {
             RE_CODE done_count;
 
             for (done_count = 0; done_count < min_count; done_count++) {
@@ -24813,8 +24799,8 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) {
                 max_count -= done_count;
         }
 
-        /* We've extract the minimum number of repeats. Are there any left? */
-        if (extracted_min && max_count == 0) {
+        /* We've extracted the minimum number of repeats. Are there any left? */
+        if (min_count > 0 && max_count == 0) {
             /* All done. */
             args->code = subargs.code;
             ++args->code;
diff --git a/regex_2/_regex_unicode.c b/regex_2/_regex_unicode.c
index 4eab00b190b34d76042cafaadfcc66b6b3babbef..80bf721485f114f7a76f2a5f6397905dd553c956 100644
--- a/regex_2/_regex_unicode.c
+++ b/regex_2/_regex_unicode.c
@@ -1,4 +1,4 @@
-/* For Unicode version 13.0.0 */
+/* For Unicode version 14.0.0 */
 
 #include "_regex_unicode.h"
 
@@ -6,6 +6,10 @@
 #define RE_GRAPH_MASK ((1 << RE_PROP_CC) | (1 << RE_PROP_CS) | (1 << RE_PROP_CN))
 #define RE_WORD_MASK (RE_PROP_M_MASK | (1 << RE_PROP_ND) | (1 << RE_PROP_PC))
 
+typedef struct {
+    RE_UINT8 scripts[RE_MAX_SCX];
+} RE_ScriptExt;
+
 typedef struct {
     RE_UINT32 delta;
     RE_UINT16 others[RE_MAX_CASES - 1];
@@ -222,7 +226,9 @@ char* re_strings[] = {
     "ARAB",
     "ARABIC",
     "ARABICEXTA",
+    "ARABICEXTB",
     "ARABICEXTENDEDA",
+    "ARABICEXTENDEDB",
     "ARABICLETTER",
     "ARABICMATH",
     "ARABICMATHEMATICALALPHABETICSYMBOLS",
@@ -468,6 +474,7 @@ char* re_strings[] = {
     "COUNTINGROD",
     "COUNTINGRODNUMERALS",
     "CP",
+    "CPMN",
     "CPRT",
     "CR",
     "CS",
@@ -483,6 +490,7 @@ char* re_strings[] = {
     "CWU",
     "CYPRIOT",
     "CYPRIOTSYLLABARY",
+    "CYPROMINOAN",
     "CYRILLIC",
     "CYRILLICEXTA",
     "CYRILLICEXTB",
@@ -580,8 +588,10 @@ char* re_strings[] = {
     "ETHIOPIC",
     "ETHIOPICEXT",
     "ETHIOPICEXTA",
+    "ETHIOPICEXTB",
     "ETHIOPICEXTENDED",
     "ETHIOPICEXTENDEDA",
+    "ETHIOPICEXTENDEDB",
     "ETHIOPICSUP",
     "ETHIOPICSUPPLEMENT",
     "EUROPEANNUMBER",
@@ -771,7 +781,9 @@ char* re_strings[] = {
     "KALI",
     "KANA",
     "KANAEXTA",
+    "KANAEXTB",
     "KANAEXTENDEDA",
+    "KANAEXTENDEDB",
     "KANASUP",
     "KANASUPPLEMENT",
     "KANAVOICING",
@@ -823,6 +835,10 @@ char* re_strings[] = {
     "LATINEXTENDEDC",
     "LATINEXTENDEDD",
     "LATINEXTENDEDE",
+    "LATINEXTENDEDF",
+    "LATINEXTENDEDG",
+    "LATINEXTF",
+    "LATINEXTG",
     "LATN",
     "LB",
     "LC",
@@ -1081,6 +1097,7 @@ char* re_strings[] = {
     "OLDSOGDIAN",
     "OLDSOUTHARABIAN",
     "OLDTURKIC",
+    "OLDUYGHUR",
     "OLETTER",
     "OLOWER",
     "OMATH",
@@ -1111,6 +1128,7 @@ char* re_strings[] = {
     "OTHERSYMBOL",
     "OTHERUPPERCASE",
     "OTTOMANSIYAQNUMBERS",
+    "OUGR",
     "OUPPER",
     "OV",
     "OVERLAY",
@@ -1336,6 +1354,7 @@ char* re_strings[] = {
     "TAMILSUPPLEMENT",
     "TAML",
     "TANG",
+    "TANGSA",
     "TANGUT",
     "TANGUTCOMPONENTS",
     "TANGUTSUP",
@@ -1354,12 +1373,14 @@ char* re_strings[] = {
     "THAA",
     "THAANA",
     "THAI",
+    "THINYEH",
     "TIBETAN",
     "TIBT",
     "TIFINAGH",
     "TIRH",
     "TIRHUTA",
     "TITLECASELETTER",
+    "TNSA",
     "TONELETTER",
     "TONEMARK",
     "TOP",
@@ -1369,6 +1390,7 @@ char* re_strings[] = {
     "TOPANDLEFT",
     "TOPANDLEFTANDRIGHT",
     "TOPANDRIGHT",
+    "TOTO",
     "TRAILINGJAMO",
     "TRANSPARENT",
     "TRANSPORTANDMAP",
@@ -1377,12 +1399,14 @@ char* re_strings[] = {
     "U",
     "UCAS",
     "UCASEXT",
+    "UCASEXTA",
     "UGAR",
     "UGARITIC",
     "UIDEO",
     "UNASSIGNED",
     "UNIFIEDCANADIANABORIGINALSYLLABICS",
     "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED",
+    "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA",
     "UNIFIEDIDEOGRAPH",
     "UNKNOWN",
     "UP",
@@ -1400,9 +1424,12 @@ char* re_strings[] = {
     "VERT",
     "VERTICAL",
     "VERTICALFORMS",
+    "VERTICALTAIL",
     "VIRAMA",
     "VISARGA",
     "VISUALORDERLEFT",
+    "VITH",
+    "VITHKUQI",
     "VOWEL",
     "VOWELDEPENDENT",
     "VOWELINDEPENDENT",
@@ -1457,6 +1484,8 @@ char* re_strings[] = {
     "ZHAIN",
     "ZINH",
     "ZL",
+    "ZNAMENNYMUSIC",
+    "ZNAMENNYMUSICALNOTATION",
     "ZP",
     "ZS",
     "ZW",
@@ -1473,1245 +1502,1266 @@ RE_Property re_properties[] = {
     { 192,  1,  0}, /* ALPHANUMERIC */
     { 187,  1,  0}, /* ALNUM */
     { 200,  2,  0}, /* ANY */
-    { 221,  3,  0}, /* ASCIIHEXDIGIT */
+    { 223,  3,  0}, /* ASCIIHEXDIGIT */
     { 177,  3,  0}, /* AHEX */
-    { 262,  4,  1}, /* BIDICLASS */
-    { 251,  4,  1}, /* BC */
-    { 263,  5,  0}, /* BIDICONTROL */
-    { 261,  5,  0}, /* BIDIC */
-    { 265,  6,  0}, /* BIDIMIRRORED */
-    { 264,  6,  0}, /* BIDIM */
-    { 269,  7,  0}, /* BLANK */
-    { 271,  8,  2}, /* BLOCK */
-    { 270,  8,  2}, /* BLK */
-    { 308,  9,  3}, /* CANONICALCOMBININGCLASS */
-    { 320,  9,  3}, /* CCC */
-    { 314, 10,  0}, /* CASED */
-    { 316, 11,  0}, /* CASEIGNORABLE */
-    { 373, 11,  0}, /* CI */
-    { 361, 12,  0}, /* CHANGESWHENCASEFOLDED */
-    { 459, 12,  0}, /* CWCF */
-    { 362, 13,  0}, /* CHANGESWHENCASEMAPPED */
-    { 460, 13,  0}, /* CWCM */
-    { 363, 14,  0}, /* CHANGESWHENLOWERCASED */
-    { 461, 14,  0}, /* CWL */
-    { 364, 15,  0}, /* CHANGESWHENTITLECASED */
-    { 462, 15,  0}, /* CWT */
-    { 365, 16,  0}, /* CHANGESWHENUPPERCASED */
-    { 463, 16,  0}, /* CWU */
-    { 481, 17,  0}, /* DASH */
-    { 487, 18,  4}, /* DECOMPOSITIONTYPE */
-    { 516, 18,  4}, /* DT */
-    { 488, 19,  0}, /* DEFAULTIGNORABLECODEPOINT */
-    { 496, 19,  0}, /* DI */
-    { 490, 20,  0}, /* DEPRECATED */
-    { 489, 20,  0}, /* DEP */
-    { 498, 21,  0}, /* DIACRITIC */
-    { 497, 21,  0}, /* DIA */
-    { 523, 22,  5}, /* EASTASIANWIDTH */
-    { 521, 22,  5}, /* EA */
-    { 539, 23,  0}, /* EMOJI */
-    { 540, 24,  0}, /* EMOJICOMPONENT */
-    { 528, 24,  0}, /* ECOMP */
-    { 541, 25,  0}, /* EMOJIMODIFIER */
-    { 537, 25,  0}, /* EMOD */
-    { 542, 26,  0}, /* EMOJIMODIFIERBASE */
-    { 525, 26,  0}, /* EBASE */
-    { 543, 27,  0}, /* EMOJIPRESENTATION */
-    { 556, 27,  0}, /* EPRES */
-    { 574, 28,  0}, /* EXTENDEDPICTOGRAPHIC */
-    { 577, 28,  0}, /* EXTPICT */
-    { 575, 29,  0}, /* EXTENDER */
-    { 572, 29,  0}, /* EXT */
-    { 601, 30,  6}, /* GENERALCATEGORY */
-    { 598, 30,  6}, /* GC */
-    { 625, 31,  0}, /* GRAPH */
-    { 626, 32,  0}, /* GRAPHEMEBASE */
-    { 630, 32,  0}, /* GRBASE */
-    { 627, 33,  7}, /* GRAPHEMECLUSTERBREAK */
-    { 599, 33,  7}, /* GCB */
-    { 628, 34,  0}, /* GRAPHEMEEXTEND */
-    { 636, 34,  0}, /* GREXT */
-    { 629, 35,  0}, /* GRAPHEMELINK */
-    { 637, 35,  0}, /* GRLINK */
-    { 660, 36,  8}, /* HANGULSYLLABLETYPE */
-    { 690, 36,  8}, /* HST */
-    { 679, 37,  0}, /* HEXDIGIT */
-    { 678, 37,  0}, /* HEX */
-    { 693, 38,  0}, /* HYPHEN */
-    { 696, 39,  0}, /* IDCONTINUE */
-    { 695, 39,  0}, /* IDC */
-    { 698, 40,  0}, /* IDEOGRAPHIC */
-    { 697, 40,  0}, /* IDEO */
-    { 704, 41,  0}, /* IDSBINARYOPERATOR */
-    { 703, 41,  0}, /* IDSB */
-    { 706, 42,  0}, /* IDSTART */
-    { 702, 42,  0}, /* IDS */
-    { 707, 43,  0}, /* IDSTRINARYOPERATOR */
-    { 705, 43,  0}, /* IDST */
-    { 711, 44,  9}, /* INDICPOSITIONALCATEGORY */
-    { 719, 44,  9}, /* INPC */
-    { 713, 45, 10}, /* INDICSYLLABICCATEGORY */
-    { 720, 45, 10}, /* INSC */
-    { 742, 46,  0}, /* JOINCONTROL */
-    { 740, 46,  0}, /* JOINC */
-    { 744, 47, 11}, /* JOININGGROUP */
-    { 738, 47, 11}, /* JG */
-    { 745, 48, 12}, /* JOININGTYPE */
-    { 746, 48, 12}, /* JT */
-    { 832, 49, 13}, /* LINEBREAK */
-    { 807, 49, 13}, /* LB */
-    { 842, 50,  0}, /* LOGICALORDEREXCEPTION */
-    { 841, 50,  0}, /* LOE */
-    { 844, 51,  0}, /* LOWERCASE */
-    { 843, 51,  0}, /* LOWER */
-    { 916, 52,  0}, /* MATH */
-    {1004, 53, 14}, /* NFCQUICKCHECK */
-    {1003, 53, 14}, /* NFCQC */
-    {1006, 54, 15}, /* NFDQUICKCHECK */
-    {1005, 54, 15}, /* NFDQC */
-    {1008, 55, 14}, /* NFKCQUICKCHECK */
-    {1007, 55, 14}, /* NFKCQC */
-    {1010, 56, 15}, /* NFKDQUICKCHECK */
-    {1009, 56, 15}, /* NFKDQC */
-    {1019, 57,  0}, /* NONCHARACTERCODEPOINT */
-    { 996, 57,  0}, /* NCHAR */
-    {1039, 58, 16}, /* NUMERICTYPE */
-    {1032, 58, 16}, /* NT */
-    {1040, 59, 17}, /* NUMERICVALUE */
-    {1043, 59, 17}, /* NV */
-    {1080, 60,  0}, /* OTHERALPHABETIC */
-    {1046, 60,  0}, /* OALPHA */
-    {1081, 61,  0}, /* OTHERDEFAULTIGNORABLECODEPOINT */
-    {1048, 61,  0}, /* ODI */
-    {1082, 62,  0}, /* OTHERGRAPHEMEEXTEND */
-    {1051, 62,  0}, /* OGREXT */
-    {1083, 63,  0}, /* OTHERIDCONTINUE */
-    {1052, 63,  0}, /* OIDC */
-    {1084, 64,  0}, /* OTHERIDSTART */
-    {1053, 64,  0}, /* OIDS */
-    {1086, 65,  0}, /* OTHERLOWERCASE */
-    {1065, 65,  0}, /* OLOWER */
-    {1087, 66,  0}, /* OTHERMATH */
-    {1066, 66,  0}, /* OMATH */
-    {1092, 67,  0}, /* OTHERUPPERCASE */
-    {1094, 67,  0}, /* OUPPER */
-    {1105, 68,  0}, /* PATTERNSYNTAX */
-    {1104, 68,  0}, /* PATSYN */
-    {1106, 69,  0}, /* PATTERNWHITESPACE */
-    {1107, 69,  0}, /* PATWS */
-    {1136, 70,  0}, /* POSIXALNUM */
-    {1137, 71,  0}, /* POSIXDIGIT */
-    {1138, 72,  0}, /* POSIXPUNCT */
-    {1139, 73,  0}, /* POSIXXDIGIT */
-    {1145, 74,  0}, /* PREPENDEDCONCATENATIONMARK */
-    {1111, 74,  0}, /* PCM */
-    {1146, 75,  0}, /* PRINT */
-    {1163, 76,  0}, /* QUOTATIONMARK */
-    {1160, 76,  0}, /* QMARK */
-    {1165, 77,  0}, /* RADICAL */
-    {1166, 78,  0}, /* REGIONALINDICATOR */
-    {1171, 78,  0}, /* RI */
-    {1201, 79, 18}, /* SCRIPT */
-    {1199, 79, 18}, /* SC */
-    {1202, 80, 18}, /* SCRIPTEXTENSIONS */
-    {1203, 80, 18}, /* SCX */
-    {1209, 81, 19}, /* SENTENCEBREAK */
-    {1198, 81, 19}, /* SB */
-    {1210, 82,  0}, /* SENTENCETERMINAL */
-    {1256, 82,  0}, /* STERM */
-    {1238, 83,  0}, /* SOFTDOTTED */
-    {1204, 83,  0}, /* SD */
-    {1330, 84,  0}, /* TERMINALPUNCTUATION */
-    {1329, 84,  0}, /* TERM */
-    {1366, 85,  0}, /* UNIFIEDIDEOGRAPH */
-    {1362, 85,  0}, /* UIDEO */
-    {1370, 86,  0}, /* UPPERCASE */
-    {1369, 86,  0}, /* UPPER */
-    {1375, 87,  0}, /* VARIATIONSELECTOR */
-    {1391, 87,  0}, /* VS */
-    {1400, 88,  0}, /* WHITESPACE */
-    {1408, 88,  0}, /* WSPACE */
-    {1247, 88,  0}, /* SPACE */
-    {1403, 89,  0}, /* WORD */
-    {1404, 90, 20}, /* WORDBREAK */
-    {1398, 90, 20}, /* WB */
-    {1409, 91,  0}, /* XDIGIT */
-    {1411, 92,  0}, /* XIDCONTINUE */
-    {1410, 92,  0}, /* XIDC */
-    {1413, 93,  0}, /* XIDSTART */
-    {1412, 93,  0}, /* XIDS */
+    { 264,  4,  1}, /* BIDICLASS */
+    { 253,  4,  1}, /* BC */
+    { 265,  5,  0}, /* BIDICONTROL */
+    { 263,  5,  0}, /* BIDIC */
+    { 267,  6,  0}, /* BIDIMIRRORED */
+    { 266,  6,  0}, /* BIDIM */
+    { 271,  7,  0}, /* BLANK */
+    { 273,  8,  2}, /* BLOCK */
+    { 272,  8,  2}, /* BLK */
+    { 310,  9,  3}, /* CANONICALCOMBININGCLASS */
+    { 322,  9,  3}, /* CCC */
+    { 316, 10,  0}, /* CASED */
+    { 318, 11,  0}, /* CASEIGNORABLE */
+    { 375, 11,  0}, /* CI */
+    { 363, 12,  0}, /* CHANGESWHENCASEFOLDED */
+    { 462, 12,  0}, /* CWCF */
+    { 364, 13,  0}, /* CHANGESWHENCASEMAPPED */
+    { 463, 13,  0}, /* CWCM */
+    { 365, 14,  0}, /* CHANGESWHENLOWERCASED */
+    { 464, 14,  0}, /* CWL */
+    { 366, 15,  0}, /* CHANGESWHENTITLECASED */
+    { 465, 15,  0}, /* CWT */
+    { 367, 16,  0}, /* CHANGESWHENUPPERCASED */
+    { 466, 16,  0}, /* CWU */
+    { 485, 17,  0}, /* DASH */
+    { 491, 18,  4}, /* DECOMPOSITIONTYPE */
+    { 520, 18,  4}, /* DT */
+    { 492, 19,  0}, /* DEFAULTIGNORABLECODEPOINT */
+    { 500, 19,  0}, /* DI */
+    { 494, 20,  0}, /* DEPRECATED */
+    { 493, 20,  0}, /* DEP */
+    { 502, 21,  0}, /* DIACRITIC */
+    { 501, 21,  0}, /* DIA */
+    { 527, 22,  5}, /* EASTASIANWIDTH */
+    { 525, 22,  5}, /* EA */
+    { 543, 23,  0}, /* EMOJI */
+    { 544, 24,  0}, /* EMOJICOMPONENT */
+    { 532, 24,  0}, /* ECOMP */
+    { 545, 25,  0}, /* EMOJIMODIFIER */
+    { 541, 25,  0}, /* EMOD */
+    { 546, 26,  0}, /* EMOJIMODIFIERBASE */
+    { 529, 26,  0}, /* EBASE */
+    { 547, 27,  0}, /* EMOJIPRESENTATION */
+    { 560, 27,  0}, /* EPRES */
+    { 580, 28,  0}, /* EXTENDEDPICTOGRAPHIC */
+    { 583, 28,  0}, /* EXTPICT */
+    { 581, 29,  0}, /* EXTENDER */
+    { 578, 29,  0}, /* EXT */
+    { 607, 30,  6}, /* GENERALCATEGORY */
+    { 604, 30,  6}, /* GC */
+    { 631, 31,  0}, /* GRAPH */
+    { 632, 32,  0}, /* GRAPHEMEBASE */
+    { 636, 32,  0}, /* GRBASE */
+    { 633, 33,  7}, /* GRAPHEMECLUSTERBREAK */
+    { 605, 33,  7}, /* GCB */
+    { 634, 34,  0}, /* GRAPHEMEEXTEND */
+    { 642, 34,  0}, /* GREXT */
+    { 635, 35,  0}, /* GRAPHEMELINK */
+    { 643, 35,  0}, /* GRLINK */
+    { 666, 36,  8}, /* HANGULSYLLABLETYPE */
+    { 696, 36,  8}, /* HST */
+    { 685, 37,  0}, /* HEXDIGIT */
+    { 684, 37,  0}, /* HEX */
+    { 699, 38,  0}, /* HYPHEN */
+    { 702, 39,  0}, /* IDCONTINUE */
+    { 701, 39,  0}, /* IDC */
+    { 704, 40,  0}, /* IDEOGRAPHIC */
+    { 703, 40,  0}, /* IDEO */
+    { 710, 41,  0}, /* IDSBINARYOPERATOR */
+    { 709, 41,  0}, /* IDSB */
+    { 712, 42,  0}, /* IDSTART */
+    { 708, 42,  0}, /* IDS */
+    { 713, 43,  0}, /* IDSTRINARYOPERATOR */
+    { 711, 43,  0}, /* IDST */
+    { 717, 44,  9}, /* INDICPOSITIONALCATEGORY */
+    { 725, 44,  9}, /* INPC */
+    { 719, 45, 10}, /* INDICSYLLABICCATEGORY */
+    { 726, 45, 10}, /* INSC */
+    { 748, 46,  0}, /* JOINCONTROL */
+    { 746, 46,  0}, /* JOINC */
+    { 750, 47, 11}, /* JOININGGROUP */
+    { 744, 47, 11}, /* JG */
+    { 751, 48, 12}, /* JOININGTYPE */
+    { 752, 48, 12}, /* JT */
+    { 844, 49, 13}, /* LINEBREAK */
+    { 819, 49, 13}, /* LB */
+    { 854, 50,  0}, /* LOGICALORDEREXCEPTION */
+    { 853, 50,  0}, /* LOE */
+    { 856, 51,  0}, /* LOWERCASE */
+    { 855, 51,  0}, /* LOWER */
+    { 928, 52,  0}, /* MATH */
+    {1016, 53, 14}, /* NFCQUICKCHECK */
+    {1015, 53, 14}, /* NFCQC */
+    {1018, 54, 15}, /* NFDQUICKCHECK */
+    {1017, 54, 15}, /* NFDQC */
+    {1020, 55, 14}, /* NFKCQUICKCHECK */
+    {1019, 55, 14}, /* NFKCQC */
+    {1022, 56, 15}, /* NFKDQUICKCHECK */
+    {1021, 56, 15}, /* NFKDQC */
+    {1031, 57,  0}, /* NONCHARACTERCODEPOINT */
+    {1008, 57,  0}, /* NCHAR */
+    {1051, 58, 16}, /* NUMERICTYPE */
+    {1044, 58, 16}, /* NT */
+    {1052, 59, 17}, /* NUMERICVALUE */
+    {1055, 59, 17}, /* NV */
+    {1093, 60,  0}, /* OTHERALPHABETIC */
+    {1058, 60,  0}, /* OALPHA */
+    {1094, 61,  0}, /* OTHERDEFAULTIGNORABLECODEPOINT */
+    {1060, 61,  0}, /* ODI */
+    {1095, 62,  0}, /* OTHERGRAPHEMEEXTEND */
+    {1063, 62,  0}, /* OGREXT */
+    {1096, 63,  0}, /* OTHERIDCONTINUE */
+    {1064, 63,  0}, /* OIDC */
+    {1097, 64,  0}, /* OTHERIDSTART */
+    {1065, 64,  0}, /* OIDS */
+    {1099, 65,  0}, /* OTHERLOWERCASE */
+    {1078, 65,  0}, /* OLOWER */
+    {1100, 66,  0}, /* OTHERMATH */
+    {1079, 66,  0}, /* OMATH */
+    {1105, 67,  0}, /* OTHERUPPERCASE */
+    {1108, 67,  0}, /* OUPPER */
+    {1119, 68,  0}, /* PATTERNSYNTAX */
+    {1118, 68,  0}, /* PATSYN */
+    {1120, 69,  0}, /* PATTERNWHITESPACE */
+    {1121, 69,  0}, /* PATWS */
+    {1150, 70,  0}, /* POSIXALNUM */
+    {1151, 71,  0}, /* POSIXDIGIT */
+    {1152, 72,  0}, /* POSIXPUNCT */
+    {1153, 73,  0}, /* POSIXXDIGIT */
+    {1159, 74,  0}, /* PREPENDEDCONCATENATIONMARK */
+    {1125, 74,  0}, /* PCM */
+    {1160, 75,  0}, /* PRINT */
+    {1177, 76,  0}, /* QUOTATIONMARK */
+    {1174, 76,  0}, /* QMARK */
+    {1179, 77,  0}, /* RADICAL */
+    {1180, 78,  0}, /* REGIONALINDICATOR */
+    {1185, 78,  0}, /* RI */
+    {1215, 79, 18}, /* SCRIPT */
+    {1213, 79, 18}, /* SC */
+    {1216, 80, 18}, /* SCRIPTEXTENSIONS */
+    {1217, 80, 18}, /* SCX */
+    {1223, 81, 19}, /* SENTENCEBREAK */
+    {1212, 81, 19}, /* SB */
+    {1224, 82,  0}, /* SENTENCETERMINAL */
+    {1270, 82,  0}, /* STERM */
+    {1252, 83,  0}, /* SOFTDOTTED */
+    {1218, 83,  0}, /* SD */
+    {1345, 84,  0}, /* TERMINALPUNCTUATION */
+    {1344, 84,  0}, /* TERM */
+    {1386, 85,  0}, /* UNIFIEDIDEOGRAPH */
+    {1381, 85,  0}, /* UIDEO */
+    {1390, 86,  0}, /* UPPERCASE */
+    {1389, 86,  0}, /* UPPER */
+    {1395, 87,  0}, /* VARIATIONSELECTOR */
+    {1414, 87,  0}, /* VS */
+    {1423, 88,  0}, /* WHITESPACE */
+    {1431, 88,  0}, /* WSPACE */
+    {1261, 88,  0}, /* SPACE */
+    {1426, 89,  0}, /* WORD */
+    {1427, 90, 20}, /* WORDBREAK */
+    {1421, 90, 20}, /* WB */
+    {1432, 91,  0}, /* XDIGIT */
+    {1434, 92,  0}, /* XIDCONTINUE */
+    {1433, 92,  0}, /* XIDC */
+    {1436, 93,  0}, /* XIDSTART */
+    {1435, 93,  0}, /* XIDS */
 };
 
 /* Property values. */
 RE_PropertyValue re_property_values[] = {
-    {1015,  0,   0}, /* NO */
-    { 984,  0,   0}, /* N */
-    { 578,  0,   0}, /* F */
-    { 579,  0,   0}, /* FALSE */
-    {1421,  0,   1}, /* YES */
-    {1417,  0,   1}, /* Y */
-    {1299,  0,   1}, /* T */
-    {1356,  0,   1}, /* TRUE */
-    { 814,  1,   0}, /* LEFTTORIGHT */
-    { 783,  1,   0}, /* L */
-    { 281,  1,   1}, /* BOUNDARYNEUTRAL */
-    { 273,  1,   1}, /* BN */
-    {1207,  1,   2}, /* SEGMENTSEPARATOR */
-    {1188,  1,   2}, /* S */
-    {1103,  1,   3}, /* PARAGRAPHSEPARATOR */
-    { 236,  1,   3}, /* B */
-    {1400,  1,   4}, /* WHITESPACE */
-    {1406,  1,   4}, /* WS */
-    {1088,  1,   5}, /* OTHERNEUTRAL */
-    {1067,  1,   5}, /* ON */
-    { 569,  1,   6}, /* EUROPEANTERMINATOR */
-    { 558,  1,   6}, /* ET */
-    { 568,  1,   7}, /* EUROPEANSEPARATOR */
-    { 557,  1,   7}, /* ES */
-    { 423,  1,   8}, /* COMMONSEPARATOR */
-    { 453,  1,   8}, /* CS */
-    { 567,  1,   9}, /* EUROPEANNUMBER */
-    { 545,  1,   9}, /* EN */
-    {1023,  1,  10}, /* NONSPACINGMARK */
-    {1031,  1,  10}, /* NSM */
-    {1174,  1,  11}, /* RIGHTTOLEFT */
-    {1164,  1,  11}, /* R */
-    { 209,  1,  12}, /* ARABICNUMBER */
+    {1027,  0,   0}, /* NO */
+    { 996,  0,   0}, /* N */
+    { 584,  0,   0}, /* F */
+    { 585,  0,   0}, /* FALSE */
+    {1444,  0,   1}, /* YES */
+    {1440,  0,   1}, /* Y */
+    {1313,  0,   1}, /* T */
+    {1374,  0,   1}, /* TRUE */
+    { 826,  1,   0}, /* LEFTTORIGHT */
+    { 791,  1,   0}, /* L */
+    { 283,  1,   1}, /* BOUNDARYNEUTRAL */
+    { 275,  1,   1}, /* BN */
+    {1221,  1,   2}, /* SEGMENTSEPARATOR */
+    {1202,  1,   2}, /* S */
+    {1117,  1,   3}, /* PARAGRAPHSEPARATOR */
+    { 238,  1,   3}, /* B */
+    {1423,  1,   4}, /* WHITESPACE */
+    {1429,  1,   4}, /* WS */
+    {1101,  1,   5}, /* OTHERNEUTRAL */
+    {1080,  1,   5}, /* ON */
+    { 575,  1,   6}, /* EUROPEANTERMINATOR */
+    { 562,  1,   6}, /* ET */
+    { 574,  1,   7}, /* EUROPEANSEPARATOR */
+    { 561,  1,   7}, /* ES */
+    { 425,  1,   8}, /* COMMONSEPARATOR */
+    { 456,  1,   8}, /* CS */
+    { 573,  1,   9}, /* EUROPEANNUMBER */
+    { 549,  1,   9}, /* EN */
+    {1035,  1,  10}, /* NONSPACINGMARK */
+    {1043,  1,  10}, /* NSM */
+    {1188,  1,  11}, /* RIGHTTOLEFT */
+    {1178,  1,  11}, /* R */
+    { 211,  1,  12}, /* ARABICNUMBER */
     { 194,  1,  12}, /* AN */
-    { 206,  1,  13}, /* ARABICLETTER */
+    { 208,  1,  13}, /* ARABICLETTER */
     { 181,  1,  13}, /* AL */
-    { 815,  1,  14}, /* LEFTTORIGHTEMBEDDING */
-    { 847,  1,  14}, /* LRE */
-    {1175,  1,  15}, /* RIGHTTOLEFTEMBEDDING */
-    {1179,  1,  15}, /* RLE */
-    {1134,  1,  16}, /* POPDIRECTIONALFORMAT */
-    {1113,  1,  16}, /* PDF */
-    { 817,  1,  17}, /* LEFTTORIGHTOVERRIDE */
-    { 849,  1,  17}, /* LRO */
-    {1177,  1,  18}, /* RIGHTTOLEFTOVERRIDE */
-    {1181,  1,  18}, /* RLO */
-    { 816,  1,  19}, /* LEFTTORIGHTISOLATE */
-    { 848,  1,  19}, /* LRI */
-    {1176,  1,  20}, /* RIGHTTOLEFTISOLATE */
-    {1180,  1,  20}, /* RLI */
-    { 587,  1,  21}, /* FIRSTSTRONGISOLATE */
-    { 593,  1,  21}, /* FSI */
-    {1135,  1,  22}, /* POPDIRECTIONALISOLATE */
-    {1114,  1,  22}, /* PDI */
-    {1016,  2,   0}, /* NOBLOCK */
-    { 994,  2,   0}, /* NB */
-    { 245,  2,   1}, /* BASICLATIN */
-    { 220,  2,   1}, /* ASCII */
-    { 793,  2,   2}, /* LATIN1SUPPLEMENT */
-    { 792,  2,   2}, /* LATIN1SUP */
-    { 791,  2,   2}, /* LATIN1 */
-    { 800,  2,   3}, /* LATINEXTENDEDA */
-    { 794,  2,   3}, /* LATINEXTA */
-    { 802,  2,   4}, /* LATINEXTENDEDB */
-    { 796,  2,   4}, /* LATINEXTB */
-    { 728,  2,   5}, /* IPAEXTENSIONS */
-    { 727,  2,   5}, /* IPAEXT */
-    {1250,  2,   6}, /* SPACINGMODIFIERLETTERS */
-    { 963,  2,   6}, /* MODIFIERLETTERS */
-    { 414,  2,   7}, /* COMBININGDIACRITICALMARKS */
-    { 499,  2,   7}, /* DIACRITICALS */
-    { 632,  2,   8}, /* GREEKANDCOPTIC */
-    { 631,  2,   8}, /* GREEK */
-    { 466,  2,   9}, /* CYRILLIC */
-    { 474,  2,  10}, /* CYRILLICSUPPLEMENT */
-    { 473,  2,  10}, /* CYRILLICSUP */
-    { 475,  2,  10}, /* CYRILLICSUPPLEMENTARY */
-    { 216,  2,  11}, /* ARMENIAN */
-    { 673,  2,  12}, /* HEBREW */
+    { 827,  1,  14}, /* LEFTTORIGHTEMBEDDING */
+    { 859,  1,  14}, /* LRE */
+    {1189,  1,  15}, /* RIGHTTOLEFTEMBEDDING */
+    {1193,  1,  15}, /* RLE */
+    {1148,  1,  16}, /* POPDIRECTIONALFORMAT */
+    {1127,  1,  16}, /* PDF */
+    { 829,  1,  17}, /* LEFTTORIGHTOVERRIDE */
+    { 861,  1,  17}, /* LRO */
+    {1191,  1,  18}, /* RIGHTTOLEFTOVERRIDE */
+    {1195,  1,  18}, /* RLO */
+    { 828,  1,  19}, /* LEFTTORIGHTISOLATE */
+    { 860,  1,  19}, /* LRI */
+    {1190,  1,  20}, /* RIGHTTOLEFTISOLATE */
+    {1194,  1,  20}, /* RLI */
+    { 593,  1,  21}, /* FIRSTSTRONGISOLATE */
+    { 599,  1,  21}, /* FSI */
+    {1149,  1,  22}, /* POPDIRECTIONALISOLATE */
+    {1128,  1,  22}, /* PDI */
+    {1028,  2,   0}, /* NOBLOCK */
+    {1006,  2,   0}, /* NB */
+    { 247,  2,   1}, /* BASICLATIN */
+    { 222,  2,   1}, /* ASCII */
+    { 801,  2,   2}, /* LATIN1SUPPLEMENT */
+    { 800,  2,   2}, /* LATIN1SUP */
+    { 799,  2,   2}, /* LATIN1 */
+    { 808,  2,   3}, /* LATINEXTENDEDA */
+    { 802,  2,   3}, /* LATINEXTA */
+    { 810,  2,   4}, /* LATINEXTENDEDB */
+    { 804,  2,   4}, /* LATINEXTB */
+    { 734,  2,   5}, /* IPAEXTENSIONS */
+    { 733,  2,   5}, /* IPAEXT */
+    {1264,  2,   6}, /* SPACINGMODIFIERLETTERS */
+    { 975,  2,   6}, /* MODIFIERLETTERS */
+    { 416,  2,   7}, /* COMBININGDIACRITICALMARKS */
+    { 503,  2,   7}, /* DIACRITICALS */
+    { 638,  2,   8}, /* GREEKANDCOPTIC */
+    { 637,  2,   8}, /* GREEK */
+    { 470,  2,   9}, /* CYRILLIC */
+    { 478,  2,  10}, /* CYRILLICSUPPLEMENT */
+    { 477,  2,  10}, /* CYRILLICSUP */
+    { 479,  2,  10}, /* CYRILLICSUPPLEMENTARY */
+    { 218,  2,  11}, /* ARMENIAN */
+    { 679,  2,  12}, /* HEBREW */
     { 203,  2,  13}, /* ARABIC */
-    {1295,  2,  14}, /* SYRIAC */
-    { 215,  2,  15}, /* ARABICSUPPLEMENT */
-    { 214,  2,  15}, /* ARABICSUP */
-    {1335,  2,  16}, /* THAANA */
-    {1012,  2,  17}, /* NKO */
-    {1193,  2,  18}, /* SAMARITAN */
-    { 881,  2,  19}, /* MANDAIC */
-    {1297,  2,  20}, /* SYRIACSUPPLEMENT */
-    {1296,  2,  20}, /* SYRIACSUP */
-    { 205,  2,  21}, /* ARABICEXTENDEDA */
-    { 204,  2,  21}, /* ARABICEXTA */
-    { 493,  2,  22}, /* DEVANAGARI */
-    { 257,  2,  23}, /* BENGALI */
-    { 641,  2,  24}, /* GURMUKHI */
-    { 638,  2,  25}, /* GUJARATI */
-    {1071,  2,  26}, /* ORIYA */
-    {1314,  2,  27}, /* TAMIL */
-    {1328,  2,  28}, /* TELUGU */
-    { 761,  2,  29}, /* KANNADA */
-    { 868,  2,  30}, /* MALAYALAM */
-    {1227,  2,  31}, /* SINHALA */
-    {1336,  2,  32}, /* THAI */
-    { 788,  2,  33}, /* LAO */
-    {1337,  2,  34}, /* TIBETAN */
-    { 978,  2,  35}, /* MYANMAR */
-    { 607,  2,  36}, /* GEORGIAN */
-    { 656,  2,  37}, /* HANGULJAMO */
-    { 733,  2,  37}, /* JAMO */
-    { 560,  2,  38}, /* ETHIOPIC */
-    { 566,  2,  39}, /* ETHIOPICSUPPLEMENT */
-    { 565,  2,  39}, /* ETHIOPICSUP */
-    { 367,  2,  40}, /* CHEROKEE */
-    {1364,  2,  41}, /* UNIFIEDCANADIANABORIGINALSYLLABICS */
-    {1358,  2,  41}, /* UCAS */
-    { 306,  2,  41}, /* CANADIANSYLLABICS */
-    {1050,  2,  42}, /* OGHAM */
-    {1186,  2,  43}, /* RUNIC */
-    {1300,  2,  44}, /* TAGALOG */
-    { 668,  2,  45}, /* HANUNOO */
-    { 297,  2,  46}, /* BUHID */
-    {1302,  2,  47}, /* TAGBANWA */
-    { 772,  2,  48}, /* KHMER */
-    { 968,  2,  49}, /* MONGOLIAN */
-    {1365,  2,  50}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED */
-    {1359,  2,  50}, /* UCASEXT */
-    { 825,  2,  51}, /* LIMBU */
-    {1305,  2,  52}, /* TAILE */
-    {1001,  2,  53}, /* NEWTAILUE */
-    { 773,  2,  54}, /* KHMERSYMBOLS */
-    { 295,  2,  55}, /* BUGINESE */
-    {1306,  2,  56}, /* TAITHAM */
-    { 415,  2,  57}, /* COMBININGDIACRITICALMARKSEXTENDED */
-    { 500,  2,  57}, /* DIACRITICALSEXT */
-    { 240,  2,  58}, /* BALINESE */
-    {1260,  2,  59}, /* SUNDANESE */
-    { 248,  2,  60}, /* BATAK */
-    { 819,  2,  61}, /* LEPCHA */
-    {1054,  2,  62}, /* OLCHIKI */
-    { 472,  2,  63}, /* CYRILLICEXTENDEDC */
-    { 469,  2,  63}, /* CYRILLICEXTC */
-    { 609,  2,  64}, /* GEORGIANEXTENDED */
-    { 608,  2,  64}, /* GEORGIANEXT */
-    {1262,  2,  65}, /* SUNDANESESUPPLEMENT */
-    {1261,  2,  65}, /* SUNDANESESUP */
-    {1379,  2,  66}, /* VEDICEXTENSIONS */
-    {1378,  2,  66}, /* VEDICEXT */
-    {1127,  2,  67}, /* PHONETICEXTENSIONS */
-    {1126,  2,  67}, /* PHONETICEXT */
-    {1128,  2,  68}, /* PHONETICEXTENSIONSSUPPLEMENT */
-    {1129,  2,  68}, /* PHONETICEXTSUP */
-    { 417,  2,  69}, /* COMBININGDIACRITICALMARKSSUPPLEMENT */
-    { 502,  2,  69}, /* DIACRITICALSSUP */
-    { 801,  2,  70}, /* LATINEXTENDEDADDITIONAL */
-    { 795,  2,  70}, /* LATINEXTADDITIONAL */
-    { 634,  2,  71}, /* GREEKEXTENDED */
-    { 633,  2,  71}, /* GREEKEXT */
-    { 602,  2,  72}, /* GENERALPUNCTUATION */
-    {1154,  2,  72}, /* PUNCTUATION */
-    {1269,  2,  73}, /* SUPERSCRIPTSANDSUBSCRIPTS */
-    {1268,  2,  73}, /* SUPERANDSUB */
-    { 458,  2,  74}, /* CURRENCYSYMBOLS */
-    { 416,  2,  75}, /* COMBININGDIACRITICALMARKSFORSYMBOLS */
-    { 501,  2,  75}, /* DIACRITICALSFORSYMBOLS */
-    { 420,  2,  75}, /* COMBININGMARKSFORSYMBOLS */
-    { 821,  2,  76}, /* LETTERLIKESYMBOLS */
-    {1036,  2,  77}, /* NUMBERFORMS */
-    { 219,  2,  78}, /* ARROWS */
-    { 919,  2,  79}, /* MATHEMATICALOPERATORS */
-    { 920,  2,  79}, /* MATHOPERATORS */
-    { 952,  2,  80}, /* MISCELLANEOUSTECHNICAL */
-    { 957,  2,  80}, /* MISCTECHNICAL */
-    { 444,  2,  81}, /* CONTROLPICTURES */
-    {1070,  2,  82}, /* OPTICALCHARACTERRECOGNITION */
-    {1047,  2,  82}, /* OCR */
-    { 548,  2,  83}, /* ENCLOSEDALPHANUMERICS */
-    { 547,  2,  83}, /* ENCLOSEDALPHANUM */
-    { 282,  2,  84}, /* BOXDRAWING */
-    { 272,  2,  85}, /* BLOCKELEMENTS */
-    { 603,  2,  86}, /* GEOMETRICSHAPES */
-    { 949,  2,  87}, /* MISCELLANEOUSSYMBOLS */
-    { 956,  2,  87}, /* MISCSYMBOLS */
-    { 505,  2,  88}, /* DINGBATS */
-    { 947,  2,  89}, /* MISCELLANEOUSMATHEMATICALSYMBOLSA */
-    { 953,  2,  89}, /* MISCMATHSYMBOLSA */
-    {1271,  2,  90}, /* SUPPLEMENTALARROWSA */
-    {1264,  2,  90}, /* SUPARROWSA */
-    { 289,  2,  91}, /* BRAILLEPATTERNS */
-    { 288,  2,  91}, /* BRAILLE */
-    {1272,  2,  92}, /* SUPPLEMENTALARROWSB */
-    {1265,  2,  92}, /* SUPARROWSB */
-    { 948,  2,  93}, /* MISCELLANEOUSMATHEMATICALSYMBOLSB */
-    { 954,  2,  93}, /* MISCMATHSYMBOLSB */
-    {1274,  2,  94}, /* SUPPLEMENTALMATHEMATICALOPERATORS */
-    {1270,  2,  94}, /* SUPMATHOPERATORS */
-    { 950,  2,  95}, /* MISCELLANEOUSSYMBOLSANDARROWS */
-    { 946,  2,  95}, /* MISCARROWS */
-    { 614,  2,  96}, /* GLAGOLITIC */
-    { 803,  2,  97}, /* LATINEXTENDEDC */
-    { 797,  2,  97}, /* LATINEXTC */
-    { 446,  2,  98}, /* COPTIC */
-    { 611,  2,  99}, /* GEORGIANSUPPLEMENT */
-    { 610,  2,  99}, /* GEORGIANSUP */
-    {1339,  2, 100}, /* TIFINAGH */
-    { 563,  2, 101}, /* ETHIOPICEXTENDED */
-    { 561,  2, 101}, /* ETHIOPICEXT */
-    { 470,  2, 102}, /* CYRILLICEXTENDEDA */
-    { 467,  2, 102}, /* CYRILLICEXTA */
-    {1275,  2, 103}, /* SUPPLEMENTALPUNCTUATION */
-    {1281,  2, 103}, /* SUPPUNCTUATION */
-    { 393,  2, 104}, /* CJKRADICALSSUPPLEMENT */
-    { 392,  2, 104}, /* CJKRADICALSSUP */
-    { 760,  2, 105}, /* KANGXIRADICALS */
-    { 759,  2, 105}, /* KANGXI */
-    { 699,  2, 106}, /* IDEOGRAPHICDESCRIPTIONCHARACTERS */
-    { 695,  2, 106}, /* IDC */
-    { 396,  2, 107}, /* CJKSYMBOLSANDPUNCTUATION */
-    { 395,  2, 107}, /* CJKSYMBOLS */
-    { 684,  2, 108}, /* HIRAGANA */
-    { 763,  2, 109}, /* KATAKANA */
-    { 275,  2, 110}, /* BOPOMOFO */
-    { 655,  2, 111}, /* HANGULCOMPATIBILITYJAMO */
-    { 425,  2, 111}, /* COMPATJAMO */
-    { 758,  2, 112}, /* KANBUN */
-    { 277,  2, 113}, /* BOPOMOFOEXTENDED */
-    { 276,  2, 113}, /* BOPOMOFOEXT */
-    { 394,  2, 114}, /* CJKSTROKES */
-    { 766,  2, 115}, /* KATAKANAPHONETICEXTENSIONS */
-    { 764,  2, 115}, /* KATAKANAEXT */
-    { 552,  2, 116}, /* ENCLOSEDCJKLETTERSANDMONTHS */
-    { 551,  2, 116}, /* ENCLOSEDCJK */
-    { 379,  2, 117}, /* CJKCOMPATIBILITY */
-    { 377,  2, 117}, /* CJKCOMPAT */
-    { 398,  2, 118}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONA */
-    { 385,  2, 118}, /* CJKEXTA */
-    {1427,  2, 119}, /* YIJINGHEXAGRAMSYMBOLS */
-    {1426,  2, 119}, /* YIJING */
-    { 397,  2, 120}, /* CJKUNIFIEDIDEOGRAPHS */
-    { 376,  2, 120}, /* CJK */
-    {1429,  2, 121}, /* YISYLLABLES */
-    {1428,  2, 122}, /* YIRADICALS */
-    { 835,  2, 123}, /* LISU */
-    {1373,  2, 124}, /* VAI */
-    { 471,  2, 125}, /* CYRILLICEXTENDEDB */
-    { 468,  2, 125}, /* CYRILLICEXTB */
-    { 242,  2, 126}, /* BAMUM */
-    { 965,  2, 127}, /* MODIFIERTONELETTERS */
-    { 804,  2, 128}, /* LATINEXTENDEDD */
-    { 798,  2, 128}, /* LATINEXTD */
-    {1289,  2, 129}, /* SYLOTINAGRI */
-    { 422,  2, 130}, /* COMMONINDICNUMBERFORMS */
-    { 710,  2, 130}, /* INDICNUMBERFORMS */
-    {1119,  2, 131}, /* PHAGSPA */
-    {1197,  2, 132}, /* SAURASHTRA */
-    { 495,  2, 133}, /* DEVANAGARIEXTENDED */
-    { 494,  2, 133}, /* DEVANAGARIEXT */
-    { 767,  2, 134}, /* KAYAHLI */
-    {1169,  2, 135}, /* REJANG */
-    { 657,  2, 136}, /* HANGULJAMOEXTENDEDA */
-    { 734,  2, 136}, /* JAMOEXTA */
-    { 737,  2, 137}, /* JAVANESE */
-    { 982,  2, 138}, /* MYANMAREXTENDEDB */
-    { 980,  2, 138}, /* MYANMAREXTB */
-    { 360,  2, 139}, /* CHAM */
-    { 981,  2, 140}, /* MYANMAREXTENDEDA */
-    { 979,  2, 140}, /* MYANMAREXTA */
-    {1307,  2, 141}, /* TAIVIET */
-    { 934,  2, 142}, /* MEETEIMAYEKEXTENSIONS */
-    { 933,  2, 142}, /* MEETEIMAYEKEXT */
-    { 564,  2, 143}, /* ETHIOPICEXTENDEDA */
-    { 562,  2, 143}, /* ETHIOPICEXTA */
-    { 805,  2, 144}, /* LATINEXTENDEDE */
-    { 799,  2, 144}, /* LATINEXTE */
-    { 369,  2, 145}, /* CHEROKEESUPPLEMENT */
-    { 368,  2, 145}, /* CHEROKEESUP */
-    { 932,  2, 146}, /* MEETEIMAYEK */
-    { 659,  2, 147}, /* HANGULSYLLABLES */
-    { 654,  2, 147}, /* HANGUL */
-    { 658,  2, 148}, /* HANGULJAMOEXTENDEDB */
-    { 735,  2, 148}, /* JAMOEXTB */
-    { 682,  2, 149}, /* HIGHSURROGATES */
-    { 680,  2, 150}, /* HIGHPRIVATEUSESURROGATES */
-    { 681,  2, 150}, /* HIGHPUSURROGATES */
-    { 846,  2, 151}, /* LOWSURROGATES */
-    {1148,  2, 152}, /* PRIVATEUSEAREA */
-    {1152,  2, 152}, /* PUA */
-    {1147,  2, 152}, /* PRIVATEUSE */
-    { 381,  2, 153}, /* CJKCOMPATIBILITYIDEOGRAPHS */
-    { 383,  2, 153}, /* CJKCOMPATIDEOGRAPHS */
-    { 191,  2, 154}, /* ALPHABETICPRESENTATIONFORMS */
-    { 190,  2, 154}, /* ALPHABETICPF */
-    { 212,  2, 155}, /* ARABICPRESENTATIONFORMSA */
-    { 210,  2, 155}, /* ARABICPFA */
-    {1376,  2, 156}, /* VARIATIONSELECTORS */
-    {1391,  2, 156}, /* VS */
-    {1382,  2, 157}, /* VERTICALFORMS */
-    { 418,  2, 158}, /* COMBININGHALFMARKS */
-    { 648,  2, 158}, /* HALFMARKS */
-    { 380,  2, 159}, /* CJKCOMPATIBILITYFORMS */
-    { 378,  2, 159}, /* CJKCOMPATFORMS */
-    {1233,  2, 160}, /* SMALLFORMVARIANTS */
-    {1232,  2, 160}, /* SMALLFORMS */
-    { 213,  2, 161}, /* ARABICPRESENTATIONFORMSB */
-    { 211,  2, 161}, /* ARABICPFB */
-    { 650,  2, 162}, /* HALFWIDTHANDFULLWIDTHFORMS */
-    { 647,  2, 162}, /* HALFANDFULLFORMS */
-    {1251,  2, 163}, /* SPECIALS */
-    { 831,  2, 164}, /* LINEARBSYLLABARY */
-    { 830,  2, 165}, /* LINEARBIDEOGRAMS */
-    { 172,  2, 166}, /* AEGEANNUMBERS */
-    { 198,  2, 167}, /* ANCIENTGREEKNUMBERS */
-    { 199,  2, 168}, /* ANCIENTSYMBOLS */
-    {1121,  2, 169}, /* PHAISTOSDISC */
-    {1120,  2, 169}, /* PHAISTOS */
-    { 857,  2, 170}, /* LYCIAN */
-    { 312,  2, 171}, /* CARIAN */
-    { 447,  2, 172}, /* COPTICEPACTNUMBERS */
-    {1057,  2, 173}, /* OLDITALIC */
-    { 622,  2, 174}, /* GOTHIC */
-    {1059,  2, 175}, /* OLDPERMIC */
-    {1361,  2, 176}, /* UGARITIC */
-    {1060,  2, 177}, /* OLDPERSIAN */
-    { 491,  2, 178}, /* DESERET */
-    {1216,  2, 179}, /* SHAVIAN */
-    {1078,  2, 180}, /* OSMANYA */
-    {1075,  2, 181}, /* OSAGE */
-    { 533,  2, 182}, /* ELBASAN */
-    { 317,  2, 183}, /* CAUCASIANALBANIAN */
-    { 828,  2, 184}, /* LINEARA */
-    { 465,  2, 185}, /* CYPRIOTSYLLABARY */
-    { 708,  2, 186}, /* IMPERIALARAMAIC */
-    {1102,  2, 187}, /* PALMYRENE */
-    { 987,  2, 188}, /* NABATAEAN */
-    { 670,  2, 189}, /* HATRAN */
-    {1125,  2, 190}, /* PHOENICIAN */
-    { 859,  2, 191}, /* LYDIAN */
-    { 940,  2, 192}, /* MEROITICHIEROGLYPHS */
-    { 939,  2, 193}, /* MEROITICCURSIVE */
-    { 770,  2, 194}, /* KHAROSHTHI */
-    {1062,  2, 195}, /* OLDSOUTHARABIAN */
-    {1058,  2, 196}, /* OLDNORTHARABIAN */
-    { 884,  2, 197}, /* MANICHAEAN */
-    { 234,  2, 198}, /* AVESTAN */
-    { 722,  2, 199}, /* INSCRIPTIONALPARTHIAN */
-    { 721,  2, 200}, /* INSCRIPTIONALPAHLAVI */
-    {1151,  2, 201}, /* PSALTERPAHLAVI */
-    {1063,  2, 202}, /* OLDTURKIC */
-    {1056,  2, 203}, /* OLDHUNGARIAN */
-    { 662,  2, 204}, /* HANIFIROHINGYA */
-    {1185,  2, 205}, /* RUMINUMERALSYMBOLS */
-    {1184,  2, 205}, /* RUMI */
-    {1423,  2, 206}, /* YEZIDI */
-    {1061,  2, 207}, /* OLDSOGDIAN */
-    {1240,  2, 208}, /* SOGDIAN */
-    { 371,  2, 209}, /* CHORASMIAN */
-    { 535,  2, 210}, /* ELYMAIC */
-    { 285,  2, 211}, /* BRAHMI */
-    { 750,  2, 212}, /* KAITHI */
-    {1243,  2, 213}, /* SORASOMPENG */
-    { 359,  2, 214}, /* CHAKMA */
-    { 862,  2, 215}, /* MAHAJANI */
-    {1215,  2, 216}, /* SHARADA */
-    {1228,  2, 217}, /* SINHALAARCHAICNUMBERS */
-    { 776,  2, 218}, /* KHOJKI */
-    { 975,  2, 219}, /* MULTANI */
-    { 777,  2, 220}, /* KHUDAWADI */
-    { 624,  2, 221}, /* GRANTHA */
-    { 999,  2, 222}, /* NEWA */
-    {1341,  2, 223}, /* TIRHUTA */
-    {1222,  2, 224}, /* SIDDHAM */
-    { 961,  2, 225}, /* MODI */
-    { 970,  2, 226}, /* MONGOLIANSUPPLEMENT */
-    { 969,  2, 226}, /* MONGOLIANSUP */
-    {1311,  2, 227}, /* TAKRI */
-    { 178,  2, 228}, /* AHOM */
-    { 508,  2, 229}, /* DOGRA */
-    {1396,  2, 230}, /* WARANGCITI */
-    { 506,  2, 231}, /* DIVESAKURU */
-    { 990,  2, 232}, /* NANDINAGARI */
-    {1435,  2, 233}, /* ZANABAZARSQUARE */
-    {1245,  2, 234}, /* SOYOMBO */
-    {1109,  2, 235}, /* PAUCINHAU */
-    { 259,  2, 236}, /* BHAIKSUKI */
-    { 913,  2, 237}, /* MARCHEN */
-    { 915,  2, 238}, /* MASARAMGONDI */
-    { 640,  2, 239}, /* GUNJALAGONDI */
-    { 867,  2, 240}, /* MAKASAR */
-    { 837,  2, 241}, /* LISUSUPPLEMENT */
-    { 836,  2, 241}, /* LISUSUP */
-    {1316,  2, 242}, /* TAMILSUPPLEMENT */
-    {1315,  2, 242}, /* TAMILSUP */
-    { 454,  2, 243}, /* CUNEIFORM */
-    { 456,  2, 244}, /* CUNEIFORMNUMBERSANDPUNCTUATION */
-    { 455,  2, 244}, /* CUNEIFORMNUMBERS */
-    { 522,  2, 245}, /* EARLYDYNASTICCUNEIFORM */
-    { 531,  2, 246}, /* EGYPTIANHIEROGLYPHS */
-    { 530,  2, 247}, /* EGYPTIANHIEROGLYPHFORMATCONTROLS */
-    { 195,  2, 248}, /* ANATOLIANHIEROGLYPHS */
-    { 244,  2, 249}, /* BAMUMSUPPLEMENT */
-    { 243,  2, 249}, /* BAMUMSUP */
-    { 971,  2, 250}, /* MRO */
-    { 247,  2, 251}, /* BASSAVAH */
-    {1100,  2, 252}, /* PAHAWHHMONG */
-    { 928,  2, 253}, /* MEDEFAIDRIN */
-    { 941,  2, 254}, /* MIAO */
-    { 701,  2, 255}, /* IDEOGRAPHICSYMBOLSANDPUNCTUATION */
-    { 700,  2, 255}, /* IDEOGRAPHICSYMBOLS */
-    {1319,  2, 256}, /* TANGUT */
-    {1320,  2, 257}, /* TANGUTCOMPONENTS */
-    { 771,  2, 258}, /* KHITANSMALLSCRIPT */
-    {1322,  2, 259}, /* TANGUTSUPPLEMENT */
-    {1321,  2, 259}, /* TANGUTSUP */
-    { 756,  2, 260}, /* KANASUPPLEMENT */
-    { 755,  2, 260}, /* KANASUP */
-    { 754,  2, 261}, /* KANAEXTENDEDA */
-    { 753,  2, 261}, /* KANAEXTA */
-    {1235,  2, 262}, /* SMALLKANAEXTENSION */
-    {1234,  2, 262}, /* SMALLKANAEXT */
-    {1042,  2, 263}, /* NUSHU */
-    { 519,  2, 264}, /* DUPLOYAN */
-    {1219,  2, 265}, /* SHORTHANDFORMATCONTROLS */
-    { 300,  2, 266}, /* BYZANTINEMUSICALSYMBOLS */
-    { 299,  2, 266}, /* BYZANTINEMUSIC */
-    { 977,  2, 267}, /* MUSICALSYMBOLS */
-    { 976,  2, 267}, /* MUSIC */
-    { 197,  2, 268}, /* ANCIENTGREEKMUSICALNOTATION */
-    { 196,  2, 268}, /* ANCIENTGREEKMUSIC */
-    { 922,  2, 269}, /* MAYANNUMERALS */
-    {1309,  2, 270}, /* TAIXUANJINGSYMBOLS */
-    {1308,  2, 270}, /* TAIXUANJING */
-    { 449,  2, 271}, /* COUNTINGRODNUMERALS */
-    { 448,  2, 271}, /* COUNTINGROD */
-    { 918,  2, 272}, /* MATHEMATICALALPHANUMERICSYMBOLS */
-    { 917,  2, 272}, /* MATHALPHANUM */
-    {1284,  2, 273}, /* SUTTONSIGNWRITING */
-    { 616,  2, 274}, /* GLAGOLITICSUPPLEMENT */
-    { 615,  2, 274}, /* GLAGOLITICSUP */
-    {1045,  2, 275}, /* NYIAKENGPUACHUEHMONG */
-    {1394,  2, 276}, /* WANCHO */
-    { 936,  2, 277}, /* MENDEKIKAKUI */
-    { 170,  2, 278}, /* ADLAM */
-    { 712,  2, 279}, /* INDICSIYAQNUMBERS */
-    {1093,  2, 280}, /* OTTOMANSIYAQNUMBERS */
-    { 208,  2, 281}, /* ARABICMATHEMATICALALPHABETICSYMBOLS */
-    { 207,  2, 281}, /* ARABICMATH */
-    { 865,  2, 282}, /* MAHJONGTILES */
-    { 864,  2, 282}, /* MAHJONG */
-    { 510,  2, 283}, /* DOMINOTILES */
-    { 509,  2, 283}, /* DOMINO */
-    {1131,  2, 284}, /* PLAYINGCARDS */
-    { 549,  2, 285}, /* ENCLOSEDALPHANUMERICSUPPLEMENT */
-    { 550,  2, 285}, /* ENCLOSEDALPHANUMSUP */
-    { 554,  2, 286}, /* ENCLOSEDIDEOGRAPHICSUPPLEMENT */
-    { 553,  2, 286}, /* ENCLOSEDIDEOGRAPHICSUP */
-    { 951,  2, 287}, /* MISCELLANEOUSSYMBOLSANDPICTOGRAPHS */
-    { 955,  2, 287}, /* MISCPICTOGRAPHS */
-    { 544,  2, 288}, /* EMOTICONS */
-    {1073,  2, 289}, /* ORNAMENTALDINGBATS */
-    {1355,  2, 290}, /* TRANSPORTANDMAPSYMBOLS */
-    {1354,  2, 290}, /* TRANSPORTANDMAP */
-    { 184,  2, 291}, /* ALCHEMICALSYMBOLS */
-    { 183,  2, 291}, /* ALCHEMICAL */
-    { 605,  2, 292}, /* GEOMETRICSHAPESEXTENDED */
-    { 604,  2, 292}, /* GEOMETRICSHAPESEXT */
-    {1273,  2, 293}, /* SUPPLEMENTALARROWSC */
-    {1266,  2, 293}, /* SUPARROWSC */
-    {1276,  2, 294}, /* SUPPLEMENTALSYMBOLSANDPICTOGRAPHS */
-    {1282,  2, 294}, /* SUPSYMBOLSANDPICTOGRAPHS */
-    { 370,  2, 295}, /* CHESSSYMBOLS */
-    {1292,  2, 296}, /* SYMBOLSANDPICTOGRAPHSEXTENDEDA */
-    {1291,  2, 296}, /* SYMBOLSANDPICTOGRAPHSEXTA */
-    {1293,  2, 297}, /* SYMBOLSFORLEGACYCOMPUTING */
-    { 399,  2, 298}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONB */
-    { 386,  2, 298}, /* CJKEXTB */
-    { 400,  2, 299}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONC */
-    { 387,  2, 299}, /* CJKEXTC */
-    { 401,  2, 300}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIOND */
-    { 388,  2, 300}, /* CJKEXTD */
-    { 402,  2, 301}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONE */
-    { 389,  2, 301}, /* CJKEXTE */
-    { 403,  2, 302}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONF */
-    { 390,  2, 302}, /* CJKEXTF */
-    { 382,  2, 303}, /* CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT */
-    { 384,  2, 303}, /* CJKCOMPATIDEOGRAPHSSUP */
-    { 404,  2, 304}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONG */
-    { 391,  2, 304}, /* CJKEXTG */
-    {1303,  2, 305}, /* TAGS */
-    {1377,  2, 306}, /* VARIATIONSELECTORSSUPPLEMENT */
-    {1392,  2, 306}, /* VSSUP */
-    {1277,  2, 307}, /* SUPPLEMENTARYPRIVATEUSEAREAA */
-    {1279,  2, 307}, /* SUPPUAA */
-    {1278,  2, 308}, /* SUPPLEMENTARYPRIVATEUSEAREAB */
-    {1280,  2, 308}, /* SUPPUAB */
-    {1027,  3,   0}, /* NOTREORDERED */
+    {1309,  2,  14}, /* SYRIAC */
+    { 217,  2,  15}, /* ARABICSUPPLEMENT */
+    { 216,  2,  15}, /* ARABICSUP */
+    {1350,  2,  16}, /* THAANA */
+    {1024,  2,  17}, /* NKO */
+    {1207,  2,  18}, /* SAMARITAN */
+    { 893,  2,  19}, /* MANDAIC */
+    {1311,  2,  20}, /* SYRIACSUPPLEMENT */
+    {1310,  2,  20}, /* SYRIACSUP */
+    { 207,  2,  21}, /* ARABICEXTENDEDB */
+    { 205,  2,  21}, /* ARABICEXTB */
+    { 206,  2,  22}, /* ARABICEXTENDEDA */
+    { 204,  2,  22}, /* ARABICEXTA */
+    { 497,  2,  23}, /* DEVANAGARI */
+    { 259,  2,  24}, /* BENGALI */
+    { 647,  2,  25}, /* GURMUKHI */
+    { 644,  2,  26}, /* GUJARATI */
+    {1084,  2,  27}, /* ORIYA */
+    {1328,  2,  28}, /* TAMIL */
+    {1343,  2,  29}, /* TELUGU */
+    { 769,  2,  30}, /* KANNADA */
+    { 880,  2,  31}, /* MALAYALAM */
+    {1241,  2,  32}, /* SINHALA */
+    {1351,  2,  33}, /* THAI */
+    { 796,  2,  34}, /* LAO */
+    {1353,  2,  35}, /* TIBETAN */
+    { 990,  2,  36}, /* MYANMAR */
+    { 613,  2,  37}, /* GEORGIAN */
+    { 662,  2,  38}, /* HANGULJAMO */
+    { 739,  2,  38}, /* JAMO */
+    { 564,  2,  39}, /* ETHIOPIC */
+    { 572,  2,  40}, /* ETHIOPICSUPPLEMENT */
+    { 571,  2,  40}, /* ETHIOPICSUP */
+    { 369,  2,  41}, /* CHEROKEE */
+    {1383,  2,  42}, /* UNIFIEDCANADIANABORIGINALSYLLABICS */
+    {1376,  2,  42}, /* UCAS */
+    { 308,  2,  42}, /* CANADIANSYLLABICS */
+    {1062,  2,  43}, /* OGHAM */
+    {1200,  2,  44}, /* RUNIC */
+    {1314,  2,  45}, /* TAGALOG */
+    { 674,  2,  46}, /* HANUNOO */
+    { 299,  2,  47}, /* BUHID */
+    {1316,  2,  48}, /* TAGBANWA */
+    { 780,  2,  49}, /* KHMER */
+    { 980,  2,  50}, /* MONGOLIAN */
+    {1384,  2,  51}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED */
+    {1377,  2,  51}, /* UCASEXT */
+    { 837,  2,  52}, /* LIMBU */
+    {1319,  2,  53}, /* TAILE */
+    {1013,  2,  54}, /* NEWTAILUE */
+    { 781,  2,  55}, /* KHMERSYMBOLS */
+    { 297,  2,  56}, /* BUGINESE */
+    {1320,  2,  57}, /* TAITHAM */
+    { 417,  2,  58}, /* COMBININGDIACRITICALMARKSEXTENDED */
+    { 504,  2,  58}, /* DIACRITICALSEXT */
+    { 242,  2,  59}, /* BALINESE */
+    {1274,  2,  60}, /* SUNDANESE */
+    { 250,  2,  61}, /* BATAK */
+    { 831,  2,  62}, /* LEPCHA */
+    {1066,  2,  63}, /* OLCHIKI */
+    { 476,  2,  64}, /* CYRILLICEXTENDEDC */
+    { 473,  2,  64}, /* CYRILLICEXTC */
+    { 615,  2,  65}, /* GEORGIANEXTENDED */
+    { 614,  2,  65}, /* GEORGIANEXT */
+    {1276,  2,  66}, /* SUNDANESESUPPLEMENT */
+    {1275,  2,  66}, /* SUNDANESESUP */
+    {1399,  2,  67}, /* VEDICEXTENSIONS */
+    {1398,  2,  67}, /* VEDICEXT */
+    {1141,  2,  68}, /* PHONETICEXTENSIONS */
+    {1140,  2,  68}, /* PHONETICEXT */
+    {1142,  2,  69}, /* PHONETICEXTENSIONSSUPPLEMENT */
+    {1143,  2,  69}, /* PHONETICEXTSUP */
+    { 419,  2,  70}, /* COMBININGDIACRITICALMARKSSUPPLEMENT */
+    { 506,  2,  70}, /* DIACRITICALSSUP */
+    { 809,  2,  71}, /* LATINEXTENDEDADDITIONAL */
+    { 803,  2,  71}, /* LATINEXTADDITIONAL */
+    { 640,  2,  72}, /* GREEKEXTENDED */
+    { 639,  2,  72}, /* GREEKEXT */
+    { 608,  2,  73}, /* GENERALPUNCTUATION */
+    {1168,  2,  73}, /* PUNCTUATION */
+    {1283,  2,  74}, /* SUPERSCRIPTSANDSUBSCRIPTS */
+    {1282,  2,  74}, /* SUPERANDSUB */
+    { 461,  2,  75}, /* CURRENCYSYMBOLS */
+    { 418,  2,  76}, /* COMBININGDIACRITICALMARKSFORSYMBOLS */
+    { 505,  2,  76}, /* DIACRITICALSFORSYMBOLS */
+    { 422,  2,  76}, /* COMBININGMARKSFORSYMBOLS */
+    { 833,  2,  77}, /* LETTERLIKESYMBOLS */
+    {1048,  2,  78}, /* NUMBERFORMS */
+    { 221,  2,  79}, /* ARROWS */
+    { 931,  2,  80}, /* MATHEMATICALOPERATORS */
+    { 932,  2,  80}, /* MATHOPERATORS */
+    { 964,  2,  81}, /* MISCELLANEOUSTECHNICAL */
+    { 969,  2,  81}, /* MISCTECHNICAL */
+    { 446,  2,  82}, /* CONTROLPICTURES */
+    {1083,  2,  83}, /* OPTICALCHARACTERRECOGNITION */
+    {1059,  2,  83}, /* OCR */
+    { 552,  2,  84}, /* ENCLOSEDALPHANUMERICS */
+    { 551,  2,  84}, /* ENCLOSEDALPHANUM */
+    { 284,  2,  85}, /* BOXDRAWING */
+    { 274,  2,  86}, /* BLOCKELEMENTS */
+    { 609,  2,  87}, /* GEOMETRICSHAPES */
+    { 961,  2,  88}, /* MISCELLANEOUSSYMBOLS */
+    { 968,  2,  88}, /* MISCSYMBOLS */
+    { 509,  2,  89}, /* DINGBATS */
+    { 959,  2,  90}, /* MISCELLANEOUSMATHEMATICALSYMBOLSA */
+    { 965,  2,  90}, /* MISCMATHSYMBOLSA */
+    {1285,  2,  91}, /* SUPPLEMENTALARROWSA */
+    {1278,  2,  91}, /* SUPARROWSA */
+    { 291,  2,  92}, /* BRAILLEPATTERNS */
+    { 290,  2,  92}, /* BRAILLE */
+    {1286,  2,  93}, /* SUPPLEMENTALARROWSB */
+    {1279,  2,  93}, /* SUPARROWSB */
+    { 960,  2,  94}, /* MISCELLANEOUSMATHEMATICALSYMBOLSB */
+    { 966,  2,  94}, /* MISCMATHSYMBOLSB */
+    {1288,  2,  95}, /* SUPPLEMENTALMATHEMATICALOPERATORS */
+    {1284,  2,  95}, /* SUPMATHOPERATORS */
+    { 962,  2,  96}, /* MISCELLANEOUSSYMBOLSANDARROWS */
+    { 958,  2,  96}, /* MISCARROWS */
+    { 620,  2,  97}, /* GLAGOLITIC */
+    { 811,  2,  98}, /* LATINEXTENDEDC */
+    { 805,  2,  98}, /* LATINEXTC */
+    { 448,  2,  99}, /* COPTIC */
+    { 617,  2, 100}, /* GEORGIANSUPPLEMENT */
+    { 616,  2, 100}, /* GEORGIANSUP */
+    {1355,  2, 101}, /* TIFINAGH */
+    { 568,  2, 102}, /* ETHIOPICEXTENDED */
+    { 565,  2, 102}, /* ETHIOPICEXT */
+    { 474,  2, 103}, /* CYRILLICEXTENDEDA */
+    { 471,  2, 103}, /* CYRILLICEXTA */
+    {1289,  2, 104}, /* SUPPLEMENTALPUNCTUATION */
+    {1295,  2, 104}, /* SUPPUNCTUATION */
+    { 395,  2, 105}, /* CJKRADICALSSUPPLEMENT */
+    { 394,  2, 105}, /* CJKRADICALSSUP */
+    { 768,  2, 106}, /* KANGXIRADICALS */
+    { 767,  2, 106}, /* KANGXI */
+    { 705,  2, 107}, /* IDEOGRAPHICDESCRIPTIONCHARACTERS */
+    { 701,  2, 107}, /* IDC */
+    { 398,  2, 108}, /* CJKSYMBOLSANDPUNCTUATION */
+    { 397,  2, 108}, /* CJKSYMBOLS */
+    { 690,  2, 109}, /* HIRAGANA */
+    { 771,  2, 110}, /* KATAKANA */
+    { 277,  2, 111}, /* BOPOMOFO */
+    { 661,  2, 112}, /* HANGULCOMPATIBILITYJAMO */
+    { 427,  2, 112}, /* COMPATJAMO */
+    { 766,  2, 113}, /* KANBUN */
+    { 279,  2, 114}, /* BOPOMOFOEXTENDED */
+    { 278,  2, 114}, /* BOPOMOFOEXT */
+    { 396,  2, 115}, /* CJKSTROKES */
+    { 774,  2, 116}, /* KATAKANAPHONETICEXTENSIONS */
+    { 772,  2, 116}, /* KATAKANAEXT */
+    { 556,  2, 117}, /* ENCLOSEDCJKLETTERSANDMONTHS */
+    { 555,  2, 117}, /* ENCLOSEDCJK */
+    { 381,  2, 118}, /* CJKCOMPATIBILITY */
+    { 379,  2, 118}, /* CJKCOMPAT */
+    { 400,  2, 119}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONA */
+    { 387,  2, 119}, /* CJKEXTA */
+    {1450,  2, 120}, /* YIJINGHEXAGRAMSYMBOLS */
+    {1449,  2, 120}, /* YIJING */
+    { 399,  2, 121}, /* CJKUNIFIEDIDEOGRAPHS */
+    { 378,  2, 121}, /* CJK */
+    {1452,  2, 122}, /* YISYLLABLES */
+    {1451,  2, 123}, /* YIRADICALS */
+    { 847,  2, 124}, /* LISU */
+    {1393,  2, 125}, /* VAI */
+    { 475,  2, 126}, /* CYRILLICEXTENDEDB */
+    { 472,  2, 126}, /* CYRILLICEXTB */
+    { 244,  2, 127}, /* BAMUM */
+    { 977,  2, 128}, /* MODIFIERTONELETTERS */
+    { 812,  2, 129}, /* LATINEXTENDEDD */
+    { 806,  2, 129}, /* LATINEXTD */
+    {1303,  2, 130}, /* SYLOTINAGRI */
+    { 424,  2, 131}, /* COMMONINDICNUMBERFORMS */
+    { 716,  2, 131}, /* INDICNUMBERFORMS */
+    {1133,  2, 132}, /* PHAGSPA */
+    {1211,  2, 133}, /* SAURASHTRA */
+    { 499,  2, 134}, /* DEVANAGARIEXTENDED */
+    { 498,  2, 134}, /* DEVANAGARIEXT */
+    { 775,  2, 135}, /* KAYAHLI */
+    {1183,  2, 136}, /* REJANG */
+    { 663,  2, 137}, /* HANGULJAMOEXTENDEDA */
+    { 740,  2, 137}, /* JAMOEXTA */
+    { 743,  2, 138}, /* JAVANESE */
+    { 994,  2, 139}, /* MYANMAREXTENDEDB */
+    { 992,  2, 139}, /* MYANMAREXTB */
+    { 362,  2, 140}, /* CHAM */
+    { 993,  2, 141}, /* MYANMAREXTENDEDA */
+    { 991,  2, 141}, /* MYANMAREXTA */
+    {1321,  2, 142}, /* TAIVIET */
+    { 946,  2, 143}, /* MEETEIMAYEKEXTENSIONS */
+    { 945,  2, 143}, /* MEETEIMAYEKEXT */
+    { 569,  2, 144}, /* ETHIOPICEXTENDEDA */
+    { 566,  2, 144}, /* ETHIOPICEXTA */
+    { 813,  2, 145}, /* LATINEXTENDEDE */
+    { 807,  2, 145}, /* LATINEXTE */
+    { 371,  2, 146}, /* CHEROKEESUPPLEMENT */
+    { 370,  2, 146}, /* CHEROKEESUP */
+    { 944,  2, 147}, /* MEETEIMAYEK */
+    { 665,  2, 148}, /* HANGULSYLLABLES */
+    { 660,  2, 148}, /* HANGUL */
+    { 664,  2, 149}, /* HANGULJAMOEXTENDEDB */
+    { 741,  2, 149}, /* JAMOEXTB */
+    { 688,  2, 150}, /* HIGHSURROGATES */
+    { 686,  2, 151}, /* HIGHPRIVATEUSESURROGATES */
+    { 687,  2, 151}, /* HIGHPUSURROGATES */
+    { 858,  2, 152}, /* LOWSURROGATES */
+    {1162,  2, 153}, /* PRIVATEUSEAREA */
+    {1166,  2, 153}, /* PUA */
+    {1161,  2, 153}, /* PRIVATEUSE */
+    { 383,  2, 154}, /* CJKCOMPATIBILITYIDEOGRAPHS */
+    { 385,  2, 154}, /* CJKCOMPATIDEOGRAPHS */
+    { 191,  2, 155}, /* ALPHABETICPRESENTATIONFORMS */
+    { 190,  2, 155}, /* ALPHABETICPF */
+    { 214,  2, 156}, /* ARABICPRESENTATIONFORMSA */
+    { 212,  2, 156}, /* ARABICPFA */
+    {1396,  2, 157}, /* VARIATIONSELECTORS */
+    {1414,  2, 157}, /* VS */
+    {1402,  2, 158}, /* VERTICALFORMS */
+    { 420,  2, 159}, /* COMBININGHALFMARKS */
+    { 654,  2, 159}, /* HALFMARKS */
+    { 382,  2, 160}, /* CJKCOMPATIBILITYFORMS */
+    { 380,  2, 160}, /* CJKCOMPATFORMS */
+    {1247,  2, 161}, /* SMALLFORMVARIANTS */
+    {1246,  2, 161}, /* SMALLFORMS */
+    { 215,  2, 162}, /* ARABICPRESENTATIONFORMSB */
+    { 213,  2, 162}, /* ARABICPFB */
+    { 656,  2, 163}, /* HALFWIDTHANDFULLWIDTHFORMS */
+    { 653,  2, 163}, /* HALFANDFULLFORMS */
+    {1265,  2, 164}, /* SPECIALS */
+    { 843,  2, 165}, /* LINEARBSYLLABARY */
+    { 842,  2, 166}, /* LINEARBIDEOGRAMS */
+    { 172,  2, 167}, /* AEGEANNUMBERS */
+    { 198,  2, 168}, /* ANCIENTGREEKNUMBERS */
+    { 199,  2, 169}, /* ANCIENTSYMBOLS */
+    {1135,  2, 170}, /* PHAISTOSDISC */
+    {1134,  2, 170}, /* PHAISTOS */
+    { 869,  2, 171}, /* LYCIAN */
+    { 314,  2, 172}, /* CARIAN */
+    { 449,  2, 173}, /* COPTICEPACTNUMBERS */
+    {1069,  2, 174}, /* OLDITALIC */
+    { 628,  2, 175}, /* GOTHIC */
+    {1071,  2, 176}, /* OLDPERMIC */
+    {1380,  2, 177}, /* UGARITIC */
+    {1072,  2, 178}, /* OLDPERSIAN */
+    { 495,  2, 179}, /* DESERET */
+    {1230,  2, 180}, /* SHAVIAN */
+    {1091,  2, 181}, /* OSMANYA */
+    {1088,  2, 182}, /* OSAGE */
+    { 537,  2, 183}, /* ELBASAN */
+    { 319,  2, 184}, /* CAUCASIANALBANIAN */
+    {1408,  2, 185}, /* VITHKUQI */
+    { 840,  2, 186}, /* LINEARA */
+    { 814,  2, 187}, /* LATINEXTENDEDF */
+    { 816,  2, 187}, /* LATINEXTF */
+    { 468,  2, 188}, /* CYPRIOTSYLLABARY */
+    { 714,  2, 189}, /* IMPERIALARAMAIC */
+    {1116,  2, 190}, /* PALMYRENE */
+    { 999,  2, 191}, /* NABATAEAN */
+    { 676,  2, 192}, /* HATRAN */
+    {1139,  2, 193}, /* PHOENICIAN */
+    { 871,  2, 194}, /* LYDIAN */
+    { 952,  2, 195}, /* MEROITICHIEROGLYPHS */
+    { 951,  2, 196}, /* MEROITICCURSIVE */
+    { 778,  2, 197}, /* KHAROSHTHI */
+    {1074,  2, 198}, /* OLDSOUTHARABIAN */
+    {1070,  2, 199}, /* OLDNORTHARABIAN */
+    { 896,  2, 200}, /* MANICHAEAN */
+    { 236,  2, 201}, /* AVESTAN */
+    { 728,  2, 202}, /* INSCRIPTIONALPARTHIAN */
+    { 727,  2, 203}, /* INSCRIPTIONALPAHLAVI */
+    {1165,  2, 204}, /* PSALTERPAHLAVI */
+    {1075,  2, 205}, /* OLDTURKIC */
+    {1068,  2, 206}, /* OLDHUNGARIAN */
+    { 668,  2, 207}, /* HANIFIROHINGYA */
+    {1199,  2, 208}, /* RUMINUMERALSYMBOLS */
+    {1198,  2, 208}, /* RUMI */
+    {1446,  2, 209}, /* YEZIDI */
+    {1073,  2, 210}, /* OLDSOGDIAN */
+    {1254,  2, 211}, /* SOGDIAN */
+    {1076,  2, 212}, /* OLDUYGHUR */
+    { 373,  2, 213}, /* CHORASMIAN */
+    { 539,  2, 214}, /* ELYMAIC */
+    { 287,  2, 215}, /* BRAHMI */
+    { 756,  2, 216}, /* KAITHI */
+    {1257,  2, 217}, /* SORASOMPENG */
+    { 361,  2, 218}, /* CHAKMA */
+    { 874,  2, 219}, /* MAHAJANI */
+    {1229,  2, 220}, /* SHARADA */
+    {1242,  2, 221}, /* SINHALAARCHAICNUMBERS */
+    { 784,  2, 222}, /* KHOJKI */
+    { 987,  2, 223}, /* MULTANI */
+    { 785,  2, 224}, /* KHUDAWADI */
+    { 630,  2, 225}, /* GRANTHA */
+    {1011,  2, 226}, /* NEWA */
+    {1357,  2, 227}, /* TIRHUTA */
+    {1236,  2, 228}, /* SIDDHAM */
+    { 973,  2, 229}, /* MODI */
+    { 982,  2, 230}, /* MONGOLIANSUPPLEMENT */
+    { 981,  2, 230}, /* MONGOLIANSUP */
+    {1325,  2, 231}, /* TAKRI */
+    { 178,  2, 232}, /* AHOM */
+    { 512,  2, 233}, /* DOGRA */
+    {1419,  2, 234}, /* WARANGCITI */
+    { 510,  2, 235}, /* DIVESAKURU */
+    {1002,  2, 236}, /* NANDINAGARI */
+    {1458,  2, 237}, /* ZANABAZARSQUARE */
+    {1259,  2, 238}, /* SOYOMBO */
+    {1385,  2, 239}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA */
+    {1378,  2, 239}, /* UCASEXTA */
+    {1123,  2, 240}, /* PAUCINHAU */
+    { 261,  2, 241}, /* BHAIKSUKI */
+    { 925,  2, 242}, /* MARCHEN */
+    { 927,  2, 243}, /* MASARAMGONDI */
+    { 646,  2, 244}, /* GUNJALAGONDI */
+    { 879,  2, 245}, /* MAKASAR */
+    { 849,  2, 246}, /* LISUSUPPLEMENT */
+    { 848,  2, 246}, /* LISUSUP */
+    {1330,  2, 247}, /* TAMILSUPPLEMENT */
+    {1329,  2, 247}, /* TAMILSUP */
+    { 457,  2, 248}, /* CUNEIFORM */
+    { 459,  2, 249}, /* CUNEIFORMNUMBERSANDPUNCTUATION */
+    { 458,  2, 249}, /* CUNEIFORMNUMBERS */
+    { 526,  2, 250}, /* EARLYDYNASTICCUNEIFORM */
+    { 469,  2, 251}, /* CYPROMINOAN */
+    { 535,  2, 252}, /* EGYPTIANHIEROGLYPHS */
+    { 534,  2, 253}, /* EGYPTIANHIEROGLYPHFORMATCONTROLS */
+    { 195,  2, 254}, /* ANATOLIANHIEROGLYPHS */
+    { 246,  2, 255}, /* BAMUMSUPPLEMENT */
+    { 245,  2, 255}, /* BAMUMSUP */
+    { 983,  2, 256}, /* MRO */
+    {1333,  2, 257}, /* TANGSA */
+    { 249,  2, 258}, /* BASSAVAH */
+    {1114,  2, 259}, /* PAHAWHHMONG */
+    { 940,  2, 260}, /* MEDEFAIDRIN */
+    { 953,  2, 261}, /* MIAO */
+    { 707,  2, 262}, /* IDEOGRAPHICSYMBOLSANDPUNCTUATION */
+    { 706,  2, 262}, /* IDEOGRAPHICSYMBOLS */
+    {1334,  2, 263}, /* TANGUT */
+    {1335,  2, 264}, /* TANGUTCOMPONENTS */
+    { 779,  2, 265}, /* KHITANSMALLSCRIPT */
+    {1337,  2, 266}, /* TANGUTSUPPLEMENT */
+    {1336,  2, 266}, /* TANGUTSUP */
+    { 762,  2, 267}, /* KANAEXTENDEDB */
+    { 760,  2, 267}, /* KANAEXTB */
+    { 764,  2, 268}, /* KANASUPPLEMENT */
+    { 763,  2, 268}, /* KANASUP */
+    { 761,  2, 269}, /* KANAEXTENDEDA */
+    { 759,  2, 269}, /* KANAEXTA */
+    {1249,  2, 270}, /* SMALLKANAEXTENSION */
+    {1248,  2, 270}, /* SMALLKANAEXT */
+    {1054,  2, 271}, /* NUSHU */
+    { 523,  2, 272}, /* DUPLOYAN */
+    {1233,  2, 273}, /* SHORTHANDFORMATCONTROLS */
+    {1464,  2, 274}, /* ZNAMENNYMUSICALNOTATION */
+    {1463,  2, 274}, /* ZNAMENNYMUSIC */
+    { 302,  2, 275}, /* BYZANTINEMUSICALSYMBOLS */
+    { 301,  2, 275}, /* BYZANTINEMUSIC */
+    { 989,  2, 276}, /* MUSICALSYMBOLS */
+    { 988,  2, 276}, /* MUSIC */
+    { 197,  2, 277}, /* ANCIENTGREEKMUSICALNOTATION */
+    { 196,  2, 277}, /* ANCIENTGREEKMUSIC */
+    { 934,  2, 278}, /* MAYANNUMERALS */
+    {1323,  2, 279}, /* TAIXUANJINGSYMBOLS */
+    {1322,  2, 279}, /* TAIXUANJING */
+    { 451,  2, 280}, /* COUNTINGRODNUMERALS */
+    { 450,  2, 280}, /* COUNTINGROD */
+    { 930,  2, 281}, /* MATHEMATICALALPHANUMERICSYMBOLS */
+    { 929,  2, 281}, /* MATHALPHANUM */
+    {1298,  2, 282}, /* SUTTONSIGNWRITING */
+    { 815,  2, 283}, /* LATINEXTENDEDG */
+    { 817,  2, 283}, /* LATINEXTG */
+    { 622,  2, 284}, /* GLAGOLITICSUPPLEMENT */
+    { 621,  2, 284}, /* GLAGOLITICSUP */
+    {1057,  2, 285}, /* NYIAKENGPUACHUEHMONG */
+    {1369,  2, 286}, /* TOTO */
+    {1417,  2, 287}, /* WANCHO */
+    { 570,  2, 288}, /* ETHIOPICEXTENDEDB */
+    { 567,  2, 288}, /* ETHIOPICEXTB */
+    { 948,  2, 289}, /* MENDEKIKAKUI */
+    { 170,  2, 290}, /* ADLAM */
+    { 718,  2, 291}, /* INDICSIYAQNUMBERS */
+    {1106,  2, 292}, /* OTTOMANSIYAQNUMBERS */
+    { 210,  2, 293}, /* ARABICMATHEMATICALALPHABETICSYMBOLS */
+    { 209,  2, 293}, /* ARABICMATH */
+    { 877,  2, 294}, /* MAHJONGTILES */
+    { 876,  2, 294}, /* MAHJONG */
+    { 514,  2, 295}, /* DOMINOTILES */
+    { 513,  2, 295}, /* DOMINO */
+    {1145,  2, 296}, /* PLAYINGCARDS */
+    { 553,  2, 297}, /* ENCLOSEDALPHANUMERICSUPPLEMENT */
+    { 554,  2, 297}, /* ENCLOSEDALPHANUMSUP */
+    { 558,  2, 298}, /* ENCLOSEDIDEOGRAPHICSUPPLEMENT */
+    { 557,  2, 298}, /* ENCLOSEDIDEOGRAPHICSUP */
+    { 963,  2, 299}, /* MISCELLANEOUSSYMBOLSANDPICTOGRAPHS */
+    { 967,  2, 299}, /* MISCPICTOGRAPHS */
+    { 548,  2, 300}, /* EMOTICONS */
+    {1086,  2, 301}, /* ORNAMENTALDINGBATS */
+    {1373,  2, 302}, /* TRANSPORTANDMAPSYMBOLS */
+    {1372,  2, 302}, /* TRANSPORTANDMAP */
+    { 184,  2, 303}, /* ALCHEMICALSYMBOLS */
+    { 183,  2, 303}, /* ALCHEMICAL */
+    { 611,  2, 304}, /* GEOMETRICSHAPESEXTENDED */
+    { 610,  2, 304}, /* GEOMETRICSHAPESEXT */
+    {1287,  2, 305}, /* SUPPLEMENTALARROWSC */
+    {1280,  2, 305}, /* SUPARROWSC */
+    {1290,  2, 306}, /* SUPPLEMENTALSYMBOLSANDPICTOGRAPHS */
+    {1296,  2, 306}, /* SUPSYMBOLSANDPICTOGRAPHS */
+    { 372,  2, 307}, /* CHESSSYMBOLS */
+    {1306,  2, 308}, /* SYMBOLSANDPICTOGRAPHSEXTENDEDA */
+    {1305,  2, 308}, /* SYMBOLSANDPICTOGRAPHSEXTA */
+    {1307,  2, 309}, /* SYMBOLSFORLEGACYCOMPUTING */
+    { 401,  2, 310}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONB */
+    { 388,  2, 310}, /* CJKEXTB */
+    { 402,  2, 311}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONC */
+    { 389,  2, 311}, /* CJKEXTC */
+    { 403,  2, 312}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIOND */
+    { 390,  2, 312}, /* CJKEXTD */
+    { 404,  2, 313}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONE */
+    { 391,  2, 313}, /* CJKEXTE */
+    { 405,  2, 314}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONF */
+    { 392,  2, 314}, /* CJKEXTF */
+    { 384,  2, 315}, /* CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT */
+    { 386,  2, 315}, /* CJKCOMPATIDEOGRAPHSSUP */
+    { 406,  2, 316}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONG */
+    { 393,  2, 316}, /* CJKEXTG */
+    {1317,  2, 317}, /* TAGS */
+    {1397,  2, 318}, /* VARIATIONSELECTORSSUPPLEMENT */
+    {1415,  2, 318}, /* VSSUP */
+    {1291,  2, 319}, /* SUPPLEMENTARYPRIVATEUSEAREAA */
+    {1293,  2, 319}, /* SUPPUAA */
+    {1292,  2, 320}, /* SUPPLEMENTARYPRIVATEUSEAREAB */
+    {1294,  2, 320}, /* SUPPUAB */
+    {1039,  3,   0}, /* NOTREORDERED */
     {   1,  3,   0}, /* 0 */
-    {1028,  3,   0}, /* NR */
+    {1040,  3,   0}, /* NR */
     { 167,  3,   1}, /* ABOVE */
     {  75,  3,   1}, /* 230 */
     { 166,  3,   1}, /* A */
     { 169,  3,   2}, /* ABOVERIGHT */
     {  76,  3,   2}, /* 232 */
     { 201,  3,   2}, /* AR */
-    { 253,  3,   3}, /* BELOW */
+    { 255,  3,   3}, /* BELOW */
     {  69,  3,   3}, /* 220 */
-    { 236,  3,   3}, /* B */
-    { 230,  3,   4}, /* ATTACHEDABOVERIGHT */
+    { 238,  3,   3}, /* B */
+    { 232,  3,   4}, /* ATTACHEDABOVERIGHT */
     {  65,  3,   4}, /* 216 */
-    { 225,  3,   4}, /* ATAR */
-    { 231,  3,   5}, /* ATTACHEDBELOW */
+    { 227,  3,   4}, /* ATAR */
+    { 233,  3,   5}, /* ATTACHEDBELOW */
     {  62,  3,   5}, /* 202 */
-    { 226,  3,   5}, /* ATB */
-    {1096,  3,   6}, /* OVERLAY */
+    { 228,  3,   5}, /* ATB */
+    {1110,  3,   6}, /* OVERLAY */
     {   2,  3,   6}, /* 1 */
-    {1095,  3,   6}, /* OV */
-    { 726,  3,   7}, /* IOTASUBSCRIPT */
+    {1109,  3,   6}, /* OV */
+    { 732,  3,   7}, /* IOTASUBSCRIPT */
     {  80,  3,   7}, /* 240 */
-    { 729,  3,   7}, /* IS */
-    { 512,  3,   8}, /* DOUBLEBELOW */
+    { 735,  3,   7}, /* IS */
+    { 516,  3,   8}, /* DOUBLEBELOW */
     {  77,  3,   8}, /* 233 */
-    { 483,  3,   8}, /* DB */
-    { 511,  3,   9}, /* DOUBLEABOVE */
+    { 487,  3,   8}, /* DB */
+    { 515,  3,   9}, /* DOUBLEABOVE */
     {  78,  3,   9}, /* 234 */
-    { 478,  3,   9}, /* DA */
-    { 255,  3,  10}, /* BELOWRIGHT */
+    { 482,  3,   9}, /* DA */
+    { 257,  3,  10}, /* BELOWRIGHT */
     {  70,  3,  10}, /* 222 */
-    { 283,  3,  10}, /* BR */
+    { 285,  3,  10}, /* BR */
     { 168,  3,  11}, /* ABOVELEFT */
     {  73,  3,  11}, /* 228 */
     { 181,  3,  11}, /* AL */
-    { 321,  3,  12}, /* CCC10 */
+    { 323,  3,  12}, /* CCC10 */
     {  21,  3,  12}, /* 10 */
-    { 324,  3,  13}, /* CCC11 */
+    { 326,  3,  13}, /* CCC11 */
     {  33,  3,  13}, /* 11 */
-    { 326,  3,  14}, /* CCC12 */
+    { 328,  3,  14}, /* CCC12 */
     {  37,  3,  14}, /* 12 */
-    { 329,  3,  15}, /* CCC13 */
+    { 331,  3,  15}, /* CCC13 */
     {  40,  3,  15}, /* 13 */
-    { 333,  3,  16}, /* CCC14 */
+    { 335,  3,  16}, /* CCC14 */
     {  45,  3,  16}, /* 14 */
-    { 334,  3,  17}, /* CCC15 */
+    { 336,  3,  17}, /* CCC15 */
     {  46,  3,  17}, /* 15 */
-    { 335,  3,  18}, /* CCC16 */
+    { 337,  3,  18}, /* CCC16 */
     {  48,  3,  18}, /* 16 */
-    { 336,  3,  19}, /* CCC17 */
+    { 338,  3,  19}, /* CCC17 */
     {  49,  3,  19}, /* 17 */
-    { 337,  3,  20}, /* CCC18 */
+    { 339,  3,  20}, /* CCC18 */
     {  51,  3,  20}, /* 18 */
-    { 338,  3,  21}, /* CCC19 */
+    { 340,  3,  21}, /* CCC19 */
     {  52,  3,  21}, /* 19 */
-    { 339,  3,  22}, /* CCC20 */
+    { 341,  3,  22}, /* CCC20 */
     {  56,  3,  22}, /* 20 */
-    { 340,  3,  23}, /* CCC21 */
+    { 342,  3,  23}, /* CCC21 */
     {  63,  3,  23}, /* 21 */
-    { 341,  3,  24}, /* CCC22 */
+    { 343,  3,  24}, /* CCC22 */
     {  68,  3,  24}, /* 22 */
-    { 342,  3,  25}, /* CCC23 */
+    { 344,  3,  25}, /* CCC23 */
     {  74,  3,  25}, /* 23 */
-    { 343,  3,  26}, /* CCC24 */
+    { 345,  3,  26}, /* CCC24 */
     {  79,  3,  26}, /* 24 */
-    { 344,  3,  27}, /* CCC25 */
+    { 346,  3,  27}, /* CCC25 */
     {  81,  3,  27}, /* 25 */
-    { 349,  3,  28}, /* CCC30 */
+    { 351,  3,  28}, /* CCC30 */
     {  95,  3,  28}, /* 30 */
-    { 350,  3,  29}, /* CCC31 */
+    { 352,  3,  29}, /* CCC31 */
     { 100,  3,  29}, /* 31 */
-    { 351,  3,  30}, /* CCC32 */
+    { 353,  3,  30}, /* CCC32 */
     { 101,  3,  30}, /* 32 */
-    { 346,  3,  31}, /* CCC27 */
+    { 348,  3,  31}, /* CCC27 */
     {  83,  3,  31}, /* 27 */
-    { 347,  3,  32}, /* CCC28 */
+    { 349,  3,  32}, /* CCC28 */
     {  84,  3,  32}, /* 28 */
-    { 348,  3,  33}, /* CCC29 */
+    { 350,  3,  33}, /* CCC29 */
     {  85,  3,  33}, /* 29 */
-    { 352,  3,  34}, /* CCC33 */
+    { 354,  3,  34}, /* CCC33 */
     { 102,  3,  34}, /* 33 */
-    { 353,  3,  35}, /* CCC34 */
+    { 355,  3,  35}, /* CCC34 */
     { 103,  3,  35}, /* 34 */
-    { 354,  3,  36}, /* CCC35 */
+    { 356,  3,  36}, /* CCC35 */
     { 104,  3,  36}, /* 35 */
-    { 355,  3,  37}, /* CCC36 */
+    { 357,  3,  37}, /* CCC36 */
     { 105,  3,  37}, /* 36 */
-    {1034,  3,  38}, /* NUKTA */
+    {1046,  3,  38}, /* NUKTA */
     { 142,  3,  38}, /* 7 */
-    {1011,  3,  38}, /* NK */
-    {1383,  3,  39}, /* VIRAMA */
+    {1023,  3,  38}, /* NK */
+    {1404,  3,  39}, /* VIRAMA */
     { 158,  3,  39}, /* 9 */
-    {1390,  3,  39}, /* VR */
-    { 356,  3,  40}, /* CCC84 */
+    {1413,  3,  39}, /* VR */
+    { 358,  3,  40}, /* CCC84 */
     { 157,  3,  40}, /* 84 */
-    { 357,  3,  41}, /* CCC91 */
+    { 359,  3,  41}, /* CCC91 */
     { 165,  3,  41}, /* 91 */
-    { 322,  3,  42}, /* CCC103 */
+    { 324,  3,  42}, /* CCC103 */
     {  31,  3,  42}, /* 103 */
-    { 323,  3,  43}, /* CCC107 */
+    { 325,  3,  43}, /* CCC107 */
     {  32,  3,  43}, /* 107 */
-    { 325,  3,  44}, /* CCC118 */
+    { 327,  3,  44}, /* CCC118 */
     {  36,  3,  44}, /* 118 */
-    { 327,  3,  45}, /* CCC122 */
+    { 329,  3,  45}, /* CCC122 */
     {  38,  3,  45}, /* 122 */
-    { 328,  3,  46}, /* CCC129 */
+    { 330,  3,  46}, /* CCC129 */
     {  39,  3,  46}, /* 129 */
-    { 330,  3,  47}, /* CCC130 */
+    { 332,  3,  47}, /* CCC130 */
     {  42,  3,  47}, /* 130 */
-    { 331,  3,  48}, /* CCC132 */
+    { 333,  3,  48}, /* CCC132 */
     {  43,  3,  48}, /* 132 */
-    { 229,  3,  49}, /* ATTACHEDABOVE */
+    { 231,  3,  49}, /* ATTACHEDABOVE */
     {  64,  3,  49}, /* 214 */
-    { 224,  3,  49}, /* ATA */
-    { 254,  3,  50}, /* BELOWLEFT */
+    { 226,  3,  49}, /* ATA */
+    { 256,  3,  50}, /* BELOWLEFT */
     {  67,  3,  50}, /* 218 */
-    { 268,  3,  50}, /* BL */
-    { 811,  3,  51}, /* LEFT */
+    { 270,  3,  50}, /* BL */
+    { 823,  3,  51}, /* LEFT */
     {  71,  3,  51}, /* 224 */
-    { 783,  3,  51}, /* L */
-    { 757,  3,  52}, /* KANAVOICING */
+    { 791,  3,  51}, /* L */
+    { 765,  3,  52}, /* KANAVOICING */
     { 151,  3,  52}, /* 8 */
-    { 782,  3,  52}, /* KV */
-    { 345,  3,  53}, /* CCC26 */
+    { 790,  3,  52}, /* KV */
+    { 347,  3,  53}, /* CCC26 */
     {  82,  3,  53}, /* 26 */
-    { 667,  3,  54}, /* HANREADING */
+    { 673,  3,  54}, /* HANREADING */
     { 136,  3,  54}, /* 6 */
-    { 666,  3,  54}, /* HANR */
-    {1172,  3,  55}, /* RIGHT */
+    { 672,  3,  54}, /* HANR */
+    {1186,  3,  55}, /* RIGHT */
     {  72,  3,  55}, /* 226 */
-    {1164,  3,  55}, /* R */
-    { 332,  3,  56}, /* CCC133 */
+    {1178,  3,  55}, /* R */
+    { 334,  3,  56}, /* CCC133 */
     {  44,  3,  56}, /* 133 */
-    { 232,  3,  57}, /* ATTACHEDBELOWLEFT */
+    { 234,  3,  57}, /* ATTACHEDBELOWLEFT */
     {  57,  3,  57}, /* 200 */
-    { 227,  3,  57}, /* ATBL */
-    {1020,  4,   0}, /* NONE */
-    {1017,  4,   1}, /* NOBREAK */
-    { 994,  4,   1}, /* NB */
-    { 424,  4,   2}, /* COMPAT */
-    { 413,  4,   2}, /* COM */
-    {1267,  4,   3}, /* SUPER */
-    {1263,  4,   3}, /* SUP */
-    { 592,  4,   4}, /* FRACTION */
-    { 591,  4,   4}, /* FRA */
-    { 307,  4,   5}, /* CANONICAL */
-    { 304,  4,   5}, /* CAN */
-    {1258,  4,   6}, /* SUB */
-    { 589,  4,   7}, /* FONT */
-    { 374,  4,   8}, /* CIRCLE */
-    { 546,  4,   8}, /* ENC */
-    {1401,  4,   9}, /* WIDE */
-    {1381,  4,  10}, /* VERTICAL */
-    {1380,  4,  10}, /* VERT */
-    {1254,  4,  11}, /* SQUARE */
-    {1253,  4,  11}, /* SQR */
-    { 731,  4,  12}, /* ISOLATED */
-    { 730,  4,  12}, /* ISO */
-    { 584,  4,  13}, /* FINAL */
-    { 583,  4,  13}, /* FIN */
-    { 717,  4,  14}, /* INITIAL */
-    { 716,  4,  14}, /* INIT */
-    { 930,  4,  15}, /* MEDIAL */
-    { 927,  4,  15}, /* MED */
-    {1231,  4,  16}, /* SMALL */
-    {1236,  4,  16}, /* SML */
-    { 993,  4,  17}, /* NARROW */
-    { 991,  4,  17}, /* NAR */
-    { 998,  5,   0}, /* NEUTRAL */
-    { 984,  5,   0}, /* N */
-    { 993,  5,   1}, /* NARROW */
-    { 986,  5,   1}, /* NA */
+    { 229,  3,  57}, /* ATBL */
+    {1032,  4,   0}, /* NONE */
+    {1029,  4,   1}, /* NOBREAK */
+    {1006,  4,   1}, /* NB */
+    { 426,  4,   2}, /* COMPAT */
+    { 415,  4,   2}, /* COM */
+    {1281,  4,   3}, /* SUPER */
+    {1277,  4,   3}, /* SUP */
+    { 598,  4,   4}, /* FRACTION */
+    { 597,  4,   4}, /* FRA */
+    { 309,  4,   5}, /* CANONICAL */
+    { 306,  4,   5}, /* CAN */
+    {1272,  4,   6}, /* SUB */
+    { 595,  4,   7}, /* FONT */
+    { 376,  4,   8}, /* CIRCLE */
+    { 550,  4,   8}, /* ENC */
+    {1424,  4,   9}, /* WIDE */
+    {1401,  4,  10}, /* VERTICAL */
+    {1400,  4,  10}, /* VERT */
+    {1268,  4,  11}, /* SQUARE */
+    {1267,  4,  11}, /* SQR */
+    { 737,  4,  12}, /* ISOLATED */
+    { 736,  4,  12}, /* ISO */
+    { 590,  4,  13}, /* FINAL */
+    { 589,  4,  13}, /* FIN */
+    { 723,  4,  14}, /* INITIAL */
+    { 722,  4,  14}, /* INIT */
+    { 942,  4,  15}, /* MEDIAL */
+    { 939,  4,  15}, /* MED */
+    {1245,  4,  16}, /* SMALL */
+    {1250,  4,  16}, /* SML */
+    {1005,  4,  17}, /* NARROW */
+    {1003,  4,  17}, /* NAR */
+    {1010,  5,   0}, /* NEUTRAL */
+    { 996,  5,   0}, /* N */
+    {1005,  5,   1}, /* NARROW */
+    { 998,  5,   1}, /* NA */
     { 193,  5,   2}, /* AMBIGUOUS */
     { 166,  5,   2}, /* A */
-    {1401,  5,   3}, /* WIDE */
-    {1393,  5,   3}, /* W */
-    { 649,  5,   4}, /* HALFWIDTH */
-    { 643,  5,   4}, /* H */
-    { 594,  5,   5}, /* FULLWIDTH */
-    { 578,  5,   5}, /* F */
-    {1363,  6,   0}, /* UNASSIGNED */
-    { 410,  6,   0}, /* CN */
-    { 443,  6,   1}, /* CONTROL */
-    { 319,  6,   1}, /* CC */
-    { 411,  6,   1}, /* CNTRL */
-    {1248,  6,   2}, /* SPACESEPARATOR */
-    {1441,  6,   2}, /* ZS */
-    {1090,  6,   3}, /* OTHERPUNCTUATION */
-    {1133,  6,   3}, /* PO */
-    { 457,  6,   4}, /* CURRENCYSYMBOL */
-    {1199,  6,   4}, /* SC */
-    {1069,  6,   5}, /* OPENPUNCTUATION */
-    {1150,  6,   5}, /* PS */
-    { 408,  6,   6}, /* CLOSEPUNCTUATION */
-    {1115,  6,   6}, /* PE */
-    { 921,  6,   7}, /* MATHSYMBOL */
-    {1230,  6,   7}, /* SM */
-    { 482,  6,   8}, /* DASHPUNCTUATION */
-    {1112,  6,   8}, /* PD */
-    { 486,  6,   9}, /* DECIMALNUMBER */
-    { 997,  6,   9}, /* ND */
-    { 504,  6,   9}, /* DIGIT */
-    {1371,  6,  10}, /* UPPERCASELETTER */
-    { 851,  6,  10}, /* LU */
-    { 964,  6,  11}, /* MODIFIERSYMBOL */
-    {1229,  6,  11}, /* SK */
-    { 428,  6,  12}, /* CONNECTORPUNCTUATION */
-    {1110,  6,  12}, /* PC */
-    { 845,  6,  13}, /* LOWERCASELETTER */
-    { 838,  6,  13}, /* LL */
-    {1091,  6,  14}, /* OTHERSYMBOL */
-    {1237,  6,  14}, /* SO */
-    {1085,  6,  15}, /* OTHERLETTER */
-    { 840,  6,  15}, /* LO */
-    { 718,  6,  16}, /* INITIALPUNCTUATION */
-    {1130,  6,  16}, /* PI */
-    { 590,  6,  17}, /* FORMAT */
-    { 358,  6,  17}, /* CF */
-    {1089,  6,  18}, /* OTHERNUMBER */
-    {1015,  6,  18}, /* NO */
-    { 585,  6,  19}, /* FINALPUNCTUATION */
-    {1117,  6,  19}, /* PF */
-    {1342,  6,  20}, /* TITLECASELETTER */
-    { 850,  6,  20}, /* LT */
-    { 962,  6,  21}, /* MODIFIERLETTER */
-    { 839,  6,  21}, /* LM */
-    {1023,  6,  22}, /* NONSPACINGMARK */
-    { 960,  6,  22}, /* MN */
-    { 555,  6,  23}, /* ENCLOSINGMARK */
-    { 926,  6,  23}, /* ME */
-    {1249,  6,  24}, /* SPACINGMARK */
-    { 925,  6,  24}, /* MC */
-    { 822,  6,  25}, /* LETTERNUMBER */
-    {1014,  6,  25}, /* NL */
-    { 834,  6,  26}, /* LINESEPARATOR */
-    {1439,  6,  26}, /* ZL */
-    {1103,  6,  27}, /* PARAGRAPHSEPARATOR */
-    {1440,  6,  27}, /* ZP */
-    {1283,  6,  28}, /* SURROGATE */
-    { 453,  6,  28}, /* CS */
-    {1147,  6,  29}, /* PRIVATEUSE */
-    { 412,  6,  29}, /* CO */
-    {1079,  6,  30}, /* OTHER */
-    { 301,  6,  30}, /* C */
-    { 302,  6,  30}, /* C& */
-    { 820,  6,  31}, /* LETTER */
-    { 783,  6,  31}, /* L */
-    { 784,  6,  31}, /* L& */
-    { 914,  6,  32}, /* MARK */
-    { 860,  6,  32}, /* M */
-    { 419,  6,  32}, /* COMBININGMARK */
-    { 861,  6,  32}, /* M& */
-    {1035,  6,  33}, /* NUMBER */
-    { 984,  6,  33}, /* N */
-    { 985,  6,  33}, /* N& */
-    {1154,  6,  34}, /* PUNCTUATION */
-    {1098,  6,  34}, /* P */
-    {1153,  6,  34}, /* PUNCT */
-    {1099,  6,  34}, /* P& */
-    {1290,  6,  35}, /* SYMBOL */
-    {1188,  6,  35}, /* S */
-    {1189,  6,  35}, /* S& */
-    {1212,  6,  36}, /* SEPARATOR */
-    {1432,  6,  36}, /* Z */
-    {1433,  6,  36}, /* Z& */
-    { 315,  6,  37}, /* CASEDLETTER */
-    { 808,  6,  37}, /* LC */
-    { 222,  6,  38}, /* ASSIGNED */
-    {1079,  7,   0}, /* OTHER */
-    {1416,  7,   0}, /* XX */
-    { 443,  7,   1}, /* CONTROL */
-    { 410,  7,   1}, /* CN */
-    { 823,  7,   2}, /* LF */
-    { 452,  7,   3}, /* CR */
-    { 573,  7,   4}, /* EXTEND */
-    { 570,  7,   4}, /* EX */
-    {1144,  7,   5}, /* PREPEND */
-    {1141,  7,   5}, /* PP */
-    {1249,  7,   6}, /* SPACINGMARK */
-    {1230,  7,   6}, /* SM */
-    { 783,  7,   7}, /* L */
-    {1372,  7,   8}, /* V */
-    {1299,  7,   9}, /* T */
-    {1443,  7,  10}, /* ZWJ */
-    { 852,  7,  11}, /* LV */
-    { 854,  7,  12}, /* LVT */
-    {1166,  7,  13}, /* REGIONALINDICATOR */
-    {1171,  7,  13}, /* RI */
-    { 525,  7,  14}, /* EBASE */
-    { 524,  7,  14}, /* EB */
-    { 526,  7,  15}, /* EBASEGAZ */
-    { 527,  7,  15}, /* EBG */
-    { 538,  7,  16}, /* EMODIFIER */
-    { 536,  7,  16}, /* EM */
-    { 618,  7,  17}, /* GLUEAFTERZWJ */
-    { 597,  7,  17}, /* GAZ */
-    {1026,  8,   0}, /* NOTAPPLICABLE */
-    { 986,  8,   0}, /* NA */
-    { 810,  8,   1}, /* LEADINGJAMO */
-    { 783,  8,   1}, /* L */
-    {1389,  8,   2}, /* VOWELJAMO */
-    {1372,  8,   2}, /* V */
-    {1352,  8,   3}, /* TRAILINGJAMO */
-    {1299,  8,   3}, /* T */
-    { 853,  8,   4}, /* LVSYLLABLE */
-    { 852,  8,   4}, /* LV */
-    { 855,  8,   5}, /* LVTSYLLABLE */
-    { 854,  8,   5}, /* LVT */
-    { 986,  9,   0}, /* NA */
-    {1345,  9,   1}, /* TOP */
-    {1172,  9,   2}, /* RIGHT */
-    { 278,  9,   3}, /* BOTTOM */
-    { 811,  9,   4}, /* LEFT */
-    { 812,  9,   5}, /* LEFTANDRIGHT */
-    {1351,  9,   6}, /* TOPANDRIGHT */
-    {1349,  9,   7}, /* TOPANDLEFT */
-    {1350,  9,   8}, /* TOPANDLEFTANDRIGHT */
-    {1346,  9,   9}, /* TOPANDBOTTOM */
-    {1385,  9,  10}, /* VISUALORDERLEFT */
-    {1347,  9,  11}, /* TOPANDBOTTOMANDLEFT */
-    { 280,  9,  12}, /* BOTTOMANDRIGHT */
-    {1348,  9,  13}, /* TOPANDBOTTOMANDRIGHT */
-    {1097,  9,  14}, /* OVERSTRUCK */
-    { 279,  9,  15}, /* BOTTOMANDLEFT */
-    {1079, 10,   0}, /* OTHER */
-    { 436, 10,   1}, /* CONSONANTPLACEHOLDER */
-    {1035, 10,   2}, /* NUMBER */
-    {1287, 10,   3}, /* SYLLABLEMODIFIER */
-    { 266, 10,   4}, /* BINDU */
-    {1384, 10,   5}, /* VISARGA */
-    {1388, 10,   6}, /* VOWELINDEPENDENT */
-    { 429, 10,   7}, /* CONSONANT */
-    {1387, 10,   8}, /* VOWELDEPENDENT */
-    {1034, 10,   9}, /* NUKTA */
-    { 233, 10,  10}, /* AVAGRAHA */
-    {1383, 10,  11}, /* VIRAMA */
-    { 310, 10,  12}, /* CANTILLATIONMARK */
-    { 430, 10,  13}, /* CONSONANTDEAD */
-    { 600, 10,  14}, /* GEMINATIONMARK */
-    { 435, 10,  15}, /* CONSONANTMEDIAL */
-    { 966, 10,  16}, /* MODIFYINGLETTER */
-    { 441, 10,  17}, /* CONSONANTWITHSTACKER */
-    {1155, 10,  18}, /* PUREKILLER */
-    { 437, 10,  19}, /* CONSONANTPRECEDINGREPHA */
-    {1344, 10,  20}, /* TONEMARK */
-    { 434, 10,  21}, /* CONSONANTKILLER */
-    { 432, 10,  22}, /* CONSONANTHEADLETTER */
-    { 439, 10,  23}, /* CONSONANTSUBJOINED */
-    { 725, 10,  24}, /* INVISIBLESTACKER */
-    {1167, 10,  25}, /* REGISTERSHIFTER */
-    { 440, 10,  26}, /* CONSONANTSUCCEEDINGREPHA */
-    { 431, 10,  27}, /* CONSONANTFINAL */
-    {1386, 10,  28}, /* VOWEL */
-    {1343, 10,  29}, /* TONELETTER */
-    { 433, 10,  30}, /* CONSONANTINITIALPOSTFIXED */
-    {1021, 10,  31}, /* NONJOINER */
-    { 743, 10,  32}, /* JOINER */
-    { 286, 10,  33}, /* BRAHMIJOININGNUMBER */
-    {1037, 10,  34}, /* NUMBERJOINER */
-    { 438, 10,  35}, /* CONSONANTPREFIXED */
-    {1018, 11,   0}, /* NOJOININGGROUP */
-    {1418, 11,   1}, /* YEH */
+    {1424,  5,   3}, /* WIDE */
+    {1416,  5,   3}, /* W */
+    { 655,  5,   4}, /* HALFWIDTH */
+    { 649,  5,   4}, /* H */
+    { 600,  5,   5}, /* FULLWIDTH */
+    { 584,  5,   5}, /* F */
+    {1382,  6,   0}, /* UNASSIGNED */
+    { 412,  6,   0}, /* CN */
+    { 445,  6,   1}, /* CONTROL */
+    { 321,  6,   1}, /* CC */
+    { 413,  6,   1}, /* CNTRL */
+    {1262,  6,   2}, /* SPACESEPARATOR */
+    {1466,  6,   2}, /* ZS */
+    {1103,  6,   3}, /* OTHERPUNCTUATION */
+    {1147,  6,   3}, /* PO */
+    { 460,  6,   4}, /* CURRENCYSYMBOL */
+    {1213,  6,   4}, /* SC */
+    {1082,  6,   5}, /* OPENPUNCTUATION */
+    {1164,  6,   5}, /* PS */
+    { 410,  6,   6}, /* CLOSEPUNCTUATION */
+    {1129,  6,   6}, /* PE */
+    { 933,  6,   7}, /* MATHSYMBOL */
+    {1244,  6,   7}, /* SM */
+    { 486,  6,   8}, /* DASHPUNCTUATION */
+    {1126,  6,   8}, /* PD */
+    { 490,  6,   9}, /* DECIMALNUMBER */
+    {1009,  6,   9}, /* ND */
+    { 508,  6,   9}, /* DIGIT */
+    {1391,  6,  10}, /* UPPERCASELETTER */
+    { 863,  6,  10}, /* LU */
+    { 976,  6,  11}, /* MODIFIERSYMBOL */
+    {1243,  6,  11}, /* SK */
+    { 430,  6,  12}, /* CONNECTORPUNCTUATION */
+    {1124,  6,  12}, /* PC */
+    { 857,  6,  13}, /* LOWERCASELETTER */
+    { 850,  6,  13}, /* LL */
+    {1104,  6,  14}, /* OTHERSYMBOL */
+    {1251,  6,  14}, /* SO */
+    {1098,  6,  15}, /* OTHERLETTER */
+    { 852,  6,  15}, /* LO */
+    { 724,  6,  16}, /* INITIALPUNCTUATION */
+    {1144,  6,  16}, /* PI */
+    { 596,  6,  17}, /* FORMAT */
+    { 360,  6,  17}, /* CF */
+    {1102,  6,  18}, /* OTHERNUMBER */
+    {1027,  6,  18}, /* NO */
+    { 591,  6,  19}, /* FINALPUNCTUATION */
+    {1131,  6,  19}, /* PF */
+    {1358,  6,  20}, /* TITLECASELETTER */
+    { 862,  6,  20}, /* LT */
+    { 974,  6,  21}, /* MODIFIERLETTER */
+    { 851,  6,  21}, /* LM */
+    {1035,  6,  22}, /* NONSPACINGMARK */
+    { 972,  6,  22}, /* MN */
+    { 559,  6,  23}, /* ENCLOSINGMARK */
+    { 938,  6,  23}, /* ME */
+    {1263,  6,  24}, /* SPACINGMARK */
+    { 937,  6,  24}, /* MC */
+    { 834,  6,  25}, /* LETTERNUMBER */
+    {1026,  6,  25}, /* NL */
+    { 846,  6,  26}, /* LINESEPARATOR */
+    {1462,  6,  26}, /* ZL */
+    {1117,  6,  27}, /* PARAGRAPHSEPARATOR */
+    {1465,  6,  27}, /* ZP */
+    {1297,  6,  28}, /* SURROGATE */
+    { 456,  6,  28}, /* CS */
+    {1161,  6,  29}, /* PRIVATEUSE */
+    { 414,  6,  29}, /* CO */
+    {1092,  6,  30}, /* OTHER */
+    { 303,  6,  30}, /* C */
+    { 304,  6,  30}, /* C& */
+    { 832,  6,  31}, /* LETTER */
+    { 791,  6,  31}, /* L */
+    { 792,  6,  31}, /* L& */
+    { 926,  6,  32}, /* MARK */
+    { 872,  6,  32}, /* M */
+    { 421,  6,  32}, /* COMBININGMARK */
+    { 873,  6,  32}, /* M& */
+    {1047,  6,  33}, /* NUMBER */
+    { 996,  6,  33}, /* N */
+    { 997,  6,  33}, /* N& */
+    {1168,  6,  34}, /* PUNCTUATION */
+    {1112,  6,  34}, /* P */
+    {1167,  6,  34}, /* PUNCT */
+    {1113,  6,  34}, /* P& */
+    {1304,  6,  35}, /* SYMBOL */
+    {1202,  6,  35}, /* S */
+    {1203,  6,  35}, /* S& */
+    {1226,  6,  36}, /* SEPARATOR */
+    {1455,  6,  36}, /* Z */
+    {1456,  6,  36}, /* Z& */
+    { 317,  6,  37}, /* CASEDLETTER */
+    { 820,  6,  37}, /* LC */
+    { 224,  6,  38}, /* ASSIGNED */
+    {1092,  7,   0}, /* OTHER */
+    {1439,  7,   0}, /* XX */
+    { 445,  7,   1}, /* CONTROL */
+    { 412,  7,   1}, /* CN */
+    { 835,  7,   2}, /* LF */
+    { 455,  7,   3}, /* CR */
+    { 579,  7,   4}, /* EXTEND */
+    { 576,  7,   4}, /* EX */
+    {1158,  7,   5}, /* PREPEND */
+    {1155,  7,   5}, /* PP */
+    {1263,  7,   6}, /* SPACINGMARK */
+    {1244,  7,   6}, /* SM */
+    { 791,  7,   7}, /* L */
+    {1392,  7,   8}, /* V */
+    {1313,  7,   9}, /* T */
+    {1468,  7,  10}, /* ZWJ */
+    { 864,  7,  11}, /* LV */
+    { 866,  7,  12}, /* LVT */
+    {1180,  7,  13}, /* REGIONALINDICATOR */
+    {1185,  7,  13}, /* RI */
+    { 529,  7,  14}, /* EBASE */
+    { 528,  7,  14}, /* EB */
+    { 530,  7,  15}, /* EBASEGAZ */
+    { 531,  7,  15}, /* EBG */
+    { 542,  7,  16}, /* EMODIFIER */
+    { 540,  7,  16}, /* EM */
+    { 624,  7,  17}, /* GLUEAFTERZWJ */
+    { 603,  7,  17}, /* GAZ */
+    {1038,  8,   0}, /* NOTAPPLICABLE */
+    { 998,  8,   0}, /* NA */
+    { 822,  8,   1}, /* LEADINGJAMO */
+    { 791,  8,   1}, /* L */
+    {1412,  8,   2}, /* VOWELJAMO */
+    {1392,  8,   2}, /* V */
+    {1370,  8,   3}, /* TRAILINGJAMO */
+    {1313,  8,   3}, /* T */
+    { 865,  8,   4}, /* LVSYLLABLE */
+    { 864,  8,   4}, /* LV */
+    { 867,  8,   5}, /* LVTSYLLABLE */
+    { 866,  8,   5}, /* LVT */
+    { 998,  9,   0}, /* NA */
+    {1362,  9,   1}, /* TOP */
+    {1186,  9,   2}, /* RIGHT */
+    { 280,  9,   3}, /* BOTTOM */
+    { 823,  9,   4}, /* LEFT */
+    { 824,  9,   5}, /* LEFTANDRIGHT */
+    {1368,  9,   6}, /* TOPANDRIGHT */
+    {1366,  9,   7}, /* TOPANDLEFT */
+    {1367,  9,   8}, /* TOPANDLEFTANDRIGHT */
+    {1363,  9,   9}, /* TOPANDBOTTOM */
+    {1406,  9,  10}, /* VISUALORDERLEFT */
+    {1364,  9,  11}, /* TOPANDBOTTOMANDLEFT */
+    { 282,  9,  12}, /* BOTTOMANDRIGHT */
+    {1365,  9,  13}, /* TOPANDBOTTOMANDRIGHT */
+    {1111,  9,  14}, /* OVERSTRUCK */
+    { 281,  9,  15}, /* BOTTOMANDLEFT */
+    {1092, 10,   0}, /* OTHER */
+    { 438, 10,   1}, /* CONSONANTPLACEHOLDER */
+    {1047, 10,   2}, /* NUMBER */
+    {1301, 10,   3}, /* SYLLABLEMODIFIER */
+    { 268, 10,   4}, /* BINDU */
+    {1405, 10,   5}, /* VISARGA */
+    {1411, 10,   6}, /* VOWELINDEPENDENT */
+    { 431, 10,   7}, /* CONSONANT */
+    {1410, 10,   8}, /* VOWELDEPENDENT */
+    {1046, 10,   9}, /* NUKTA */
+    { 235, 10,  10}, /* AVAGRAHA */
+    {1404, 10,  11}, /* VIRAMA */
+    { 312, 10,  12}, /* CANTILLATIONMARK */
+    { 432, 10,  13}, /* CONSONANTDEAD */
+    { 606, 10,  14}, /* GEMINATIONMARK */
+    { 437, 10,  15}, /* CONSONANTMEDIAL */
+    { 978, 10,  16}, /* MODIFYINGLETTER */
+    { 443, 10,  17}, /* CONSONANTWITHSTACKER */
+    {1169, 10,  18}, /* PUREKILLER */
+    { 439, 10,  19}, /* CONSONANTPRECEDINGREPHA */
+    {1361, 10,  20}, /* TONEMARK */
+    { 436, 10,  21}, /* CONSONANTKILLER */
+    { 434, 10,  22}, /* CONSONANTHEADLETTER */
+    { 441, 10,  23}, /* CONSONANTSUBJOINED */
+    { 731, 10,  24}, /* INVISIBLESTACKER */
+    {1181, 10,  25}, /* REGISTERSHIFTER */
+    { 442, 10,  26}, /* CONSONANTSUCCEEDINGREPHA */
+    { 433, 10,  27}, /* CONSONANTFINAL */
+    {1409, 10,  28}, /* VOWEL */
+    {1360, 10,  29}, /* TONELETTER */
+    { 435, 10,  30}, /* CONSONANTINITIALPOSTFIXED */
+    {1033, 10,  31}, /* NONJOINER */
+    { 749, 10,  32}, /* JOINER */
+    { 288, 10,  33}, /* BRAHMIJOININGNUMBER */
+    {1049, 10,  34}, /* NUMBERJOINER */
+    { 440, 10,  35}, /* CONSONANTPREFIXED */
+    {1030, 11,   0}, /* NOJOININGGROUP */
+    {1441, 11,   1}, /* YEH */
     { 185, 11,   2}, /* ALEF */
-    {1397, 11,   3}, /* WAW */
-    { 252, 11,   4}, /* BEH */
-    {1325, 11,   5}, /* TEHMARBUTA */
-    { 646, 11,   6}, /* HAH */
-    { 479, 11,   7}, /* DAL */
-    {1168, 11,   8}, /* REH */
-    {1206, 11,   9}, /* SEEN */
-    {1191, 11,  10}, /* SAD */
-    {1304, 11,  11}, /* TAH */
+    {1420, 11,   3}, /* WAW */
+    { 254, 11,   4}, /* BEH */
+    {1340, 11,   5}, /* TEHMARBUTA */
+    { 652, 11,   6}, /* HAH */
+    { 483, 11,   7}, /* DAL */
+    {1182, 11,   8}, /* REH */
+    {1220, 11,   9}, /* SEEN */
+    {1205, 11,  10}, /* SAD */
+    {1318, 11,  11}, /* TAH */
     { 180, 11,  12}, /* AIN */
-    { 595, 11,  13}, /* GAF */
-    { 580, 11,  14}, /* FARSIYEH */
-    { 582, 11,  15}, /* FEH */
-    {1158, 11,  16}, /* QAF */
-    { 749, 11,  17}, /* KAF */
-    { 785, 11,  18}, /* LAM */
-    { 931, 11,  19}, /* MEEM */
-    {1025, 11,  20}, /* NOON */
-    { 675, 11,  21}, /* HEH */
-    {1285, 11,  22}, /* SWASHKAF */
-    {1044, 11,  23}, /* NYA */
-    { 780, 11,  24}, /* KNOTTEDHEH */
-    { 676, 11,  25}, /* HEHGOAL */
-    { 651, 11,  26}, /* HAMZAONHEHGOAL */
-    {1326, 11,  26}, /* TEHMARBUTAGOAL */
-    {1420, 11,  27}, /* YEHWITHTAIL */
-    {1419, 11,  28}, /* YEHBARREE */
+    { 601, 11,  13}, /* GAF */
+    { 586, 11,  14}, /* FARSIYEH */
+    { 588, 11,  15}, /* FEH */
+    {1172, 11,  16}, /* QAF */
+    { 755, 11,  17}, /* KAF */
+    { 793, 11,  18}, /* LAM */
+    { 943, 11,  19}, /* MEEM */
+    {1037, 11,  20}, /* NOON */
+    { 681, 11,  21}, /* HEH */
+    {1299, 11,  22}, /* SWASHKAF */
+    {1056, 11,  23}, /* NYA */
+    { 788, 11,  24}, /* KNOTTEDHEH */
+    { 682, 11,  25}, /* HEHGOAL */
+    { 657, 11,  26}, /* HAMZAONHEHGOAL */
+    {1341, 11,  26}, /* TEHMARBUTAGOAL */
+    {1443, 11,  27}, /* YEHWITHTAIL */
+    {1442, 11,  28}, /* YEHBARREE */
     { 182, 11,  29}, /* ALAPH */
-    { 258, 11,  30}, /* BETH */
-    { 596, 11,  31}, /* GAMAL */
-    { 480, 11,  32}, /* DALATHRISH */
-    { 671, 11,  33}, /* HE */
-    {1298, 11,  34}, /* SYRIACWAW */
-    {1434, 11,  35}, /* ZAIN */
-    { 677, 11,  36}, /* HETH */
-    {1331, 11,  37}, /* TETH */
-    {1430, 11,  38}, /* YUDH */
-    {1431, 11,  39}, /* YUDHHE */
-    { 762, 11,  40}, /* KAPH */
-    { 786, 11,  41}, /* LAMADH */
-    { 945, 11,  42}, /* MIM */
-    {1041, 11,  43}, /* NUN */
-    {1208, 11,  44}, /* SEMKATH */
-    { 586, 11,  45}, /* FINALSEMKATH */
-    { 520, 11,  46}, /* E */
-    {1115, 11,  47}, /* PE */
-    {1170, 11,  48}, /* REVERSEDPE */
-    {1192, 11,  49}, /* SADHE */
-    {1159, 11,  50}, /* QAPH */
-    {1218, 11,  51}, /* SHIN */
-    {1324, 11,  52}, /* TAW */
-    {1437, 11,  53}, /* ZHAIN */
-    { 768, 11,  54}, /* KHAPH */
-    { 581, 11,  55}, /* FE */
-    { 298, 11,  56}, /* BURUSHASKIYEHBARREE */
-    { 873, 11,  57}, /* MALAYALAMNGA */
-    { 870, 11,  58}, /* MALAYALAMJA */
-    { 876, 11,  59}, /* MALAYALAMNYA */
-    { 879, 11,  60}, /* MALAYALAMTTA */
-    { 874, 11,  61}, /* MALAYALAMNNA */
-    { 875, 11,  62}, /* MALAYALAMNNNA */
-    { 869, 11,  63}, /* MALAYALAMBHA */
-    { 877, 11,  64}, /* MALAYALAMRA */
-    { 871, 11,  65}, /* MALAYALAMLLA */
-    { 872, 11,  66}, /* MALAYALAMLLLA */
-    { 878, 11,  67}, /* MALAYALAMSSA */
-    {1183, 11,  68}, /* ROHINGYAYEH */
-    {1257, 11,  69}, /* STRAIGHTWAW */
-    { 173, 11,  70}, /* AFRICANFEH */
-    { 175, 11,  71}, /* AFRICANQAF */
-    { 174, 11,  72}, /* AFRICANNOON */
-    { 885, 11,  73}, /* MANICHAEANALEPH */
-    { 887, 11,  74}, /* MANICHAEANBETH */
-    { 891, 11,  75}, /* MANICHAEANGIMEL */
-    { 888, 11,  76}, /* MANICHAEANDALETH */
-    { 909, 11,  77}, /* MANICHAEANWAW */
-    { 911, 11,  78}, /* MANICHAEANZAYIN */
-    { 892, 11,  79}, /* MANICHAEANHETH */
-    { 906, 11,  80}, /* MANICHAEANTETH */
-    { 910, 11,  81}, /* MANICHAEANYODH */
-    { 894, 11,  82}, /* MANICHAEANKAPH */
-    { 895, 11,  83}, /* MANICHAEANLAMEDH */
-    { 889, 11,  84}, /* MANICHAEANDHAMEDH */
-    { 907, 11,  85}, /* MANICHAEANTHAMEDH */
-    { 896, 11,  86}, /* MANICHAEANMEM */
-    { 897, 11,  87}, /* MANICHAEANNUN */
-    { 903, 11,  88}, /* MANICHAEANSAMEKH */
-    { 886, 11,  89}, /* MANICHAEANAYIN */
-    { 899, 11,  90}, /* MANICHAEANPE */
-    { 902, 11,  91}, /* MANICHAEANSADHE */
-    { 900, 11,  92}, /* MANICHAEANQOPH */
-    { 901, 11,  93}, /* MANICHAEANRESH */
-    { 904, 11,  94}, /* MANICHAEANTAW */
-    { 898, 11,  95}, /* MANICHAEANONE */
-    { 890, 11,  96}, /* MANICHAEANFIVE */
-    { 905, 11,  97}, /* MANICHAEANTEN */
-    { 908, 11,  98}, /* MANICHAEANTWENTY */
-    { 893, 11,  99}, /* MANICHAEANHUNDRED */
-    { 664, 11, 100}, /* HANIFIROHINGYAPA */
-    { 663, 11, 101}, /* HANIFIROHINGYAKINNAYA */
-    {1022, 12,   0}, /* NONJOINING */
-    {1357, 12,   0}, /* U */
-    {1353, 12,   1}, /* TRANSPARENT */
-    {1299, 12,   1}, /* T */
-    { 517, 12,   2}, /* DUALJOINING */
-    { 477, 12,   2}, /* D */
-    {1173, 12,   3}, /* RIGHTJOINING */
-    {1164, 12,   3}, /* R */
-    { 741, 12,   4}, /* JOINCAUSING */
-    { 301, 12,   4}, /* C */
-    { 813, 12,   5}, /* LEFTJOINING */
-    { 783, 12,   5}, /* L */
-    {1367, 13,   0}, /* UNKNOWN */
-    {1416, 13,   0}, /* XX */
-    { 419, 13,   1}, /* COMBININGMARK */
-    { 409, 13,   1}, /* CM */
-    { 290, 13,   2}, /* BREAKAFTER */
-    { 238, 13,   2}, /* BA */
-    { 833, 13,   3}, /* LINEFEED */
-    { 823, 13,   3}, /* LF */
-    { 882, 13,   4}, /* MANDATORYBREAK */
-    { 267, 13,   4}, /* BK */
-    { 313, 13,   5}, /* CARRIAGERETURN */
-    { 452, 13,   5}, /* CR */
-    {1247, 13,   6}, /* SPACE */
-    {1246, 13,   6}, /* SP */
-    { 571, 13,   7}, /* EXCLAMATION */
-    { 570, 13,   7}, /* EX */
-    {1162, 13,   8}, /* QUOTATION */
-    {1161, 13,   8}, /* QU */
+    { 260, 11,  30}, /* BETH */
+    { 602, 11,  31}, /* GAMAL */
+    { 484, 11,  32}, /* DALATHRISH */
+    { 677, 11,  33}, /* HE */
+    {1312, 11,  34}, /* SYRIACWAW */
+    {1457, 11,  35}, /* ZAIN */
+    { 683, 11,  36}, /* HETH */
+    {1346, 11,  37}, /* TETH */
+    {1453, 11,  38}, /* YUDH */
+    {1454, 11,  39}, /* YUDHHE */
+    { 770, 11,  40}, /* KAPH */
+    { 794, 11,  41}, /* LAMADH */
+    { 957, 11,  42}, /* MIM */
+    {1053, 11,  43}, /* NUN */
+    {1222, 11,  44}, /* SEMKATH */
+    { 592, 11,  45}, /* FINALSEMKATH */
+    { 524, 11,  46}, /* E */
+    {1129, 11,  47}, /* PE */
+    {1184, 11,  48}, /* REVERSEDPE */
+    {1206, 11,  49}, /* SADHE */
+    {1173, 11,  50}, /* QAPH */
+    {1232, 11,  51}, /* SHIN */
+    {1339, 11,  52}, /* TAW */
+    {1460, 11,  53}, /* ZHAIN */
+    { 776, 11,  54}, /* KHAPH */
+    { 587, 11,  55}, /* FE */
+    { 300, 11,  56}, /* BURUSHASKIYEHBARREE */
+    { 885, 11,  57}, /* MALAYALAMNGA */
+    { 882, 11,  58}, /* MALAYALAMJA */
+    { 888, 11,  59}, /* MALAYALAMNYA */
+    { 891, 11,  60}, /* MALAYALAMTTA */
+    { 886, 11,  61}, /* MALAYALAMNNA */
+    { 887, 11,  62}, /* MALAYALAMNNNA */
+    { 881, 11,  63}, /* MALAYALAMBHA */
+    { 889, 11,  64}, /* MALAYALAMRA */
+    { 883, 11,  65}, /* MALAYALAMLLA */
+    { 884, 11,  66}, /* MALAYALAMLLLA */
+    { 890, 11,  67}, /* MALAYALAMSSA */
+    {1352, 11,  68}, /* THINYEH */
+    {1403, 11,  69}, /* VERTICALTAIL */
+    {1197, 11,  70}, /* ROHINGYAYEH */
+    {1271, 11,  71}, /* STRAIGHTWAW */
+    { 173, 11,  72}, /* AFRICANFEH */
+    { 175, 11,  73}, /* AFRICANQAF */
+    { 174, 11,  74}, /* AFRICANNOON */
+    { 897, 11,  75}, /* MANICHAEANALEPH */
+    { 899, 11,  76}, /* MANICHAEANBETH */
+    { 903, 11,  77}, /* MANICHAEANGIMEL */
+    { 900, 11,  78}, /* MANICHAEANDALETH */
+    { 921, 11,  79}, /* MANICHAEANWAW */
+    { 923, 11,  80}, /* MANICHAEANZAYIN */
+    { 904, 11,  81}, /* MANICHAEANHETH */
+    { 918, 11,  82}, /* MANICHAEANTETH */
+    { 922, 11,  83}, /* MANICHAEANYODH */
+    { 906, 11,  84}, /* MANICHAEANKAPH */
+    { 907, 11,  85}, /* MANICHAEANLAMEDH */
+    { 901, 11,  86}, /* MANICHAEANDHAMEDH */
+    { 919, 11,  87}, /* MANICHAEANTHAMEDH */
+    { 908, 11,  88}, /* MANICHAEANMEM */
+    { 909, 11,  89}, /* MANICHAEANNUN */
+    { 915, 11,  90}, /* MANICHAEANSAMEKH */
+    { 898, 11,  91}, /* MANICHAEANAYIN */
+    { 911, 11,  92}, /* MANICHAEANPE */
+    { 914, 11,  93}, /* MANICHAEANSADHE */
+    { 912, 11,  94}, /* MANICHAEANQOPH */
+    { 913, 11,  95}, /* MANICHAEANRESH */
+    { 916, 11,  96}, /* MANICHAEANTAW */
+    { 910, 11,  97}, /* MANICHAEANONE */
+    { 902, 11,  98}, /* MANICHAEANFIVE */
+    { 917, 11,  99}, /* MANICHAEANTEN */
+    { 920, 11, 100}, /* MANICHAEANTWENTY */
+    { 905, 11, 101}, /* MANICHAEANHUNDRED */
+    { 670, 11, 102}, /* HANIFIROHINGYAPA */
+    { 669, 11, 103}, /* HANIFIROHINGYAKINNAYA */
+    {1034, 12,   0}, /* NONJOINING */
+    {1375, 12,   0}, /* U */
+    {1371, 12,   1}, /* TRANSPARENT */
+    {1313, 12,   1}, /* T */
+    { 521, 12,   2}, /* DUALJOINING */
+    { 481, 12,   2}, /* D */
+    {1187, 12,   3}, /* RIGHTJOINING */
+    {1178, 12,   3}, /* R */
+    { 747, 12,   4}, /* JOINCAUSING */
+    { 303, 12,   4}, /* C */
+    { 825, 12,   5}, /* LEFTJOINING */
+    { 791, 12,   5}, /* L */
+    {1387, 13,   0}, /* UNKNOWN */
+    {1439, 13,   0}, /* XX */
+    { 421, 13,   1}, /* COMBININGMARK */
+    { 411, 13,   1}, /* CM */
+    { 292, 13,   2}, /* BREAKAFTER */
+    { 240, 13,   2}, /* BA */
+    { 845, 13,   3}, /* LINEFEED */
+    { 835, 13,   3}, /* LF */
+    { 894, 13,   4}, /* MANDATORYBREAK */
+    { 269, 13,   4}, /* BK */
+    { 315, 13,   5}, /* CARRIAGERETURN */
+    { 455, 13,   5}, /* CR */
+    {1261, 13,   6}, /* SPACE */
+    {1260, 13,   6}, /* SP */
+    { 577, 13,   7}, /* EXCLAMATION */
+    { 576, 13,   7}, /* EX */
+    {1176, 13,   8}, /* QUOTATION */
+    {1175, 13,   8}, /* QU */
     { 189, 13,   9}, /* ALPHABETIC */
     { 181, 13,   9}, /* AL */
-    {1143, 13,  10}, /* PREFIXNUMERIC */
-    {1142, 13,  10}, /* PR */
-    {1140, 13,  11}, /* POSTFIXNUMERIC */
-    {1133, 13,  11}, /* PO */
-    {1069, 13,  12}, /* OPENPUNCTUATION */
-    {1068, 13,  12}, /* OP */
-    { 407, 13,  13}, /* CLOSEPARENTHESIS */
-    { 450, 13,  13}, /* CP */
-    { 714, 13,  14}, /* INFIXNUMERIC */
-    { 729, 13,  14}, /* IS */
-    { 693, 13,  15}, /* HYPHEN */
-    { 692, 13,  15}, /* HY */
-    { 293, 13,  16}, /* BREAKSYMBOLS */
-    {1286, 13,  16}, /* SY */
-    {1038, 13,  17}, /* NUMERIC */
-    {1033, 13,  17}, /* NU */
-    { 408, 13,  18}, /* CLOSEPUNCTUATION */
-    { 405, 13,  18}, /* CL */
-    {1002, 13,  19}, /* NEXTLINE */
-    {1014, 13,  19}, /* NL */
-    { 617, 13,  20}, /* GLUE */
-    { 612, 13,  20}, /* GL */
+    {1157, 13,  10}, /* PREFIXNUMERIC */
+    {1156, 13,  10}, /* PR */
+    {1154, 13,  11}, /* POSTFIXNUMERIC */
+    {1147, 13,  11}, /* PO */
+    {1082, 13,  12}, /* OPENPUNCTUATION */
+    {1081, 13,  12}, /* OP */
+    { 409, 13,  13}, /* CLOSEPARENTHESIS */
+    { 452, 13,  13}, /* CP */
+    { 720, 13,  14}, /* INFIXNUMERIC */
+    { 735, 13,  14}, /* IS */
+    { 699, 13,  15}, /* HYPHEN */
+    { 698, 13,  15}, /* HY */
+    { 295, 13,  16}, /* BREAKSYMBOLS */
+    {1300, 13,  16}, /* SY */
+    {1050, 13,  17}, /* NUMERIC */
+    {1045, 13,  17}, /* NU */
+    { 410, 13,  18}, /* CLOSEPUNCTUATION */
+    { 407, 13,  18}, /* CL */
+    {1014, 13,  19}, /* NEXTLINE */
+    {1026, 13,  19}, /* NL */
+    { 623, 13,  20}, /* GLUE */
+    { 618, 13,  20}, /* GL */
     { 193, 13,  21}, /* AMBIGUOUS */
     { 179, 13,  21}, /* AI */
-    { 291, 13,  22}, /* BREAKBEFORE */
-    { 250, 13,  22}, /* BB */
-    { 674, 13,  23}, /* HEBREWLETTER */
-    { 685, 13,  23}, /* HL */
-    { 426, 13,  24}, /* COMPLEXCONTEXT */
-    {1190, 13,  24}, /* SA */
-    { 739, 13,  25}, /* JL */
-    { 747, 13,  26}, /* JV */
-    { 746, 13,  27}, /* JT */
-    {1024, 13,  28}, /* NONSTARTER */
-    {1029, 13,  28}, /* NS */
-    {1444, 13,  29}, /* ZWSPACE */
-    {1442, 13,  29}, /* ZW */
-    {1443, 13,  30}, /* ZWJ */
-    { 292, 13,  31}, /* BREAKBOTH */
-    { 237, 13,  31}, /* B2 */
-    { 723, 13,  32}, /* INSEPARABLE */
-    { 709, 13,  32}, /* IN */
-    { 724, 13,  32}, /* INSEPERABLE */
-    {1405, 13,  33}, /* WORDJOINER */
-    {1402, 13,  33}, /* WJ */
-    { 698, 13,  34}, /* IDEOGRAPHIC */
-    { 694, 13,  34}, /* ID */
-    { 525, 13,  35}, /* EBASE */
-    { 524, 13,  35}, /* EB */
-    { 427, 13,  36}, /* CONDITIONALJAPANESESTARTER */
-    { 375, 13,  36}, /* CJ */
-    { 644, 13,  37}, /* H2 */
-    { 645, 13,  38}, /* H3 */
-    {1283, 13,  39}, /* SURROGATE */
-    {1213, 13,  39}, /* SG */
-    { 442, 13,  40}, /* CONTINGENTBREAK */
-    { 318, 13,  40}, /* CB */
-    {1166, 13,  41}, /* REGIONALINDICATOR */
-    {1171, 13,  41}, /* RI */
-    { 538, 13,  42}, /* EMODIFIER */
-    { 536, 13,  42}, /* EM */
-    {1015, 14,   0}, /* NO */
-    { 984, 14,   0}, /* N */
-    {1421, 14,   1}, /* YES */
-    {1417, 14,   1}, /* Y */
-    { 923, 14,   2}, /* MAYBE */
-    { 860, 14,   2}, /* M */
-    {1015, 15,   0}, /* NO */
-    { 984, 15,   0}, /* N */
-    {1421, 15,   1}, /* YES */
-    {1417, 15,   1}, /* Y */
-    {1020, 16,   0}, /* NONE */
-    { 485, 16,   1}, /* DECIMAL */
-    { 484, 16,   1}, /* DE */
-    { 504, 16,   2}, /* DIGIT */
-    { 496, 16,   2}, /* DI */
-    {1038, 16,   3}, /* NUMERIC */
-    {1033, 16,   3}, /* NU */
-    { 988, 17,   0}, /* NAN */
+    { 293, 13,  22}, /* BREAKBEFORE */
+    { 252, 13,  22}, /* BB */
+    { 680, 13,  23}, /* HEBREWLETTER */
+    { 691, 13,  23}, /* HL */
+    { 428, 13,  24}, /* COMPLEXCONTEXT */
+    {1204, 13,  24}, /* SA */
+    { 745, 13,  25}, /* JL */
+    { 753, 13,  26}, /* JV */
+    { 752, 13,  27}, /* JT */
+    {1036, 13,  28}, /* NONSTARTER */
+    {1041, 13,  28}, /* NS */
+    {1469, 13,  29}, /* ZWSPACE */
+    {1467, 13,  29}, /* ZW */
+    {1468, 13,  30}, /* ZWJ */
+    { 294, 13,  31}, /* BREAKBOTH */
+    { 239, 13,  31}, /* B2 */
+    { 729, 13,  32}, /* INSEPARABLE */
+    { 715, 13,  32}, /* IN */
+    { 730, 13,  32}, /* INSEPERABLE */
+    {1428, 13,  33}, /* WORDJOINER */
+    {1425, 13,  33}, /* WJ */
+    { 704, 13,  34}, /* IDEOGRAPHIC */
+    { 700, 13,  34}, /* ID */
+    { 529, 13,  35}, /* EBASE */
+    { 528, 13,  35}, /* EB */
+    { 429, 13,  36}, /* CONDITIONALJAPANESESTARTER */
+    { 377, 13,  36}, /* CJ */
+    { 650, 13,  37}, /* H2 */
+    { 651, 13,  38}, /* H3 */
+    {1297, 13,  39}, /* SURROGATE */
+    {1227, 13,  39}, /* SG */
+    { 444, 13,  40}, /* CONTINGENTBREAK */
+    { 320, 13,  40}, /* CB */
+    {1180, 13,  41}, /* REGIONALINDICATOR */
+    {1185, 13,  41}, /* RI */
+    { 542, 13,  42}, /* EMODIFIER */
+    { 540, 13,  42}, /* EM */
+    {1027, 14,   0}, /* NO */
+    { 996, 14,   0}, /* N */
+    {1444, 14,   1}, /* YES */
+    {1440, 14,   1}, /* Y */
+    { 935, 14,   2}, /* MAYBE */
+    { 872, 14,   2}, /* M */
+    {1027, 15,   0}, /* NO */
+    { 996, 15,   0}, /* N */
+    {1444, 15,   1}, /* YES */
+    {1440, 15,   1}, /* Y */
+    {1032, 16,   0}, /* NONE */
+    { 489, 16,   1}, /* DECIMAL */
+    { 488, 16,   1}, /* DE */
+    { 508, 16,   2}, /* DIGIT */
+    { 500, 16,   2}, /* DI */
+    {1050, 16,   3}, /* NUMERIC */
+    {1045, 16,   3}, /* NU */
+    {1000, 17,   0}, /* NAN */
     {   1, 17,   1}, /* 0 */
     {   2, 17,   2}, /* 1 */
     {  53, 17,   3}, /* 2 */
@@ -2854,386 +2904,395 @@ RE_PropertyValue re_property_values[] = {
     {  29, 17, 140}, /* 10000000000 */
     {  27, 17, 141}, /* 10000000 */
     {  61, 17, 142}, /* 20000000 */
-    {1367, 18,   0}, /* UNKNOWN */
-    {1446, 18,   0}, /* ZZZZ */
-    { 421, 18,   1}, /* COMMON */
-    {1445, 18,   1}, /* ZYYY */
-    { 790, 18,   2}, /* LATIN */
-    { 806, 18,   2}, /* LATN */
-    { 275, 18,   3}, /* BOPOMOFO */
-    { 274, 18,   3}, /* BOPO */
-    { 715, 18,   4}, /* INHERITED */
-    {1438, 18,   4}, /* ZINH */
-    {1157, 18,   4}, /* QAAI */
-    { 631, 18,   5}, /* GREEK */
-    { 635, 18,   5}, /* GREK */
-    { 446, 18,   6}, /* COPTIC */
-    { 445, 18,   6}, /* COPT */
-    {1156, 18,   6}, /* QAAC */
-    { 466, 18,   7}, /* CYRILLIC */
-    { 476, 18,   7}, /* CYRL */
-    { 216, 18,   8}, /* ARMENIAN */
-    { 218, 18,   8}, /* ARMN */
-    { 673, 18,   9}, /* HEBREW */
-    { 672, 18,   9}, /* HEBR */
+    {1387, 18,   0}, /* UNKNOWN */
+    {1471, 18,   0}, /* ZZZZ */
+    { 423, 18,   1}, /* COMMON */
+    {1470, 18,   1}, /* ZYYY */
+    { 798, 18,   2}, /* LATIN */
+    { 818, 18,   2}, /* LATN */
+    { 277, 18,   3}, /* BOPOMOFO */
+    { 276, 18,   3}, /* BOPO */
+    { 721, 18,   4}, /* INHERITED */
+    {1461, 18,   4}, /* ZINH */
+    {1171, 18,   4}, /* QAAI */
+    { 637, 18,   5}, /* GREEK */
+    { 641, 18,   5}, /* GREK */
+    { 448, 18,   6}, /* COPTIC */
+    { 447, 18,   6}, /* COPT */
+    {1170, 18,   6}, /* QAAC */
+    { 470, 18,   7}, /* CYRILLIC */
+    { 480, 18,   7}, /* CYRL */
+    { 218, 18,   8}, /* ARMENIAN */
+    { 220, 18,   8}, /* ARMN */
+    { 679, 18,   9}, /* HEBREW */
+    { 678, 18,   9}, /* HEBR */
     { 203, 18,  10}, /* ARABIC */
     { 202, 18,  10}, /* ARAB */
-    {1295, 18,  11}, /* SYRIAC */
-    {1294, 18,  11}, /* SYRC */
-    {1335, 18,  12}, /* THAANA */
-    {1334, 18,  12}, /* THAA */
-    {1012, 18,  13}, /* NKO */
-    {1013, 18,  13}, /* NKOO */
-    {1193, 18,  14}, /* SAMARITAN */
-    {1194, 18,  14}, /* SAMR */
-    { 881, 18,  15}, /* MANDAIC */
-    { 880, 18,  15}, /* MAND */
-    { 493, 18,  16}, /* DEVANAGARI */
-    { 492, 18,  16}, /* DEVA */
-    { 257, 18,  17}, /* BENGALI */
-    { 256, 18,  17}, /* BENG */
-    { 641, 18,  18}, /* GURMUKHI */
-    { 642, 18,  18}, /* GURU */
-    { 638, 18,  19}, /* GUJARATI */
-    { 639, 18,  19}, /* GUJR */
-    {1071, 18,  20}, /* ORIYA */
-    {1074, 18,  20}, /* ORYA */
-    {1314, 18,  21}, /* TAMIL */
-    {1317, 18,  21}, /* TAML */
-    {1328, 18,  22}, /* TELUGU */
-    {1327, 18,  22}, /* TELU */
-    { 761, 18,  23}, /* KANNADA */
-    { 779, 18,  23}, /* KNDA */
-    { 868, 18,  24}, /* MALAYALAM */
-    { 959, 18,  24}, /* MLYM */
-    {1227, 18,  25}, /* SINHALA */
-    {1226, 18,  25}, /* SINH */
-    {1336, 18,  26}, /* THAI */
-    { 788, 18,  27}, /* LAO */
-    { 789, 18,  27}, /* LAOO */
-    {1337, 18,  28}, /* TIBETAN */
-    {1338, 18,  28}, /* TIBT */
-    { 978, 18,  29}, /* MYANMAR */
-    { 983, 18,  29}, /* MYMR */
-    { 607, 18,  30}, /* GEORGIAN */
-    { 606, 18,  30}, /* GEOR */
-    { 654, 18,  31}, /* HANGUL */
-    { 653, 18,  31}, /* HANG */
-    { 560, 18,  32}, /* ETHIOPIC */
-    { 559, 18,  32}, /* ETHI */
-    { 367, 18,  33}, /* CHEROKEE */
-    { 366, 18,  33}, /* CHER */
-    { 305, 18,  34}, /* CANADIANABORIGINAL */
-    { 309, 18,  34}, /* CANS */
-    {1050, 18,  35}, /* OGHAM */
-    {1049, 18,  35}, /* OGAM */
-    {1186, 18,  36}, /* RUNIC */
-    {1187, 18,  36}, /* RUNR */
-    {1300, 18,  37}, /* TAGALOG */
-    {1333, 18,  37}, /* TGLG */
-    { 668, 18,  38}, /* HANUNOO */
-    { 665, 18,  38}, /* HANO */
-    { 297, 18,  39}, /* BUHID */
-    { 296, 18,  39}, /* BUHD */
-    {1302, 18,  40}, /* TAGBANWA */
-    {1301, 18,  40}, /* TAGB */
-    { 772, 18,  41}, /* KHMER */
-    { 774, 18,  41}, /* KHMR */
-    { 968, 18,  42}, /* MONGOLIAN */
-    { 967, 18,  42}, /* MONG */
-    { 825, 18,  43}, /* LIMBU */
-    { 824, 18,  43}, /* LIMB */
-    {1305, 18,  44}, /* TAILE */
-    {1312, 18,  44}, /* TALE */
-    {1001, 18,  45}, /* NEWTAILUE */
-    {1313, 18,  45}, /* TALU */
-    { 295, 18,  46}, /* BUGINESE */
-    { 294, 18,  46}, /* BUGI */
-    {1306, 18,  47}, /* TAITHAM */
-    { 787, 18,  47}, /* LANA */
-    { 240, 18,  48}, /* BALINESE */
-    { 239, 18,  48}, /* BALI */
-    {1260, 18,  49}, /* SUNDANESE */
-    {1259, 18,  49}, /* SUND */
-    { 248, 18,  50}, /* BATAK */
-    { 249, 18,  50}, /* BATK */
-    { 819, 18,  51}, /* LEPCHA */
-    { 818, 18,  51}, /* LEPC */
-    {1054, 18,  52}, /* OLCHIKI */
-    {1055, 18,  52}, /* OLCK */
-    { 288, 18,  53}, /* BRAILLE */
-    { 287, 18,  53}, /* BRAI */
-    { 614, 18,  54}, /* GLAGOLITIC */
-    { 613, 18,  54}, /* GLAG */
-    {1339, 18,  55}, /* TIFINAGH */
-    {1332, 18,  55}, /* TFNG */
-    { 652, 18,  56}, /* HAN */
-    { 661, 18,  56}, /* HANI */
-    { 684, 18,  57}, /* HIRAGANA */
-    { 683, 18,  57}, /* HIRA */
-    { 763, 18,  58}, /* KATAKANA */
-    { 752, 18,  58}, /* KANA */
-    {1424, 18,  59}, /* YI */
-    {1425, 18,  59}, /* YIII */
-    { 835, 18,  60}, /* LISU */
-    {1373, 18,  61}, /* VAI */
-    {1374, 18,  61}, /* VAII */
-    { 242, 18,  62}, /* BAMUM */
-    { 241, 18,  62}, /* BAMU */
-    {1289, 18,  63}, /* SYLOTINAGRI */
-    {1288, 18,  63}, /* SYLO */
-    {1119, 18,  64}, /* PHAGSPA */
-    {1118, 18,  64}, /* PHAG */
-    {1197, 18,  65}, /* SAURASHTRA */
-    {1196, 18,  65}, /* SAUR */
-    { 767, 18,  66}, /* KAYAHLI */
-    { 751, 18,  66}, /* KALI */
-    {1169, 18,  67}, /* REJANG */
-    {1178, 18,  67}, /* RJNG */
-    { 737, 18,  68}, /* JAVANESE */
-    { 736, 18,  68}, /* JAVA */
-    { 360, 18,  69}, /* CHAM */
-    {1307, 18,  70}, /* TAIVIET */
-    {1323, 18,  70}, /* TAVT */
-    { 932, 18,  71}, /* MEETEIMAYEK */
-    { 973, 18,  71}, /* MTEI */
-    { 829, 18,  72}, /* LINEARB */
-    { 827, 18,  72}, /* LINB */
-    { 857, 18,  73}, /* LYCIAN */
-    { 856, 18,  73}, /* LYCI */
-    { 312, 18,  74}, /* CARIAN */
-    { 311, 18,  74}, /* CARI */
-    {1057, 18,  75}, /* OLDITALIC */
-    { 732, 18,  75}, /* ITAL */
-    { 622, 18,  76}, /* GOTHIC */
-    { 621, 18,  76}, /* GOTH */
-    {1059, 18,  77}, /* OLDPERMIC */
-    {1116, 18,  77}, /* PERM */
-    {1361, 18,  78}, /* UGARITIC */
-    {1360, 18,  78}, /* UGAR */
-    {1060, 18,  79}, /* OLDPERSIAN */
-    {1414, 18,  79}, /* XPEO */
-    { 491, 18,  80}, /* DESERET */
-    { 515, 18,  80}, /* DSRT */
-    {1216, 18,  81}, /* SHAVIAN */
-    {1217, 18,  81}, /* SHAW */
-    {1078, 18,  82}, /* OSMANYA */
-    {1077, 18,  82}, /* OSMA */
-    {1075, 18,  83}, /* OSAGE */
-    {1076, 18,  83}, /* OSGE */
-    { 533, 18,  84}, /* ELBASAN */
-    { 532, 18,  84}, /* ELBA */
-    { 317, 18,  85}, /* CAUCASIANALBANIAN */
+    {1309, 18,  11}, /* SYRIAC */
+    {1308, 18,  11}, /* SYRC */
+    {1350, 18,  12}, /* THAANA */
+    {1349, 18,  12}, /* THAA */
+    {1024, 18,  13}, /* NKO */
+    {1025, 18,  13}, /* NKOO */
+    {1207, 18,  14}, /* SAMARITAN */
+    {1208, 18,  14}, /* SAMR */
+    { 893, 18,  15}, /* MANDAIC */
+    { 892, 18,  15}, /* MAND */
+    { 497, 18,  16}, /* DEVANAGARI */
+    { 496, 18,  16}, /* DEVA */
+    { 259, 18,  17}, /* BENGALI */
+    { 258, 18,  17}, /* BENG */
+    { 647, 18,  18}, /* GURMUKHI */
+    { 648, 18,  18}, /* GURU */
+    { 644, 18,  19}, /* GUJARATI */
+    { 645, 18,  19}, /* GUJR */
+    {1084, 18,  20}, /* ORIYA */
+    {1087, 18,  20}, /* ORYA */
+    {1328, 18,  21}, /* TAMIL */
+    {1331, 18,  21}, /* TAML */
+    {1343, 18,  22}, /* TELUGU */
+    {1342, 18,  22}, /* TELU */
+    { 769, 18,  23}, /* KANNADA */
+    { 787, 18,  23}, /* KNDA */
+    { 880, 18,  24}, /* MALAYALAM */
+    { 971, 18,  24}, /* MLYM */
+    {1241, 18,  25}, /* SINHALA */
+    {1240, 18,  25}, /* SINH */
+    {1351, 18,  26}, /* THAI */
+    { 796, 18,  27}, /* LAO */
+    { 797, 18,  27}, /* LAOO */
+    {1353, 18,  28}, /* TIBETAN */
+    {1354, 18,  28}, /* TIBT */
+    { 990, 18,  29}, /* MYANMAR */
+    { 995, 18,  29}, /* MYMR */
+    { 613, 18,  30}, /* GEORGIAN */
+    { 612, 18,  30}, /* GEOR */
+    { 660, 18,  31}, /* HANGUL */
+    { 659, 18,  31}, /* HANG */
+    { 564, 18,  32}, /* ETHIOPIC */
+    { 563, 18,  32}, /* ETHI */
+    { 369, 18,  33}, /* CHEROKEE */
+    { 368, 18,  33}, /* CHER */
+    { 307, 18,  34}, /* CANADIANABORIGINAL */
+    { 311, 18,  34}, /* CANS */
+    {1062, 18,  35}, /* OGHAM */
+    {1061, 18,  35}, /* OGAM */
+    {1200, 18,  36}, /* RUNIC */
+    {1201, 18,  36}, /* RUNR */
+    {1314, 18,  37}, /* TAGALOG */
+    {1348, 18,  37}, /* TGLG */
+    { 674, 18,  38}, /* HANUNOO */
+    { 671, 18,  38}, /* HANO */
+    { 299, 18,  39}, /* BUHID */
+    { 298, 18,  39}, /* BUHD */
+    {1316, 18,  40}, /* TAGBANWA */
+    {1315, 18,  40}, /* TAGB */
+    { 780, 18,  41}, /* KHMER */
+    { 782, 18,  41}, /* KHMR */
+    { 980, 18,  42}, /* MONGOLIAN */
+    { 979, 18,  42}, /* MONG */
+    { 837, 18,  43}, /* LIMBU */
+    { 836, 18,  43}, /* LIMB */
+    {1319, 18,  44}, /* TAILE */
+    {1326, 18,  44}, /* TALE */
+    {1013, 18,  45}, /* NEWTAILUE */
+    {1327, 18,  45}, /* TALU */
+    { 297, 18,  46}, /* BUGINESE */
+    { 296, 18,  46}, /* BUGI */
+    {1320, 18,  47}, /* TAITHAM */
+    { 795, 18,  47}, /* LANA */
+    { 242, 18,  48}, /* BALINESE */
+    { 241, 18,  48}, /* BALI */
+    {1274, 18,  49}, /* SUNDANESE */
+    {1273, 18,  49}, /* SUND */
+    { 250, 18,  50}, /* BATAK */
+    { 251, 18,  50}, /* BATK */
+    { 831, 18,  51}, /* LEPCHA */
+    { 830, 18,  51}, /* LEPC */
+    {1066, 18,  52}, /* OLCHIKI */
+    {1067, 18,  52}, /* OLCK */
+    { 290, 18,  53}, /* BRAILLE */
+    { 289, 18,  53}, /* BRAI */
+    { 620, 18,  54}, /* GLAGOLITIC */
+    { 619, 18,  54}, /* GLAG */
+    {1355, 18,  55}, /* TIFINAGH */
+    {1347, 18,  55}, /* TFNG */
+    { 658, 18,  56}, /* HAN */
+    { 667, 18,  56}, /* HANI */
+    { 690, 18,  57}, /* HIRAGANA */
+    { 689, 18,  57}, /* HIRA */
+    { 771, 18,  58}, /* KATAKANA */
+    { 758, 18,  58}, /* KANA */
+    {1447, 18,  59}, /* YI */
+    {1448, 18,  59}, /* YIII */
+    { 847, 18,  60}, /* LISU */
+    {1393, 18,  61}, /* VAI */
+    {1394, 18,  61}, /* VAII */
+    { 244, 18,  62}, /* BAMUM */
+    { 243, 18,  62}, /* BAMU */
+    {1303, 18,  63}, /* SYLOTINAGRI */
+    {1302, 18,  63}, /* SYLO */
+    {1133, 18,  64}, /* PHAGSPA */
+    {1132, 18,  64}, /* PHAG */
+    {1211, 18,  65}, /* SAURASHTRA */
+    {1210, 18,  65}, /* SAUR */
+    { 775, 18,  66}, /* KAYAHLI */
+    { 757, 18,  66}, /* KALI */
+    {1183, 18,  67}, /* REJANG */
+    {1192, 18,  67}, /* RJNG */
+    { 743, 18,  68}, /* JAVANESE */
+    { 742, 18,  68}, /* JAVA */
+    { 362, 18,  69}, /* CHAM */
+    {1321, 18,  70}, /* TAIVIET */
+    {1338, 18,  70}, /* TAVT */
+    { 944, 18,  71}, /* MEETEIMAYEK */
+    { 985, 18,  71}, /* MTEI */
+    { 841, 18,  72}, /* LINEARB */
+    { 839, 18,  72}, /* LINB */
+    { 869, 18,  73}, /* LYCIAN */
+    { 868, 18,  73}, /* LYCI */
+    { 314, 18,  74}, /* CARIAN */
+    { 313, 18,  74}, /* CARI */
+    {1069, 18,  75}, /* OLDITALIC */
+    { 738, 18,  75}, /* ITAL */
+    { 628, 18,  76}, /* GOTHIC */
+    { 627, 18,  76}, /* GOTH */
+    {1071, 18,  77}, /* OLDPERMIC */
+    {1130, 18,  77}, /* PERM */
+    {1380, 18,  78}, /* UGARITIC */
+    {1379, 18,  78}, /* UGAR */
+    {1072, 18,  79}, /* OLDPERSIAN */
+    {1437, 18,  79}, /* XPEO */
+    { 495, 18,  80}, /* DESERET */
+    { 519, 18,  80}, /* DSRT */
+    {1230, 18,  81}, /* SHAVIAN */
+    {1231, 18,  81}, /* SHAW */
+    {1091, 18,  82}, /* OSMANYA */
+    {1090, 18,  82}, /* OSMA */
+    {1088, 18,  83}, /* OSAGE */
+    {1089, 18,  83}, /* OSGE */
+    { 537, 18,  84}, /* ELBASAN */
+    { 536, 18,  84}, /* ELBA */
+    { 319, 18,  85}, /* CAUCASIANALBANIAN */
     { 176, 18,  85}, /* AGHB */
-    { 828, 18,  86}, /* LINEARA */
-    { 826, 18,  86}, /* LINA */
-    { 464, 18,  87}, /* CYPRIOT */
-    { 451, 18,  87}, /* CPRT */
-    { 708, 18,  88}, /* IMPERIALARAMAIC */
-    { 217, 18,  88}, /* ARMI */
-    {1102, 18,  89}, /* PALMYRENE */
-    {1101, 18,  89}, /* PALM */
-    { 987, 18,  90}, /* NABATAEAN */
-    { 995, 18,  90}, /* NBAT */
-    { 670, 18,  91}, /* HATRAN */
-    { 669, 18,  91}, /* HATR */
-    {1125, 18,  92}, /* PHOENICIAN */
-    {1124, 18,  92}, /* PHNX */
-    { 859, 18,  93}, /* LYDIAN */
-    { 858, 18,  93}, /* LYDI */
-    { 940, 18,  94}, /* MEROITICHIEROGLYPHS */
-    { 938, 18,  94}, /* MERO */
-    { 939, 18,  95}, /* MEROITICCURSIVE */
-    { 937, 18,  95}, /* MERC */
-    { 770, 18,  96}, /* KHAROSHTHI */
-    { 769, 18,  96}, /* KHAR */
-    {1062, 18,  97}, /* OLDSOUTHARABIAN */
-    {1195, 18,  97}, /* SARB */
-    {1058, 18,  98}, /* OLDNORTHARABIAN */
-    { 992, 18,  98}, /* NARB */
-    { 884, 18,  99}, /* MANICHAEAN */
-    { 883, 18,  99}, /* MANI */
-    { 234, 18, 100}, /* AVESTAN */
-    { 235, 18, 100}, /* AVST */
-    { 722, 18, 101}, /* INSCRIPTIONALPARTHIAN */
-    {1149, 18, 101}, /* PRTI */
-    { 721, 18, 102}, /* INSCRIPTIONALPAHLAVI */
-    {1122, 18, 102}, /* PHLI */
-    {1151, 18, 103}, /* PSALTERPAHLAVI */
-    {1123, 18, 103}, /* PHLP */
-    {1063, 18, 104}, /* OLDTURKIC */
-    {1072, 18, 104}, /* ORKH */
-    {1056, 18, 105}, /* OLDHUNGARIAN */
-    { 691, 18, 105}, /* HUNG */
-    { 662, 18, 106}, /* HANIFIROHINGYA */
-    {1182, 18, 106}, /* ROHG */
-    {1423, 18, 107}, /* YEZIDI */
-    {1422, 18, 107}, /* YEZI */
-    {1061, 18, 108}, /* OLDSOGDIAN */
-    {1241, 18, 108}, /* SOGO */
-    {1240, 18, 109}, /* SOGDIAN */
-    {1239, 18, 109}, /* SOGD */
-    { 371, 18, 110}, /* CHORASMIAN */
-    { 372, 18, 110}, /* CHRS */
-    { 535, 18, 111}, /* ELYMAIC */
-    { 534, 18, 111}, /* ELYM */
-    { 285, 18, 112}, /* BRAHMI */
-    { 284, 18, 112}, /* BRAH */
-    { 750, 18, 113}, /* KAITHI */
-    { 781, 18, 113}, /* KTHI */
-    {1243, 18, 114}, /* SORASOMPENG */
-    {1242, 18, 114}, /* SORA */
-    { 359, 18, 115}, /* CHAKMA */
-    { 303, 18, 115}, /* CAKM */
-    { 862, 18, 116}, /* MAHAJANI */
-    { 863, 18, 116}, /* MAHJ */
-    {1215, 18, 117}, /* SHARADA */
-    {1220, 18, 117}, /* SHRD */
-    { 776, 18, 118}, /* KHOJKI */
-    { 775, 18, 118}, /* KHOJ */
-    { 975, 18, 119}, /* MULTANI */
-    { 974, 18, 119}, /* MULT */
-    { 777, 18, 120}, /* KHUDAWADI */
-    {1224, 18, 120}, /* SIND */
-    { 624, 18, 121}, /* GRANTHA */
-    { 623, 18, 121}, /* GRAN */
-    { 999, 18, 122}, /* NEWA */
-    {1341, 18, 123}, /* TIRHUTA */
-    {1340, 18, 123}, /* TIRH */
-    {1222, 18, 124}, /* SIDDHAM */
-    {1221, 18, 124}, /* SIDD */
-    { 961, 18, 125}, /* MODI */
-    {1311, 18, 126}, /* TAKRI */
-    {1310, 18, 126}, /* TAKR */
-    { 178, 18, 127}, /* AHOM */
-    { 508, 18, 128}, /* DOGRA */
-    { 507, 18, 128}, /* DOGR */
-    {1396, 18, 129}, /* WARANGCITI */
-    {1395, 18, 129}, /* WARA */
-    { 506, 18, 130}, /* DIVESAKURU */
-    { 503, 18, 130}, /* DIAK */
-    { 990, 18, 131}, /* NANDINAGARI */
-    { 989, 18, 131}, /* NAND */
-    {1435, 18, 132}, /* ZANABAZARSQUARE */
-    {1436, 18, 132}, /* ZANB */
-    {1245, 18, 133}, /* SOYOMBO */
-    {1244, 18, 133}, /* SOYO */
-    {1109, 18, 134}, /* PAUCINHAU */
-    {1108, 18, 134}, /* PAUC */
-    { 259, 18, 135}, /* BHAIKSUKI */
-    { 260, 18, 135}, /* BHKS */
-    { 913, 18, 136}, /* MARCHEN */
-    { 912, 18, 136}, /* MARC */
-    { 915, 18, 137}, /* MASARAMGONDI */
-    { 620, 18, 137}, /* GONM */
-    { 640, 18, 138}, /* GUNJALAGONDI */
-    { 619, 18, 138}, /* GONG */
-    { 867, 18, 139}, /* MAKASAR */
-    { 866, 18, 139}, /* MAKA */
-    { 454, 18, 140}, /* CUNEIFORM */
-    {1415, 18, 140}, /* XSUX */
-    { 531, 18, 141}, /* EGYPTIANHIEROGLYPHS */
-    { 529, 18, 141}, /* EGYP */
-    { 195, 18, 142}, /* ANATOLIANHIEROGLYPHS */
-    { 686, 18, 142}, /* HLUW */
-    { 971, 18, 143}, /* MRO */
-    { 972, 18, 143}, /* MROO */
-    { 247, 18, 144}, /* BASSAVAH */
-    { 246, 18, 144}, /* BASS */
-    {1100, 18, 145}, /* PAHAWHHMONG */
-    { 687, 18, 145}, /* HMNG */
-    { 928, 18, 146}, /* MEDEFAIDRIN */
-    { 929, 18, 146}, /* MEDF */
-    { 941, 18, 147}, /* MIAO */
-    {1132, 18, 147}, /* PLRD */
-    {1319, 18, 148}, /* TANGUT */
-    {1318, 18, 148}, /* TANG */
-    {1042, 18, 149}, /* NUSHU */
-    {1030, 18, 149}, /* NSHU */
-    { 771, 18, 150}, /* KHITANSMALLSCRIPT */
-    { 778, 18, 150}, /* KITS */
-    { 519, 18, 151}, /* DUPLOYAN */
-    { 518, 18, 151}, /* DUPL */
-    {1223, 18, 152}, /* SIGNWRITING */
-    {1214, 18, 152}, /* SGNW */
-    {1045, 18, 153}, /* NYIAKENGPUACHUEHMONG */
-    { 688, 18, 153}, /* HMNP */
-    {1394, 18, 154}, /* WANCHO */
-    {1399, 18, 154}, /* WCHO */
-    { 936, 18, 155}, /* MENDEKIKAKUI */
-    { 935, 18, 155}, /* MEND */
-    { 170, 18, 156}, /* ADLAM */
-    { 171, 18, 156}, /* ADLM */
-    { 765, 18, 157}, /* KATAKANAORHIRAGANA */
-    { 689, 18, 157}, /* HRKT */
-    {1079, 19,   0}, /* OTHER */
-    {1416, 19,   0}, /* XX */
-    {1246, 19,   1}, /* SP */
-    { 823, 19,   2}, /* LF */
-    { 452, 19,   3}, /* CR */
-    {1256, 19,   4}, /* STERM */
-    {1255, 19,   4}, /* ST */
-    { 406, 19,   5}, /* CLOSE */
-    { 405, 19,   5}, /* CL */
-    {1200, 19,   6}, /* SCONTINUE */
-    {1199, 19,   6}, /* SC */
-    { 228, 19,   7}, /* ATERM */
-    { 223, 19,   7}, /* AT */
-    {1038, 19,   8}, /* NUMERIC */
-    {1033, 19,   8}, /* NU */
-    {1369, 19,   9}, /* UPPER */
-    {1368, 19,   9}, /* UP */
-    { 843, 19,  10}, /* LOWER */
-    { 840, 19,  10}, /* LO */
-    {1211, 19,  11}, /* SEP */
-    {1205, 19,  11}, /* SE */
-    { 590, 19,  12}, /* FORMAT */
-    { 588, 19,  12}, /* FO */
-    {1064, 19,  13}, /* OLETTER */
-    { 809, 19,  13}, /* LE */
-    { 573, 19,  14}, /* EXTEND */
-    { 570, 19,  14}, /* EX */
-    {1079, 20,   0}, /* OTHER */
-    {1416, 20,   0}, /* XX */
-    { 823, 20,   1}, /* LF */
-    {1000, 20,   2}, /* NEWLINE */
-    {1014, 20,   2}, /* NL */
-    { 452, 20,   3}, /* CR */
-    {1407, 20,   4}, /* WSEGSPACE */
-    { 513, 20,   5}, /* DOUBLEQUOTE */
-    { 514, 20,   5}, /* DQ */
-    {1225, 20,   6}, /* SINGLEQUOTE */
-    {1252, 20,   6}, /* SQ */
-    { 943, 20,   7}, /* MIDNUM */
-    { 960, 20,   7}, /* MN */
-    { 944, 20,   8}, /* MIDNUMLET */
-    { 924, 20,   8}, /* MB */
-    {1038, 20,   9}, /* NUMERIC */
-    {1033, 20,   9}, /* NU */
-    { 942, 20,  10}, /* MIDLETTER */
-    { 958, 20,  10}, /* ML */
+    {1408, 18,  86}, /* VITHKUQI */
+    {1407, 18,  86}, /* VITH */
+    { 840, 18,  87}, /* LINEARA */
+    { 838, 18,  87}, /* LINA */
+    { 467, 18,  88}, /* CYPRIOT */
+    { 454, 18,  88}, /* CPRT */
+    { 714, 18,  89}, /* IMPERIALARAMAIC */
+    { 219, 18,  89}, /* ARMI */
+    {1116, 18,  90}, /* PALMYRENE */
+    {1115, 18,  90}, /* PALM */
+    { 999, 18,  91}, /* NABATAEAN */
+    {1007, 18,  91}, /* NBAT */
+    { 676, 18,  92}, /* HATRAN */
+    { 675, 18,  92}, /* HATR */
+    {1139, 18,  93}, /* PHOENICIAN */
+    {1138, 18,  93}, /* PHNX */
+    { 871, 18,  94}, /* LYDIAN */
+    { 870, 18,  94}, /* LYDI */
+    { 952, 18,  95}, /* MEROITICHIEROGLYPHS */
+    { 950, 18,  95}, /* MERO */
+    { 951, 18,  96}, /* MEROITICCURSIVE */
+    { 949, 18,  96}, /* MERC */
+    { 778, 18,  97}, /* KHAROSHTHI */
+    { 777, 18,  97}, /* KHAR */
+    {1074, 18,  98}, /* OLDSOUTHARABIAN */
+    {1209, 18,  98}, /* SARB */
+    {1070, 18,  99}, /* OLDNORTHARABIAN */
+    {1004, 18,  99}, /* NARB */
+    { 896, 18, 100}, /* MANICHAEAN */
+    { 895, 18, 100}, /* MANI */
+    { 236, 18, 101}, /* AVESTAN */
+    { 237, 18, 101}, /* AVST */
+    { 728, 18, 102}, /* INSCRIPTIONALPARTHIAN */
+    {1163, 18, 102}, /* PRTI */
+    { 727, 18, 103}, /* INSCRIPTIONALPAHLAVI */
+    {1136, 18, 103}, /* PHLI */
+    {1165, 18, 104}, /* PSALTERPAHLAVI */
+    {1137, 18, 104}, /* PHLP */
+    {1075, 18, 105}, /* OLDTURKIC */
+    {1085, 18, 105}, /* ORKH */
+    {1068, 18, 106}, /* OLDHUNGARIAN */
+    { 697, 18, 106}, /* HUNG */
+    { 668, 18, 107}, /* HANIFIROHINGYA */
+    {1196, 18, 107}, /* ROHG */
+    {1446, 18, 108}, /* YEZIDI */
+    {1445, 18, 108}, /* YEZI */
+    {1073, 18, 109}, /* OLDSOGDIAN */
+    {1255, 18, 109}, /* SOGO */
+    {1254, 18, 110}, /* SOGDIAN */
+    {1253, 18, 110}, /* SOGD */
+    {1076, 18, 111}, /* OLDUYGHUR */
+    {1107, 18, 111}, /* OUGR */
+    { 373, 18, 112}, /* CHORASMIAN */
+    { 374, 18, 112}, /* CHRS */
+    { 539, 18, 113}, /* ELYMAIC */
+    { 538, 18, 113}, /* ELYM */
+    { 287, 18, 114}, /* BRAHMI */
+    { 286, 18, 114}, /* BRAH */
+    { 756, 18, 115}, /* KAITHI */
+    { 789, 18, 115}, /* KTHI */
+    {1257, 18, 116}, /* SORASOMPENG */
+    {1256, 18, 116}, /* SORA */
+    { 361, 18, 117}, /* CHAKMA */
+    { 305, 18, 117}, /* CAKM */
+    { 874, 18, 118}, /* MAHAJANI */
+    { 875, 18, 118}, /* MAHJ */
+    {1229, 18, 119}, /* SHARADA */
+    {1234, 18, 119}, /* SHRD */
+    { 784, 18, 120}, /* KHOJKI */
+    { 783, 18, 120}, /* KHOJ */
+    { 987, 18, 121}, /* MULTANI */
+    { 986, 18, 121}, /* MULT */
+    { 785, 18, 122}, /* KHUDAWADI */
+    {1238, 18, 122}, /* SIND */
+    { 630, 18, 123}, /* GRANTHA */
+    { 629, 18, 123}, /* GRAN */
+    {1011, 18, 124}, /* NEWA */
+    {1357, 18, 125}, /* TIRHUTA */
+    {1356, 18, 125}, /* TIRH */
+    {1236, 18, 126}, /* SIDDHAM */
+    {1235, 18, 126}, /* SIDD */
+    { 973, 18, 127}, /* MODI */
+    {1325, 18, 128}, /* TAKRI */
+    {1324, 18, 128}, /* TAKR */
+    { 178, 18, 129}, /* AHOM */
+    { 512, 18, 130}, /* DOGRA */
+    { 511, 18, 130}, /* DOGR */
+    {1419, 18, 131}, /* WARANGCITI */
+    {1418, 18, 131}, /* WARA */
+    { 510, 18, 132}, /* DIVESAKURU */
+    { 507, 18, 132}, /* DIAK */
+    {1002, 18, 133}, /* NANDINAGARI */
+    {1001, 18, 133}, /* NAND */
+    {1458, 18, 134}, /* ZANABAZARSQUARE */
+    {1459, 18, 134}, /* ZANB */
+    {1259, 18, 135}, /* SOYOMBO */
+    {1258, 18, 135}, /* SOYO */
+    {1123, 18, 136}, /* PAUCINHAU */
+    {1122, 18, 136}, /* PAUC */
+    { 261, 18, 137}, /* BHAIKSUKI */
+    { 262, 18, 137}, /* BHKS */
+    { 925, 18, 138}, /* MARCHEN */
+    { 924, 18, 138}, /* MARC */
+    { 927, 18, 139}, /* MASARAMGONDI */
+    { 626, 18, 139}, /* GONM */
+    { 646, 18, 140}, /* GUNJALAGONDI */
+    { 625, 18, 140}, /* GONG */
+    { 879, 18, 141}, /* MAKASAR */
+    { 878, 18, 141}, /* MAKA */
+    { 457, 18, 142}, /* CUNEIFORM */
+    {1438, 18, 142}, /* XSUX */
+    { 469, 18, 143}, /* CYPROMINOAN */
+    { 453, 18, 143}, /* CPMN */
+    { 535, 18, 144}, /* EGYPTIANHIEROGLYPHS */
+    { 533, 18, 144}, /* EGYP */
+    { 195, 18, 145}, /* ANATOLIANHIEROGLYPHS */
+    { 692, 18, 145}, /* HLUW */
+    { 983, 18, 146}, /* MRO */
+    { 984, 18, 146}, /* MROO */
+    {1333, 18, 147}, /* TANGSA */
+    {1359, 18, 147}, /* TNSA */
+    { 249, 18, 148}, /* BASSAVAH */
+    { 248, 18, 148}, /* BASS */
+    {1114, 18, 149}, /* PAHAWHHMONG */
+    { 693, 18, 149}, /* HMNG */
+    { 940, 18, 150}, /* MEDEFAIDRIN */
+    { 941, 18, 150}, /* MEDF */
+    { 953, 18, 151}, /* MIAO */
+    {1146, 18, 151}, /* PLRD */
+    {1334, 18, 152}, /* TANGUT */
+    {1332, 18, 152}, /* TANG */
+    {1054, 18, 153}, /* NUSHU */
+    {1042, 18, 153}, /* NSHU */
+    { 779, 18, 154}, /* KHITANSMALLSCRIPT */
+    { 786, 18, 154}, /* KITS */
+    { 523, 18, 155}, /* DUPLOYAN */
+    { 522, 18, 155}, /* DUPL */
+    {1237, 18, 156}, /* SIGNWRITING */
+    {1228, 18, 156}, /* SGNW */
+    {1057, 18, 157}, /* NYIAKENGPUACHUEHMONG */
+    { 694, 18, 157}, /* HMNP */
+    {1369, 18, 158}, /* TOTO */
+    {1417, 18, 159}, /* WANCHO */
+    {1422, 18, 159}, /* WCHO */
+    { 948, 18, 160}, /* MENDEKIKAKUI */
+    { 947, 18, 160}, /* MEND */
+    { 170, 18, 161}, /* ADLAM */
+    { 171, 18, 161}, /* ADLM */
+    { 773, 18, 162}, /* KATAKANAORHIRAGANA */
+    { 695, 18, 162}, /* HRKT */
+    {1092, 19,   0}, /* OTHER */
+    {1439, 19,   0}, /* XX */
+    {1260, 19,   1}, /* SP */
+    { 835, 19,   2}, /* LF */
+    { 455, 19,   3}, /* CR */
+    {1270, 19,   4}, /* STERM */
+    {1269, 19,   4}, /* ST */
+    { 408, 19,   5}, /* CLOSE */
+    { 407, 19,   5}, /* CL */
+    {1214, 19,   6}, /* SCONTINUE */
+    {1213, 19,   6}, /* SC */
+    { 230, 19,   7}, /* ATERM */
+    { 225, 19,   7}, /* AT */
+    {1050, 19,   8}, /* NUMERIC */
+    {1045, 19,   8}, /* NU */
+    {1389, 19,   9}, /* UPPER */
+    {1388, 19,   9}, /* UP */
+    { 855, 19,  10}, /* LOWER */
+    { 852, 19,  10}, /* LO */
+    {1225, 19,  11}, /* SEP */
+    {1219, 19,  11}, /* SE */
+    { 596, 19,  12}, /* FORMAT */
+    { 594, 19,  12}, /* FO */
+    {1077, 19,  13}, /* OLETTER */
+    { 821, 19,  13}, /* LE */
+    { 579, 19,  14}, /* EXTEND */
+    { 576, 19,  14}, /* EX */
+    {1092, 20,   0}, /* OTHER */
+    {1439, 20,   0}, /* XX */
+    { 835, 20,   1}, /* LF */
+    {1012, 20,   2}, /* NEWLINE */
+    {1026, 20,   2}, /* NL */
+    { 455, 20,   3}, /* CR */
+    {1430, 20,   4}, /* WSEGSPACE */
+    { 517, 20,   5}, /* DOUBLEQUOTE */
+    { 518, 20,   5}, /* DQ */
+    {1239, 20,   6}, /* SINGLEQUOTE */
+    {1266, 20,   6}, /* SQ */
+    { 955, 20,   7}, /* MIDNUM */
+    { 972, 20,   7}, /* MN */
+    { 956, 20,   8}, /* MIDNUMLET */
+    { 936, 20,   8}, /* MB */
+    {1050, 20,   9}, /* NUMERIC */
+    {1045, 20,   9}, /* NU */
+    { 954, 20,  10}, /* MIDLETTER */
+    { 970, 20,  10}, /* ML */
     { 186, 20,  11}, /* ALETTER */
-    { 809, 20,  11}, /* LE */
-    { 576, 20,  12}, /* EXTENDNUMLET */
-    { 570, 20,  12}, /* EX */
-    { 590, 20,  13}, /* FORMAT */
-    { 588, 20,  13}, /* FO */
-    { 573, 20,  14}, /* EXTEND */
-    { 674, 20,  15}, /* HEBREWLETTER */
-    { 685, 20,  15}, /* HL */
-    {1443, 20,  16}, /* ZWJ */
-    { 763, 20,  17}, /* KATAKANA */
-    { 748, 20,  17}, /* KA */
-    {1166, 20,  18}, /* REGIONALINDICATOR */
-    {1171, 20,  18}, /* RI */
-    { 525, 20,  19}, /* EBASE */
-    { 524, 20,  19}, /* EB */
-    { 526, 20,  20}, /* EBASEGAZ */
-    { 527, 20,  20}, /* EBG */
-    { 538, 20,  21}, /* EMODIFIER */
-    { 536, 20,  21}, /* EM */
-    { 618, 20,  22}, /* GLUEAFTERZWJ */
-    { 597, 20,  22}, /* GAZ */
+    { 821, 20,  11}, /* LE */
+    { 582, 20,  12}, /* EXTENDNUMLET */
+    { 576, 20,  12}, /* EX */
+    { 596, 20,  13}, /* FORMAT */
+    { 594, 20,  13}, /* FO */
+    { 579, 20,  14}, /* EXTEND */
+    { 680, 20,  15}, /* HEBREWLETTER */
+    { 691, 20,  15}, /* HL */
+    {1468, 20,  16}, /* ZWJ */
+    { 771, 20,  17}, /* KATAKANA */
+    { 754, 20,  17}, /* KA */
+    {1180, 20,  18}, /* REGIONALINDICATOR */
+    {1185, 20,  18}, /* RI */
+    { 529, 20,  19}, /* EBASE */
+    { 528, 20,  19}, /* EB */
+    { 530, 20,  20}, /* EBASEGAZ */
+    { 531, 20,  20}, /* EBG */
+    { 542, 20,  21}, /* EMODIFIER */
+    { 540, 20,  21}, /* EM */
+    { 624, 20,  22}, /* GLUEAFTERZWJ */
+    { 603, 20,  22}, /* GAZ */
 };
 
 /* Codepoints which expand on full case-folding. */
@@ -3257,17 +3316,17 @@ RE_UINT16 re_expand_on_folding[] = {
 static RE_UINT8 re_alphabetic_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 10, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 10, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 44, 13, 13, 13, 45, 46, 13,
-    13, 13, 13, 47, 13, 13, 13, 13, 13, 13, 48, 10, 10, 10, 49, 10,
-    13, 13, 13, 13, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
+    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
+    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -3325,12 +3384,12 @@ static RE_UINT8 re_alphabetic_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
 };
 
-static RE_UINT8 re_alphabetic_table_2[] = {
+static RE_UINT16 re_alphabetic_table_2[] = {
       0,   0,   1,   1,   0,   2,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   7,   8,   9,  10,   4,  11,
       4,   4,   4,   4,  12,   4,   4,   4,   4,  13,  14,   4,  15,  16,  17,  18,
      19,   4,  20,  21,   4,   4,  22,  23,  24,   4,  25,   4,   4,  26,  27,  28,
-     29,  30,  31,  32,   0,  33,  34,  35,   4,  36,  37,  38,  39,  40,  41,  42,
+     29,  30,  31,  32,  33,   4,  34,  35,   4,  36,  37,  38,  39,  40,  41,  42,
      43,  44,  45,  46,  47,  48,  49,  50,  51,  48,  52,  53,  54,  55,  56,   0,
      57,  58,  59,  60,  57,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
      72,  73,  74,   0,  75,  76,  77,   0,  78,   0,  79,  80,  81,  82,   0,   0,
@@ -3338,96 +3397,102 @@ static RE_UINT8 re_alphabetic_table_2[] = {
       4,   4,  87,   4,  88,  89,  90,   4,  91,   4,  73,   0,  92,   4,   4,  93,
      72,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,  94,   1,   4,   4,  95,  96,  97,  97,  98,   4,  99, 100,   0,
-      0,   4,   4,  31,   4, 101,   4, 102, 103, 104,  24, 105,   4, 106, 107,   0,
-    108,   4, 103, 109,   0, 110,  78,   0,   4, 111, 112,   0,   4, 113,   4, 114,
+      0,   4,   4,  31,   4,  32,   4, 101, 102, 103,  24, 104,   4, 105, 106,   0,
+    107,   4, 102, 108,   0, 109, 110,   0,   4, 111, 112,   0,   4, 113,   4, 114,
       4, 115, 116, 117, 118,  65,   0, 119,   4,   4,   4,   4,   4,   4,   0, 120,
       4,   4,   4,   4,   4,   4,   4,   4,  93,   4, 121, 117,   4, 122, 123, 124,
       0,   0,   0, 125, 126,   0,   0,   0, 127, 128, 129,   4,  15,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 130,   4, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   4, 106,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 131, 103,   4,   4,   4,   4, 132,   4,  85,   4, 133, 115, 134, 134,   4,
-      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    136, 137,  72,   4, 138,  72,   4,  86, 139,  13,   4,   4, 140,   4,   0,  24,
+      4,   4,   4,   4,   4,   4,   4, 131,   4,  85,   4, 132, 115, 133, 133,   4,
+      0, 134,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    135, 136,  72,   4, 137,  72,   4,  86, 138,  13,   4,   4, 139,   4,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  82,
       4,   4,   4,   4,  30,   0,  24, 117,   4,   4,   4,   4,   4,   4,   4,   4,
-    141, 142,   4, 143,   4,   4,   4,  92, 144, 145,   4,   4, 146,   4, 147, 148,
-    149, 150,   4,  97,   4,   4, 151, 152,  27, 101, 153,  82,   4, 154, 135, 155,
-      4, 115, 156, 157,   4, 103, 158, 159, 160, 161,  86, 162,   4,   4,   4,  32,
+    140, 141,   4, 142,   4,   4,   4,  92, 143, 144,   4,   4, 145,   4, 146, 147,
+    148, 149,   4,  97,   4,   4, 150, 151,  27,  32, 152,  82,   4, 153, 134, 154,
+      4, 115, 155, 156,   4, 102, 157, 158, 159, 160,  86, 161,   4,   4,   4, 162,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 163, 164, 108,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 163, 164, 107,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4, 165,   4,   4, 166,   0, 167, 168, 169,   4,   4,  26, 170,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 117,  24,   4, 171,   4, 150, 172,
-      0,   0,   0, 173,   4,   4,   4,  82,   0,   1,   1, 174,   4, 103, 175,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 117,  24,   4, 171,   4, 149, 172,
+      0,   0,   0, 173,   4,   4,   4,  82,   0,   1,   1, 174,   4, 102, 175,   0,
     176, 177, 178,   0,   4,   4,   4,  73,   0,   0,   4, 179,   0,   0,   0,   0,
-      0,   0,   0,   0,  82,   4, 180,   0,   4,  25, 101,  73, 117,   4, 181,   0,
-      4,   4,   4,   4, 117,  24, 182, 108,   4, 183,   4,  60,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 115, 102, 150,   0,   0,   0,   0,
-    184, 185, 102, 115, 103,   0,   0, 186, 102, 166,   0,   0,   4, 187,   0,   0,
-    188, 102,   0,  82,  82,   0,  79, 189,   4, 102, 102, 153,  26,   0,   0,   0,
-      4,   4,  15,   0,   4, 153,   4, 153,   4, 150,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 190,   0,   0,  82, 191, 192,   0,   0,  24, 189, 115,
-      4,   4, 192,   0, 145,  31,  24,  15,   4, 153, 193, 194,   4,   4, 195,   0,
-    196, 197,   0,   0, 198, 118,   4,  15,  39,  48, 199,  60,   0,   0,   0,   0,
-      4,   4, 200, 201,   4,   4, 202,   0,   0,   0,   0,   0,   4, 203, 204,   0,
-      4, 103, 205,   0,   4, 206,   0,   0,  65,  32,   0,   0,   0,   0,   0,   0,
-      4,  31,   0,   0,   0,   4,   4, 207, 208, 209, 210,   0,   0, 211,  29, 212,
-      4, 213,  24,   4, 214,   0,   4,  31,   0,   0,   0,   0,   0,   0,   0,   0,
-    215, 216,  78, 217, 171, 218,   0,   0, 219, 220, 221, 222, 223,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0, 224,   0,   0,
+      0,   0,   0,   0,  82,   4, 180,   0,   4,  25,  32,  73, 117,   4, 181,   0,
+      4,   4,   4,   4, 117,  24, 182, 107,   4, 183,   4, 184, 185, 186,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 115, 101, 149, 148, 187,   0,   0,
+    188, 189, 101, 115, 102,   0,   0, 190, 101, 166,   0,   0,   4, 191,   0,   0,
+    192, 101,   0,  82,  82,   0,  79, 193,   4, 101, 101, 152,  26,   0,   0,   0,
+      4,   4,  15,   0,   4, 152,   4, 152,   4, 149,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 194,   0,   0,  82, 195, 196,  24, 197,  24, 193, 115,
+      4,   4, 196, 198, 144,  31, 199,  15,   4, 152, 200, 201,   4,   4, 202,   0,
+    203, 204,   0,   0, 205, 118,   4,  15,  39,  48, 206,  60,   0,   0,   0,   0,
+      4,   4, 207, 197,   4,   4, 208,   0,   0,   0,   0,   0,   4, 209, 210,   0,
+      4, 102, 211,   0,   4, 212,   0,   0,  65, 162, 213,   0,   0,   0,   0,   0,
+      4,  31,   0,   0,   0,   4,   4, 214, 215, 216, 217,   0,   0, 218,  29, 219,
+      4, 220,  24,   4, 221,  24,   4,  31,   0,   0,   0,   0,   0,   0,   0,   0,
+    222, 223,  78, 147, 171, 224,   0,   0, 225, 226, 227, 228, 229,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0, 230,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 166,   0,   0,   0,
-      4,   4,   4, 140,   4,   4,   4,   4,   4,   4,  60,   0,   0,   0,   0,   0,
+      4,   4,   4, 139,   4,   4,   4,   4,   4,   4,  60,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   4,   4, 180,
+      4, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4, 225,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 213,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  31, 103,   0,   0,   0,  24, 156,   4,  92,  60, 226,  92,   0,   0,   0,
+      4,  31, 102,  24,   4, 102,  24, 155,   4,  92,  60, 231,  92,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 227,   4, 228,   0,   0, 229,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 232,   4, 233,   0,   0, 234,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 230,
-      4,   4,   4,   4,   4,   4, 102,   0,  15,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 235,
+      4,   4,   4,   4,   4,   4, 101,   0,  15,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 236,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 217, 237, 200,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 238, 239,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 240,   4, 241, 242, 243,   4, 244, 245, 246,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 247, 248,  86, 240, 240, 249, 249, 222, 222, 250,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4, 103,   0, 231, 193,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 108,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 232, 233,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,   0,
+    251, 252,   0,   0,   0,   0,   0,   0,   4, 253, 254,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 155,   4, 255,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  33,   4, 234, 235, 236,   4, 237, 238, 239,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 240, 241,  86,  33,  33, 131, 131, 215, 215, 242,   0,
-    243, 244,   0,   0,   0,   0,   0,   0,   4, 245, 246,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 247,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 248,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 256,
+      4,   4,   4,   4,   4,   4, 193,   0,   4,   4, 257,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    236, 249, 250, 251, 252, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 162, 162, 107,   0,   0,   0,
+    243, 258, 259, 260, 261, 262,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 161, 161, 106,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 117,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 179,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  31,   4,   4,   4,   4,   4,   4,
     117,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 254,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 263,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  78,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     117,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  32,   0,   0,   0,   0,   0
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_alphabetic_table_3[] = {
@@ -3439,14 +3504,14 @@ static RE_UINT8 re_alphabetic_table_3[] = {
     255, 255, 255, 254,   0, 192, 255, 255, 255, 255, 239,  31, 254, 225,   0, 156,
       0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,   0, 252, 255, 255,
     255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0, 255, 255, 255,   1,
-    255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255, 248,   3, 255, 255,
+    255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255, 248,   3, 255, 255,
     255, 255, 255, 239, 255, 223, 225, 255,  15,   0, 254, 255, 239, 159, 249, 255,
     255, 253, 197, 227, 159,  89, 128, 176,  15,   0,   3,  16, 238, 135, 249, 255,
     255, 253, 109, 195, 135,  25,   2,  94,   0,   0,  63,   0, 238, 191, 251, 255,
     255, 253, 237, 227, 191,  27,   1,   0,  15,   0,   0,  30, 238, 159, 249, 255,
     159,  25, 192, 176,  15,   0,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195,
-    199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227, 223,  29,  96,   7,
-     15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,  15,   0,   6,   0,
+    199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227, 223,  29,  96,  39,
+     15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,  15,   0,   6,   0,
     255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,  15,   0,   0, 252,
     238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,   0,   0,  12,   0,
     254, 255, 255, 255, 255, 255, 255,   7, 127,  32,   0,   0, 214, 247, 255, 255,
@@ -3455,46 +3520,48 @@ static RE_UINT8 re_alphabetic_table_3[] = {
     255, 255,   0,  60, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
     255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
     255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,  15,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255,
-    255,   1, 128,  16, 255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0,
-    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128, 255, 255, 239, 255,
-    239,  15,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0, 255, 255, 127,   0,
+    255, 255,  15, 128, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255,
+    255,   1, 128,  16, 255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 255,  15,
+    254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0, 255, 255, 239, 255,
+    239,  31,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0, 255, 255, 127,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255,   0, 222, 111,   4,
     128, 255,  31,   0,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,
-     80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,
-     31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0,
-    224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,
-      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 252,   7,   0,   0,
-      0,   0, 224, 255, 191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,
-      0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124,
-    255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0,
-    126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255,
+     80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255,  31, 120,  12,   0,
+    255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0,
+    254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0,
+    255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255,
+    252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,   0,   0, 252, 255,
+    191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,   0,   0, 252, 232,
+    255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124, 255,  63,   0,   0,
+    255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0,
+    127, 127, 255, 255, 255,   3, 255, 255, 255,   7,   0,   0,  15,   0, 255, 255,
     127, 248, 255, 255, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 224,
     255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
       0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,  31,   0,
     255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
     111, 240, 239, 254,  31,   0,   0,   0, 255,  27,   3,   0, 128,   0, 255, 255,
-     63,   0,   0,   0, 240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20,
-    255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,
-    187,   7,   0, 128,   3,   0,   0,   0, 179,   0,   0,   0, 255, 255,  63, 127,
-      0,   0,   0,  63,  17,   0,   0,   0, 255, 255,  63,   1,   0,   0,   0, 128,
-    127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,
-     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
-    255, 255, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255,
-    255, 255, 127, 180, 203,   0,   0,   0, 191, 253, 255, 255, 255, 127, 123,   1,
-      0,   0,   1,   0, 127,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255,
-    255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,   0,   0,   7,   0,
-    255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 253, 255, 255, 247, 247,  15,   0,   0, 127, 255, 255, 249,
+     63,   0,   0,   0,   3,   0,   0,   0,   0,   0,  62,   0,   4,   0, 255, 255,
+    240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20, 255, 255, 251, 255,
+    255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224, 187,   7,   0, 128,
+    179,   0,   0,   0, 255, 255,  63, 127,   0,   0,   0,  63,  17,   0,   0,   0,
+    255, 255,  63,   1, 127,   0,   0,   0,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,  26,   0,   0,   0,
+    255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255, 255, 255, 127, 127,
+    255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180, 203,   0,   0,   0,
+    191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0, 248, 255, 255, 224,
+    255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
+      0,   0, 239, 111,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67,
+    255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
+    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
+    253, 255, 255, 247, 255, 127, 255, 255, 247,  15,   0,   0, 127, 255, 255, 249,
     219,   7,   0,   0, 255,  31, 128,  63,   0,  64,   0,   0, 255,  15,   0,   0,
-    143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94,
-    255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    127, 111, 255, 127, 143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
 };
 
 RE_UINT32 re_get_alphabetic(RE_UINT32 codepoint) {
@@ -3520,17 +3587,17 @@ RE_UINT32 re_get_alphabetic(RE_UINT32 codepoint) {
 static RE_UINT8 re_alphanumeric_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 44, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 47, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 13, 13, 13, 46, 47, 13,
-    13, 13, 13, 48, 13, 13, 13, 13, 13, 13, 49, 10, 10, 10, 50, 10,
-    13, 13, 13, 13, 51, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
+    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 10, 10, 10, 53, 10,
+    13, 13, 13, 13, 54, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -3593,7 +3660,7 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       5,   5,   5,   5,   5,   5,   6,   7,   0,   0,   8,   9,  10,  11,   5,  12,
       5,   5,   5,   5,  13,   5,   5,   5,   5,  14,  15,   5,  16,  17,  18,  19,
      20,   5,  21,  22,   5,   5,  23,  24,  25,   5,  26,   5,   5,  27,   5,  28,
-     29,  30,  31,  32,   0,  33,  34,  35,   5,  36,  37,  38,  39,  40,  41,  42,
+     29,  30,  31,  32,  33,   5,  34,  35,   5,  36,  37,  38,  39,  40,  41,  42,
      43,  44,  45,  46,  47,  48,  49,  50,  51,  48,  52,  53,  54,  55,  56,  57,
      58,  59,  60,  61,  58,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,
      73,  74,  75,   0,  76,  77,  78,   0,  79,  80,  81,  82,  83,  84,   0,   0,
@@ -3601,8 +3668,8 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       5,   5,  90,   5,  91,  92,  93,   5,  94,   5,  74,   0,  95,   5,   5,  96,
      73,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,  97,   2,   5,   5,  98,  99, 100, 100, 101,   5, 102, 103,  80,
-      1,   5,   5,  31,   5, 104,   5, 105, 106, 107, 108, 109,   5, 110, 111,   0,
-    112,   5, 106, 113, 111, 114,  79,   0,   5, 115, 116,   0,   5, 117,   5, 118,
+      1,   5,   5,  31,   5,  32,   5, 104, 105, 106, 107, 108,   5, 109, 110,   0,
+    111,   5, 105, 112, 110, 113, 114,   0,   5, 115, 116,   0,   5, 117,   5, 118,
       5, 119, 120,  87, 121,  66,   0, 122,   5,   5,   5,   5,   5,   5,   0, 123,
       5,   5,   5,   5,   5,   5,   5,   5,  96,   5, 124,  87,   5, 125, 126, 127,
       0,   0,   0, 128, 129,   0,   0,   0, 130, 131, 132,   5,  16,   0,   0,   0,
@@ -3611,88 +3678,94 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 134, 106,   5,   5,   5,   5, 135,   5,  88,   5, 136, 119, 137, 137,   5,
-      0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    139, 140,  73,   5, 141,  73,   5,  89, 142,  14,   5,   5, 143,   5,   0,  25,
+      5,   5,   5,   5,   5,   5,   5, 134,   5,  88,   5, 135, 119, 136, 136,   5,
+      0, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 139,  73,   5, 140,  73,   5,  89, 141,  14,   5,   5, 142,   5,   0,  25,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  84,
       5,   5,   5,   5,  30,   0,  25,  87,   5,   5,   5,   5,   5,   5,   5,   5,
-    144, 145,   5, 146,   5,   5,   5,  95, 147, 148,   5,   5, 149,   5, 150, 151,
-    152, 153,   5, 100,   5,   5, 154, 155,   5, 104, 156,  84,   5, 157, 158, 106,
-      5, 119, 159, 160,   5, 106, 161, 162, 163, 164,  89,  86,   5,   5,   5, 165,
+    143, 144,   5, 145,   5,   5,   5,  95, 146, 147,   5,   5, 148,   5, 149, 150,
+    151, 152,   5, 100,   5,   5, 153, 154,   5,  32, 155,  84,   5, 156, 157, 105,
+      5, 119, 158, 159,   5, 105, 160, 161, 162, 163,  89,  86,   5,   5,   5, 164,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 166, 167, 112,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 165, 166, 111,
       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5, 168,   5,   5, 169,   0, 170, 171, 172,   5,   5,  27, 173,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,  87,  25,   5, 174,   5, 153, 175,
-      0,   0,   0, 176,   5,   5,   5,  84,   1,   2,   2, 108,   5, 106, 177,   0,
-    178, 179, 180,   0,   5,   5,   5,  74,   0,   0,   5, 181,   0,   0,   0,   0,
-      0,   0,   0,   0,  84,   5, 182,   0,   5,  26, 104,  74,  87,   5, 183,   0,
-      5,   5,   5,   5,  87,  86, 184, 112,   5, 185,   5, 186,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 119, 105, 153,   0,   0,   0,   0,
-    187, 188, 105, 119, 106,   0,   0, 189, 105, 169,   0,   0,   5, 190,   0,   0,
-    191, 105,   0,  84,  84,   0,  81, 192,   5, 105, 105, 156,  27,   0,   0,   0,
-      5,   5,  16,   0,   5, 156,   5, 156,   5, 193,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   5, 194,   0,   0,  84, 195, 196,   0,   0,  25, 192, 119,
-      5,   5, 196,  57, 148,  31,  25, 197,   5, 198, 199, 200,   5,   5, 201,   0,
-    202, 203,   0,   0, 204, 121,   5, 197,  39,  48, 205, 186,   0,   0,   0,   0,
-      5,   5, 206, 207,   5,   5, 208,   0,   0,   0,   0,   0,   5, 209, 210,   0,
-      5, 106, 211,   0,   5, 212,  80,   0,  66, 165,   0,   0,   0,   0,   0,   0,
-      5,  31,   0,   0,   0,   5,   5, 213, 214, 215, 216,   0,   0, 217,  29, 218,
-      5, 219,  25,   5, 220,   0,   5,  31,   0,   0,   0,   0,   0,   0,   0,   0,
-    221, 222, 223, 224, 174, 225,   0,   0, 226, 227, 228, 229, 230,  80,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0, 231,   0,   0,
+      5,   5,   5, 167,   5,   5, 168,   0, 169, 170, 171,   5,   5,  27, 172,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  87,  25,   5, 173,   5, 152, 174,
+      0,   0,   0, 175,   5,   5,   5,  84,   1,   2,   2, 107,   5, 105, 176,   0,
+    177, 178, 179,   0,   5,   5,   5,  74,   0,   0,   5, 180,   0,   0,   0,   0,
+      0,   0,   0,   0,  84,   5, 181,   0,   5,  26,  32,  74,  87,   5, 182,   0,
+      5,   5,   5,   5,  87,  86, 183, 111,   5, 184,   5, 185, 186, 187,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 119, 104, 152, 151, 188,   0,   0,
+    189, 190, 104, 119, 105,   0,   0, 191, 104, 168,   0,   0,   5, 192,   0,   0,
+    193, 104,   0,  84,  84,   0,  81, 194,   5, 104, 104, 155,  27,   0,   0,   0,
+      5,   5,  16,   0,   5, 155,   5, 155,   5, 195,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   5, 196,   0,   0,  84, 197, 198,  25, 199,  25, 194, 119,
+      5,   5, 198, 200, 147,  31, 201, 202,   5, 203, 204, 205,   5,   5, 206,   0,
+    207, 208,   0,   0, 209, 121,   5, 202,  39,  48, 210, 211,   0,   0,   0,   0,
+      5,   5, 212, 199,   5,   5, 213,   0,   0,   0,   0,   0,   5, 214, 215,   0,
+      5, 105, 216,   0,   5, 217,  80,   0,  66, 164, 218,   0,   0,   0,   0,   0,
+      5,  31,   0,   0,   0,   5,   5, 219, 220, 221, 222,   0,   0, 223,  29, 224,
+      5, 225,  25,   5, 226,  25,   5,  31,   0,   0,   0,   0,   0,   0,   0,   0,
+    227, 228, 229, 150, 173, 230,   0,   0, 231, 232, 233, 234, 235,  80,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0, 236,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 169,   0,   0,   0,
-      5,   5,   5, 143,   5,   5,   5,   5,   5,   5, 186,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 168,   0,   0,   0,
+      5,   5,   5, 142,   5,   5,   5,   5,   5,   5, 211,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  25,   5,   5, 181,
+      5, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5, 232,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 218,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,  31, 106,  80,   0,   0,  25, 233,   5,  95, 234, 235,  95,   0,   0,   0,
+      5,  31, 105,  86,   5, 105,  86, 237,   5,  95, 238, 239,  95,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 236,   5, 237,   0,   0, 238,
+      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 240,   5, 241,   0,   0, 242,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 239,
-      5,   5,   5,   5,   5,   5, 105,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 243,
+      5,   5,   5,   5,   5,   5, 104,   0,  16,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5, 106,   0, 240, 199,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5, 112,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5, 241, 242,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,  33,   5, 243, 244, 245,   5, 246, 247, 248,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 249, 250,  89,  33,  33, 134, 134, 221, 221, 251,   5,
-    252, 253,   0,   0,   0,   0,   0,   0,   5, 254, 255,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   5, 256,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5, 192,   0,   5,   5, 257,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 245, 246, 204,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 249,   5, 250, 251, 252,   5, 253, 254, 255,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 256, 257,  89, 249, 249, 258, 258, 227, 227, 259,   5,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,   0,
+    260, 261,   0,   0,   0,   0,   0,   0,   5, 262, 263,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  25, 237,   5, 264,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    245, 258, 259, 260, 261, 262,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 265,
+      5,   5,   5,   5,   5,   5, 194,   0,   5,   5, 266,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    252, 267, 268, 269, 270, 271,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  25,  86,  86,  80,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,  87,   0,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 181,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  31,   5,   5,   5,   5,   5,   5,
      87,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 263,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 272,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  79,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
      87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  32,   0,   0,   0,   0,   0
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 273,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_alphanumeric_table_3[] = {
@@ -3704,14 +3777,14 @@ static RE_UINT8 re_alphanumeric_table_3[] = {
       0,   0, 255,   7, 255, 255, 255, 254, 255, 195, 255, 255, 255, 255, 239,  31,
     254, 225, 255, 159,   0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,
     255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0, 255, 255, 255,   1,
-    255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255, 248,   3, 255, 255,
+    255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255, 248,   3, 255, 255,
     255, 255, 255, 239, 255, 223, 225, 255, 207, 255, 254, 255, 239, 159, 249, 255,
     255, 253, 197, 227, 159,  89, 128, 176, 207, 255,   3,  16, 238, 135, 249, 255,
     255, 253, 109, 195, 135,  25,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255,
     255, 253, 237, 227, 191,  27,   1,   0, 207, 255,   0,  30, 238, 159, 249, 255,
     159,  25, 192, 176, 207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195,
     199,  29, 129,   0, 192, 255,   0,   0, 239, 223, 253, 255, 255, 253, 255, 227,
-    223,  29,  96,   7, 207, 255,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,
+    223,  29,  96,  39, 207, 255,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,
     207, 255,   6,   0, 255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,
     207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,
     192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 127,  32, 255,   3,
@@ -3720,48 +3793,51 @@ static RE_UINT8 re_alphanumeric_table_3[] = {
     255, 255, 255,  31, 255, 255, 127, 249, 255,   3, 255, 255, 255, 255, 255,  63,
     191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61, 255,  61, 255, 255,
     255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  15,   0,
+    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  15, 128,
     255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255, 255,   1, 128,  16,
-    255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1,
-    192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3,
-    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128, 255, 255, 239, 255,
-    239,  15, 255,   3, 255, 243, 255, 255, 191, 255,   3,   0, 255, 255, 127,   0,
+    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1, 192, 255, 255, 255,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3, 255, 255, 255,  15,
+    254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0, 255, 255, 239, 255,
+    239,  31, 255,   3, 255, 243, 255, 255, 191, 255,   3,   0, 255, 255, 127,   0,
     255, 227, 255, 255, 255,   1, 255, 255,   0, 222, 111,   4, 128, 255,  31,   0,
      63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
       0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,  80, 189, 255, 243,
-    224,  67,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0,
-    254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0,
-    255,  31, 255, 255, 255,  15,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255,
-    252, 255, 255, 255, 255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255,
-    191, 255, 255, 255, 255,   0,   0,   0,  47,   0, 255,   3,   0,   0, 252, 232,
-    255, 255,   7,   0, 255, 255, 247, 255,   0, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   7, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95,
-    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,   0,   0, 255,  15,
-      0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183,
-    255,  63, 255,  63, 255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0,
-    255, 255,  15, 255, 255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255,
-    255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254,
-     31,   0,   0,   0, 255,   0, 255,   3, 255,  27,   3,   0, 128,   0, 255, 255,
-     63,   0,   0,   0, 255,   1, 255,   3, 255, 255, 199, 255, 240,   0, 255, 255,
-    255, 255,  71,   0,  30, 192, 255,  23, 255, 255, 251, 255, 255, 255, 159,  64,
-    127, 189, 255, 191, 159,  25, 129, 224, 187,   7, 255, 131,   3,   0,   0,   0,
-    179,   0, 255,   3, 255, 255,  63, 127,   0,   0,   0,  63,  17,   0, 255,   3,
-    255, 255,  63,   1, 255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 153,
-      7,   0, 255,   3, 255, 252, 255, 255,  26,   0,   0,   0, 255, 255, 231, 127,
-    255, 255, 255,  32, 255, 253, 255, 255, 255, 255, 127, 127,   1,   0, 255,   3,
-      0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
-    203,   0, 255,   3, 191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0,
-    127,   0,   0,   0, 255,  63,   0,   0,  15,   0, 255,   3, 248, 255, 255, 224,
+    224,  67,   0,   0,   0,   0, 192, 255,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0, 254,   3,  62,  31,
+    255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0, 255,  31, 255, 255,
+    255,  15,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255, 252, 255, 255, 255,
+    255, 249, 255, 255, 255,   7, 235,   3,   0,   0, 252, 255, 191, 255, 255, 255,
+    255,   0,   0,   0,  47,   0, 255,   3,   0,   0, 252, 232, 255, 255,   7,   0,
+    255, 255, 247, 255,   0, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   7, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255,  63, 255, 255,
+    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
+      0,   0, 248, 255, 255, 255, 252, 255,   0,   0, 255,  15,   0,   0, 223, 255,
+    252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
+    255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+    255, 255, 255, 192, 111, 240, 239, 254,  31,   0,   0,   0, 255,   0, 255,   3,
+    255,  27,   3,   0, 128,   0, 255, 255,  63,   0,   0,   0,   3,   0,   0,   0,
+    192, 255,  62,   0,   4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 199, 255,
+    240,   0, 255, 255, 255, 255,  71,   0,  30, 192, 255,  23, 255, 255, 251, 255,
+    255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,  15,   0,   0,   0,
+    187,   7, 255, 131, 179,   0, 255,   3, 255, 255,  63, 127,   0,   0,   0,  63,
+     17,   0, 255,   3, 255, 255,  63,   1, 127,   0,   0,   0, 255,   3,   0, 128,
+    127, 242, 111, 255, 255, 255, 191, 153,   7,   0, 255,   3, 255, 252, 255, 255,
+     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
+    255, 255, 127, 127,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 203,   0, 255,   3, 191, 253, 255, 255, 255, 127, 123,   1,
+      0,   0,   1,   0, 255,  63,   0,   0,  15,   0, 255,   3, 248, 255, 255, 224,
     255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
-      0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223,
-    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
-     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 247, 207, 255, 255,
+      0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0, 255,   7, 255,  31,
+    255,   1, 255,  67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
     127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 128,  63, 255,  67,   0,   0,
-    255,  15, 255,   3, 143,   8, 255,   3, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255,  15, 255,   3, 127, 111, 255, 127, 143,   8, 255,   3, 150, 254, 247,  10,
+    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
+      3,   0, 255, 255, 255,   7,   0,   0
 };
 
 RE_UINT32 re_get_alphanumeric(RE_UINT32 codepoint) {
@@ -3809,67 +3885,67 @@ static RE_UINT8 re_bidi_class_table_1[] = {
     19, 13, 20, 21, 22, 23, 24, 25, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 26, 27, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 28,
-    13, 13, 13, 13, 29, 30, 31, 13, 32, 13, 33, 34, 35, 36, 37, 38,
+    13, 13, 13, 29, 30, 31, 32, 13, 33, 13, 34, 35, 36, 37, 38, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
-    39, 40, 40, 40, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
+    40, 41, 41, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39
 };
 
 static RE_UINT16 re_bidi_class_table_2[] = {
@@ -3877,84 +3953,86 @@ static RE_UINT16 re_bidi_class_table_2[] = {
       7,   7,   7,   7,   7,   8,   9,  10,  11,  11,  11,  12,  13,   7,   7,  14,
       7,   7,   7,   7,  15,   7,   7,   7,   7,   7,   7,   7,  16,  17,  18,  19,
      20,  21,  22,  23,  21,  21,  24,  25,  26,  27,  28,  21,  21,  29,  19,  30,
-     31,  32,  33,  34,  19,  21,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+     31,  32,  33,  21,  34,  21,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
      45,  42,  46,  47,  45,  42,  48,  49,  41,  50,  51,  40,  52,   7,  53,  54,
      55,  56,  57,  58,  41,  42,  59,  40,  60,  61,  43,  40,  41,   7,  62,   7,
       7,  63,  64,   7,   7,  65,  66,   7,  67,  68,   7,  69,  70,  71,  72,   7,
       7,  73,  74,  75,  76,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,  77,   7,  78,   7,   7,   7,
      79,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,  80,   7,   7,   7,  81,  81,  82,  82,   7,  83,  84,  78,
+      7,   7,   7,   7,  80,   7,   7,   7,  81,  82,  82,  82,   7,  83,  84,  78,
      85,   7,   7,   7,  86,  87,   7,   7,   7,  88,  89,   7,   7,   7,  90,  91,
      92,   7,  93,  94,   7,  95,  96,   7,  97,  98,  52,  99,  60, 100,   7, 101,
-      7, 102,   7,   7,   7,   7, 103, 104,   7,   7,   7,   7,   7,   7,  11, 105,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 106, 107, 108,
-    109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,   7, 120,  91,  91,  91,
-    121,  91,  91,  91,  91,  91,  91,  91,  91, 122,   7, 123, 124,  91,  91,  91,
-     91, 125, 126,  91, 127,   7,   7, 128,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91, 129,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      7, 102,   7,   7,   7,   7, 103, 104,   7,   7,   7,   7,   7,   7,  11,  11,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 105, 106, 107,
+    108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,   7, 119,  91,  91,  91,
+    120,  91,  91,  91,  91,  91,  91,  91,  91, 121,   7, 122, 123,  91,  91,  91,
+     91, 124, 125,  91, 126,   7,   7, 127,  91,  91,  91,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91, 128,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
       7,   7,   7,   7,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91, 130, 131,  91,  91,  91,
-      7,   7,   7,   7,   7,   7,   7, 132,   7,   7,   7, 133,   7,   7,   7,  11,
-     91,  91, 134,   7, 135,  91,  91, 136,  91,  91,  91,  91,  91,  91, 122, 137,
-    138, 139,   7,   7, 140,  79,   7, 141,   7,   7,   7,   7,   7,   7,  91, 142,
-    143,   7, 144, 145,   7, 146, 147,   7,   7,   7,   7, 148,   7,   7,  90, 149,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91, 129, 130,  91,  91,  91,
+      7,   7,   7,   7,   7,   7,   7, 131,   7,   7,   7, 132,   7,   7,   7,  11,
+     91,  91, 133,   7, 134,  91,  91, 135,  91,  91,  91,  91,  91,  91, 121, 136,
+    137, 138,   7,   7, 139,  79,   7, 140,   7,   7,   7,   7,   7,   7,  91, 141,
+    142,   7, 143, 144,   7, 145, 146,   7,   7,   7,   7, 147,   7,   7,  90, 148,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,  91,  91,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7, 144,  91, 125,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-    150,   7,   7, 151,  56,   7,   7, 152,  91, 153,   7,   7, 154,   7,   7,   7,
+      7,   7,   7,   7, 143,  91, 124,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+    149,   7,   7, 150, 151,   7,   7, 152,  91, 153,   7,   7, 154,   7,   7,   7,
     155, 156,   7, 157,   7,   7, 158, 159,   7, 160, 161,   7,  37, 162,   7, 163,
       7, 164, 165,  42,   7, 166,  41, 167,   7,   7,   7, 168,   7,   7,   7, 169,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7, 170, 171, 172,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21, 173,  21,  21,  21,  21, 174, 175,
-    176, 177, 178, 179,  21,  21,  21, 180, 181,   2,   2, 182,   7,   7,   7, 183,
-      7,   7,   7,   7,   7,   7,   7,   7, 184,   7,  91,  91, 185,  79,   7, 186,
-      7,   7,   7,   7,   7,   7,   7, 187,   7,   7,   7, 188,   7,   7,   7,   7,
-     19,  19,  19,  19,  19,  19,  19,  19, 189,  19,  19,  19,  19,  19,  19,  19,
-    190, 191,  19,  19,  19,  19,  19, 192,  19, 193,  19,  19,  19,  19,  19,  19,
-     19,  19,  19,  19,  19,  19,  19,  19,  21, 194,  19,  19,  19,  19,  19,  19,
-     19,  19,  19, 195,  19, 196,  19,  19,  19, 172,  29,  34,  19,  19,  19,  19,
-     41, 197, 198, 199,  60, 200,   7,   7,  37, 201,   7, 202,  60, 203, 204,   7,
-      7, 205,   7,   7,   7,   7, 133, 206,  60,  61,  96, 207,   7,   7,   7,   7,
-      7, 197, 208,   7,   7, 209, 210,   7,   7,   7,   7,   7,   7, 211, 212,   7,
-      7, 213,  96, 214,   7, 215,   7,   7,  77, 216,   7,   7,   7,   7,   7,   7,
-      7, 217,   7,   7,   7,   7,   7,   7,   7, 218, 219,   7,   7,   7, 220,  96,
-    221, 222, 223,   7, 224,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 225,   7,   7, 226, 227,   7,   7,   7, 228, 229,   7, 230,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 231,   7,   7,   7,   7,   7,   7, 232, 233,
+     21,  21,  21,  21,  21,  21,  21,  21,  21, 173, 174,  21,  21,  21, 175, 176,
+    177, 178, 179, 180,  21,  21,  21, 181, 182,   2,   2, 183,   7,   7,   7, 184,
+      7,   7,   7,   7,   7,   7,   7,   7, 185,   7,  91,  91, 186,  79,   7, 187,
+      7,   7,   7,   7,   7,   7,   7, 188,   7,   7,   7, 189,   7,   7,   7,   7,
+     19,  19,  19,  19,  19,  19,  19,  19, 190,  19,  19,  19,  19,  19,  19,  19,
+    191, 192,  19,  19,  19,  19,  19, 193,  19, 194,  19,  19,  19,  19,  19,  19,
+     19,  19,  19,  19,  19,  19,  19,  19,  21, 195,  19,  19,  19,  19,  19,  19,
+     19,  19,  19, 196,  19, 197,  19,  19,  19, 172,  29, 198, 199,  19,  19,  19,
+     41, 200, 201, 202,  60, 203,  52,   7,  37, 204,   7, 205,  60, 206, 207,   7,
+      7, 208,   7,   7,   7,   7, 132, 209,  60,  61, 210, 211,   7,   7,   7,   7,
+      7, 200, 212,   7,   7, 213, 214,   7,   7,   7,   7,   7,   7, 215, 216,   7,
+      7, 217, 210, 218,   7, 219,   7,   7,  77, 220,   7,   7,   7,   7,   7,   7,
+      7, 221,   7,   7,   7,   7,   7,   7,   7, 222, 223,   7,   7,   7, 224, 210,
+    225, 226, 227,   7, 228,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+      7, 229,   7,   7, 230, 231,   7,   7,   7, 232, 233,   7, 234,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 235,   7,   7,   7,   7,   7,   7, 236, 237,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 238,   7, 239,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 234,   7, 235,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 240,   7, 241,   7,   7, 242,
+      7,   7,   7,   7, 243, 244,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 236,   7, 237,   7,   7, 238,
-      7,   7,   7,   7, 239, 240,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 241, 242, 243,   7,   7,
-     91,  91, 244,   7,   7,   7,   7,   7,  91,  91, 245,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,  11, 245, 246,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 247, 248, 249,   7, 250,
+     91,  91, 251,   7,   7,   7,   7,   7,  91,  91, 252,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7, 141,   7, 246,   7, 247,   7, 248,   7, 249, 250,
+      7,   7,   7,   7,   7,   7, 140,   7, 253,   7, 254,   7, 255,   7, 256, 257,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-     11, 251,  11, 252, 253, 254,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-    255, 256,   7,   7,   7,   7,   7,   7,   7, 235,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 257,   7,   7,   7,   7,   7,   7,   7,   7,
-     19,  19,  19,  19,  19,  19, 258,  19,  19,  19, 259,  19,  19,  19,  19,  19,
+     11, 258,  11, 259, 260, 261,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+    262, 263,   7,   7,   7,   7,   7,   7,   7, 239,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 264,   7, 265,   7,   7,   7,   7,   7,   7,   7,   7,
+     19,  19,  19,  19,  19,  19, 266,  19,  19,  19, 267,  19,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
-     19,  19,  19, 172,  21,  21,  19,  19,  21,  21,  34,  19,  19,  19,  19,  19,
-     21,  21,  21,  21,  21,  21,  21, 260,  19,  19,  19,  19,  19,  19,  19,  19,
-     91, 261,  91,  91, 136, 262, 263, 122, 264, 247,   7, 265,   7, 266,   7,   7,
-      7,   7,   7, 182,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
+     19,  19,  19, 172,  21,  21,  19,  19,  21,  21, 198,  19,  19,  19,  19,  19,
+     21,  21,  21,  21,  21,  21,  21, 268,  19,  19,  19,  19,  19,  19,  19,  19,
+     91, 269,  91,  91, 135, 270, 271, 121, 272, 254,   7, 273,   7, 274,   7,   7,
+      7,   7,   7, 183,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91,  91, 267, 185,  91,  91,  91, 136,  91,  91, 268, 269,
-    261,  91, 270,  91, 271, 272,   7,   7,  91,  91,  91, 273,  91,  91, 129,  91,
-     91,  91, 136, 274, 275, 276, 277,   7,  91,  91,  91,  91, 278,  91, 126, 279,
+     91,  91,  91,  91,  91,  91, 275, 186,  91,  91,  91, 135,  91,  91, 276, 277,
+    269,  91, 278,  91, 279, 280,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
+     91,  91, 135, 281, 282, 283, 284, 285,  91,  91,  91,  91, 286,  91, 125, 287,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 280,
-    281, 281, 281, 281, 281, 281, 281, 281,  11,  11,  11,  11,  11,  11,  11, 282,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 288,
+    289, 289, 289, 289, 289, 289, 289, 289,  11,  11,  11,  11,  11,  11,  11, 290,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289
 };
 
 static RE_UINT8 re_bidi_class_table_3[] = {
@@ -4027,9 +4105,9 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 11, 11, 11, 11,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    12, 12, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4071,7 +4149,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10,  0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0, 10, 10,
     10,  0,  0,  0,  0,  0, 10, 10, 10,  0, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4128,7 +4206,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0,  0, 10,  0,  0, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  6,  0, 10,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 10, 10, 10,  1,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 10, 10, 10,  1, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4150,7 +4228,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4168,8 +4246,6 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0, 10,  0,  0,
      0,  0,  0,  0, 10,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,
@@ -4227,7 +4303,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4263,6 +4339,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
     10, 10, 10,  5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  5,  5,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4306,10 +4384,12 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,  5,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -4351,13 +4431,17 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
+    10,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 10, 10, 10, 10,  0,  0, 10, 10,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10,  0, 10, 10, 10,
@@ -4372,6 +4456,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10,  0,  0, 10,  0, 10, 10,  0,  0,  0,  0,  0,  0, 10,  0,
      0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,
     10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 10, 10, 10,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4440,12 +4526,18 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,  0,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 10, 10, 10,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1, 10, 10, 10, 10, 10,
     10, 10, 10,  0,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5, 10, 10, 10,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4471,6 +4563,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0, 10, 10, 10, 10, 10,
     10, 10,  0, 10, 10,  0, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,
@@ -4493,26 +4587,26 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
-     5,  5,  5,  5,  5,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  0,  0,  0,  5,  5,  5,  5,  5,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4645,13 +4739,13 @@ static RE_UINT8 re_bidi_mirrored_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24, 25, 26, 27,
     28, 29, 30, 31, 32, 33, 34, 35,  0,  0,  0,  0,  0,  0,  0, 36,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    37, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    37, 38, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    40,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 40, 41,  0,  0,  0,  0,  1,  2, 42, 43,  0,  0,  0,  0,
+     0,  0, 41, 42,  0,  0,  0,  0,  1,  2, 43, 44,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 44,  0, 45,  0, 46,  0, 47,  0, 48,  0
+     0,  0,  0,  0,  0,  0, 45,  0, 46,  0, 47,  0, 48,  0, 49,  0
 };
 
 static RE_UINT8 re_bidi_mirrored_table_3[] = {
@@ -4664,10 +4758,10 @@ static RE_UINT8 re_bidi_mirrored_table_3[] = {
     248, 255, 255, 249, 253, 255,   0,   1,  63, 194,  55,  31,  58,   3, 240,  51,
       0, 252, 255, 223,  83, 122,  48, 112,   0,   0, 128,   1,  48, 188,  25, 254,
     255, 255, 255, 255, 207, 191, 255, 255, 255, 255, 127,  80, 124, 112, 136,  47,
-      0,   0,   0,  64,  60,  54,   0,  48, 255,   3,   0,   0,   0, 255, 243,  15,
-      0,   0,   0, 126,  48,   0,   0,   0,   0,   0,   0, 168,  13,   0,   0,   0,
-      0,   0,   0,   8,   0,   0,  32,   0,   0, 128,   0,   0,   0,   2,   0,   0,
-      8,   0,   0,   0
+      0,   0,   0,  64,  60,  54,   0,  48, 255,   3,   0,   0,   0,   0, 224,  31,
+      0, 255, 243,  15,   0,   0,   0, 126,  48,   0,   0,   0,   0,   0,   0, 168,
+     13,   0,   0,   0,   0,   0,   0,   8,   0,   0,  32,   0,   0, 128,   0,   0,
+      0,   2,   0,   0,   8,   0,   0,   0
 };
 
 RE_UINT32 re_get_bidi_mirrored(RE_UINT32 codepoint) {
@@ -4717,15 +4811,15 @@ static RE_UINT8 re_block_table_1[] = {
     13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 18, 19, 19, 19, 19, 19,
     19, 19, 19, 19, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 24, 25,
-    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 37, 38, 36, 36,
-    36, 39, 36, 36, 36, 36, 36, 36, 36, 36, 40, 41, 42, 42, 42, 42,
-    42, 42, 43, 44, 36, 36, 36, 36, 36, 36, 36, 36, 45, 36, 36, 46,
-    36, 36, 36, 36, 47, 48, 49, 36, 50, 36, 51, 52, 53, 54, 55, 36,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 58, 58, 58, 59, 60, 61,
-    61, 61, 61, 62, 63, 63, 63, 63, 63, 63, 64, 36, 36, 36, 65, 36,
-    66, 66, 66, 66, 67, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 36, 36,
+    36, 40, 36, 36, 36, 36, 36, 36, 36, 36, 41, 42, 43, 43, 43, 43,
+    43, 43, 44, 45, 36, 36, 36, 36, 36, 36, 36, 46, 47, 36, 36, 48,
+    36, 36, 36, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 36,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 63, 63, 63, 64, 65, 66,
+    66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 69, 36, 36, 36, 70, 36,
+    71, 71, 71, 71, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -4769,18 +4863,18 @@ static RE_UINT8 re_block_table_1[] = {
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-    68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+    73, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75
 };
 
 static RE_UINT16 re_block_table_2[] = {
@@ -4837,95 +4931,105 @@ static RE_UINT16 re_block_table_2[] = {
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     179, 180, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 185,
     186, 186, 186, 186, 187, 187, 187, 187, 188, 188, 189, 189, 190, 191, 192, 193,
-     26,  26,  26,  26, 194, 195, 195, 196, 197, 198, 199, 200, 201, 202, 202,  26,
-    203, 203, 204, 205, 206, 207, 208, 208, 209, 210, 211, 212,  26,  26,  26,  26,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,  26,  26,  26,  26,
-    214, 214, 215, 216, 217, 218,  26, 219, 220, 221,  26,  26, 222, 223, 223, 223,
-    224, 224, 224, 225, 226,  26, 227, 227, 228, 228, 229, 230, 231, 232,  26,  26,
-    233, 233, 234,  26, 235, 235, 235, 235, 236, 236,  26,  26,  26,  26,  26,  26,
-     26,  26,  26, 237, 238, 238,  26,  26, 239, 240, 241, 242,  26, 243, 244, 245,
-    246, 246, 246, 246, 247, 247, 248, 249, 250, 250, 251, 252, 253, 253, 253, 254,
-    255, 255, 256,  26, 257, 258, 259, 259, 260, 260, 260, 260,  26,  26,  26,  26,
-    261, 261, 261, 261, 262, 262, 262,  26,  26,  26,  26,  26, 263, 263, 263, 263,
-    264, 264, 264, 265, 266, 266, 267,  26, 268, 268,  26,  26,  26,  26,  26,  26,
-    269, 269, 270,  26,  26, 271, 271, 271, 272, 272, 272,  26,  26, 273, 273, 273,
-    274, 274, 275, 276, 276, 277, 278, 278,  26,  26,  26,  26,  26,  26,  26,  26,
-    279, 279, 279, 280, 281, 281,  26,  26, 282, 282, 282, 283, 283, 284,  26,  26,
-     26,  26,  26,  26,  26,  26,  26, 285,  26,  26,  26,  26,  26, 286, 287, 287,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    289, 289, 289, 289, 290, 290, 290, 290, 290, 290, 291,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-    292, 293,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
-    294, 294, 294, 294,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
-    295, 295, 296, 297,  26,  26, 298, 299, 300, 300, 300, 300, 301,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26, 302, 302, 302,  26,  26,  26, 303, 303, 303, 303, 303,  26,  26, 304,
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-    306, 306, 306, 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, 307, 307, 307,
-    307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 309,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    310, 310, 310, 310, 310, 310, 310, 310, 311, 312, 313, 314, 315, 315, 315, 315,
-    315, 315, 315, 315, 315, 315, 315, 315,  26,  26,  26,  26,  26,  26,  26,  26,
-    316, 316, 316, 316, 316, 317,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    318, 318, 318, 318, 318, 318, 318, 318, 319, 319, 319, 319, 319, 319, 319, 319,
-    320, 320, 321,  26,  26,  26,  26, 322, 323, 323, 323, 324,  26,  26,  26,  26,
-    325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
-    325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
-    326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
-    326, 326, 326, 326, 326, 327,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    328, 329,  26,  26,  26,  26,  26,  26, 330, 330, 331,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26, 332, 332,  26,  26,  26,  26,  26,  26,  26,  26,
-    333, 333, 333, 333, 333, 333, 333,  26, 334, 334, 334,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26, 335, 336, 336,  26,  26, 337, 337, 338,  26,  26,  26,  26,  26,
-    339, 339, 339, 339, 339, 339, 339, 339,  26,  26,  26,  26,  26,  26,  26,  26,
-    340, 341, 342, 342, 342, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344,
-    345, 345, 345, 345, 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, 346, 346,
-    346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
-    347, 347, 348, 349, 350, 350, 350, 350, 351, 351, 351, 351, 352, 352, 352, 352,
-    353, 353, 353, 353, 353, 353, 353, 353, 354, 354, 354, 354, 354, 354, 354, 354,
-    355, 355, 355, 356, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 358, 358,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359,  26, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+    194, 194, 194, 194, 195, 196, 196, 197, 198, 199, 200, 201, 202, 203, 203, 194,
+    204, 204, 205, 206, 207, 208, 209, 209, 210, 211, 212, 213, 214, 214, 194, 194,
+    215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 216, 194, 194,
+    217, 217, 218, 219, 220, 221, 194, 222, 223, 224, 194, 194, 225, 226, 226, 226,
+    227, 227, 227, 228, 229, 194, 230, 230, 231, 231, 232, 233, 234, 235, 194, 194,
+    236, 236, 237, 194, 238, 238, 238, 238, 239, 239, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 240, 241, 241, 194, 194, 242, 243, 244, 245, 246, 247, 248, 249,
+    250, 250, 250, 250, 251, 251, 252, 253, 254, 254, 255, 256, 257, 257, 257, 258,
+    259, 259, 260, 194, 261, 262, 263, 263, 264, 264, 264, 264, 194, 194, 194, 194,
+    265, 265, 265, 265, 266, 266, 266, 194, 194, 194, 194, 194, 267, 267, 267, 267,
+    268, 268, 268, 269, 270, 270, 271, 194, 272, 272, 273, 194, 194, 194, 194, 194,
+    274, 274, 275, 194, 194, 276, 276, 276, 277, 277, 277, 194, 194, 278, 278, 278,
+    279, 279, 280, 281, 281, 282, 283, 283, 194, 194, 194, 194, 194, 194, 194, 194,
+    284, 284, 284, 285, 286, 286, 194, 194, 287, 287, 287, 288, 288, 289, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 290, 194, 194, 194, 194, 194, 291, 292, 292,
+    293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
+    293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
+    294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 296, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 297, 298, 298, 298,
+    299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+    299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+    299, 300, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
+    301, 301, 301, 301, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
+    302, 302, 303, 304, 305, 305, 306, 307, 308, 308, 308, 308, 309, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 310, 310, 310, 194, 194, 194, 311, 311, 311, 311, 311, 194, 194, 312,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 315, 315, 315, 315,
+    315, 315, 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 317,
+    318, 318, 318, 318, 318, 318, 318, 318, 319, 320, 321, 322, 323, 323, 323, 323,
+    323, 323, 323, 323, 323, 323, 323, 323, 194, 194, 194, 194, 194, 194, 194, 194,
+    324, 324, 324, 324, 324, 325, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 326, 326, 326, 326, 326, 326, 327, 194,
+    328, 328, 328, 328, 328, 328, 328, 328, 329, 329, 329, 329, 329, 329, 329, 329,
+    330, 330, 331, 194, 194, 194, 194, 332, 333, 333, 333, 334, 194, 194, 194, 194,
+    335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+    335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+    336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+    336, 336, 336, 336, 336, 337, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 338, 338, 338, 338, 338, 338, 338, 338,
+    339, 340, 194, 194, 194, 194, 194, 194, 341, 341, 342, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 343, 344, 345, 345, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 346,
+    347, 347, 347, 347, 347, 347, 347, 194, 348, 348, 348, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 349, 350, 350, 194, 194, 351, 351, 352, 194, 194, 194, 194, 194,
+    353, 353, 353, 353, 353, 353, 353, 353, 194, 194, 194, 194, 194, 194, 194, 194,
+    354, 355, 356, 356, 356, 357, 357, 357, 358, 358, 358, 358, 358, 358, 358, 358,
+    359, 359, 359, 359, 359, 359, 359, 359, 360, 360, 360, 360, 360, 360, 360, 360,
     360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 361, 361, 361, 361, 361,
-    361, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365,
-    366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-    366,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368,  26,  26,  26,  26,  26,
-    369, 369, 369, 369,  26,  26,  26,  26, 370, 370, 370, 370, 370, 370, 370, 371,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
-    372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
+    361, 361, 362, 363, 364, 364, 364, 364, 365, 365, 365, 365, 366, 366, 366, 366,
+    367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368,
+    369, 369, 369, 370, 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372,
+    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
+    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
     373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
-    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373
+    373, 373, 373, 373, 373, 373, 373, 194, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 375,
+    375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379,
+    380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+    380, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 194, 194, 194, 194, 194,
+    383, 383, 383, 383, 194, 194, 194, 194, 384, 384, 384, 384, 384, 384, 384, 385,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+    386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+    387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+    387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387
 };
 
 static RE_UINT16 re_block_table_3[] = {
@@ -4980,9 +5084,7 @@ static RE_UINT16 re_block_table_3[] = {
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
      20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
@@ -5041,7 +5143,6 @@ static RE_UINT16 re_block_table_3[] = {
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
-     49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -5053,38 +5154,39 @@ static RE_UINT16 re_block_table_3[] = {
      52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,
      53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
      53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
+     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
      55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
-     61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
-     64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
-     64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
+     63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
+     63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
+     65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
+     65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
+     67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,
@@ -5095,7 +5197,6 @@ static RE_UINT16 re_block_table_3[] = {
      71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
-     72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
@@ -5111,12 +5212,13 @@ static RE_UINT16 re_block_table_3[] = {
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-     77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
      79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
+     79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
      80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
      80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
@@ -5137,9 +5239,9 @@ static RE_UINT16 re_block_table_3[] = {
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
@@ -5157,12 +5259,12 @@ static RE_UINT16 re_block_table_3[] = {
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
@@ -5171,9 +5273,9 @@ static RE_UINT16 re_block_table_3[] = {
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
@@ -5181,19 +5283,19 @@ static RE_UINT16 re_block_table_3[] = {
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
@@ -5205,14 +5307,14 @@ static RE_UINT16 re_block_table_3[] = {
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
     121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
@@ -5225,9 +5327,9 @@ static RE_UINT16 re_block_table_3[] = {
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
@@ -5235,12 +5337,12 @@ static RE_UINT16 re_block_table_3[] = {
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
@@ -5255,17 +5357,16 @@ static RE_UINT16 re_block_table_3[] = {
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
@@ -5273,6 +5374,7 @@ static RE_UINT16 re_block_table_3[] = {
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
@@ -5283,25 +5385,25 @@ static RE_UINT16 re_block_table_3[] = {
     153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
     154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
     154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
     157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
     158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
     159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
-    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
     160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
     160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
     161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
     161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
-    164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+    163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
+    163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
     164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
     165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
     165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
@@ -5309,35 +5411,36 @@ static RE_UINT16 re_block_table_3[] = {
     166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
-    167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
-    168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
+    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
     170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+    170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
     171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
     172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
     172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
     173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
     173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
     174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
     174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-    175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+    174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
     175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
     175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
     176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
     176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+    176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
     177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
     177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
-    178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
@@ -5353,26 +5456,27 @@ static RE_UINT16 re_block_table_3[] = {
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
-    183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
+    184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
     185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
     186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
     186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
     188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-    188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
     189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
     190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
     190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
     191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
     191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+    191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
     192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
     193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
@@ -5393,129 +5497,127 @@ static RE_UINT16 re_block_table_3[] = {
     200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
     201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
     201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
-    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
     202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
     202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
     203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
     204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
     204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
+    204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
     205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
     205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
     206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
     207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
     207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
-    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
     208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
     208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-    208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-    208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
     210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
+    210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
+    211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
+    211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
+    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
     214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
-    214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
-    215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
     220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
-    220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
     221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
     221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
     222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
     222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
     224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+    224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
     225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
     225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
     226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
     226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
     227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
     227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
-    227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
     228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
     229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
     229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
-    229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
     231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
     231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
+    231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
     232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
     232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
     234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
     235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
     236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
     236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
-    236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
     238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
     239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-    239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-    239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
     240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+    241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
     241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
     242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
     242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
+    242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
     243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
     243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
     244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
     244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
-    245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
+    244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
     245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-    246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-    246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
+    247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
     247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
     248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
     248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
@@ -5532,8 +5634,6 @@ static RE_UINT16 re_block_table_3[] = {
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
     253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
     254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
     254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
@@ -5541,10 +5641,14 @@ static RE_UINT16 re_block_table_3[] = {
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
     256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
     256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
+    256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
+    257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
+    257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
     258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
+    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
@@ -5553,36 +5657,32 @@ static RE_UINT16 re_block_table_3[] = {
     260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
     261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
     261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
-    262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
-    262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
     263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
-    263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
     264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
     264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
     265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
     266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
     266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
-    268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
     268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
     268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
     270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
     272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
-    273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
-    273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
@@ -5591,60 +5691,64 @@ static RE_UINT16 re_block_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
     275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
-    275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
     276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
     277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
     277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+    277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
     278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
     279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
-    279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
-    280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
     280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
     280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
     281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
     283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
-    283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
     284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
     284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+    284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
     285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
     285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
     287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
     288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
     288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
     290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
     291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+    291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
     292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
     292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
     293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
     294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
     294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
     296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
-    296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
     297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
     297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
     298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
@@ -5653,30 +5757,58 @@ static RE_UINT16 re_block_table_3[] = {
     299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
     300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
     300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
+    300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
     302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
     303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
     304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
     304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
-    304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
     305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
     306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
     306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
     307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+    307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
+    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
     308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
-    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308
+    309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
+    309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
+    310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+    310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+    312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
+    312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+    317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
+    319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
+    320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
+    320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320
 };
 
 RE_UINT32 re_get_block(RE_UINT32 codepoint) {
@@ -5773,59 +5905,59 @@ static RE_UINT8 re_canonical_combining_class_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   1,   2,   3,   4,   0,   0,   0,   0,
       0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   6,   7,   8,   0,
       9,   0,  10,  11,   0,   0,  12,  13,  14,  15,  16,   0,   0,   0,   0,  17,
-     18,  19,  20,   0,   0,   0,  21,  22,   0,  23,  24,   0,   0,  23,  25,  26,
-      0,  23,  25,   0,   0,  23,  25,   0,   0,  23,  25,   0,   0,   0,  25,   0,
-      0,   0,  27,   0,   0,  23,  25,   0,   0,  28,  25,   0,   0,   0,  29,   0,
-      0,  30,  31,   0,   0,  32,  33,   0,  34,  35,   0,  36,  37,   0,  38,   0,
-      0,  39,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  41,   0,   0,   0,   0,   0,
+     18,  19,  20,   0,  21,   0,  22,  23,   0,  24,  25,   0,   0,  24,  26,  27,
+      0,  24,  26,   0,   0,  24,  26,   0,   0,  24,  26,   0,   0,   0,  26,   0,
+      0,  24,  28,   0,   0,  24,  26,   0,   0,  29,  26,   0,   0,   0,  30,   0,
+      0,  31,  32,   0,   0,  33,  34,   0,  35,  36,   0,  37,  38,   0,  39,   0,
+      0,  40,   0,   0,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  42,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  42,  42,   0,   0,   0,   0,  43,   0,
-      0,   0,   0,   0,   0,  44,   0,   0,   0,  45,   0,   0,   0,   0,   0,   0,
-     46,   0,   0,  47,   0,  48,  49,   0,   0,  50,  51,  52,   0,  53,   0,  54,
-      0,  55,   0,   0,   0,   0,  56,  57,   0,   0,   0,   0,   0,   0,  58,  59,
+      0,   0,   0,   0,   0,   0,   0,   0,  43,  44,   0,   0,   0,   0,  45,   0,
+      0,   0,   0,   0,   0,  46,   0,   0,   0,  47,   0,   0,   0,   0,   0,   0,
+     48,   0,   0,  49,   0,  50,  51,   0,   0,  52,  53,  54,   0,  55,   0,  56,
+      0,  57,   0,   0,   0,   0,  58,  59,   0,   0,   0,   0,   0,   0,  60,  61,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  60,  61,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,  62,  63,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  62,   0,   0,   0,  63,   0,   0,   0,  64,
+      0,   0,   0,   0,   0,   0,   0,  64,   0,   0,   0,  65,   0,   0,   0,  66,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  65,   0,   0,  66,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  67,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  67,  68,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
-     70,  71,   0,   0,   0,   0,  51,  72,   0,  73,  74,   0,   0,  75,  76,   0,
-      0,   0,   0,   0,   0,  77,  78,  79,   0,   0,   0,   0,   0,   0,   0,  25,
+      0,   0,   0,  69,  70,   0,   0,  71,   0,   0,   0,   0,   0,   0,   0,   0,
+     72,  73,   0,   0,   0,   0,  53,  74,   0,  75,  76,   0,   0,  77,  78,   0,
+      0,   0,   0,   0,   0,  79,  80,  81,   0,   0,   0,   0,   0,   0,   0,  26,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  82,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  82,
-      0,   0,   0,   0,   0,   0,   0,  49,   0,   0,   0,  83,   0,   0,   0,   0,
+      0,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  84,
+      0,   0,   0,   0,   0,   0,   0,  85,   0,   0,   0,  86,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     84,  85,   0,   0,   0,   0,   0,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  88,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,
-      0,   0,  70,  63,   0,  90,   0,   0,  91,  92,   0,  75,   0,   0,  93,   0,
-      0,  94,   0,   0,   0,   0,   0,  95,   0,  96,  25,  97,   0,   0,   0,   0,
-      0,   0,  98,   0,   0,   0,  99,   0,   0,   0,   0,   0,   0,  63, 100,   0,
-      0,  63,   0,   0,   0, 101,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
-      0,  90,   0,   0,   0,   0,   0,   0,   0, 103, 104,   0,   0,   0,   0,  76,
-      0,  42, 105,   0, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  63,   0,   0,   0,   0,   0,   0,   0,   0, 107,   0, 108,   0,   0,   0,
+     87,  88,   0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  90,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  91,   0,   0,   0,   0,  92,   0,  93,   0,   0,   0,
+      0,   0,  72,  94,   0,  95,   0,   0,  96,  97,   0,  77,   0,   0,  98,   0,
+      0,  99,   0,   0,   0,   0,   0, 100,   0, 101,  26, 102,   0,   0,   0,   0,
+      0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,  65, 105,   0,
+      0,  65,   0,   0,   0, 106,   0,   0,   0, 107,   0,   0,   0,   0,   0,   0,
+      0,  95,   0,   0,   0,   0,   0,   0,   0, 108, 109,   0,   0,   0,   0,  78,
+      0,  44, 110,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  65,   0,   0,   0,   0,   0,   0,   0,   0, 112,   0, 113,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 109,   0, 110,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 114,   0, 115,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 111,
-      0,   0,   0,   0, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 116,
+      0,   0,   0,   0, 117,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113, 114, 115,   0,   0,
-      0,   0, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    117, 118,   0,   0,   0,   0,   0,   0,   0, 110,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 120,   0,   0,   0, 121,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118, 119, 120,   0,   0,
+      0,   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    122, 123,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 124,   0, 125,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 126,   0,   0,   0, 127,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -5873,7 +6005,9 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  1,  3,  3,  3,  1,  1,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  3,
+     3,  3,  3,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  0,  3,  1,  1,  3,  1,  1,  3,  1,  1,  1,  3,  3,  3,
     31, 32, 33,  1,  1,  1,  3,  1,  1,  3,  3,  1,  1,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -5915,6 +6049,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 39, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,
@@ -5928,7 +6064,7 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  3,  3,  3,  3,  3,  3,  1,  1,  3,  0,  3,
-     3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     3,  1,  1,  3,  3,  1,  1,  1,  1,  1,  3,  1,  1,  1,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -5949,7 +6085,7 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      1,  1,  3,  1,  1,  1,  1,  1,  1,  1,  3,  1,  1,  9, 49,  3,
      5,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  2, 11, 11,  3,  0,  1,  8,  3,  1,  3,
+     1,  1,  1,  1,  1,  1,  2, 11, 11,  3, 50,  1,  8,  3,  1,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  6,  6,  1,  1,  1,  1,  6,  6,  6,  1,  1,  0,  0,  0,
      0,  1,  0,  0,  0,  6,  6,  1,  3,  1,  6,  6,  3,  3,  3,  3,
@@ -5996,6 +6132,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,
+     3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  1,
@@ -6010,6 +6148,10 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  3,  3,  1,  1,  1,  3,  1,  3,  3,  3,
      3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 39,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 39, 38,  0,  0,  0,  0,  0,
      1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -6068,6 +6210,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,
      1,  1,  0,  1,  1,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -6102,7 +6246,7 @@ static RE_UINT8 re_cased_table_1[] = {
      2, 12,  2, 13,  2,  2, 14,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 15,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2, 16,  2,  2,  2,  2, 17,  2, 18,  2,  2,  2,
+     2,  2,  2,  2,  2, 16,  2, 17,  2,  2, 18,  2, 19,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -6180,29 +6324,31 @@ static RE_UINT8 re_cased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 35,  4, 36,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4, 37, 38,  4,  4,  4,  4, 39,  4, 40,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4, 37,  4, 38,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 41, 25,  0,  0,  0,  0, 42,  4,  4, 43,  4, 44, 45,
+     0,  0,  4, 39, 25,  0,  0,  0,  0, 40,  4,  4, 41,  4, 42, 43,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 46,  5, 23,  4,  4,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 44,  5, 23,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 45,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,
-     4,  4, 48,  0,  0, 46, 49, 50,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  4, 51,  4, 51,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4, 46,  0,  0, 44, 47, 48,  0,  0,  0, 49, 50, 51,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 53,  0,  0,
+     0,  0,  0,  0,  4, 54,  4, 54,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4,  4, 52,  4, 53, 54, 55,  4, 56, 57, 58,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4, 59, 60,  5, 52, 52, 37, 37, 61, 61, 62,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 63,  0,  0,  0,  0,  0,
+     4,  4, 55,  4, 56, 57, 58,  4, 59, 60, 61,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4, 62, 63,  5, 55, 55, 64, 64, 65, 65, 66,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 67,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 68,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 46, 64, 64, 36,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 44, 69, 69, 36,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6216,14 +6362,15 @@ static RE_UINT8 re_cased_table_3[] = {
      63,  63, 255, 170, 255, 255, 255,  63, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,
      80, 189,  31, 242, 224,  67,   0,   0,  24,   0,   0,   0,   0,   0, 192, 255,
-    255,   3,   0,   0, 255, 127, 255, 255, 255, 255, 255, 127,  31, 120,  12,   0,
-    191,  32,   0,   0, 255,  63,   0,   0, 252, 255, 255, 255, 255, 120, 255, 255,
-    252,   7,   0,   0,   0,   0,  96,   7,   0,   0, 255, 255, 127,   0, 248,   0,
-    255, 255,   0,   0, 255, 255,  15, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-    255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255, 253, 255, 255, 247,  15,   0,   0,  15,   0,   0,   0,
-    255,   3, 255, 255
+    255,   3,   0,   0,  31, 120,  12,   0, 191,  32,   0,   0, 255,  63,   0,   0,
+    252, 255, 255, 255, 255, 120, 255, 255, 255,   7, 235,   3,   0,   0,  96,   7,
+      0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0, 255, 255,  15, 255,
+    255, 255, 255,  15,   0,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    185, 255, 255, 255, 255, 255, 253,   7, 255, 255,   7,   0, 255, 255, 223, 255,
+    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
+    255, 127, 255, 255, 255, 253, 255, 255, 247,  15,   0,   0, 255, 251, 255, 127,
+     15,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_cased(RE_UINT32 codepoint) {
@@ -6251,10 +6398,10 @@ static RE_UINT8 re_case_ignorable_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9, 12, 13, 14,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 15, 16,
-    17,  9, 18, 19, 20, 21, 22, 23,  9,  9,  9,  9,  9, 24,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25, 26,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 27,
-     9,  9,  9,  9, 28,  9, 29,  9, 30,  9, 31,  9, 32,  9,  9,  9,
+    17, 18, 19, 20, 21, 22, 23, 24,  9,  9,  9,  9,  9, 25,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 26, 27,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 28,  9,  9,  9, 29,
+     9,  9,  9, 30, 31,  9, 32,  9, 33,  9, 34,  9, 35,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -6303,7 +6450,7 @@ static RE_UINT8 re_case_ignorable_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    33,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    36,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -6322,69 +6469,75 @@ static RE_UINT8 re_case_ignorable_table_2[] = {
       0,   0,   0,   0,   0,   5,   6,   6,   6,   6,   6,   7,   8,   0,   0,   0,
       0,   0,   0,   0,   9,   0,   0,   0,   0,   0,  10,   0,  11,  12,  13,  14,
      15,   0,  16,  17,   0,   0,  18,  19,  20,   5,  21,   0,   0,  22,   0,  23,
-     24,  25,  26,   0,   0,   0,  27,   6,  28,  29,  30,  31,  32,  33,  34,  35,
-     36,  33,  37,  38,  36,  33,  39,  40,  32,  41,  42,  43,  44,   0,  45,   0,
-     46,  47,  48,  43,  32,  41,  49,  43,  50,  51,  34,  43,  32,   0,  52,   0,
-      0,  53,  54,   0,   0,  55,  56,   0,  57,  58,   0,  59,  60,  61,  62,   0,
-      0,  63,  64,  65,  66,   0,   0,  33,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0,   0,
+     24,  25,  26,   0,  27,   0,  28,   6,  29,  30,  31,  32,  33,  34,  35,  36,
+     37,  34,  38,  39,  37,  34,  40,  41,  33,  42,  43,  44,  45,   0,  46,   0,
+     47,  48,  49,  44,  33,  42,  50,  44,  51,  52,  35,  44,  33,   0,  53,   0,
+      0,  54,  55,   0,   0,  56,  57,   0,  58,  59,   0,  60,  61,  62,  63,   0,
+      0,  64,  65,  66,  67,   0,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  69,  70,  70,  70,   0,  71,  72,   0,
+     73,   0,  74,   0,  75,  76,   0,   0,   0,  77,   0,   0,   0,   0,   0,   0,
+     78,   0,  79,  80,   0,  81,  82,   0,  83,  84,  45,  85,  51,  86,   0,  87,
+      0,  88,   0,  89,   0,   0,  90,  91,   0,  92,   6,  93,  94,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  95,  96,  97,
+     98,  99,   0, 100, 101,   0,   5, 102,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  68,  68,  69,  69,   0,  70,  71,   0,
-     72,   0,  73,   0,  74,  75,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,
-     77,   0,  78,  79,   0,  80,   3,   0,  81,  82,  44,  83,  50,  84,   0,  85,
-      0,  86,   0,  87,   0,   0,  88,  89,   0,  90,   6,  91,  92,   6,   6,  93,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,  95,  96,
-     97,  98,   0,  99, 100,   0,   5, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0, 105,   0,   0,   0,   6,
+      0, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 108,   0,   0, 109,   0,   0, 110,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    111,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,
+    112,   0,   0, 113, 114,   0,   0, 115,   6,  51,   0,  17, 116,   0,   0, 117,
+    118, 119,   0,   0,   0,   0, 120, 121,   0, 122, 123,   0,  29, 124, 106,  75,
+      0, 125, 126, 127,   0, 128, 129, 130,   0,   0,  94, 131,   0,   0,   0, 132,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 102,   0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   6,
-      0, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 107,   0,   0, 108,   0,   0, 109,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0, 133,  29,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    110,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    134, 135, 136,   0,   0,   0,   0, 137,   1,   2,   3,  17, 138,   0,   0, 139,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 140,
+      0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0, 141,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,   0,   0,   0,   0,   0,
-    111,   0,   0, 112, 113,   0,   0, 114,   6,  50,   0,  17, 115,   0,   0,  57,
-    116, 117,   0,   0,   0,   0, 118, 119,   0, 120, 121,   0,  28, 122, 105,  74,
-      0, 123, 124, 125,   0, 126, 127, 128,   0,   0,  92, 129,   0,   0,   0, 130,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 142, 143,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0, 131,  50,   0,
+    144, 145,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 147,   0,   0,   0,   0,  22,   0, 148,   0,   0,   0,
+     33, 149, 150, 151,  51, 152, 153,   0,  29, 154,   0, 155,  51, 156, 157,   0,
+      0, 158,   0,   0,   0,   0, 137, 159,  51,  52,   3, 160,   0,   0,   0,   0,
+      0, 149, 161,   0,   0, 162, 163,   0,   0,   0,   0,   0,   0, 164, 165,   0,
+      0, 166,   3,   0,   0, 167,   0,   0,  68, 168,   0,   0,   0,   0,   0,   0,
+      0, 169,   0,   0,   0,   0,   0,   0,   0, 170,  74,   0,   0,   0, 171,   3,
+    172, 173, 174,   0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 176,   0,   0, 133, 177,   0,   0,   0, 178, 179,   0, 180,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 181,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 182,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 133, 134,   0,   0,   0,   0, 135,   1,   2,   3,  17,  47,   0,   0, 136,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 137,
-      0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0, 138,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    139, 140,   0,   0,   0,   0,   0,  74,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 141,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 142,   0,   0,   0,   0,  22,   0,   0,   0,   0,   0,
-     32, 143, 144, 135,  50, 145, 146,   0,  28, 147,   0, 148,  50, 149, 150,   0,
-      0, 151,   0,   0,   0,   0, 135, 152,  50,  51,   3, 153,   0,   0,   0,   0,
-      0, 143, 154,   0,   0, 155, 156,   0,   0,   0,   0,   0,   0, 157, 158,   0,
-      0, 159,   3,   0,   0, 160,   0,   0,  67, 161,   0,   0,   0,   0,   0,   0,
-      0, 162,   0,   0,   0,   0,   0,   0,   0, 163,  73,   0,   0,   0, 164,   3,
-    165, 166, 167,   0, 168,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 169,   0,   0, 131, 170,   0,   0,   0, 171, 172,   0, 173,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 174,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 183,   0, 184,  83,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,   0, 185,   0,   0, 186,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 176,   0, 177,  81,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 187,
+      0,   0,   0,   0, 188,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 105,   0, 178,   0,   0, 179,
-      0,   0,   0,   0, 180,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 181, 182, 183,   0,   0,
-      0,   0, 184,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 189, 150,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 190, 191, 192,   0,   0,
+      0,   0, 193,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 185,   6, 186, 187, 188,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    189, 190,   0,   0,   0,   0,   0,   0,   0, 191,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 192,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 177,   0,   0,   0, 193,   0,   0,   0,   0,   0,
+      6, 194,   6, 195, 196, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    198, 199,   0,   0,   0,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 201,   0, 202,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 184,   0,   0,   0, 203,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  92,
-     32,   6,   6,   6,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6, 133,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,
+     33,   6,   6,   6,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6, 135,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -6395,49 +6548,51 @@ static RE_UINT8 re_case_ignorable_table_3[] = {
     255, 255, 255, 191, 182,   0,   0,   0,   0,   0,  16,   0,  63,   0, 255,  23,
       1, 248, 255, 255,   0,   0,   1,   0,   0,   0, 192, 191, 255,  61,   0,   0,
       0, 128,   2,   0, 255,   7,   0,   0, 192, 255,   1,   0,   0, 248,  63,  36,
-      0,   0, 192, 255, 255,  63,   0,   0,   0,   0,   0,  14,   0,   0, 248, 255,
-      7,   0,   0,   0,   0,   0,   0,  20, 254,  33, 254,   0,  12,   0,   2,   0,
-      2,   0,   0,   0,   0,   0,   0,  16,  30,  32,   0,   0,  12,   0,   0,  64,
-      6,   0,   0,   0, 134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,
-     12,   0,   0, 252,   0,   0,   0, 144,  30,  32,  96,   0,  12,   0,   0,   0,
-      4,   0,   0,   0,   1,  32,   0,   0,  17,   0,   0,   0,   0,   0,   0, 192,
-    193,  61,  96,   0,  64,  48,   0,   0,   3,   0,   0,   0,   0,   0,   0,  24,
-      0,   4,  92,   0,   0,   0, 242,   7, 192, 127,   0,   0,   0,   0, 242,  31,
-     64,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,   0,   0, 254, 127,
-    223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,   0, 224, 253, 102,
-      0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,   0,   0,   0, 224,
-      0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,  64, 254, 143,  32,
-      0, 120,   0,   0,   8,   0,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0,
-    135,   1,   4,  14,   0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159,
-    128,   0, 255, 255,  15,   0,   0,   0,   0,   0, 208,  23,   0, 248,  15,   0,
-     60,  59,   0,   0,  64, 163,   3,   0,   0, 240, 207,   0,   0,   0,   0,  63,
-      0,   0, 247, 255, 253,  33,  16,   3,   0, 240, 255, 255, 255,   7,   0,   1,
-      0,   0,   0, 248, 255, 255, 255, 251,   0,   0,   0, 160,   3, 224,   0, 224,
-      0, 224,   0,  96,   0, 248,   0,   3, 144, 124,   0,   0, 223, 255,   2, 128,
-      0,   0, 255,  31, 255, 255,   1,   0,   0,   0,   0,  48,   0, 128,   3,   0,
-      0, 128,   0, 128,   0, 128,   0,   0,  32,   0,   0,   0,   0,  60,  62,   8,
-      0,   0,   0, 126,   0,   0,   0, 112,   0,   0,  32,   0,   0,  16,   0,   0,
-      0, 128, 247, 191,   0,   0,   0, 240,   0,   0,   3,   0,   0,   7,   0,   0,
-     68,   8,   0,   0,  96,  16,   0,   0,  48,   0,   0,   0, 255, 255,   3, 128,
-    192,  63,   0,   0, 128, 255,   3,   0,   0,   0, 200,  51,   0, 126, 102,   0,
-      8,  16,   0,   0,   0,   0,   1,  16,   0,   0, 157, 193,   2,   0,   0,  32,
-      0,  48,  88,   0,   0,  14,   0,   0,  32,  33,   0,   0,   0,   0, 252, 255,
-    255, 255,   8,   0, 255, 255,   0,   0,   0,   0,  36,   0,   0,   0,   0, 128,
-      8,   0,   0,  14,   0,   0,   0,  32,   0,   0, 192,   7, 110, 240,   0,   0,
-      0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,   0,   0,   0, 255,
-    127,   0,   0,   0,   0,   0, 120,  38,   0,  32,   0,   0, 128, 239,  31,   0,
-      0,   0,   8,   0,   0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64,
-    248,   7,   0,   0, 192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 248, 133,
-     13,   0,   0,   0,   0,   0,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,
-      0,  40, 191,   0, 188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   0,  88,
-      0,   0, 240,  12, 254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,
-      0, 252, 127,   3,   0,   0, 127, 191, 255, 252, 109,   0,   0,   0, 126, 180,
-    191,   0,   0,   0,   0,   0, 163,   0,   0,   0,  24,   0,   0,   0, 255,   1,
-      0,   0,  31,   0,   0,   0, 127,   0,   0, 128, 255, 255,  27,   0,   0,   0,
-      0,   0,   0,  96, 128,   3, 248, 255, 231,  15,   0,   0,   0,  60,   0,   0,
-     28,   0,   0,   0, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,   0,   0, 255,  63,
-      0, 240,   0,   0, 240,  15,   0,   0
+      0,   0, 192, 255, 255,  63,   0,   0,   0,   0,   0,  14,   0,   1,   3, 255,
+      0, 254, 255, 255,   7,   0,   0,   0,   0,   0,   0,  20, 254,  33, 254,   0,
+     12,   0,   2,   0,   2,   0,   0,   0,   0,   0,   0,  16,  30,  32,   0,   0,
+     12,   0,   0,  64,   6,   0,   0,   0, 134,  57,   2,   0,   0,   0,  35,   0,
+    190,  33,   0,   0,  12,   0,   0, 252,   0,   0,   0, 144,  30,  32,  96,   0,
+     12,   0,   0,   0,   4,   0,   0,   0,   1,  32,   0,   0,  17,   0,   0,   0,
+      0,   0,   0, 208, 193,  61,  96,   0,  64,  48,   0,   0,   3,   0,   0,   0,
+      0,   0,   0,  24,   0,   4,  92,   0,   0,   0, 242,   7, 192, 127,   0,   0,
+      0,   0, 242,  31,  64,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,
+      0,   0, 254, 127, 223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
+      0, 224, 253, 102,   0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,
+      0,   0,   0, 224,   0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,
+     64, 254, 143,  32,   0, 248,   0,   0,   8,   0,   0,   0,  96,   0,   0,   0,
+      0,   2,   0,   0, 135,   1,   4,  14,   0,   0, 128,   9,   0,   0,  64, 127,
+    229,  31, 248, 159, 128,   0, 255, 255, 255, 127,   0,   0,  15,   0,   0,   0,
+      0,   0, 208,  23,   0, 248,  15,   0,  60,  59,   0,   0,  64, 163,   3,   0,
+      0, 240, 207,   0,   0,   0,   0,  63,   0,   0, 247, 255, 253,  33,  16,   3,
+      0, 240, 255, 255, 255,   7,   0,   1,   0,   0,   0, 248,   0,   0,   0, 160,
+      3, 224,   0, 224,   0, 224,   0,  96,   0, 248,   0,   3, 144, 124,   0,   0,
+    223, 255,   2, 128,   0,   0, 255,  31, 255, 255,   1,   0,   0,   0,   0,  48,
+      0, 128,   3,   0,   0, 128,   0, 128,   0, 128,   0,   0,  32,   0,   0,   0,
+      0,  60,  62,   8,   0,   0,   0, 126,   0,   0,   0, 112,   0,   0,  32,   0,
+      0,  16,   0,   0,   0, 128, 247, 191,   0,   0,   0, 240,   0,   0,   3,   0,
+      0,   7,   0,   0,   0,   0,  28,   3,  68,   8,   0,   0,  96,  16,   0,   0,
+     48,   0,   0,   0, 255, 255,   3, 128, 192,  63,   0,   0, 128, 255,   3,   0,
+      0,   0, 200,  51,   0, 126, 102,   0,   8,  16,   0,   0,   0,   0,   1,  16,
+      0,   0, 157, 193,   2,   0,   0,  32,   0,  48,  88,   0,   0,  14,   0,   0,
+     32,  33,   0,   0,   0,   0, 252, 255, 255, 255,   8,   0, 255, 255,   0,   0,
+      0,   0,  36,   0,   0,   0,   0, 128,   0,   0,   0, 192,   8,   0,   0,  14,
+      0,   0,   0,  32,   0,   0, 192,   7, 191, 255, 255, 255, 255, 255, 253,   7,
+    110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,
+     60,   0,   0,   0,   0,   0,   0, 255, 127,   0,   0,   0,   0,   0,  25, 128,
+      0,   0, 120,  38,   4,  32,   0,   0, 128, 239,  31,   0,   0,   0,   8,   0,
+      0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64, 248,   7,   0,   0,
+    192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 248, 133,  13,   0,   0,   0,
+      0,   0,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,   0,  40, 191,   0,
+    188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   0,  88,   0,   0, 240,  12,
+    254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,   0, 252, 127,   3,
+      0,   0, 127, 191, 255, 252, 109,   0,   0,   0, 126, 180, 191,   0,   0,   0,
+      0,   0, 163,   0,   0,   0,  24,   0,   0,   0, 255,   1,   0,   0,  31,   0,
+      0,   0, 127,   0,   0, 128, 255, 255,  27,   0,   0,   0,   0,   0, 239, 111,
+      0,   0,   0,  96, 255,  63, 255, 255, 128,   3, 248, 255, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 127, 248, 255,  31,  32,   0,
+     16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+      0,   0, 255,  63,   0,  64,   0,   0,   0, 240,   0,   0, 240,  15,   0,   0
 };
 
 RE_UINT32 re_get_case_ignorable(RE_UINT32 codepoint) {
@@ -6546,25 +6701,25 @@ static RE_UINT8 re_changes_when_casefolded_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 41, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    20, 42,  0, 43,  4,  4,  4, 44,  0,  0,  0,  0,  0,  0,  0,  0,
+    20, 21,  0, 42,  4,  4,  4, 43,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 45, 46,  0,  0,  0,  0, 47,  4, 48, 49, 50, 51,  2,
+     0,  0,  4, 44, 45,  0,  0,  0,  0, 46,  4, 47, 48, 49, 50,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 20, 20,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 51, 20, 20,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 53,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 52,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    20, 54,  0,  0,  0, 52, 55,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    20, 53,  0,  0,  0, 51, 54,  0,  0,  0,  0, 55, 56,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 20, 56,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 20, 57,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 20, 57,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 20, 58,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6579,11 +6734,11 @@ static RE_UINT8 re_changes_when_casefolded_table_3[] = {
       0,   0,   0,  63, 255,   1, 255, 255, 255, 255, 255, 231,  85,  85,  21,  76,
       0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,   0, 255,   0,   0,
     255, 255, 156,  31, 156,  31,   0,  15,   0,  31, 156,  31,  64,  12,   4,   0,
-      8,   0,   0,   0,   0,   0, 192, 255, 255, 127,   0,   0, 157, 234,  37, 192,
-      5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,
-     85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85, 244,   2,   0,   0,
-      0,   0, 255, 255, 127,   0, 248,   0, 255,   0,   0,   0, 255, 255,  15,   0,
-    255, 255,   7,   0,   3,   0,   0,   0
+      8,   0,   0,   0,   0,   0, 192, 255, 157, 234,  37, 192,   5,  40,   4,   0,
+     85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,
+     85,  40,  69,  85,  85, 125,  95,  85, 245,   2,  65,   1,   0,   0, 255, 255,
+    127,   0, 248,   0, 255,   0,   0,   0, 255, 255,  15,   0,   0,   0, 255, 247,
+    255, 247,  55,   0, 255, 255,   7,   0,   3,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_casefolded(RE_UINT32 codepoint) {
@@ -6692,25 +6847,25 @@ static RE_UINT8 re_changes_when_casemapped_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 38,  4, 39,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4, 40, 41, 42,  4,  4,  4, 43,  4, 44,  0,  0,  0,  0,  0,  0,
+     4,  4,  4, 40,  4,  4,  4, 41,  4, 42,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 45, 46,  0,  0,  0,  0, 47,  4, 48, 49, 40, 50, 51,
+     0,  0,  4, 43, 44,  0,  0,  0,  0, 45,  4, 46, 47, 48, 49, 50,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 53,  4,  4,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 51, 52,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 54,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 53,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,
-     4,  4, 55,  0,  0, 53, 56, 46,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4, 54,  0,  0, 52, 55, 44,  0,  0,  0, 56, 57, 58,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  4, 57,  4, 57,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  4, 59,  4, 59,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 58,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 60,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6725,11 +6880,12 @@ static RE_UINT8 re_changes_when_casemapped_table_3[] = {
       0,   0,   0,  34,   0,  64,   0,   0, 255, 255, 255,  79,  63,  63, 255, 170,
     255, 255, 255,  63, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
      64,  12,   4,   0,  24,   0,   0,   0,   0,   0, 192, 255, 255,   3,   0,   0,
-    255, 127, 255, 255, 255, 255, 255, 127, 255, 255, 109, 192,  15, 120,  12,   0,
-    191,  32,   0,   0, 255,  63,   0,   0, 255, 255, 255,  15, 252, 255, 252, 255,
-    255, 255,   0, 254, 255,  56, 223, 255, 252,   7,   0,   0,   0,   0,  96,   0,
-      0,   0,   8,   0,   0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0,
-    255, 255,  15, 255, 255, 255,   7,   0,  15,   0,   0,   0
+    255, 255, 109, 192,  15, 120,  12,   0, 191,  32,   0,   0, 255,  63,   0,   0,
+    255, 255, 255,  15, 252, 255, 252, 255, 255, 255,   0, 254, 255,  56, 223, 255,
+    255, 127, 255, 255, 255,   7, 195,   3,   0,   0,  96,   0,   0,   0,   8,   0,
+      0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0, 255, 255,  15, 255,
+      0,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255, 255,   7,   0,
+     15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_casemapped(RE_UINT32 codepoint) {
@@ -6838,21 +6994,21 @@ static RE_UINT8 re_changes_when_lowercased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 38, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    18, 39,  0, 40,  3,  3,  3, 41,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 19,  0, 39,  3,  3,  3, 40,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  3, 42, 43,  0,  0,  0,  0, 44,  3, 45, 46, 47, 48, 49,
+     0,  0,  3, 41, 42,  0,  0,  0,  0, 43,  3, 44, 45, 46, 47, 48,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    18, 50,  0,  0,  0, 26, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 49,  0,  0,  0, 26, 50,  0,  0,  0,  0, 51, 52,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 18, 52,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 18, 53,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 18, 53,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 54,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6866,11 +7022,11 @@ static RE_UINT8 re_changes_when_lowercased_table_3[] = {
     191,  32,   0,   0, 255, 255,  63,   0,   0,   0, 255, 255, 255, 255, 255, 231,
      85,  85,  21,  64,   0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,
       0, 255,   0,   0,   0, 255,   0,  31,   0,  31,   0,  15,   0,  31,   0,  31,
-     64,  12,   4,   0,   8,   0,   0,   0,   0,   0, 192, 255, 255, 127,   0,   0,
-    157, 234,  37, 192,   5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,
-     84,  85,  84,  85,  85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85,
-    244,   2,   0,   0,   0,   0,  32,   0, 255,   0,   0,   0, 255, 255,  15,   0,
-    255, 255,   7,   0,   3,   0,   0,   0
+     64,  12,   4,   0,   8,   0,   0,   0,   0,   0, 192, 255, 157, 234,  37, 192,
+      5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,
+     85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85, 245,   2,  65,   1,
+      0,   0,  32,   0, 255,   0,   0,   0, 255, 255,  15,   0,   0,   0, 255, 247,
+    255, 247,  55,   0, 255, 255,   7,   0,   3,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_lowercased(RE_UINT32 codepoint) {
@@ -6979,25 +7135,25 @@ static RE_UINT8 re_changes_when_titlecased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 23, 43,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 23, 44, 45,  5,  5,  5, 46, 24, 47,  0,  0,  0,  0,  0,  0,
+     0, 23, 24, 44,  5,  5,  5, 45, 24, 46,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 48, 49,  0,  0,  0,  0, 50,  5, 51, 52, 53, 54, 55,
+     0,  0,  5, 47, 48,  0,  0,  0,  0, 49,  5, 50, 51, 52, 53, 54,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 23, 24, 24,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55, 23, 24, 24,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 56,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 58, 59,  0,  0,  0, 60, 61,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 57, 58,  0,  0,  0, 59, 60,  0,  0,  0,  0, 61, 62,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 24, 62,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 24, 63,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 64,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -7013,12 +7169,12 @@ static RE_UINT8 re_changes_when_titlecased_table_3[] = {
       0,   0,   0,  34,   0,  64,   0,   0, 170, 170, 234,  15, 255,   0,  63,   0,
     255,   0, 255,   0,  63,   0, 255,   0, 255,   0, 255,  63, 255,   0, 223,  64,
     220,   0, 207,   0, 255,   0, 220,   0,  16,   0,   0,   0, 255,   3,   0,   0,
-    255, 255, 255, 127,  98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0,
-    170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148,
-    170,  16, 154, 170, 170,   2, 160, 170,   8,   5,   0,   0,   0,   0,  64,   0,
-      0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
-      0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0, 252, 255, 255, 255,
-     15,   0,   0,   0
+     98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0, 170,  42,   0,   0,
+    170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148, 170,  16, 154, 170,
+    170,   2, 160, 170,  10,   5, 130,   2,   0,   0,  64,   0,   0,   0,   8,   0,
+    127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,   0,   0,   0, 255,
+    255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27, 255, 255,   7,   0,
+    252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_titlecased(RE_UINT32 codepoint) {
@@ -7127,25 +7283,25 @@ static RE_UINT8 re_changes_when_uppercased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 23, 44,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 23, 45, 46,  5,  5,  5, 47, 24, 48,  0,  0,  0,  0,  0,  0,
+     0, 23, 24, 45,  5,  5,  5, 46, 24, 47,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 49, 50,  0,  0,  0,  0, 51,  5, 52, 53, 54, 55, 56,
+     0,  0,  5, 48, 49,  0,  0,  0,  0, 50,  5, 51, 52, 53, 54, 55,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 57, 23, 24, 24,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 23, 24, 24,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 58,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 59, 60,  0,  0,  0, 61, 62,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 58, 59,  0,  0,  0, 60, 61,  0,  0,  0,  0, 62, 63,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 24, 63,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 24, 64,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -7161,12 +7317,12 @@ static RE_UINT8 re_changes_when_uppercased_table_3[] = {
     255,   1,   0,   0,   0,   0,   0,  34,   0,  64,   0,   0, 170, 170, 234,  15,
     255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 255,   0, 255,   0, 255,  63,
     255, 255, 223,  80, 220,  16, 207,   0, 255,   0, 220,  16,  16,   0,   0,   0,
-    255,   3,   0,   0, 255, 255, 255, 127,  98,  21,  72,   0,  10,  80,   8,   0,
-    191,  32,   0,   0, 170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170,
-    170, 170,   0, 148, 170,  16, 154, 170, 170,   2, 160, 170,   8,   5,   0,   0,
-      0,   0,  64,   0,   0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255,
-    255, 255,   0,   0,   0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-    252, 255, 255, 255,  15,   0,   0,   0
+    255,   3,   0,   0,  98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0,
+    170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148,
+    170,  16, 154, 170, 170,   2, 160, 170,  10,   5, 130,   2,   0,   0,  64,   0,
+      0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
+      0,   0,   0, 255, 255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27,
+    255, 255,   7,   0, 252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_uppercased(RE_UINT32 codepoint) {
@@ -7274,11 +7430,11 @@ static RE_UINT8 re_dash_table_2[] = {
      6,  0,  7,  8,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    11, 12,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    13, 14,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 12, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 15,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 15, 16, 17,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
+     0, 16, 17, 18,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
@@ -7287,8 +7443,8 @@ static RE_UINT8 re_dash_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0,   4,   0,   0,   0,   0,   0,  64,
       1,   0,   0,   0,  64,   0,   0,   0,   0,   0,  63,   0,   0,   0,   8,   0,
       0,   0,   0,   8,   0,   8,   0,   0,   0,   0,   4,   0,   0,   0, 128,   4,
-      0,   0,   0,  12,   0,   0,   0,  16,   0,   0,   1,   0,   0,   0,   6,   0,
-      0,   0,   0,   1,   8,   0,   0,   0
+      0,   0,   0,  12,   1,   0,   0,  32,   0,   0,   0,  16,   0,   0,   1,   0,
+      0,   0,   6,   0,   0,   0,   0,   1,   8,   0,   0,   0
 };
 
 RE_UINT32 re_get_dash(RE_UINT32 codepoint) {
@@ -7316,14 +7472,14 @@ static RE_UINT8 re_decomposition_type_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 16,  5,  5,  5,  5,  5,  5,  5,  5, 17, 18,
-     5,  5,  5,  5, 19, 20, 21,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 19,  5,  5, 20, 21, 22,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 22, 23,  5,  5,  5,  5,  5, 24, 25,  5, 26,  5,
+     5,  5,  5,  5, 23, 24,  5,  5,  5,  5,  5, 25, 26,  5, 27,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 27,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 28,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -7421,22 +7577,24 @@ static RE_UINT8 re_decomposition_type_table_2[] = {
     124, 125,  60, 126,  60,  60,  62,   0, 127, 128, 129, 130, 131, 132, 133, 134,
     135, 135, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
     149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 158, 159, 160, 161, 162, 163,
-      0,   0,   0,   0, 164, 165,   0,   0,   0, 166,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 167,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,   0, 169,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 164, 165,   0,   0,
+      0,   0,   0,   0, 166, 167,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 169,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,   0, 171,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 171, 172,   0, 173, 174,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 172,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    175, 175, 176, 175, 177, 178, 179, 175, 180, 181, 182, 175, 175, 175, 175, 175,
-    175, 175, 175, 175, 175, 183, 175, 175, 175, 175, 175, 175, 175, 175, 184, 175,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,   0, 175, 176,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    179, 185, 186, 187, 188, 189,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 190, 191, 192, 193, 194,   0,   0,   0,
-    195, 196, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    177, 177, 178, 177, 179, 180, 181, 177, 182, 183, 184, 177, 177, 177, 177, 177,
+    177, 177, 177, 177, 177, 185, 177, 177, 177, 177, 177, 177, 177, 177, 186, 177,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 198,
+    181, 187, 188, 189, 190, 191,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 192, 193, 194, 195, 196,   0,   0,   0,
+    197, 198, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 200,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      65,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
@@ -7683,7 +7841,7 @@ static RE_UINT8 re_decomposition_type_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  3,  3,  3,  0,  0,  0,  3,  3,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,
@@ -7770,6 +7928,10 @@ static RE_UINT8 re_decomposition_type_table_3[] = {
      0,  0, 17, 17, 17, 17, 17, 17,  0,  0, 17, 17, 17,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  0, 17, 17, 17, 17, 17, 17, 17,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  3,  3,  3,  3,  3,  0,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  0,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,
@@ -7944,25 +8106,25 @@ static RE_UINT8 re_default_ignorable_code_point_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,
      7,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     8,  9,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     7,  8,  0,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    10,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  5,  0, 12,
-     0,  0,  0,  0,  0, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  5,  0, 11,
+     0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
 };
 
 static RE_UINT8 re_default_ignorable_code_point_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0, 128,   0,   0,   0,   0,   0,  16,
-      0,   0,   0, 128,   1,   0,   0,   0,   0,   0,  48,   0,   0, 120,   0,   0,
-      0, 248,   0,   0,   0, 124,   0,   0, 255, 255,   0,   0,  16,   0,   0,   0,
-      0,   0, 255,   1,  15,   0,   0,   0,   0,   0, 248,   7, 255, 255, 255, 255
+      0,   0,   0, 128,   1,   0,   0,   0,   0,   0,  48,   0,   0, 248,   0,   0,
+      0, 124,   0,   0, 255, 255,   0,   0,  16,   0,   0,   0,   0,   0, 255,   1,
+     15,   0,   0,   0,   0,   0, 248,   7, 255, 255, 255, 255
 };
 
 RE_UINT32 re_get_default_ignorable_code_point(RE_UINT32 codepoint) {
@@ -8012,10 +8174,10 @@ static RE_UINT8 re_diacritic_table_1[] = {
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8, 11, 12,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 13, 14,
-    15,  8, 16, 17, 18, 19, 20, 21,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 22, 23,  8,  8,  8,  8,
-     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8, 24,  8,  8,  8, 25,  8, 26,  8,  8,  8,  8,  8,
+    15, 16, 17, 18, 19, 20, 21, 22,  8,  8,  8,  8,  8,  8,  8,  8,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 23, 24,  8,  8,  8,  8,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 25,  8,  8,  8,  8,
+     8,  8,  8, 26, 27,  8,  8,  8, 28,  8, 29,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
@@ -8083,55 +8245,61 @@ static RE_UINT8 re_diacritic_table_2[] = {
       0,   0,   0,   0,   0,   4,   5,   5,   5,   5,   6,   7,   8,   0,   0,   0,
       0,   0,   0,   0,   9,   0,   0,   0,   0,   0,  10,   0,  11,  12,  13,   0,
       0,   0,  14,   0,   0,   0,  15,  16,   0,   4,  17,   0,   0,  18,   0,  19,
-     20,   0,   0,   0,   0,   0,   0,  21,   0,  22,  23,  24,   0,  22,  25,   0,
-      0,  22,  25,   0,   0,  22,  25,  26,   0,  22,  27,   0,   0,   0,  25,   0,
-      0,   0,  25,   0,   0,  22,  25,   0,   0,  28,  25,   0,   0,   0,  29,   0,
-      0,   0,  30,   0,   0,  31,  32,   0,  20,  33,   0,   0,  34,   0,  35,   0,
-      0,  36,   0,  37,  38,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  26,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  41,   0,  42,   0,   0,   0,  43,  44,  45,   0,  46,   0,   0,
-      0,  47,   0,  48,   0,   0,   4,  49,   0,  50,   5,  17,   0,   0,  51,  52,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,  54,  55,
+     20,   0,   0,   0,  21,   0,  22,  23,   0,  24,  25,  26,   0,  24,  27,   0,
+      0,  24,  27,   0,   0,  24,  27,  28,   0,  24,  29,   0,   0,   0,  27,   0,
+      0,  24,  27,   0,   0,  24,  27,   0,   0,  30,  27,   0,   0,   0,  31,   0,
+      0,   0,  32,   0,   0,  33,  34,   0,  20,  35,   0,   0,  36,   0,  37,   0,
+      0,  38,   0,  39,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  28,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  41,   0,   0,   0,   0,   0,  42,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  43,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  44,   0,  45,  46,   0,   0,  47,  48,  49,   0,  50,   0,   0,
+      0,  51,   0,  52,   0,   0,   4,  53,   0,  54,   5,  17,   0,   0,  55,  56,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  57,  58,  59,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  56,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  58,   0,   0,  59,   0,   0,  22,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  61,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  62,   0,   0,  63,   0,   0,  24,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  60,  61,   0,   0,  62,   5,  63,   0,   0,  64,   0,   0,  20,
-      0,   0,   0,   0,   0,   0,  44,  65,   0,  66,  67,   0,   0,  67,   2,  68,
-      0,   0,   0,  69,   0,  15,  70,  71,   0,   0,  72,  73,   0,   0,   0,  74,
+      0,   0,   0,  64,  65,   0,   0,  66,   5,  67,   0,   0,  68,   0,   0,  20,
+      0,   0,   0,   0,   0,   0,  48,  69,   0,  70,  71,   0,   0,  71,   2,  72,
+      0,   0,   0,  73,   0,  15,  74,  75,   0,   0,  76,  77,   0,   0,   0,  78,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  75,   0,   0,   0,   0,   0,   0,   0,   1,   2,  76,  77,   0,   0,  78,
+      0,  79,   0,   0,   0,   0,   0,   0,   0,   1,   2,  80,  81,   0,   0,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  79,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  18,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  81,   0,   0,   0,  82,   0,  67,   0,   0,  83,   0,
-      0,  84,   0,   0,   0,   0,   0,  85,   0,  22,  25,  86,   0,   0,   0,   0,
-      0,   0,  87,   0,   0,   0,  88,   0,   0,   0,   0,   0,   0,  15,   2,   0,
-      0,  15,   0,   0,   0,  47,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,
-      0,  81,   0,   0,   0,   0,   0,   0,   0,  90,  78,   0,   0,   0,   0,   2,
-      0,  43,  91,   0,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  15,   0,   0,   0,   0,   0,   0,   0,   0,  92,   0,  93,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  83,  84,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  85,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  86,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  18,   0,  87,   0,   0,   0,
+      0,   0,  37,  80,   0,  88,   0,   0,   0,  89,   0,  71,   0,   0,  90,   0,
+      0,  91,   0,   0,   0,   0,   0,  92,   0,  24,  27,  93,   0,   0,   0,   0,
+      0,   0,  94,   0,   0,   0,  95,   0,   0,   0,   0,   0,   0,  15,   2,   0,
+      0,  15,   0,   0,   0,  51,   0,   0,   0,  96,   0,   0,   0,   0,   0,   0,
+      0,  88,   0,   0,   0,   0,   0,   0,   0,  97,  82,   0,   0,   0,   0,   2,
+      0,  47,  98,   0,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  15,   0,   0,   0,   0,   0,   0,   0,   0,  99,   0, 100,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  94,   0,  95,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 101,   0, 102,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  96,   0,   0,  62,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  97,  98,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,  66,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  95,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  95,   0,   0,   0, 101,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 104,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   5, 105, 106,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 107, 108, 109,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 110,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 102,   0,   0,   0, 112,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -8141,27 +8309,30 @@ static RE_UINT8 re_diacritic_table_3[] = {
      48,   0,   0,   0, 248,   0,   0,   0,   0,   0,   0,   2,   0,   0, 254, 255,
     251, 255, 255, 191,  22,   0,   0,   0,   0, 248, 135,   1,   0,   0,   0, 128,
      97,  28,   0,   0, 255,   7,   0,   0, 192, 255,   1,   0,   0, 248,  63,   0,
-      0,   0,   0,   3, 248, 255, 255, 127,   0,   0,   0,  16,   0,  32,  30,   0,
-      0,   0,   2,   0,   0,  32,   0,   0,   0,   0,   0, 224,   0,  32,  32,   0,
-      0,   0,   0,  24,   0,   4,   0,   0, 128,  95,   0,   0,   0,   0,   0,   4,
-      0,  31,   0,   0,   0,   0, 160, 194, 220,   0,   0,   0,  64,   0,   0,   0,
-      0,   0, 128,   6,  24,  62,   0,   0, 128, 191,   0,  12,   0, 254,  15,  32,
-      0,   0,   0,  14,   0,   0, 224, 159,   0,   0, 255,  63,   0,   0,  16,   0,
+      0,   0,   0,   3,   0,   0,   0, 255,   0, 254,   7,   0, 248, 255, 255, 127,
+      0,   0,   0,  16,   0,  32,  30,   0,   0,   0,   2,   0,   0,  32,   0,   0,
+      0,   0,   0, 224,   0,  32,  32,   0,   0,   0,   0,  24,   0,   4,   0,   0,
+    128,  95,   0,   0,   0,   0,   0,   4,   0,  31,   0,   0,   0,   0, 160, 194,
+    220,   0,   0,   0,  64,   0,   0,   0,   0,   0, 128,   6,  24,  62,   0,   0,
+    128, 191,   0,  12,   0,   0,  48,   0,   0, 254,  15,  32,   0,   0,   0,  14,
+      0,   0, 224, 159,   0,   0, 255, 127, 254,  15,   0,   0,   0,   0,  16,   0,
      16,   0,   0,   0,   0, 248,  15,   0,   0,  12,   0,   0,   0,   0, 192,   0,
       0,   0,   0,  63, 255,  33, 144,   3,   0, 240, 255, 255, 240, 255,   0,   0,
-      0,   0, 224, 227,   0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,
+      0,   0, 224, 255,   0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,
       0, 128,   3,   0,   0, 128,   0,   0,   0, 252,   0,   0,   0,   0,   0,  30,
       0, 128,   0, 176,   0,   0,   0,  48,   0,   0,   3,   0,   3,   0,   0,   0,
       0,   7,   0,   0, 255, 255,   3,   0,   0, 120,   0,   0,   0,   0,   8,   0,
      32,   0,   0,   0,   0,   0,   0,  56,   7,   0,   0,   0,   0,   0,  64,   0,
       0,   0,   0, 248,   0,  14,   0,   0,   0,  48,   0,   0, 255, 255,   0,   0,
-      0,   0,   1,   0,   0,   0,   0, 192,   8,   0,   0,   0,  96,   0,   0,   0,
-    252,   0,   0,   0,   0,   0,   0,   6,   0,   0,  24,   0,   1,  28,   0,   0,
-      0,   0,  96,   0,   0,   6,   0,   0, 192,  31,  31,   0,  68,   0,   0,   0,
-     12,   0,   0,   0,   0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,
-     52,   0,   0,   0,   0,   0, 128,   0,   0,   0,  31,   0,   0,   0, 127,   0,
-      0, 128, 255, 255, 128, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,
-      0, 240,   0,   0, 112,   7,   0,   0
+      0,   0,   1,   0,   0,   0,   0, 192,   8,   0,   0,   0, 191, 255, 255, 255,
+    255, 255, 253,   7,  96,   0,   0,   0, 252,   0,   0,   0,  60,   0,   0,   0,
+      0,   0,   0,   6,   0,   0,  24,   0,   1,  28,   0,   0,   0,   0,  96,   0,
+      0,   6,   0,   0, 192,  31,  31,   0,  68,   0,   0,   0,  12,   0,   0,   0,
+      0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,  52,   0,   0,   0,
+      0,   0, 128,   0,   0,   0,  31,   0,   0,   0, 127,   0,   0, 128, 255, 255,
+      0,   0, 239, 111, 255,  63, 255, 255, 127,   0,   0,   0, 128, 227,   7, 248,
+    231,  15,   0,   0,   0,  60,   0,   0,   0,  64,   0,   0,   0, 240,   0,   0,
+    112,   7,   0,   0
 };
 
 RE_UINT32 re_get_diacritic(RE_UINT32 codepoint) {
@@ -8191,16 +8362,16 @@ static RE_UINT8 re_east_asian_width_table_1[] = {
      9,  9,  9,  9,  9, 13,  2,  2, 14, 14, 14, 14, 14, 14, 15, 16,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 17,  9,  9,  9,  9,
-     9, 18,  9, 19,  2,  2,  2,  2,  2,  2,  2,  2, 20,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 21, 22, 23,  2,
+     9, 18,  9, 19,  2,  2,  2,  2,  2,  2,  2, 20, 21,  2,  2,  2,
+     2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 22, 23, 24,  2,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -8241,18 +8412,18 @@ static RE_UINT8 re_east_asian_width_table_1[] = {
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-    25,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
+    26,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27
 };
 
 static RE_UINT8 re_east_asian_width_table_2[] = {
@@ -8296,20 +8467,22 @@ static RE_UINT8 re_east_asian_width_table_2[] = {
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  97,
      21,  21,  21,  21,  21,  21,  70,   0,  98,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     21,  21,  21,  21,  21,  21,  21,  21,  73,   0,  99, 100,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21, 101,   0,   0,   0,   0,   0,   0,   0,   0,
-    102,   0,   0,   0,   0,   0, 103,   0, 104, 105,  14, 106, 107, 108,   0,   0,
-    109, 101, 110, 111,   0,   0,   0,   0,  21, 112,  21, 113,  69,  21, 114, 115,
-     21,  73, 116,  21,  21,  21,  21, 117,  21, 118, 119, 120, 121, 102,   0, 122,
-     21,  21, 123,   0,  21,  21, 124, 125,   0,   0,   0,   0,   0,   0,   0, 126,
-      0,   0,   0,   0,   0,   0,   0,   0, 127, 128, 129, 130,  21,  21, 131,  21,
-      0,   0,   0, 132, 133, 134, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  99,
+     21,  21,  21,  21,  21,  21,  21,  21,  21, 100, 101, 102,  21,  21,  21,  21,
+     21,  21,  21,  21,  21,  21,  21, 103,   0,   0,   0,   0,   0,   0,   0,   0,
+    104,   0,   0,   0,   0,   0, 105,   0, 106, 107,  14, 108, 109, 110,   0,   0,
+    111, 103, 112, 113,   0,   0,   0,   0,  21, 114,  21, 115,  69,  21, 116, 117,
+     21,  73, 118,  21,  21,  21,  21, 119,  21, 120, 121, 122, 123, 104,   0, 124,
+     21,  21, 125,   0,  21,  21, 126, 127,   0,   0,   0,   0,   0,   0,   0, 128,
+      0,   0,   0,   0,   0,   0,   0,   0, 129, 130, 131,  21,  21,  21,  21,  21,
+      0,   0,   0, 132, 133, 134, 135, 136,   0,   0,   0,   0,   0,   0,   0,   0,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21, 118,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21, 120,
       0,   0,   0,   0,   0,   0,   0,   0,  14,  14,  14,  14,  14,  14,  14,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,
-     14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14, 136
+     14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14, 137
 };
 
 static RE_UINT8 re_east_asian_width_table_3[] = {
@@ -8512,6 +8685,10 @@ static RE_UINT8 re_east_asian_width_table_3[] = {
     3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0,
+    3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -8562,28 +8739,26 @@ static RE_UINT8 re_east_asian_width_table_3[] = {
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
-    3, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0,
     0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0
@@ -8695,8 +8870,8 @@ static RE_UINT8 re_emoji_table_2[] = {
     39, 40, 41,  0,  0,  0,  0,  0, 42, 43, 42, 42, 44, 42, 42, 45,
     42, 42, 42, 42, 42, 42, 42, 46, 42, 47, 48, 49, 50, 51, 52, 53,
     42, 42, 54,  0, 42, 42, 55, 56,  0,  0,  0,  0,  0,  0,  0, 57,
-     0,  0,  0,  0,  0,  0,  0,  0, 58, 59, 60, 61, 42, 42, 62, 42,
-     0,  0,  0, 63, 64, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0, 58, 59, 60, 42, 42, 42, 42, 42,
+     0,  0,  0, 61, 62, 63, 64, 65,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_table_3[] = {
@@ -8713,10 +8888,10 @@ static RE_UINT8 re_emoji_table_3[] = {
       0, 128, 252,   7,   0,   0,   3,   0, 255, 255, 255, 255, 243, 255, 255, 255,
     255, 255, 207, 206, 255, 255, 185, 255, 255, 255, 255, 191, 255, 255, 255,  63,
       0, 126, 255, 255, 255, 128, 249,   7, 128,  60,  97,   0,  48,   1,   6,  16,
-     28,   0,  14, 112,  10, 129,   8, 252, 255, 255,   0,   0,  63, 248, 231,   0,
-     63,  26, 249,  31, 255,  15,   0,   0,   0, 240, 255, 255, 255, 255, 255, 247,
-    191, 255, 255, 255, 255, 255, 255, 253, 255, 239, 255, 255,   0,   0,  31,   7,
-    127,   0, 255, 255, 255,   1, 127,   0,   7,   0, 127,   0
+     28,   0,  14, 112,  10, 129,   8, 252, 255, 255,   0,   0,  63, 248, 231, 224,
+     63,  26, 249,  31, 255,  15,   1,   0,   0, 240, 255, 255, 255, 255, 255, 247,
+    191, 255, 255, 255,   0,   0,  31,  31, 127,   0, 255, 255, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji(RE_UINT32 codepoint) {
@@ -8942,7 +9117,7 @@ static RE_UINT8 re_emoji_modifier_base_table_2[] = {
      0,  0,  6,  7,  8,  9,  0,  0,  0,  0,  0, 10, 11,  0,  0,  0,
      0,  0, 12,  0,  0, 13, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 15, 16,  0, 17,  0, 18, 19,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0, 20, 21,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_modifier_base_table_3[] = {
@@ -8950,7 +9125,8 @@ static RE_UINT8 re_emoji_modifier_base_table_3[] = {
      32,   0,   0,   0, 156,  28,   0,   0, 204, 255,   1,   0, 192, 255, 255,  17,
     238, 128,   2,   0,   0,   4,   0,   0,   0,   0,  48,   4,   0,   0,  97,   0,
     224, 248,   0,   0,   8,   0, 112,   0,   1,  16,   0,   0,   0, 144,   0, 255,
-     64,   0, 255, 115,   0,   0, 128,   0,   0,   0,  96,  11,   0, 224, 254,  63
+     64,   0, 255, 115,   0,   0, 128,   0,   0,   0,  96,  11,   0, 224, 254,  63,
+     56,   0,   0,   0,   0,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji_modifier_base(RE_UINT32 codepoint) {
@@ -9057,8 +9233,8 @@ static RE_UINT8 re_emoji_presentation_table_2[] = {
     22, 23, 24,  0,  0,  0,  0,  0, 25, 26, 25, 27, 28, 25, 29, 30,
     25, 31, 32, 25, 25, 25, 25, 33, 25, 34, 35, 36, 37, 18,  0, 38,
     25, 25, 39,  0, 25, 25, 40, 41,  0,  0,  0,  0,  0,  0,  0, 42,
-     0,  0,  0,  0,  0,  0,  0,  0, 43, 44, 45, 46, 25, 25, 47, 25,
-     0,  0,  0, 48, 49, 50, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0, 43, 44, 45, 25, 25, 25, 25, 25,
+     0,  0,  0, 46, 47, 48, 49, 50,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_presentation_table_3[] = {
@@ -9072,9 +9248,9 @@ static RE_UINT8 re_emoji_presentation_table_3[] = {
     255, 255,  15,   0, 255, 135,  15,   0, 255, 255,  17, 255, 255, 255, 255, 127,
     253, 255, 255, 255, 255, 255, 255, 159, 255, 255, 255,  63,   0, 120, 255, 255,
     255,   0,   0,   4,   0,   0,  96,   0,   0,   0,   0, 248, 255, 255,   0,   0,
-     63,  16, 231,   0,   0,  24, 240,  31, 255,  15,   0,   0,   0, 240, 255, 255,
-    255, 255, 255, 247, 191, 255, 255, 255, 255, 255, 255, 253, 255, 239, 255, 255,
-      0,   0,  31,   7, 127,   0, 255, 255, 255,   1, 127,   0,   7,   0, 127,   0
+     63,  16, 231, 224,   0,  24, 240,  31, 255,  15,   1,   0,   0, 240, 255, 255,
+    255, 255, 255, 247, 191, 255, 255, 255,   0,   0,  31,  31, 127,   0, 255, 255,
+    255,  31, 255,   7,  63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji_presentation(RE_UINT32 codepoint) {
@@ -9232,10 +9408,10 @@ static RE_UINT8 re_extender_table_1[] = {
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  8,  9, 10,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 11,
-     4,  4,  4,  4, 12, 13, 14,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 15, 16,  4,  4,  4,  4,
+     4, 12,  4,  4, 13, 14, 15,  4,  4,  4,  4,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 16, 17,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4, 17,  4, 18,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4, 18,  4, 19,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
@@ -9324,18 +9500,20 @@ static RE_UINT8 re_extender_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 19,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 23,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 25,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 27,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -9345,8 +9523,8 @@ static RE_UINT8 re_extender_table_3[] = {
       8,   0,   0,   0, 128,   0,   0,   0,   0,   0,  64,   0,   0,   0,   0,   8,
      32,   0,   0,   0,   0,   0,  62,   0,   0,   0,   0,  96,   0,   0,   0, 112,
       0,  16,   0,   0,   0, 128,   0,   0,   0,   0,   1,   0,   0,   0,   0,  32,
-      0,   0,  24,   0, 192,   1,   0,   0,   0,   0,   0,   1,  12,   0,   0,   0,
-     11,   0,   0,   0,   0,   0,   0,  48, 112,   0,   0,   0
+      0,   0,  24,   0,   6,   0,   0,   0, 192,   1,   0,   0,   0,   0,   0,   1,
+     12,   0,   0,   0,  11,   0,   0,   0,   0,   0,   0,  48, 112,   0,   0,   0
 };
 
 RE_UINT32 re_get_extender(RE_UINT32 codepoint) {
@@ -9372,72 +9550,72 @@ RE_UINT32 re_get_extender(RE_UINT32 codepoint) {
 static RE_UINT8 re_general_category_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 19, 20, 20, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34, 13, 35, 34, 34,
-    34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 37, 38, 13, 13, 13, 13,
-    13, 39, 13, 40, 34, 34, 34, 34, 34, 34, 34, 34, 41, 34, 34, 42,
-    34, 34, 34, 34, 43, 44, 45, 34, 46, 34, 47, 48, 49, 50, 51, 34,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
-    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 34, 34, 34, 57, 34,
-    13, 13, 13, 13, 58, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    59, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 60,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 60
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 18, 19, 19, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 13, 35, 33, 33,
+    33, 36, 33, 33, 33, 33, 33, 33, 33, 33, 37, 38, 13, 13, 13, 13,
+    13, 39, 13, 40, 33, 33, 33, 33, 33, 33, 33, 41, 42, 33, 33, 43,
+    33, 33, 33, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 33,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 56, 13, 13, 13, 57, 58, 13,
+    13, 13, 13, 59, 13, 13, 13, 13, 13, 13, 60, 33, 33, 33, 61, 33,
+    13, 13, 13, 13, 62, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    63, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 64,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 64
 };
 
 static RE_UINT16 re_general_category_table_2[] = {
@@ -9445,124 +9623,132 @@ static RE_UINT16 re_general_category_table_2[] = {
       7,  15,  16,  17,  18,  19,  20,  21,  22,  22,  22,  23,  24,  25,  26,  27,
      28,  29,  17,   7,  30,   7,  31,   7,   7,  32,  33,  17,  34,  35,  36,  37,
      38,  39,  40,  41,  39,  39,  42,  43,  44,  45,  46,  39,  39,  47,  48,  49,
-     50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,  97,
-     98,  99, 100,  54, 101, 102, 103,  54, 104, 105, 106, 107, 108, 109, 110,  54,
+     50,  51,  52,  53,  54,  39,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,
+     65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,
+     81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,
+     97,  98,  99, 100, 101, 102, 103, 100, 104, 105, 106, 107, 108, 109, 110, 100,
      39, 111, 112, 113, 114,  28, 115, 116,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39, 117,  39, 118, 119, 120,  39, 121,  39, 122, 123, 124,  28,  28, 125,
     126,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39, 127, 128,  39,  39, 129, 130, 131, 132, 133,  39, 134, 135, 136,
     137,  39, 138, 139, 140, 141,  39, 142, 143, 144, 145, 146,  39, 147, 148, 149,
-    150,  39, 151, 152, 153, 154, 155,  54, 156, 157, 158, 159, 160, 161,  39, 162,
-     39, 163, 164, 165, 166, 167, 168, 169,  17, 170, 171, 172, 173, 171,  22, 174,
-      7,   7,   7,   7, 175,   7,   7,   7, 176, 177, 178, 179, 180, 181, 182, 183,
-    184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
-    200, 200, 200, 200, 200, 200, 200, 200, 201, 202, 149, 203, 204, 205, 206, 207,
-    149, 208, 209, 210, 211, 149, 149, 212, 149, 149, 149, 149, 149, 213, 214, 215,
-    149, 149, 149, 216, 149, 149, 149, 149, 149, 149, 149, 217, 218, 149, 219, 220,
-    149, 149, 149, 149, 149, 149, 149, 149, 200, 200, 200, 200, 221, 200, 222, 223,
-    200, 200, 200, 200, 200, 200, 200, 200, 149, 224, 225, 226, 227, 149, 149, 149,
-     28, 228, 229, 230,   7,   7,   7, 231,  17, 232,  39, 233, 234, 235, 235,  22,
-    236, 237, 238,  54, 239, 149, 149, 240, 149, 149, 149, 149, 149, 149, 241, 242,
-    243, 244,  98,  39, 245, 126,  39, 246, 247, 248,  39,  39, 249,  39, 149, 250,
-    251, 252, 253, 149, 252, 254, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    150,  39, 151, 152, 153, 154, 155, 100, 156, 157, 158, 159, 160, 161,  39, 162,
+     39, 163, 164, 165, 166, 167, 168, 169,  17, 170, 171, 172, 173, 171,  22,  22,
+      7,   7,   7,   7, 174,   7,   7,   7, 175, 176, 177, 178, 179, 180, 181, 182,
+    183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+    199, 199, 199, 199, 199, 199, 199, 199, 200, 201, 149, 202, 203, 204, 205, 206,
+    149, 207, 208, 209, 210, 149, 149, 211, 149, 149, 149, 149, 149, 212, 213, 214,
+    149, 149, 149, 215, 149, 149, 149, 149, 149, 149, 149, 216, 217, 149, 218, 219,
+    149, 149, 149, 149, 149, 149, 149, 149, 199, 199, 199, 199, 220, 199, 221, 222,
+    199, 199, 199, 199, 199, 199, 199, 199, 149, 223, 224, 225, 226, 149, 149, 149,
+     28,  29,  17, 227,   7,   7,   7, 228,  17, 229,  39, 230, 231, 232, 232,  22,
+    233, 234, 235, 100, 236, 149, 149, 237, 149, 149, 149, 149, 149, 149, 238, 239,
+    240, 241,  97,  39, 242, 126,  39, 243, 244, 245,  39,  39, 246,  39, 149, 247,
+    248, 249, 250, 149, 249, 251, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 149, 149,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+    252,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 255,
-    256,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39, 257, 149, 258, 165,  39,  39,  39,  39,  39,  39,  39,  39,
-    259, 260,   7, 261, 262,  39,  39, 263, 264, 265,   7, 266, 267, 268, 269, 270,
-    271, 272,  39, 273, 274, 275, 276, 277,  48, 278, 279, 255,  58, 280, 281, 282,
-     39, 283, 284, 285,  39, 286, 287, 288, 289, 290, 291, 292,  17,  17,  39, 293,
+     39,  39,  39,  39, 253, 149, 254, 165,  39,  39,  39,  39,  39,  39,  39,  39,
+    255, 256,   7, 257, 258,  39,  39, 259, 260, 261,   7, 262, 263, 264, 265, 266,
+    267, 268,  39, 269, 270, 271, 272, 273,  48, 274, 275, 276,  57, 277, 278, 279,
+     39, 280, 281, 282,  39, 283, 284, 285, 286, 287, 288, 289,  17,  17,  39, 290,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 294, 295, 296,
-    297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
-    297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 299,  39,  39, 300,  54, 301, 302, 303,  39,  39, 304, 305,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 306, 307,  39, 308,  39, 309, 310,
-    311, 312, 313, 314,  39,  39,  39, 315, 316,   2, 317, 318, 319, 143, 320, 321,
-    322, 323, 324,  54,  39,  39,  39, 325, 326, 327, 195, 328, 329, 330, 331, 332,
-     54,  54,  54,  54, 255,  39, 333, 334,  39, 335, 336, 337, 338,  39, 339,  54,
-     28, 340, 341,  39, 342, 343, 344, 345,  39, 346,  39, 347,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 234, 142, 309,  54,  54,  54,  54,
-    348, 349, 350, 351, 143, 352,  54, 353, 354, 355,  54,  54,  39, 356, 357, 210,
-    358, 359, 360, 361, 362,  54, 363, 364,  39, 365, 366, 367, 368, 369,  54,  54,
-     39,  39, 370,  54,  28, 371,  17, 372,  39, 373,  54,  54,  54,  54,  54,  54,
-     54,  54,  54, 374,  39, 375,  54,  54, 362, 376, 377,  54,  54, 307, 378, 234,
-    379, 380, 381, 382, 160, 383, 384, 385, 386, 387, 388, 389, 160, 390, 391, 392,
-    393, 394,  54,  54, 395, 396, 397, 398, 399, 400, 401, 402,  54,  54,  54,  54,
-     39, 403, 404, 405,  39, 406, 407,  54,  54,  54,  54,  54,  39, 408, 409,  54,
-     39, 410, 411, 412,  39, 413, 414,  54, 122, 415,  54,  54,  54,  54,  54,  54,
-     39, 416,  54,  54,  54,  28,  17, 417, 418, 419, 420,  54,  54, 421, 422, 423,
-    424, 425, 426,  39, 427, 428,  39, 139,  54,  54,  54,  54,  54,  54,  54,  54,
-    429, 430, 431, 432, 433, 434,  54,  54, 435, 436, 437, 438, 439, 414,  54,  54,
-     54,  54,  54,  54,  54,  54,  54, 440,  54,  54,  54,  54,  54, 441, 442, 443,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 291, 292, 293,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39, 296,  39,  39, 297, 100, 298, 299, 300,  39,  39, 301, 302,  39,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 303, 304,  39, 305,  39, 306, 307,
+    308, 309, 310, 311,  39,  39,  39, 312, 313,   2, 314, 315, 316, 143, 317, 318,
+    319, 320, 321, 100,  39,  39,  39, 322, 323, 324, 194, 325, 326, 327, 328, 329,
+    100, 100, 100, 100, 276,  39, 330, 331,  39, 332, 333, 334, 335,  39, 336, 100,
+     28, 337, 338,  39, 339, 340, 341, 342,  39, 343,  39, 344, 345, 346, 100, 100,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 231, 142, 347, 348, 349, 100, 100,
+    350, 351, 352, 353, 143, 354, 100, 355, 356, 357, 100, 100,  39, 358, 359, 209,
+    360, 361, 362, 363, 364, 100, 365, 366,  39, 367, 368, 369, 370, 371, 100, 100,
+     39,  39, 372, 100,  28, 373,  17, 374,  39, 375, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 376,  39, 377, 100, 100, 364, 378, 379, 380, 381, 380, 382, 231,
+    383, 384, 385, 386, 160, 387, 388, 389, 390, 391, 392, 393, 160, 394, 395, 396,
+    397, 398, 100, 100, 399, 400, 401, 402, 403, 404, 405, 406, 100, 100, 100, 100,
+     39, 407, 408, 409,  39, 410, 411, 100, 100, 100, 100, 100,  39, 412, 413, 100,
+     39, 414, 415, 416,  39, 417, 418, 100, 122, 419, 420, 100, 100, 100, 100, 100,
+     39, 421, 100, 100, 100,  28,  17, 422, 423, 424, 425, 100, 100, 426, 427, 428,
+    429, 430, 431,  39, 432, 433,  39, 139, 100, 100, 100, 100, 100, 100, 100, 100,
+    434, 435, 436, 437, 438, 439, 100, 100, 440, 441, 442, 443, 444, 418, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 445, 100, 100, 100, 100, 100, 446, 447, 448,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 300,  54,  54,  54,
-    195, 195, 195, 444,  39,  39,  39,  39,  39,  39, 445,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     39, 446,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 297, 100, 100, 100,
+    194, 194, 194, 449,  39,  39,  39,  39,  39,  39, 450, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 380,  39,  39, 451,
+     39, 452, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39, 447,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     39,  39, 420, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39, 139, 143, 448,  54,  54, 307, 449,  39, 450, 451, 452, 453,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  28,  17, 454,  54,  54,  54,  39,  39, 455, 456, 457,  54,  54, 458,
+     39, 139, 143, 453,  39, 143, 454, 455,  39, 456, 457, 458, 459, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100,  28,  17, 460, 100, 100, 100,  39,  39, 461, 462, 463, 100, 100, 464,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 459,
-     39,  39,  39,  39,  39,  39, 142,  54, 370,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39,  39,  39, 143,  54, 460, 461,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39, 296,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39, 462, 463, 464,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    149, 149, 149, 149, 149, 149, 149, 241, 149, 465, 149, 466, 467, 468, 149, 469,
-    149, 149, 470,  54,  54,  54,  54, 471, 149, 149, 472, 473,  54,  54,  54,  54,
-    474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 474, 475, 487,
-    477, 488, 489, 490, 481, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 465,
+     39,  39,  39,  39,  39,  39, 142, 100, 372, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 466,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 467, 468, 469,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39, 293, 100, 100, 100, 100, 100, 100, 100, 100,
+     39,  39,  39, 470, 471, 472, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  22, 473, 474, 149, 149, 149, 475, 100,
+    149, 149, 149, 149, 149, 149, 149, 238, 149, 476, 149, 477, 478, 479, 149, 208,
+    149, 149, 480, 100, 100, 100, 100, 481, 149, 149, 482, 483, 100, 100, 100, 100,
+    484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 484, 485, 497,
+    487, 498, 499, 500, 491, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-     22, 502,  22, 503, 504, 505,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    506, 507,  54,  54,  54,  54,  54,  54,  39, 508, 509,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  39, 510,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39, 511,  54,  28, 512, 513,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54, 514, 210, 515,  54,  54, 516, 517,  54,  54,  54,  54,  54,  54,
-    518, 519, 520, 521, 522, 523,  54, 524,  54,  54,  54,  54,  54,  54,  54,  54,
-    149, 525, 149, 149, 240, 526, 527, 241, 528, 149, 149, 149, 149, 529,  54, 530,
-    531, 532, 533, 534,  54,  54,  54,  54, 149, 149, 149, 149, 149, 149, 149, 535,
+     22, 512,  22, 513, 514, 515, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 516, 100, 100, 100, 100, 100, 100, 100,
+    517, 518, 100, 100, 100, 100, 100, 100,  39, 519, 520, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 380, 521,  39, 522, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 523,
+     39,  39,  39,  39,  39,  39, 524, 100,  28, 525, 526, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 527, 209, 528, 100, 100, 529, 530, 100, 100, 100, 100, 100, 100,
+    531, 532, 533, 534, 535, 536, 100, 537, 100, 100, 100, 100, 100, 100, 100, 100,
+    149, 538, 149, 149, 237, 539, 540, 238, 541, 149, 149, 149, 149, 542, 100, 543,
+    544, 545, 546, 547, 100, 100, 100, 100, 149, 149, 149, 149, 149, 149, 149, 548,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 536, 537, 149, 149, 149, 240, 149, 149, 538, 539,
-    525, 149, 540, 149, 541, 542,  54,  54, 149, 149, 149, 543, 149, 149, 544, 149,
-    149, 149, 240, 545, 546, 547, 548,  54, 149, 149, 149, 149, 549, 149, 209, 550,
+    149, 149, 149, 149, 149, 149, 549, 550, 149, 149, 149, 237, 149, 149, 551, 552,
+    538, 149, 553, 149, 554, 555, 100, 100, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 237, 556, 557, 558, 559, 560, 149, 149, 149, 149, 561, 149, 208, 562,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39, 342,  54,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39, 100,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 551,  39,  39,  39,  39,  39,  39,
-    342,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 139,  39,  39,  39,  39,  39,  39,
+    339,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39, 552,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39, 563,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 553,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 564,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    342,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+    339, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  53,  54,  54,  54,  54,  54,
-    554, 555, 555, 555,  54,  54,  54,  54,  22,  22,  22,  22,  22,  22,  22, 556,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 557
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 565, 100, 100, 100, 100, 100,
+    566, 567, 567, 567, 100, 100, 100, 100,  22,  22,  22,  22,  22,  22,  22, 568,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 569
 };
 
 static RE_UINT8 re_general_category_table_3[] = {
@@ -9643,7 +9829,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0, 15,
     15, 15, 15,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17,  7,  7,  7,  3,  3,  4,  3,  3, 14, 14,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  3, 17,  0,  3,  3,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  3, 17,  3,  3,  3,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22,
@@ -9673,13 +9859,11 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22,  0,  0,  3,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 11, 15, 15, 15, 15, 15, 15,  0,
+    17, 17,  0,  0,  0,  0,  0,  0, 22, 22, 22, 22, 22, 22, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 21, 22, 22, 22, 22, 22, 22,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -9733,9 +9917,9 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 24, 24, 24, 22, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
     15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0, 15, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 22, 15, 22, 22,
     22, 24, 24, 24, 24,  0, 22, 22, 22,  0, 22, 22, 22, 22,  0,  0,
-     0,  0,  0,  0,  0, 22, 22,  0, 15, 15, 15,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 22, 22,  0, 15, 15, 15,  0,  0, 15,  0,  0,
     15, 15, 22, 22,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  3, 18, 18, 18, 18, 18, 18, 18, 14,
     15, 22, 24, 24,  3, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9743,7 +9927,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0, 15, 15, 15, 15, 15,  0,  0, 22, 15, 24, 22,
     24, 24, 24, 24, 24,  0, 22, 24, 24,  0, 24, 24, 22, 22,  0,  0,
-     0,  0,  0,  0,  0, 24, 24,  0,  0,  0,  0,  0,  0,  0, 15,  0,
+     0,  0,  0,  0,  0, 24, 24,  0,  0,  0,  0,  0,  0, 15, 15,  0,
     15, 15, 22, 22,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9768,7 +9952,9 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 22, 15, 15, 22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  4,
     15, 15, 15, 15, 15, 15, 21, 22, 22, 22, 22, 22, 22, 22, 22,  3,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  3,  3,  0,  0,  0,  0,
-     0, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 22, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22, 15,  0,  0,
@@ -9826,10 +10012,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  5,  6,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  3,  3,  3, 25, 25,
     25, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
-    15, 15, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 22, 22, 22,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 22, 22, 22, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 22, 22, 24,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9840,7 +10026,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22,  3,  3,  3, 21,  3,  3,  3,  4, 15, 22,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18,  0,  0,  0,  0,  0,  0,
-     3,  3,  3,  3,  3,  3,  8,  3,  3,  3,  3, 22, 22, 22, 17,  0,
+     3,  3,  3,  3,  3,  3,  8,  3,  3,  3,  3, 22, 22, 22, 17, 22,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -9876,16 +10062,16 @@ static RE_UINT8 re_general_category_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3, 21,  3,  3,  3,  3,  3,  3,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 22,
-    22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 22, 24, 22, 22, 22, 22, 22, 24, 22, 24, 24, 24,
-    24, 24, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,
+    24, 24, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  3,  3,  3,  3,  3,  3,
      3, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 22, 22, 22, 22,
-    22, 22, 22, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
+    22, 22, 22, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14,  3,  3,  0,
     22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 24, 22, 22, 22, 22, 24, 24, 22, 22, 24, 22, 22, 22, 15, 15,
@@ -9914,8 +10100,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 21, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 21, 21, 21, 21, 21,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0, 22, 22, 22, 22, 22,
     10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
     10, 13, 10, 13, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -9946,7 +10130,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,  0,  0,  0,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23,
     23, 22, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -10022,10 +10206,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     10, 13, 10, 10, 10, 13, 13, 10, 13, 10, 13, 10, 13, 10, 10, 10,
     10, 13, 10, 13, 13, 10, 13, 13, 13, 13, 13, 13, 21, 21, 10, 10,
     10, 13, 10, 13, 13, 14, 14, 14, 14, 14, 14, 10, 13, 10, 13, 22,
@@ -10043,7 +10223,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     16, 19,  5,  6,  5,  6,  5,  6,  5,  6,  3,  3,  3,  3,  3, 21,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  8,  8,  3,  3,  3,  3,
      8,  3,  5,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-    14, 14,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14,  3,  3,  3,  5,  6,  5,  6,  5,  6,  5,  6,  8,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -10077,8 +10257,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -10104,10 +10282,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     10, 13, 10, 13, 13, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
     10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 10, 10, 10, 10, 13,
     10, 10, 10, 10, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
-     0,  0, 10, 13, 10, 10, 10, 10, 13, 10, 13,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 13, 10, 13, 10, 10, 10, 10, 13, 10, 13,  0,  0,  0,  0,  0,
+    10, 13,  0, 13,  0, 13, 10, 13, 10, 13,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 10, 13, 15, 21, 21, 13, 15, 15, 15, 15, 15,
+     0,  0, 21, 21, 21, 10, 13, 15, 21, 21, 13, 15, 15, 15, 15, 15,
     15, 15, 22, 15, 15, 15, 22, 15, 15, 15, 15, 22, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 24, 24, 22, 22, 24, 14, 14, 14, 14, 22,  0,  0,  0,
@@ -10127,6 +10305,8 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 24, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 22, 24, 24, 22, 22, 22, 22, 24, 24, 22, 22, 24, 24,
     24,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0, 21,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  3,  3,
@@ -10176,18 +10356,18 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  6,  5,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
      0,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  4, 14,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  4, 14, 14, 14,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
      3,  3,  3,  3,  3,  3,  3,  5,  6,  3,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
@@ -10261,7 +10441,17 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10,
+    10, 10, 10,  0, 10, 10,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13,  0, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    21, 21, 21, 21, 21, 21,  0, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21,  0, 21, 21, 21, 21, 21, 21, 21, 21, 21,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15,  0,  0, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10322,6 +10512,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 18, 18, 18, 18,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 22, 22, 22, 22,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, 18,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10331,10 +10525,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22, 22, 22, 22,  3,  3,  3,  3,  3,  3,  3,  0,  0,
      0,  0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     18, 18, 18, 18, 18, 18,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,
+    22, 15, 15, 22, 22, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     24, 24, 24, 22, 22, 22, 22, 24, 24, 22, 22,  3,  3, 17,  3,  3,
-     3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,
+     3,  3, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -10393,11 +10587,13 @@ static RE_UINT8 re_general_category_table_3[] = {
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 24, 22, 24, 24,
-    22, 22, 22, 22, 22, 22, 24, 22, 15,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 24, 22, 15,  3,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 24, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 18,  3,  3,  3, 14,
+    15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24, 24, 24, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22,  3,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 18, 18, 18, 18, 18,
@@ -10423,7 +10619,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 24, 22, 22,  3,  3,  3, 15,  3,  3,
      3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24,
@@ -10458,12 +10654,14 @@ static RE_UINT8 re_general_category_table_3[] = {
      3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  3,  3,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,
     22, 22, 22, 22, 22,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10487,6 +10685,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    21, 21, 21, 21,  0, 21, 21, 21, 21, 21, 21, 21,  0, 21, 21,  0,
+    15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10496,6 +10698,12 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 14, 22, 22,  3,
     17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+    22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 24, 24, 22, 22, 22, 14, 14, 14, 24, 24, 24,
@@ -10504,8 +10712,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 22, 22, 22, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 22, 22, 22, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
@@ -10578,6 +10784,8 @@ static RE_UINT8 re_general_category_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22, 22, 22, 22, 22,
      0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     22, 22, 22, 22, 22, 22, 22,  0, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0, 22, 22, 22, 22, 22,
     22, 22,  0, 22, 22,  0, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,
@@ -10586,8 +10794,12 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0, 15, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  4,
+    15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,  0, 15, 15,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,
     15, 15, 15, 15, 15,  0,  0, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -10639,41 +10851,39 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
-    14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
@@ -10705,258 +10915,268 @@ RE_UINT32 re_get_general_category(RE_UINT32 codepoint) {
 static RE_UINT8 re_graph_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 13, 13, 13, 13, 13, 13, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 13, 13, 13, 13, 13, 13, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    59, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60
 };
 
 static RE_UINT16 re_graph_table_2[] = {
       0,   1,   2,   3,   0,   1,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   4,   5,   6,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   7,   8,   2,   9,   2,  10,  11,
-     12,   2,   2,   2,   2,   2,   2,   2,  13,   2,  14,   2,   2,  15,   2,  16,
-      2,  17,  18,  19,   0,  20,  21,   2,   2,   2,   2,   2,  22,  23,  24,  25,
-     26,  27,  28,  29,  30,  31,  32,  33,  34,  31,  35,  36,  37,  38,  39,  40,
-     41,  42,  43,  44,  41,  45,  46,  47,  41,   2,  48,  49,  50,  51,  52,  53,
-      1,  54,  55,   0,  56,  57,  58,   0,   2,   2,  59,  60,  61,  12,  62,   0,
-      2,   2,   2,   2,   2,   2,  63,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,  64,   2,  65,  66,  67,   2,  68,   2,  16,  69,  70,   2,   2,  71,
+      2,   2,   2,   2,   2,   2,   2,   2,  12,   2,  13,   2,   2,  14,   2,  15,
+      2,  16,  17,  18,  19,   2,   2,   2,   2,   2,   2,   2,  20,  21,  22,  23,
+     24,  25,  26,  27,  28,  29,  30,  31,  32,  29,  33,  34,  35,  36,  37,  38,
+     39,  40,  41,  42,  39,  43,  44,  45,  39,   2,  46,  47,  48,  49,  50,  51,
+      1,  52,  53,   0,  54,  55,  56,   0,   2,   2,  57,  58,  59,  60,  61,   0,
+      2,   2,   2,   2,   2,   2,  62,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,  63,   2,  64,  65,  66,   2,  67,   2,  15,  68,  69,   2,   2,  70,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,  72,   2,   2,  73,  74,  75,  76,  77,   2,   2,  78,  79,
-     80,   2,   2,  73,   2,  81,   2,  82,   3,  83,  84,  85,   2,  86,  87,   2,
-     88,   2,   3,  89,  79,  90,  91,   0,   2,   2,  86,  69,   2,   2,   2,  92,
-      2,  93,  94,   2,  95,  16,  10,  96,   2,   2,   2,   2,   2,   2,   2,  97,
-      2,   2,   2,   2,   2,   2,   2,   2,  71,   2,  98,  78,   2,  20,  99, 100,
-    101, 102,   3, 103, 104,   2, 105, 106,   2,   2,   2,   2,  86,   2,   2,   2,
+      2,   2,   2,   2,  71,   2,   2,  72,  73,  74,  75,  76,   2,   2,  77,  78,
+     69,   2,   2,  72,   2,  18,   2,  79,   3,  80,  81,  82,   2,  83,  84,   2,
+     85,   2,   3,  86,  78,  87,  88,   0,   2,   2,  89,   3,   2,   2,   2,  90,
+      2,  91,  92,   2,  93,  15,  10,  94,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,  70,   2,  95,  77,   2,  96,  97,  98,
+     99, 100,   3, 101, 102,   2, 103, 104,   2,   2,   2,   2,  83,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2, 107,  19,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2, 105, 106,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 108, 109,   2,   2,   2,
-      2, 110,   3,   2,   2,   2,   2, 111,   2,  63,   2, 112,  75, 113, 113,   2,
-      2,   2, 114,   0,  97,   2,   2,  76,   2,   2,   2,   2,   2,   2,  82, 115,
-      1,   2,   1,   2,   8,   2,   2,   2, 116,   7,   2,   2, 110,   2,   2, 117,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 107, 108,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2, 109,   2,  62,   2, 110,  74, 111, 111,   2,
+      2,   2,  77,   0, 112,   2,   2,  75,   2,   2,   2,   2,   2,   2,  79, 113,
+      1,   2,   1,   2,   8,   2,   2,   2, 114,   7,   2,   2, 115,   2,   2, 116,
       3,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,  89,   2, 117,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2, 118,   2,   2,   2,   2,   2, 119,   2,   2,   2,   2,   2,   2, 120, 121,
+      2, 122,   2, 119,   2,   2, 123,   2,   2,   2, 124,  68,   2,   2, 125,   3,
+      2,  74, 126,   2,   2,   2, 127,  74, 128, 129,   2,  83,   2,   2,   2, 130,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  69,
-      2,   2,   2,   2, 118,   2, 119,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2, 120,   2,   2,   2,   2,   2, 121,   2,   2,   2,   2,   2,   2, 122, 123,
-      2, 124,   2, 121,   2,   2, 125,   2,   2,   2, 126,  69,   2,   2, 127,   3,
-      2,  75, 128,   2,   2,   2, 129,  75, 130, 131,   2,  86,   2,   2,   2, 132,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 117, 133,  55,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 116, 131,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,  90,   2,   2,  70,   0, 134, 135, 136,   2,   2,   2, 137,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 105,   2, 138,   2, 139, 140,
-     70,   2, 141, 142,   2,   2,   2,  89,   1,   2,   2,   2,   2,   3, 143, 144,
-    145, 146, 147,   0,   2,   2,   2,  96, 148, 149,   2,   2, 104,  91, 105,  78,
-      0,   0,   0,   0,  69,   2, 106,  55,   2, 150,  81,  96, 151,   2, 152,   0,
-      2,   2,   2,   2,  78, 153, 154,  55,   2,  10,   2, 155,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,  75,  82, 139,   0,   0,   0,   0,
-    156, 157, 109,   2,   3, 158,   0, 159, 160, 161,   0,   0,   2, 162, 138,   2,
-    163, 164, 165,   2,   2,   0,   2, 166,   2, 167, 168, 169, 170, 171,   0,   0,
-      2,   2, 172,   0,   2, 114,   2, 173,   2, 174,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   2, 175,   0,   0,   2,  10,  70,   0,   0, 105, 120,  75,
-      2,   2, 176, 177,   2,   2, 178, 179,   2,  20,  10,  75,   2,   2,   2, 180,
-    181,   3,   0,   0, 182, 153,   2, 183,  22, 184, 185, 186,   0,   0,   0,   0,
-      2,   2, 187, 188,   2,   2, 174,   0,   0,   0,   0,   0,   2, 168,  78,   0,
-      2,   2, 189, 190,   2,  73, 191,   0,  16,  86,   0,   0,   0,   0,   0,   0,
-      2,  55,   0,   0,   0,   2,   2, 192, 193, 194, 195,   0,   0, 196,   4, 197,
-      2,   2,  10,   2,   2, 198,   2,  73,   0,   0,   0,   0,   0,   0,   0,   0,
-    199, 200, 201, 118, 138, 202,   0,   0, 203, 204, 174, 205, 206, 191,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  73,   0,   0,   0,   0,   0, 207,   2, 208,
+      2,   2,   2,  87,   2,   2,  69,   0, 132, 133, 134,   2,   2,   2, 135,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 136,   2, 137, 138,
+     69,   2, 139, 140,   2,   2,   2,  86,   1,   2,   2,   2,   2,   3, 141, 142,
+    143, 144, 145,   0,   2,   2,   2,  94, 146, 147,   2,   2, 102, 148, 138,  77,
+      0,   0,   0,   0,  68,   2, 104,  53,   2, 149,  18,  94, 150,   2, 151,   0,
+      2,   2,   2,   2,  77, 152, 153,  53,   2,  10,   2, 154, 155, 156,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,  74,  79, 157, 158, 159,   0,   0,
+    160, 161, 108,   2,   3, 162,   0, 163, 164, 165,   0,   0,   2, 166, 136,   2,
+    167, 168, 169,   2,   2,   0,   2, 170,   2, 171, 172, 173, 174, 175,   0,   0,
+      2,   2, 176,   0,   2, 177,   2, 178,   2, 179,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   3,   2, 180,   0,   0,   2,  10,  69, 138, 181, 138, 118,  74,
+      2,   2, 182,  73,   2,   2, 183, 184,   2,  96,  10,  74,   2,   2,   2, 185,
+    186,   3,   0,   0, 187, 152,   2, 188,  20, 189, 190, 191,   0,   0,   0,   0,
+      2,   2, 192, 193,   2,   2, 179,   0,   0,   0,   0,   0,   2, 172,  77,   0,
+      2,   2, 194, 195,   2,  69, 181,   0,  15,  83, 105,   0,   0,   0,   0,   0,
+      2,  53,   0,   0,   0,   2,   2, 196, 197, 198, 199,   0,   0, 200,   4, 201,
+      2,   2,  10,   2,   2, 202,   2,  72,   0,   0,   0,   0,   0,   0,   0,   0,
+    203, 204, 205,  89, 136, 206,   0,   0, 207, 208, 179, 209, 210, 181,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  72,   0,   0,   0,   0,   0, 211,   2, 212,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  70,   0,   0,   0,
-      2,   2,   2, 209,   2,   2,   2,   2,   2,   2, 210,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  69,   0,   0,   0,
+      2,   2,   2, 213,   2,   2,   2,   2,   2,   2, 214,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2, 211,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 138,   2,   2, 177,
+      2, 215,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,  73,   3, 212,   0,   0, 105, 213,   2,   2, 214, 215, 216,   0,   0,   0,
+      2,  72,   3, 216,   2,   3, 152, 217,   2,   2, 218, 219, 220,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   2,   2,  96,   0,   0,   0,   2,   2, 217,   2, 218,   0,   0, 219,
+      0,   0,   2,   2,  94,   0,   0,   0,   2,   2, 221,   2, 222,   0,   0, 223,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 121,
-      2,   2,   2,   2,   2,   2,  82,   0, 172,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 119,
+      2,   2,   2,   2,   2,   2,  79,   0, 176,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,   2,   3,   0, 220, 221,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,  55,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2, 222, 223, 210,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 224,
+      2,   2,   2,   2,   2,   2,   2,   2,   2, 225, 226, 227,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,  53,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2, 228, 229, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,  82,   2, 224,   2,   2,   2,   2,   2, 172,
-      2,   2, 225,   0,   0,   0,   0,  76,   2,   2,  75,  73,   0,   0,   0,   0,
-      2,   2,  20,   2,  12, 226, 227,   2, 228, 229, 230,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2, 231,   2,   2,   2,   2,   2,   2,   2,   2, 232,   2,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,  87, 117,   2,   2,   2, 214,   0,
+      2,   2,   2,   2,   2,   2,   2,  79,   2, 230,   2,   2,   2,   2,   2, 106,
+      2,   2, 231,   0,   0,   0,   0,  75,   2,   2,  74,  72,   0,   0,   0,   0,
+      2,   2,  96,   2,  60, 232, 233,   2, 234, 235, 236,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2, 237,   2,   2,   2,   2,   2,   2,   2,   2, 238,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2, 233, 234,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    235, 236,   0,   0,   0,   0,   0,   0,   2, 237, 212,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   2, 161,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2, 238,   0,   2,   2, 239,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 240,   2, 241,   0,   0,   1,  78,   0,   0,   0,   0,   0,   0,
-    227, 242, 243, 244, 245, 246,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,  86,   2,   2,  76, 248, 249,  82,   2,   2,   2,   2,   2, 250,   0, 251,
-    252,  55, 253, 225,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,
+    241, 242,   0,   0,   0,   0,   0,   0,   2, 243, 244,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 138,  88,   2, 165,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      2,   2,   2,   2,   2,   2, 246,   0,   2,   2, 247,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 248,   2, 249,   0,   0,   1,  77,   0,   0,   0,   0,   0,   0,
+    233, 250, 251, 252, 253, 254,   0, 255,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,  83,   2,   2,  75, 256, 257,  79,   2,   2,   2,   2,   2, 258,   0, 259,
+    202,  53, 260, 231,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2, 121, 254,   2,   2,   2,  76,   2,   2,  73, 120,
-     86,   2, 174,   2,  10, 255,   0,   0,   2,   2,   2, 256,   2,   2, 145,   2,
-      2,   2,  76, 257, 119, 258, 259,   0,   2,   2,   2,   2, 141,   2,  19, 260,
+      2,   2,   2,   2,   2,   2, 261, 262,   2,   2,   2,  75,   2,   2,  72, 263,
+     83,   2, 179,   2,  10, 264,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,  75, 265, 117, 266, 267, 268,   2,   2,   2,   2, 139,   2, 106, 269,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,  78,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2, 241,   2,   2,   2,   2,   2,   2,
-     78,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,  72,   2,   2,   2,   2,   2,   2,
+     77,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2, 261,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2, 270,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  91,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 148,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-     78,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     77,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  19,   0,   0,   0,   0,   0,
-    262,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2, 216,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 106,   0,   0,   0,   0,   0,
+    271,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2, 220,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  78
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  77
 };
 
 static RE_UINT8 re_graph_table_3[] = {
       0,   0,   0,   0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127,
     255, 255, 255, 252, 240, 215, 255, 255, 251, 255, 255, 255, 255, 255, 254, 255,
     255, 255, 127, 254, 255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0,
-    255, 255, 255, 223, 255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0,
-    255, 255, 255, 231, 255,  63, 255, 127, 255, 255, 255,  79, 255,   7,   0,   0,
-    255, 255, 223, 255, 255,   0, 248, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255, 255, 127, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255, 127,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   3, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255, 255,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255, 255,   7, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255, 128, 255, 255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0,
-    223, 253, 240, 255, 207, 255, 255, 255, 238, 255, 127, 252, 255, 255, 251,  47,
-    127, 132,  95, 255, 192, 255,  28,   0, 255, 255, 255, 135, 255, 255, 255,  15,
-    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243, 255, 254, 255, 255,
-    255,  31, 254, 255, 255, 255, 255, 254, 255, 223, 255,   7, 191,  32, 255, 255,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
-    254, 255, 255,  31, 255, 255, 255,   1, 255, 223,  31,   0, 255, 255, 127,   0,
-    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3,
-    255, 127, 255,   3, 255,   7, 255, 255, 255, 255,  63,   0, 255,  15, 255,  15,
-    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
-    255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255,   1,   0,   0,   0,
-    255, 255,  15, 240, 255, 255, 255, 248, 255, 227, 255, 255, 255,   1, 255, 255,
-    255, 255, 255,   7, 255, 255, 255, 251,  63,  63, 255, 170, 223, 255, 207, 239,
-    255, 255, 220, 127,   0, 248, 255, 255, 255, 124, 255, 255, 223, 255, 243, 255,
-    255, 127, 255,  31,   0,   0, 255, 255, 255, 255,   1,   0, 127,   0,   0,   0,
-    255, 255, 207, 255, 255, 255, 191, 255, 255, 127, 255, 255, 255, 255,  15, 254,
-    255, 128,   1, 128, 127, 127, 127, 127, 255, 255,   7,   0,   0,   0, 255,  15,
-    224, 255, 255, 255,  15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255,
-    255,  15,   0,   0, 255, 255, 255,   0, 252,   7,   0,   0,   0,   0, 224, 255,
-    255,  31, 255,   3,  63, 192, 255,   3, 255, 255,  15, 128, 255, 191, 255, 195,
-    255,  63, 255, 243,   7,   0,   0, 248, 126, 126, 126,   0, 127, 127, 255, 255,
-    255,  63, 255,   3, 127, 248, 255, 255, 127,   0, 248, 224, 255, 255, 127,  95,
-    219, 255, 255, 255,   3,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
-      0,   0, 255,  63, 255, 255, 247, 255, 127,  15, 223, 255, 252, 252, 252,  28,
-    127, 127,   0,  62, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
-    135, 255, 255, 255, 255, 255, 143, 255,  15, 224, 255, 255, 255, 255, 255, 191,
-     15, 255,  63,   0, 255,   3, 255, 255, 255, 255,  15, 255,  15, 128,   0,   0,
+    255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231,
+    255,  63, 255, 127, 255, 255, 255,  79, 255,   7, 255, 255, 255, 127,   3, 255,
+    239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 127,
+    238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94, 192, 255, 127,   0,
+    238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   3, 254,
+    238, 159, 249, 255, 159,  57, 224, 176, 207, 255, 255,   0, 236, 199,  61, 214,
+     24, 199, 255, 195, 199,  61, 129,   0, 192, 255, 255,   7, 255, 223, 253, 255,
+    255, 253, 255, 243, 223,  61,  96,  39, 207, 255, 128, 255, 255, 253, 239, 243,
+    223,  61,  96,  96, 207, 255,   6,   0, 223, 253, 240, 255, 207, 255, 255, 255,
+    238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  28,   0,
+    255, 255, 255, 135, 255, 255, 255,  15, 214, 247, 255, 255, 175, 255, 255,  63,
+     95,  63, 255, 243, 255, 254, 255, 255, 255,  31, 254, 255, 255, 255, 255, 254,
+    255, 255, 255, 223, 255, 223, 255,   7, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 254, 255, 255,  31,
+    255, 255, 255,   1, 255, 255,  63, 128, 255, 255, 127,   0, 255, 255,  15,   0,
+    255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3, 255, 255,  63,   0,
+    255,  15, 255,  15, 241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255, 199, 255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255,
+    255, 127,   0,   0, 255,  31, 255, 255, 255, 255,  15, 240, 255, 255, 255, 248,
+    255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255,   7,  63,  63, 255, 170,
+    255, 255, 223, 255, 223, 255, 207, 239, 255, 255, 220, 127,   0, 248, 255, 255,
+    255, 124, 255, 255, 223, 255, 243, 255, 255, 127, 255,  31,   1,   0, 255, 255,
+    255, 255,   1,   0, 127,   0,   0,   0, 255,   7,   0,   0, 255, 255, 207, 255,
+    255, 255, 191, 255, 255, 255,  15, 254, 255, 128,   1, 128, 127, 127, 127, 127,
+    255, 255, 255, 251,   0,   0, 255,  15, 224, 255, 255, 255, 255, 127, 255, 255,
+     15,   0, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0, 255, 255, 255,   0,
+    255,   7, 235,   3,   0,   0, 252, 255, 255,  31, 255,   3,  63, 192, 255,   3,
+    255, 255,  15, 128, 255, 191, 255, 195, 255,  63, 255, 243,   7,   0,   0, 248,
+    126, 126, 126,   0, 127, 127, 255, 255, 255,  63, 255,   3, 127, 248, 255, 255,
+    127,   0, 248, 224, 255, 255, 127,  95, 219, 255, 255, 255,   7,   0, 248, 255,
+    255, 255, 252, 255, 255, 128,   0,   0,   0,   0, 255, 255, 255, 255, 247, 255,
+    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  62, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
+      1,   0,   0,   0,  15, 224, 255, 255, 255, 255, 255, 191,  15, 255,  63,   0,
+    255,   3, 255, 255, 255, 255,  15, 255,  15, 128, 255, 247, 255, 247, 183, 255,
+    251, 255, 251,  27, 255,   0,   0,   0, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0, 255, 255,  55, 248,
     255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240, 111, 240, 239, 254,
     255, 255,  63, 135, 255,   1, 255,   1, 127, 248, 127,   0, 255, 255,  63, 254,
     255, 255,  63, 255, 255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0,
-    255,   1,   0,   0, 255, 255,   7, 252, 255,   0, 255,   3, 255,  59,   3,   0,
-    255,  63, 252, 255, 255, 255,   0, 128,   3,  32, 255, 255, 255,   1, 255,   3,
-    254, 255,  31,   0, 255, 255, 251, 255, 127, 189, 255, 191, 255,   7, 255,   3,
-    255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0, 255, 255, 255, 239,
-      3,   0,   0,   0,  31,   0, 255,   3, 255,  31,   0,   0, 255,   3,   0,   0,
+    255,   1,   0,   0, 255, 255,   7,   0, 255, 255,   7, 252, 255,   0, 255,   3,
+    255,  59,   3,   0, 255,   3,   0,   0, 255,  63, 252, 255,   7,  32, 255, 255,
+    255,   1, 255,   3, 254, 255,  31,   0, 255, 255, 251, 255, 127, 189, 255, 191,
+    255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0,
+    255, 255, 255, 239,   3,   0,   0,   0,  31,   0, 255,   3, 255,  31,   0,   0,
     255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 191, 249, 127,   0, 255,   3,
-    255, 252, 255, 255,  31,   0,   0,   0,   7,   0,   0,   0, 255, 253, 255, 255,
+    255, 252, 255, 255,  31,   0,   0,   0,   7,   0, 255, 255, 255, 253, 255, 255,
     255, 255, 127, 255,  63,   0, 255, 255, 255, 254, 127,   0, 127, 251, 255, 255,
     255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
     255, 255,   3, 128, 255, 127,  31,   0,  15,   0,   0,   0, 255, 127, 255,   1,
-    255, 195,   0,   0, 255,  63,  63,   0,  63,   0, 255, 251, 251, 255, 255, 224,
+    255, 195, 255, 255, 255,  63,  63,   0,  63,   0, 255, 251, 251, 255, 255, 224,
     255, 255,   0,   0, 255, 135, 255, 255, 255, 128, 255, 255,  31,   0,   3,   0,
-      0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31, 255,   1, 255, 243,
-    127, 254, 255, 255,  63,   0,   0,   0, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    255, 207, 255, 255, 255,  15,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
-    219,   7,   0,   0, 255,  31, 255,  63, 159, 255, 127,   0, 255,  15, 255, 195,
+      0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255, 243, 127, 254, 255, 255,  63,   0,   0,   0,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 255, 207, 255, 255, 255,  15,   0, 248,
+    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
+    255, 195,   0,   0, 127, 111, 255, 127, 159, 255, 127,   0, 255,  15, 255, 195,
       0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10, 132, 234, 150, 170,
     150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   0,   0,   3,   0,
     255, 127, 254, 255, 254, 255, 254, 255, 255,  63,   0,   0, 192, 255, 255, 255,
-      7,   0, 255, 255, 255,   1,   3,   0, 255,  31, 255,  31, 255,  63,   3,   0,
-    255, 255, 255, 253, 255,  63,  31,   7, 255,   1, 127,   0,   7,   0, 127,   0,
-      0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
+    255,   1,   3,   0, 255, 255, 255, 224, 255,  31, 255,  31, 255,  15,   1,   0,
+    255,  63,   3,   0, 255,  63,  31,  31, 255,  31, 255,   7,  63,   0, 255,   3,
+    255,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
 };
 
 RE_UINT32 re_get_graph(RE_UINT32 codepoint) {
@@ -10982,183 +11202,191 @@ RE_UINT32 re_get_graph(RE_UINT32 codepoint) {
 static RE_UINT8 re_grapheme_base_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18
-};
-
-static RE_UINT16 re_grapheme_base_table_2[] = {
-      0,   1,   1,   2,   0,   3,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   4,   5,   6,   1,   1,
-      1,   1,   1,   1,   7,   1,   1,   1,   1,   8,   9,   1,  10,  11,  12,  13,
-     14,   1,  15,   8,   1,   1,  16,  17,  18,  19,  20,   1,   1,  21,   1,  22,
-     23,  24,  25,  15,   0,  26,  27,   0,  28,  29,  30,  31,  32,  33,  34,  35,
-     36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
-     52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,
-     68,  69,  70,   0,  71,  72,  73,   0,  74,  75,  76,  77,  78,  79,  80,   0,
-      1,  81,  82,  83,  84,   1,  85,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,  86,   1,  87,  88,  89,   1,  90,   1,  91,  92,  93,   1,   1,  94,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17
+};
+
+static RE_UINT16 re_grapheme_base_table_2[] = {
+      0,   1,   1,   2,   0,   3,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   4,   5,   6,   1,   1,
+      1,   1,   1,   1,   7,   1,   1,   1,   1,   8,   9,   1,  10,  11,  12,  13,
+     14,   1,  15,   8,   1,   1,  16,  17,  18,  19,  20,   1,   1,  21,   1,  22,
+     23,  24,  25,  26,  27,   1,  28,   0,  29,  30,  31,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,
+     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,
+     69,  70,  71,   0,  72,  73,  74,   0,  75,  76,  77,  78,  79,  80,  81,   0,
+      1,  82,  83,  84,  85,   1,  86,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  87,   1,  88,  89,  90,   1,  91,   1,  92,  93,  94,   1,   1,  95,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,  92,   1,   1,  95,  96,  97,  98,  99,   1, 100, 101, 102,
-    103,   1,   1,  95, 104, 105,   1, 106,   2, 107, 108, 109,   1, 110, 111,   1,
-    112,   1, 113, 114, 102, 115,   0,   0, 116, 117, 118, 119, 120, 121,   1, 122,
-      1, 123, 124,   1, 125, 126, 127, 128,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,  94,   1, 129, 130,   1,  26, 131, 132,
-    133, 134,   1, 135, 136,   1,   0,   0,   1,   1,   1,   1, 110,   1,   1,   1,
+      1,   1,   1,   1,  93,   1,   1,  96,  97,  98,  99, 100,   1, 101, 102, 103,
+    104,   1,   1,  96, 105, 106,   1, 107,   2, 108, 109, 110,   1, 111, 112,   1,
+    113,   1, 114, 115, 103, 116,   0,   0, 117, 118, 119, 120, 121, 122,   1, 123,
+      1, 124, 125,   1, 126, 127, 128, 129,   1,   1,   1,   1,   1,   1,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,  95,   1, 130, 131,   1, 132, 133, 134,
+     26, 135,   1, 136, 137,   1, 138,   0,   1,   1,   1,   1, 111,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 137,  15,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 139,  15,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138, 139,   1,   1,   1,
-      1, 140,   2,   1,   1,   1,   1, 141,   1,  85,   1, 142, 143, 144, 144,   0,
-      1,   1, 145,   0, 146,   1,   1, 147,   1,   1,   1,   1,   1,   1, 106, 148,
-      1, 149,  68,   1, 150,   1,   1,   1, 151,   8,   1,   1, 140,   1,   1, 152,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 140, 141,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 142,   1,  86,   1, 143, 144, 145, 145,   0,
+      1,   1, 131,   0, 146,   1,   1, 147,   1,   1,   1,   1,   1,   1, 107, 148,
+      1, 149,  69,   1, 150,   1,   1,   1, 151,   8,   1,   1, 152,   1,   1, 153,
       2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1, 154,   1, 155,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 156,   1, 157, 131,   1,   1, 158,   1,   1,   1,   1,   1,   1, 159, 160,
+    161, 162,   1, 163,   1,   1, 164, 165,   1, 166, 167,  93,  29, 168, 169, 170,
+      1, 171, 172, 173,   1, 174, 175, 176, 177, 178,   1, 111,   1,   1,   1, 179,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  92,
-      1,   1,   1,   1, 153,   1, 154,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 155,   1, 156, 130,   1,   1, 157,   1,   1,   1,   1,   1,   1, 158, 159,
-    160, 161,   1, 162,   1,   1, 163, 164,   1, 165, 166,  92,  28, 167, 168, 169,
-      1, 170, 171, 172,   1, 173, 174, 175, 176, 177,   1, 110,   1,   1,   1, 178,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 152, 179, 180,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 153, 180, 181,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1, 181,   1,   1,  93,   0, 182, 183, 184,   1,   1,   1, 185,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 186,   1, 187,   1,  27, 188,
-    189, 186, 190, 191,   1,   1,   1,  92,  68,   1,   1,   1, 130,   2, 192, 193,
-    194, 195, 196,   0,   1,   1,   1,  91, 197, 198,   1,   1, 136, 199, 186,  92,
-      0,   0,   0,   0,  92,   1, 200, 201,   1, 202, 133, 106, 203,   1, 204,   0,
-      1,   1,   1,   1, 130, 149, 205, 180,   1, 206,   1, 207,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 143, 106,  27,   0,   0,   0,   0,
-    208, 209, 139,   1,   2, 210,   0, 211, 212, 213,   0,   0,   1, 214, 187,   1,
-    215, 106, 216,   1,   1,   0,   1, 217,   1, 218, 219, 220, 221, 222,   0,   0,
-      1,   1, 223,   0,   1, 145,   1, 224,   1, 225,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   2,   1, 226,   0,   0,   1, 206, 227,   0,   0, 186, 155, 143,
-    228, 162, 229,  19, 120, 230, 231, 232,  28, 233, 206, 234, 120, 235, 236, 237,
-    238, 239,   0,   0, 240, 149,   2, 241,  44, 242, 243, 244,   0,   0,   0,   0,
-      1, 162, 245, 246,   1, 247, 248,   0,   0,   0,   0,   0,   1, 249, 201,   0,
-      1, 250, 251, 252,   1, 253, 254,   0,  91, 255,   0,   0,   0,   0,   0,   0,
-      1, 256,   0,   0,   0,   1,   1, 257, 258, 259, 260,   0,   0, 261, 262, 263,
-    264, 265, 266,   1, 267, 268,   1,  95,   0,   0,   0,   0,   0,   0,   0,   0,
-    269, 270, 271, 153,  19, 272,   0,   0, 273, 200, 274, 275, 276, 254,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 277,   0,   0,   0,   0,   0, 278,   1, 279,
+      1,   1,   1, 182,   1,   1,  94,   0, 183, 184, 185,   1,   1,   1, 186,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 187,   1, 188, 189,
+    190, 189, 191, 192,   1,   1,   1,  93,  69,   1,   1,   1, 131,   2, 193, 194,
+    195, 196, 197,   0,   1,   1,   1,  92, 198, 199,   1,   1, 137, 138, 189,  93,
+      0,   0,   0,   0,  93,   1, 200, 201,   1, 202,  26, 107, 203,   1, 204,   0,
+      1,   1,   1,   1, 131, 149, 205, 181,   1, 206,   1, 207, 208, 209,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 144, 107, 210, 211, 212,   0,   0,
+    213, 214, 141,   1,   2, 215,   0, 216, 217, 218,   0,   0,   1, 219, 187,   1,
+    220, 107, 221,   1,   1,   0,   1, 222,   1, 223, 224, 225, 226, 227,   0,   0,
+      1,   1, 228,   0,   1, 229,   1, 230,   1, 231,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   2,   1, 232,   0,   0,   1, 206, 233, 189, 234, 189, 156, 144,
+    235, 163, 236, 237, 121, 238, 239, 240,  29, 241, 206, 242, 121, 243, 244, 245,
+    246, 247,   0,   0, 248, 149,   2, 249,  45, 250, 251, 252,   0,   0,   0,   0,
+      1, 163, 253, 254,   1, 255, 256,   0,   0,   0,   0,   0,   1, 257, 201,   0,
+      1, 258, 259, 260,   1, 261,  28,   0,  92, 262, 139,   0,   0,   0,   0,   0,
+      1, 263,   0,   0,   0,   1,   1, 264, 265, 266, 267,   0,   0, 268, 269, 270,
+    271, 272, 273,   1, 274, 275,   1,  96,   0,   0,   0,   0,   0,   0,   0,   0,
+    276, 277, 278, 154,  19, 279,   0,   0, 280, 200, 281, 282, 283,  28,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 284,   0,   0,   0,   0,   0, 285,   1, 286,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  93,   0,   0,   0,
-      1,   1,   1, 280,   1,   1,   1,   1,   1,   1, 244,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  94,   0,   0,   0,
+      1,   1,   1, 287,   1,   1,   1,   1,   1,   1, 252,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 281,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 189,   1,   1, 229,
+      1,  27,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,  95,   2, 282,   0,   0, 186, 283,   1, 284, 285, 286,  19,   0,   0,   0,
+      1,  96,   2, 288,   1,   2, 149, 289,   1, 290, 291, 292,  19,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   1,  91,   0,   0,   0,   1,   1, 133,   1, 287,   0,   0, 288,
+      0,   0,   1,   1,  92,   0,   0,   0,   1,   1,  26,   1, 293,   0,   0, 294,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 162,
-      1,   1,   1,   1,   1,   1, 106,   0, 223,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 163,
+      1,   1,   1,   1,   1,   1, 107,   0, 228,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   2,   0, 289, 290,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 180,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1, 291, 292,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1, 106,   1, 293,   1, 294, 295, 296,   1, 223,
-      1,   1, 297,   0,   0,   0,   0, 147,   1,   1, 143,  95,   0,   0,   0,   0,
-      1,   1,  26,   1, 298, 299, 300,   1, 301, 302, 303,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 304,   1,   1,   1,   1,   1,   1,   1,   1, 305,   1,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 295,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 296, 297, 298,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 181,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 299, 300,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 189,   1,   1,   1, 252,   0,
+      1,   1,   1,   1,   1,   1,   1, 107,   1, 301,   1, 302, 303, 288,   1,  15,
+      1,   1, 304,   0,   0,   0,   0, 147,   1,   1, 144,  96,   0,   0,   0,   0,
+      1,   1, 132,   1, 305, 306, 307,   1, 308, 309, 310,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 311,   1,   1,   1,   1,   1,   1,   1,   1, 312,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      0, 306,   0, 307, 308,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   1, 309, 282,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   1, 310,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1, 311,   0,   1,   1, 312,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 313,   1, 314,   0,   0,  68, 130,   0,   0,   0,   0,   0,   0,
-    300, 315, 316, 317, 318, 319,   0, 320,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 110,   1,   1, 147, 321, 322, 106,   1,   1,   1,   1,   1, 115,   0, 323,
-    324, 180, 325, 326,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      0, 313,   0, 314, 315,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1, 316, 317,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 189, 116,   1, 318,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 319,
+      1,   1,   1,   1,   1,   1, 320,   0,   1,   1, 321,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 322,   1, 323,   0,   0,  69, 131,   0,   0,   0,   0,   0,   0,
+    307, 324, 325, 326, 327, 328,   0, 329,   0,   0,   0,   0,   0,   0,   0,   0,
+      1, 111,   1,   1, 147, 330, 331, 107,   1,   1,   1,   1,   1, 116,   0, 332,
+    275, 181, 333, 334,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 162, 327,   1,   1,   1, 147,   1,   1,  95, 155,
-    110,   1, 328,   1, 206, 329,   0,   0,   1,   1,   1, 330,   1,   1, 194,   1,
-      1,   1, 147, 331, 154, 332, 333,   0,   1,   1,   1,   1, 190,   1,  15, 189,
+      1,   1,   1,   1,   1,   1, 335, 336,   1,   1,   1, 147,   1,   1,  96, 337,
+    111,   1, 338,   1, 206, 339,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1, 147, 340, 155, 341, 342, 343,   1,   1,   1,   1, 191,   1,  15, 190,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 130,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 314,   1,   1,   1,   1,   1,   1,
-    130,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  96,   1,   1,   1,   1,   1,   1,
+    131,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 231,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 239,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 199,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    130,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  15,   0,   0,   0,   0,   0
 };
@@ -11167,87 +11395,89 @@ static RE_UINT8 re_grapheme_base_table_3[] = {
       0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 127, 255, 223, 255, 255,
       0,   0, 255, 252, 240, 215, 255, 255, 251, 255, 255, 255,   7, 252, 255, 255,
     255, 255, 254, 255, 255, 255, 127, 254, 255, 231,   0,   0,   0,   0,   0,  64,
-     73,   0, 255, 255, 255, 135,  31,   0, 192, 255,   0, 200, 255,   7,   0,   0,
+     73,   0, 255, 255, 255, 135,  31,   0, 192, 255,   0, 232, 255,   7,   0,   0,
     255, 255,  63,  64,  96, 194, 255, 255, 255,  63, 253, 255, 255, 255,   0,   0,
       0, 224, 255, 255,  63,   0,   2,   0, 255,   7, 240, 199, 255, 255,  63,   4,
-     16,   1, 255, 127, 255, 255, 255,  65, 255, 255, 223, 255, 255,   0,   0,   0,
-    248, 255, 255, 255, 255, 255, 255, 235,   1, 222,   1, 255, 243, 255, 255, 255,
-    237, 159, 249, 255, 255, 253, 197, 163, 129,  89,   0, 176, 195, 255, 255,  63,
-    232, 135, 249, 255, 255, 253, 109, 195,   1,   0,   0,  94, 192, 255,  92,   0,
-    232, 191, 251, 255, 255, 253, 237, 227,   1,  26,   1,   0, 195, 255,   3,   2,
-    236, 159, 249, 255, 255, 253, 237,  35, 129,  25,   0, 176, 195, 255, 255,   0,
-    232, 199,  61, 214,  24, 199, 255, 131, 198,  29,   1,   0, 192, 255, 255,   7,
-    238, 223, 253, 255, 255, 253, 255,  35,  30,   0,   0,   7, 195, 255, 128, 255,
-    253, 223, 253, 255, 255, 253, 239,  99, 155,  13,   0,  64, 195, 255,   6,   0,
-    252, 223, 253, 255, 255, 255, 255, 167, 193, 221, 112, 255, 195, 255, 255, 255,
-    236, 255, 127, 252, 255, 255, 251,  47, 127,   0,   3, 127, 192, 255,  28,   0,
-    254, 255, 255, 255, 255, 255,  13, 128, 127, 128, 255,  15, 214, 247, 255, 255,
-    175, 255,  13,  32,  95,   0, 255, 243, 255, 255, 255, 252, 255, 255,  95, 253,
-    255, 254, 255, 255, 255,  31,   0, 128,  32,  31,   0,   0,   0,   0,   0, 192,
-    191, 223, 255,   7, 255,  31,   2, 153, 255, 255, 255,  60, 254, 255, 225, 255,
-    155, 223, 255, 223, 191,  32, 255, 255, 255,  61, 127,  61, 255,  61, 255, 255,
-    255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255, 255,   7,
-    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 255, 255, 255,   1,
-    255, 223,   3,   0, 255, 255,  99,   0, 255, 255,   3,   0, 255, 223,   1,   0,
-    255, 255,  79, 192, 191,   1, 240,  31, 255,   3, 255,   3, 255,   7, 255,   3,
-    159, 255, 255, 255, 255,   5, 255, 255, 255, 255,  63,   0, 120,  14, 251,   1,
-    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
-    255, 255, 127, 198, 255, 255, 191,   0,  26, 224,   7,   0, 255,  63,   0,   0,
-    240, 255, 255, 255, 255, 255,  15, 232, 251,  15, 255, 255, 255,   7, 240,  31,
-    252, 255, 255, 255, 195, 196, 255, 255, 191,  92,  12, 240, 255,  15,  48, 248,
-    255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255, 231, 255,   0,   8,   0,
-      2, 222, 239,   4,  63,  63, 255, 170, 255, 255, 255,  63, 223, 255, 207, 239,
-    255, 255, 220, 127, 255,   7, 255, 255, 255, 128, 255, 255,   0,   0, 243, 255,
-    255, 127, 255,  31, 127,   0,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255,
-    255, 127, 255, 255, 255, 127,  12, 254, 255, 128,   1,   0, 255, 255, 127,   0,
-    127, 127, 127, 127, 255, 255,   7,   0, 255, 255, 255, 251, 255, 255,  15,   0,
+     16,   1, 255, 127, 255, 255, 255,  65, 255,   7, 255, 255, 255, 127,   0,   0,
+    255,   3,   0,   0, 248, 255, 255, 255, 255, 255, 255, 235,   1, 222,   1, 255,
+    243, 255, 255, 255, 237, 159, 249, 255, 255, 253, 197, 163, 129,  89,   0, 176,
+    195, 255, 255,  63, 232, 135, 249, 255, 255, 253, 109, 195,   1,   0,   0,  94,
+    192, 255,  92,   0, 232, 191, 251, 255, 255, 253, 237, 227,   1,  26,   1,   0,
+    195, 255,   3,   2, 236, 159, 249, 255, 255, 253, 237,  35, 129,  25,   0, 176,
+    195, 255, 255,   0, 232, 199,  61, 214,  24, 199, 255, 131, 198,  29,   1,   0,
+    192, 255, 255,   7, 238, 223, 253, 255, 255, 253, 255,  35,  30,   0,   0,  39,
+    195, 255, 128, 255, 253, 223, 253, 255, 255, 253, 239,  99, 155,  13,   0,  96,
+    195, 255,   6,   0, 252, 223, 253, 255, 255, 255, 255, 167, 193, 221, 112, 255,
+    195, 255, 255, 255, 236, 255, 127, 252, 255, 255, 251,  47, 127,   0,   3, 127,
+    192, 255,  28,   0, 254, 255, 255, 255, 255, 255,  13, 128, 127, 128, 255,  15,
+    214, 247, 255, 255, 175, 255,  13,  32,  95,   0, 255, 243, 255, 255, 255, 252,
+    255, 255,  95, 253, 255, 254, 255, 255, 255,  31,   0, 128,  32,  31,   0,   0,
+      0,   0,   0, 192, 191, 223, 255,   7, 255,  31,   2, 153, 255, 255, 255,  60,
+    254, 255, 225, 255, 155, 223, 255, 223, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,   7, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
+    255, 255, 255,   1, 255, 255,  35, 128, 255, 255, 115,   0, 255, 255,   3,   0,
+    255, 223,   1,   0, 255, 255,  79, 192, 191,   1, 240,  31, 255,   3, 255,   3,
+    255,   7, 255,   3, 159, 255, 255, 255, 255,   5, 255, 255, 255, 255,  63,   0,
+    120,  14, 251,   1, 241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255, 199, 255, 255, 127, 198, 255, 255, 191,   0,  26, 224,   7,   0,
+    255,  63,   0,   0, 240, 255, 255, 255, 255, 255,  15, 232, 251,  31, 255, 255,
+    255,   7, 240, 127, 252, 255, 255, 255, 195, 196, 255, 255, 191,  92,  12, 240,
+    255,  15,  48, 248, 255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255, 231,
+    255,   0,   8,   0,   2, 222, 239,   4,  63,  63, 255, 170, 255, 255, 255,  63,
+    255, 255, 223, 255, 223, 255, 207, 239, 255, 255, 220, 127, 255, 128, 255, 255,
+      0,   0, 243, 255, 255, 127, 255,  31,   1,   0,   0,   0, 127,   0,   0,   0,
+    255, 255, 207, 255, 255, 255, 191, 255, 255, 127,  12, 254, 255, 128,   1,   0,
+    255, 255, 127,   0, 127, 127, 127, 127, 255, 255, 255, 251, 255, 255,  15,   0,
       0,   0, 255,  15, 255,   3, 255, 255, 255, 255, 127, 248, 224, 255, 255, 255,
-     15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0,
-    255, 127,   8, 192, 255, 255, 252,   0, 252,   7,   0,   0,   0,   0, 224, 255,
-    187, 247, 255, 255, 159,  15, 255,   3, 255, 255, 255,   0,  15, 192, 255,   3,
-      0,   0, 252, 127,  63, 192, 255, 255, 127,   0,  12, 128, 255, 255,  55, 204,
-    255, 191, 255, 195, 223, 255, 255, 127, 255, 129,  25,   0, 247,  47, 255, 243,
-    255, 255, 255, 239, 255, 255,  98,  62,   5,   0,   0, 248, 255, 207,  63,   0,
-    126, 126, 126,   0, 127, 127, 255, 255, 223,  30, 255,   3, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 127,   0, 248, 160, 255, 255, 127,  95,
-    219, 255, 255, 255,   3,   0, 248, 255,   0,   0, 255, 255, 255, 255, 252, 255,
-      0,   0, 255,  63,   0,   0, 255,   3, 255, 255, 247, 255, 127,  15, 223, 255,
-    252, 252, 252,  28, 127, 127,   0,  48, 255, 239, 255, 255, 127, 255, 255, 183,
-    255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,   1,   0,   0,   0,
+    255, 127, 255, 255,  15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255,
+    255,  15,   0,   0, 255, 127,   8, 192, 255, 255, 252,   0, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255, 159,  15, 255,   3, 255, 255, 255,   0,
+     15, 192, 255,   3,   0,   0, 252, 127,  63, 192, 255, 255, 127,   0,  12, 128,
+    255, 255,  55, 204, 255, 191, 255, 195, 223, 255, 255, 127, 255, 129,  25,   0,
+    247,  47, 255, 243, 255, 255, 255, 239, 255, 255,  98,  62,   5,   0,   0, 248,
+    255, 207,  63,   0, 126, 126, 126,   0, 127, 127, 255, 255, 223,  30, 255,   3,
+    127, 248, 255, 255, 255, 255, 255,  15, 255,  63, 255, 255, 127,   0, 248, 160,
+    255, 255, 127,  95, 219, 255, 255, 255,   7,   0, 248, 255, 255, 255, 252, 255,
+    255, 128,   0,   0,   0,   0, 255, 255,   0,   0, 255,   3, 255, 255, 247, 255,
+    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  48, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
     255, 255,   1,   0, 254, 255, 255,  15,  15, 224, 255, 255, 255, 255, 255, 191,
-     15, 255,  63,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15, 128,   0,   0,
-     63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0, 255, 255,  55, 248,
-    255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240,   1,   0, 239, 254,
-    255,   1, 255,   1,  31, 248, 127,   0, 255, 255,  63, 254, 255, 255,  63, 255,
-    255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0,
-    255, 255,   7, 252,  15,   0, 255,   3, 255,  35,   3,   0,  63,   0, 254,   3,
-    253, 255, 255, 255, 128,  63, 252, 255, 255, 255, 135, 217,   3,   0, 255, 255,
+     15, 255,  63,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15, 128, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 255,   0,   0,   0, 191, 255, 255, 255,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0,
+    255, 255,  55, 248, 255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240,
+      1,   0, 239, 254, 255,   1, 255,   1,  31, 248, 127,   0, 255, 255,  63, 254,
+    255, 255,  63, 255, 255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0,
+    255,   1,   0,   0, 255, 255,   7,   0, 255, 255,   7, 252,  15,   0, 255,   3,
+    255,  35,   3,   0,  63,   0, 254,   3, 195,   3,   0,   0, 253, 255, 255, 255,
+    128,  63, 252, 255, 255, 255,  38,   0, 255, 255, 135, 217,   3,   0, 255, 255,
     255,   1, 255,   3, 127,  16, 192, 255, 255, 255, 119,   0, 255, 255,  63, 128,
     255,  97, 255, 255, 254, 255,  31,   0, 255, 255, 251, 255, 255, 127,  44,  63,
     127, 189, 255, 191,   7,   0, 255,   3, 255, 253, 237, 163, 158,  57,   1, 224,
      15,   0,   0,   0, 163, 255, 255, 175,   3,   0,   0,   0, 255, 255,   6,  90,
     242,   0, 255,   3, 255, 127,   3,  79, 255, 255,   7,  88,  30,   0, 255,   3,
-    255,  31,   0,   0, 255, 215,  64,   1, 255,   3,   0,   0,  67,   0, 255, 255,
-    255, 127,   0,   9, 255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 190, 161,
-    119,   0, 255,   3, 255, 252, 255, 255, 255, 255,  15, 240,  30,   0,   0,   0,
-      1, 248, 255, 255, 255, 255,   7, 134, 127,   0, 129, 241, 255,   3, 128, 252,
-      7,   0,   0,   0, 255, 253, 255, 255, 255, 255,   0,  64,  63,   0, 255, 255,
-      0,   2,  18,   0, 127, 251, 255, 255,  64,   0, 255,   3, 191, 253, 255, 255,
-    255, 127,  88,   1, 255, 255, 231,   1,   0,   0,   1,   0, 255, 255,   3, 128,
-    255, 127,  31,   0, 255, 127,   0,   0, 255, 195,   0,   0, 255,  63,  32,   0,
-    255, 255, 128, 255,  63,   0, 255, 251, 251, 255, 255, 224, 255,   0, 248, 255,
-     15,   0,   3,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
+    255,  31,   0,   0, 255, 215,  64,   3,  67,   0, 255, 255, 255, 127,   0,   9,
+    255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 190, 161, 119,   0, 255,   3,
+    255, 252, 255, 255, 255, 255,  15, 240,  30,   0,   0,   0,   1, 248, 255, 255,
+    255, 255,   7, 134, 127,   0, 129, 241, 255,   3, 128, 252,   7,   0, 255, 255,
+    255, 253, 255, 255, 255, 255,   0,  64,  63,   0, 255, 255,   0,   2,  18,   0,
+    127, 251, 255, 255,  64,   0, 255,   3, 191, 253, 255, 255, 255, 127,  88,   1,
+    255, 255, 231,   1,   0,   0,   1,   0, 255, 255,   3, 128, 255, 127,  31,   0,
+    255, 195, 255, 255, 255,  63,  32,   0, 255, 255, 128, 255,  63,   0, 255, 251,
+    251, 255, 255, 224, 255,   0, 248, 255,  15,   0,   3,   0,   0,   0, 239, 111,
+      7,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
     255,   1, 255, 147, 127, 254, 255, 255,  95,  60,   0,   0,  24, 240, 255, 255,
-    255, 195, 255, 255,  35,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 255, 207, 255, 255,   0,   0, 128,   7,   0, 224, 223, 255,
-    239,  15,   0,   0, 255,  31, 128,  63, 255,  15, 255, 131, 159, 255,   0,   0,
-     15,   8, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10,
-    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
-      0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255, 192, 255, 255, 255,
-      7,   0, 255, 255, 255,   1,   3,   0,  63,   0,   0,   0, 255,  31, 255,  31,
-    255,   0, 255,   3, 255,  63,   3,   0, 255, 255, 255, 253, 255,  63,  31,   7,
-    255,   1, 127,   0,   7,   0, 127,   0
+     35,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
+    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
+    255, 207, 255, 255,   0,   0, 128,   7,   0, 224, 223, 255, 239,  15,   0,   0,
+    255,  31, 128,  63, 255, 195,   0,   0, 255,  15, 255, 131, 127, 111, 255, 127,
+    159, 255,   0,   0,  15,   8, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0,
+    150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
+    238, 251, 255,  15,   0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255,
+    192, 255, 255, 255, 255,   1,   3,   0,  63,   0,   0,   0, 255, 255, 255, 224,
+    255,  31, 255,  31, 255,  15,   1,   0, 255,   0, 255,   3, 255,  63,   3,   0,
+    255,  63,  31,  31, 255,  31, 255,   7,  63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_grapheme_base(RE_UINT32 codepoint) {
@@ -11278,7 +11508,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_1[] = {
     24,  9, 25, 26, 27, 28, 29, 30,  9,  9,  9,  9,  9, 31,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 34,
-     9,  9,  9,  9, 35,  9, 36,  9, 37,  9, 38,  9, 39,  9,  9,  9,
+     9,  9,  9, 35, 36,  9, 37,  9, 38,  9, 39,  9, 40,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11327,7 +11557,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    40, 41, 41, 41,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    41, 42, 42, 42,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11346,17 +11576,17 @@ static RE_UINT8 re_grapheme_cluster_break_table_2[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   5,   5,   5,   6,   1,   1,   1,   1,
       1,   1,   1,   1,   7,   1,   1,   1,   1,   1,   1,   1,   8,   9,  10,   1,
      11,   1,  12,  13,   1,   1,  14,  15,  16,  17,  18,   1,   1,  19,   1,  20,
-     21,  22,  23,   1,   1,   1,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,
-     34,  35,  36,  37,  34,  35,  38,  39,  30,  40,  41,  29,  42,  43,  44,   1,
-     45,  46,  47,  29,  30,  48,  49,  29,  50,  51,  52,  29,  30,   1,  53,  54,
+     21,  22,  23,   1,  24,   1,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,
+     35,  36,  37,  38,  35,  36,  39,  40,  31,  41,  42,  30,  43,  44,  45,   1,
+     46,  41,  47,  30,  31,  48,  49,  30,  50,  51,  52,  30,  31,   1,  53,  54,
       1,  55,  56,   1,   1,  57,  58,   1,  59,  60,   1,  61,  62,  63,  64,   1,
       1,  65,  66,  67,  68,   1,   1,   1,  69,  69,  69,  70,  70,  71,  72,  72,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  73,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,  74,  74,  75,  75,   1,  76,  77,   1,
-     78,   1,   1,   1,  79,  80,   1,   1,   1,  81,   1,   1,   1,   1,   1,   1,
-     82,   1,  83,  84,   1,  17,  85,   1,  86,  87,  88,  89,  90,  91,   1,  92,
-      1,  93,   1,   1,   1,   1,  94,  95,   1,   1,   1,   1,   1,   1,   5,  96,
+      1,   1,   1,   1,   1,   1,   1,   1,  74,  75,  76,  76,   1,  77,  78,   1,
+     79,   1,   1,   1,  80,  81,   1,   1,   1,  82,   1,   1,   1,   1,   1,   1,
+     83,   1,  84,  85,   1,  17,  86,   1,  87,  88,  89,  90,  91,  92,   1,  93,
+      1,  94,   1,   1,   1,   1,  95,  96,   1,   1,   1,   1,   1,   1,   5,   5,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      97,  98,   1,  99,   1,   1,  17, 100,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -11367,62 +11597,64 @@ static RE_UINT8 re_grapheme_cluster_break_table_2[] = {
       1, 103,   1,   1, 104,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1, 105,  46,   1,   1, 106,   1,   1,   1,   1,   1,   1,   1,   1,
-    107, 108,   1,   1, 109, 110, 111, 112,   1, 113, 114, 115,  26, 116, 117, 118,
-      1, 119, 120, 121,   1, 122, 123, 124,   1,   1,   1,   1,   1,   1,   1, 125,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127,
-    128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129,
-    130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131,
-    132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126,
-    127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128,
-    129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127,
-    128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129,
-    130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131,
-    132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126,
-    127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128,
-    129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 133, 134, 135,
+      1,   1,   1, 105, 106,   1,   1, 107,   1,   1,   1,   1,   1,   1,   1,   1,
+    108, 109,   1,   1, 110, 111, 112, 113,   1, 114, 115, 116,  27, 117, 118, 119,
+      1, 120, 121, 122,   1, 123, 124, 125,   1,   1,   1,   1,   1,   1,   1, 126,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128,
+    129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130,
+    131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132,
+    133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127,
+    128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129,
+    130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128,
+    129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130,
+    131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132,
+    133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127,
+    128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129,
+    130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 134, 135, 136,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1, 136,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1, 137,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      6,   6,   1,   1,   1,   1,   1,   2,   1,   1,   1,   1,  46,   1,   1, 137,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138,
-      1,   1,   1,   1,   1,   1,   1,  85,   1,   1,   1, 139,   1,   1,   1,   1,
+      6,   6,   1,   1,   1,   1,   1,   2,   1,   1,   1,   1, 106,   1,   1, 138,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 139,
+      1,   1,   1,   1,   1,   1,   1, 140,   1,   1,   1, 141,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    142, 143,   1,   1,   1,   1,   1,  80,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 144,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 145,   1,   1,   1,   1,  19,   1, 146,   1,   1,   1,
+    147, 148, 149, 150,  91, 151, 152,   1, 153, 154, 155, 156,  91, 157, 158,   1,
+      1, 159,   1,   1,   1,   1, 102, 160,  50,  51, 161, 162,   1,   1,   1,   1,
+      1, 163, 164,   1,   1, 165, 166,   1,   1,   1,   1,   1,   1, 167, 168,   1,
+      1, 169, 140,   1,   1, 170,   1,   1,  73, 171,   1,   1,   1,   1,   1,   1,
+      1, 172,   1,   1,   1,   1,   1,   1,   1, 173, 174,   1,   1,   1, 175, 176,
+    177, 178, 179,   1, 180,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 181,   1,   1, 182, 183,   1,   1,   1, 184, 185,   1, 186,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 187,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 188,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    140, 141,   1,   1,   1,   1,   1,  79,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 142,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 143,   1,   1,   1,   1,  19,   1,   1,   1,   1,   1,
-    144, 145, 146, 102,  90, 147, 148,   1, 149, 150, 151, 152,  90, 153, 154,   1,
-      1, 155,   1,   1,   1,   1, 102, 156,  50,  51, 157, 158,   1,   1,   1,   1,
-      1, 159, 160,   1,   1, 161, 162,   1,   1,   1,   1,   1,   1, 163, 164,   1,
-      1, 165,  85,   1,   1, 166,   1,   1,  73, 167,   1,   1,   1,   1,   1,   1,
-      1, 168,   1,   1,   1,   1,   1,   1,   1, 169, 170,   1,   1,   1, 171, 172,
-    173, 174, 175,   1, 176,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 177,   1,   1, 178, 179,   1,   1,   1, 180, 181,   1, 182,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 183,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 184,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 189,   1, 190,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 185,   1, 186,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 191, 192, 193,   1,   1, 194,
+      1,   1,   1,   1, 195, 196,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 187, 188, 189,   1,   1, 190,
-      1,   1,   1,   1, 191, 192,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 193, 194, 195,   1,   1,
-      1,   1, 196,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   5, 197, 149,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 198, 199, 200,   1,   1,
+      1,   1, 201,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      5, 197,   5, 198, 199, 200,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    201, 202,   1,   1,   1,   1,   1,   1,   1, 186,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 203,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 186,   1,   1,   1, 204,   1,   1,   1,   1,   1,
+      5, 202,   5, 203, 204, 205,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 207,   1,   1,   1,   1,   1,   1,   1, 190,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 208,   1, 209,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1, 190,   1,   1,   1, 210,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 205,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 206,
-      3,   5,   5,   5,   3,   3,   3,   3,   5,   5,   5,   5,   5,   5,   5, 207,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 211,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 212,
+      3,   5,   5,   5,   3,   3,   3,   3,   5,   5,   5,   5,   5,   5,   5, 213,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3
@@ -11478,7 +11710,9 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
+     5,  5,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11521,8 +11755,6 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  6,  6,  6,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,
      4,  6,  6,  6,  6,  0,  4,  4,  4,  0,  4,  4,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11578,14 +11810,16 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  4,  4,  6,  4,  4,  4,  4,  4,  4,  4,  6,  6,
      6,  6,  6,  6,  6,  6,  4,  6,  6,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  1,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  1,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11599,7 +11833,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  6,  4,  6,  4,  4,  4,  4,  4,  4,  4,  0,
      4,  0,  4,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  6,  6,  6,
      6,  6,  6,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  4,
-     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11621,8 +11855,6 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  6,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  4,  0,  0,
      0,  0,  0,  0,  4,  0,  0,  6,  4,  4,  0,  0,  0,  0,  0,  0,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  4,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  4, 10,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  0,
@@ -11642,6 +11874,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,
      4,  4,  4,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  0,  0,  0,  4,  0,  0,  0,  0,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11707,6 +11941,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,
+     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
      0,  4,  4,  4,  0,  4,  4,  0,  0,  0,  0,  0,  4,  4,  4,  4,
@@ -11717,6 +11953,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11724,8 +11962,10 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  6,  6,  4,  4,  4,  4,  6,  6,  4,  4,  0,  0,  5,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
+     0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11763,7 +12003,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      6,  6,  6,  4,  4,  4,  4,  4,  4,  4,  4,  6,  6,  4,  6,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  6,  4,  6,  6,
      4,  4,  4,  4,  4,  4,  6,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-     6,  6,  4,  4,  4,  4,  6,  4,  4,  4,  4,  4,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  4,  6,  4,  4,  4,  4,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  6,  6,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  6,  4,  4,  0,  0,  0,  0,  0,
@@ -11815,6 +12055,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  4,  6,  4,  4,  4,  0,  0,  0,  6,  4,  4,
      4,  4,  4,  1,  1,  1,  1,  1,  1,  1,  1,  4,  4,  4,  4,  4,
      4,  4,  4,  0,  0,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,
@@ -11835,6 +12077,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  4,  4,  4,  4,  4,
      4,  4,  0,  4,  4,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
@@ -11873,7 +12117,7 @@ static RE_UINT8 re_grapheme_extend_table_1[] = {
     16,  9, 17, 18, 19, 20, 21, 22,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 23, 24,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
-     9,  9,  9,  9, 26,  9, 27,  9, 28,  9, 29,  9,  9,  9,  9,  9,
+     9,  9,  9, 26, 27,  9, 28,  9, 29,  9, 30,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11922,7 +12166,7 @@ static RE_UINT8 re_grapheme_extend_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    30,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    31,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11941,61 +12185,63 @@ static RE_UINT8 re_grapheme_extend_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   2,   0,   0,   0,   0,
       0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   4,   5,   6,   0,
       7,   0,   8,   9,   0,   0,  10,  11,  12,  13,  14,   0,   0,  15,   0,  16,
-     17,  18,  19,   0,   0,   0,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
-     30,  31,  32,  33,  30,  31,  34,  35,  26,  36,  37,  25,  38,  39,  40,   0,
-     41,  42,  43,  25,  26,  44,  45,  25,  46,  47,  28,  25,  26,   0,  48,   0,
+     17,  18,  19,   0,  20,   0,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,
+     31,  32,  33,  34,  31,  32,  35,  36,  27,  37,  38,  26,  39,  40,  41,   0,
+     42,  37,  43,  26,  27,  44,  45,  26,  46,  47,  29,  26,  27,   0,  48,   0,
       0,  49,  50,   0,   0,  51,  52,   0,  53,  54,   0,  55,  56,  57,  58,   0,
       0,  59,  60,  61,  62,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  64,  64,  65,  65,   0,  66,  67,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  64,  65,  65,  65,   0,  66,  67,   0,
      68,   0,   0,   0,  69,  70,   0,   0,   0,  71,   0,   0,   0,   0,   0,   0,
-     72,   0,  73,  74,   0,  13,  75,   0,  76,  77,  38,  78,  46,  79,   0,  80,
-      0,  81,   0,   0,   0,   0,  82,  83,   0,   0,   0,   0,   0,   0,   1,  84,
+     72,   0,  73,  74,   0,  13,  75,   0,  76,  77,  39,  78,  46,  79,   0,  80,
+      0,  81,   0,   0,   0,   0,  82,  83,   0,   0,   0,   0,   0,   0,   1,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     85,   0,   0,   0,   0,   0,  13,  86,   0,   0,   0,   0,   0,   0,   0,   0,
+     84,   0,   0,   0,   0,   0,  13,  85,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,  88,   0,   0,   0,   1,
+      0,   0,   0,   0,   0,   0,   0,  86,   0,   0,   0,  87,   0,   0,   0,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  89,   0,   0,  90,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  88,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  91,  42,   0,   0,  92,   0,   0,   0,   0,   0,   0,   0,   0,
-     93,  94,   0,   0,   0,   0,  95,  96,   0,  97,  98,   0,  22,  99,   0, 100,
-      0, 101, 102,  31,   0, 103,  26, 104,   0,   0,   0,   0,   0,   0,   0, 105,
+      0,   0,   0,  90,  91,   0,   0,  92,   0,   0,   0,   0,   0,   0,   0,   0,
+     93,  94,   0,   0,   0,   0,  95,  96,   0,  97,  98,   0,  23,  99,   0, 100,
+      0, 101, 102,  32,   0, 103,  27, 104,   0,   0,   0,   0,   0,   0,   0, 105,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  42,   0,   0,   0,
+      2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  91,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
-      0,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0, 107,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 107,   0,   0,   0, 108,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 110,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 112,   0,   0,   0,   0,  15,   0, 113,   0,   0,   0,
+     27,  20, 114, 115,  46, 116,  39,   0,  23, 117,   0, 118,  46, 119, 120,   0,
+      0, 121,   0,   0,   0,   0,  87, 122,  46,  47, 123, 124,   0,   0,   0,   0,
+      0,  20, 125,   0,   0, 126, 127,   0,   0,   0,   0,   0,   0, 128, 129,   0,
+      0, 130, 107,   0,   0, 131,   0,   0,  63, 132,   0,   0,   0,   0,   0,   0,
+      0, 133,   0,   0,   0,   0,   0,   0,   0, 134, 135,   0,   0,   0, 136, 107,
+    137, 138, 139,   0, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 141,   0,   0, 142, 143,   0,   0,   0, 144, 145,   0, 146,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    108, 109,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 110,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 111,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0,
-     26, 112, 113,  88,  46, 114,   0,   0,  22, 115,   0, 116,  46, 117, 118,   0,
-      0, 119,   0,   0,   0,   0,  88, 120,  46,  47, 121, 122,   0,   0,   0,   0,
-      0, 112, 123,   0,   0, 124, 125,   0,   0,   0,   0,   0,   0, 126, 127,   0,
-      0, 128,  75,   0,   0, 129,   0,   0,  63, 130,   0,   0,   0,   0,   0,   0,
-      0, 131,   0,   0,   0,   0,   0,   0,   0, 132, 133,   0,   0,   0, 134,  75,
-    135, 136, 137,   0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 139,   0,   0, 140, 141,   0,   0,   0, 142, 143,   0, 144,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 145,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 148,   0, 149,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 146,   0, 147,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 150,   0, 151,   0,   0, 152,
+      0,   0,   0,   0, 153,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 148,   0, 149,   0,   0, 150,
-      0,   0,   0,   0, 151,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 153, 154,   0,   0,
-      0,   0, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1, 154, 114,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 155, 156, 157,   0,   0,
+      0,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 156,   1, 157, 158, 159,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    160, 161,   0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 162,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 147,   0,   0,   0, 163,   0,   0,   0,   0,   0,
+      1, 159,   1, 160, 161, 162,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    163, 164,   0,   0,   0,   0,   0,   0,   0, 149,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 165,   0, 166,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 149,   0,   0,   0, 167,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   2,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
@@ -12007,42 +12253,43 @@ static RE_UINT8 re_grapheme_extend_table_3[] = {
       0, 248, 255, 255,   0,   0,   1,   0,   0,   0, 192, 159, 159,  61,   0,   0,
       0,   0,   2,   0,   0,   0, 255, 255, 255,   7,   0,   0, 192, 255,   1,   0,
       0, 248,  15,  32,   0,   0, 192, 251, 239,  62,   0,   0,   0,   0,   0,  14,
-      0,   0, 248, 255, 251, 255, 255, 255,   7,   0,   0,   0,   0,   0,   0,  20,
-    254,  33, 254,   0,  12,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,  80,
-     30,  32, 128,   0,  12,   0,   0,  64,   6,   0,   0,   0,   0,   0,   0,  16,
-    134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,  12,   0,   0, 252,
-      0,   0,   0, 208,  30,  32, 224,   0,   4,   0,   0,   0,   0,   0,   0,  64,
-      1,  32, 128,   0,  17,   0,   0,   0,   0,   0,   0, 192, 193,  61,  96,   0,
+      0,   0,   0, 255,   0, 252, 255, 255, 251, 255, 255, 255,   7,   0,   0,   0,
+      0,   0,   0,  20, 254,  33, 254,   0,  12,   0,   0,   0,   2,   0,   0,   0,
+      0,   0,   0,  80,  30,  32, 128,   0,  12,   0,   0,  64,   6,   0,   0,   0,
+      0,   0,   0,  16, 134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,
+     12,   0,   0, 252,   0,   0,   0, 208,  30,  32, 224,   0,   4,   0,   0,   0,
+      0,   0,   0,  64,   1,  32, 128,   0,  17,   0,   0,   0, 193,  61,  96,   0,
       0,   0,   0, 144,  68,  48,  96,   0,   3,   0,   0,   0,   0,   0,   0,  88,
       0, 132,  92, 128,   0,   0, 242,   7, 128, 127,   0,   0,   0,   0, 242,  31,
       0,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,   0,   0, 254, 127,
     223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,   0, 224, 253, 102,
       0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,   0,   0,   0, 224,
       0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,  64, 254,  15,  32,
-      0,  56,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0, 135,   1,   4,  14,
-      0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159,   1,   0,   0,   0,
+      0, 184,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0, 135,   1,   4,  14,
+      0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159, 255, 127,   0,   0,
      15,   0,   0,   0,   0,   0, 240,  23,   0, 248,  15,   0,  60,  59,   0,   0,
      64, 163,   3,   0,   0, 240, 207,   0,   0,   0, 247, 255, 253,  33,  16,   3,
-    255, 255, 255, 251,   0,  16,   0,   0, 255, 255,   1,   0,   0, 128,   3,   0,
-      0,   0,   0, 128,   0, 252,   0,   0,   0,   0,   0,   6,   0, 128, 247,  63,
+      0,  16,   0,   0, 255, 255,   1,   0,   0, 128,   3,   0,   0,   0,   0, 128,
+      0, 252,   0,   0,   0,   0,   0,   6,   0, 128, 247,  63,   0,   0,   0, 192,
       0,   0,   3,   0,  68,   8,   0,   0,  96,  16,   0,   0,  48,   0,   0,   0,
     255, 255,   3, 128, 192,  63,   0,   0, 128, 255,   3,   0,   0,   0, 200,  51,
      32,   0,   0,   0,   0, 126, 102,   0,   8,  16,   0,   0,   0,   0, 157, 193,
-      0,  48,  64,   0,  32,  33,   0,   0,   0,   0,   0,  32,   0,   0, 192,   7,
-    110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,
-      0,   0,   0, 255, 127,   0,   0,   0,   0,   0, 120,   6, 128, 239,  31,   0,
-      0,   0,   8,   0,   0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64,
-    248,   7,   0,   0,   1,   0, 128,   0, 192,  31,  31,   0,  92,   0,   0,  64,
-      0,   0, 249, 165,  13,   0,   0,   0,   0, 128,  60, 176,   1,   0,   0,  48,
-      0,   0, 248, 167,   0,  40, 191,   0, 188,  15,   0,   0,   0, 128, 255,   6,
-      0,   0,   1,  88,   8,   0,   0,   0,   0,   0, 240,  12, 254,   7,   0,   0,
-      0,   0, 248, 121, 128,   0, 126,  14,   0, 252, 127,   3,   0,   0, 127, 191,
-      0,   0, 252, 255, 255, 252, 109,   0,   0,   0, 126, 180, 191,   0,   0,   0,
-      0,   0, 163,   0,   0,   0,  24,   0,   0,   0,  31,   0,   0,   0, 127,   0,
-      0, 128,   0,   0,   0, 128,   7,   0,  16,   0,   0,   0,   0,   0,   0,  96,
-    160, 195,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
-    127, 255, 255, 249, 219,   7,   0,   0,   0, 240,   0,   0, 240,   7,   0,   0
+      0,  48,  64,   0,  32,  33,   0,   0,   0,   0,   0,  32,   1,   0,   0,   0,
+      0,   0, 192,   7, 110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,
+      0,  24,   0,   0,  60,   0,   0,   0, 127,   0,   0,   0,   0,   0,  25, 128,
+      0,   0, 120,   6, 128, 239,  31,   0,   0,   0,   8,   0,   0,   0, 192, 127,
+      0, 158,   0,   0,   0, 128, 211,  64, 248,   7,   0,   0,   1,   0, 128,   0,
+    192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 249, 165,  13,   0,   0,   0,
+      0, 128,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,   0,  40, 191,   0,
+    188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   1,  88,   8,   0,   0,   0,
+      0,   0, 240,  12, 254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,
+      0, 252, 127,   3,   0,   0, 127, 191,   0,   0, 252, 255, 255, 252, 109,   0,
+      0,   0, 126, 180, 191,   0,   0,   0,   0,   0, 163,   0,   0,   0,  24,   0,
+      0,   0,  31,   0,   0,   0, 127,   0,   0, 128,   0,   0,   0, 128,   7,   0,
+     16,   0,   0,   0,   0,   0,   0,  96, 255,  63, 255, 255, 160, 195,   7, 248,
+    231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 127, 248,
+    255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
+    219,   7,   0,   0,   0,  64,   0,   0,   0, 240,   0,   0, 240,   7,   0,   0
 };
 
 RE_UINT32 re_get_grapheme_extend(RE_UINT32 codepoint) {
@@ -12146,33 +12393,33 @@ static RE_UINT8 re_grapheme_link_table_2[] = {
      0,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  7,  7,  0,  0,  0,  0,  8,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  7,  8,  0,  0,  0,  0,  9,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  9,  0,  0,  0,  0,  0,  0,  5,  0,  0, 10,  0, 11,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,
+     0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  5,  0,  0, 11,  0, 12,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    13, 14,  0,  0,  0,  0,  5,  0,  0,  0, 15,  0,  0,  0,  9,  0,
-     0,  0,  0,  0,  0,  0,  0, 16,  0,  0,  0,  0,  0,  0,  0,  1,
+    14, 15,  0,  0,  0,  0,  5,  0,  0,  0, 16,  0,  0,  0, 10,  0,
+     0,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 13, 12,  0, 17,  0,  0,  0, 18,  0,  0,  0,  0,  9,  0,
-     0, 19,  0,  0,  0,  0,  0,  3,  0,  0,  1,  0,  0,  0,  0,  0,
-     0,  0, 20,  0,  0,  0, 20,  0,  0,  0,  0,  0,  0, 12,  0,  0,
-     0, 12,  0,  0,  0, 16,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,
-     0, 17,  0,  0,  0,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,  9,
-     0,  7, 23,  0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 12,  0,  0,  0,  0,  0,  0,  0,  0, 24,  0, 25,  0,  0,  0,
+     0, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 14, 18,  0, 19,  0,  0,  0, 20,  0,  0,  0,  0, 10,  0,
+     0, 21,  0,  0,  0,  0,  0,  3,  0,  0,  1,  0,  0,  0,  0,  0,
+     0,  0, 22,  0,  0,  0, 22,  0,  0,  0,  0,  0,  0, 13,  0,  0,
+     0, 13,  0,  0,  0, 17,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,
+     0, 19,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0, 10,
+     0,  8, 25,  0, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 13,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0, 27,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_grapheme_link_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0,   0,   0,  24,   0,   4,   0,   0,
-      0,   0,   0,   4,  16,   0,   0,   0,   0,   0,   0,   6,   0,   0,  16,   0,
-      0,   0,   4,   0,   1,   0,   0,   0,   0,  12,   0,   0,   0,   0,  12,   0,
-      0,   0,   0, 128,  64,   0,   0,   0,   0,  16,   0,   0,   0,   0,   8,   0,
-      0,   0,  64,   0,   0,   0,   0,   2,   0,   0,  24,   0,   0,   0,  32,   0,
-      4,   0,   0,   0,   0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,
-     48,   0,   0,   0,   0,   0, 128,   0
+      0,   0,   0,   4,  16,   0,   0,   0,   0,   0,   0,   6,   0,   0,  48,   0,
+      0,   0,  16,   0,   0,   0,   4,   0,   1,   0,   0,   0,   0,  12,   0,   0,
+      0,   0,  12,   0,   0,   0,   0, 128,  64,   0,   0,   0,   0,  16,   0,   0,
+      0,   0,   8,   0,   0,   0,  64,   0,   0,   0,   1, 128,   0,   0,   0,   2,
+      0,   0,  24,   0,   0,   0,  32,   0,   4,   0,   0,   0,   0,   8,   0,   0,
+      0,   0,   0,  96, 128,   0,   0,   0,  48,   0,   0,   0,   0,   0, 128,   0
 };
 
 RE_UINT32 re_get_grapheme_link(RE_UINT32 codepoint) {
@@ -12481,17 +12728,17 @@ RE_UINT32 re_get_hyphen(RE_UINT32 codepoint) {
 static RE_UINT8 re_id_continue_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9, 38, 39, 40,  9, 41,  9, 42, 43,  9,  9, 44,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9, 39, 40, 41, 42, 43, 44, 45, 46, 47,  9,  9, 48,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
-    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
-    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 49, 12, 12, 12, 50, 51, 12,
+    12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 53,  9,  9,  9, 54,  9,
+    12, 12, 12, 12, 55,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12535,7 +12782,7 @@ static RE_UINT8 re_id_continue_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    52,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    56,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12554,107 +12801,115 @@ static RE_UINT16 re_id_continue_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  13,   6,   6,   6,   6,  14,  15,   6,  16,  17,  18,  19,
      20,   6,   6,  21,   6,   6,  22,  23,  24,   6,  25,   6,   6,  26,   6,  27,
-      6,  28,  29,  30,   0,  31,  32,  11,   6,   6,   6,  33,  34,  35,  36,  37,
-     38,  39,  40,  41,  42,  43,  44,  45,  46,  43,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,  56,  57,  58,  59,  60,  53,   6,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,   0,  70,  71,  72,   0,  73,  74,  75,  76,  77,  78,  79,   0,
-      6,   6,  80,   6,  81,   6,  82,  83,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  84,   6,  85,  86,  87,   6,  88,   6,  89,  90,  91,   6,   6,  92,
-     67,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  93,   3,   6,   6,  94,  95,  96,  97,  98,   6,   6,  99, 100,
-    101,   6,   6, 102,   6, 103,   6, 104, 105, 106, 107, 108,   6, 109, 110,   0,
-     29,   6, 105, 111, 112, 113, 114,   0,   6,   6, 115, 116,   6,   6,   6,  97,
-      6, 117, 118,  81, 119,  89, 120,  68,   6,   6,   6,   6,   6,   6,   6, 121,
-      6,   6,   6,   6,   6,   6,   6,   6,  92,   6, 122,  81,   6, 123, 124, 125,
-      0, 126, 127, 128, 129,   0, 129, 130, 131, 132, 133,   6, 134,   0,   0,   0,
+      6,  28,  29,  30,  31,   6,   6,  11,   6,   6,   6,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
+     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
+      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,  89,  90,   6,   6,  91,
+     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  92,   3,   6,   6,  93,  94,  95,  96,  97,   6,   6,  98,  99,
+    100,   6,   6, 101,   6,  30,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
+     29,   6, 103, 109, 110, 111, 112,   0,   6,   6, 113, 114,   6,   6,   6,  96,
+      6, 115, 116,  80, 117,  88, 118,  67,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  91,   6, 119,  80,   6, 120, 121, 122,
+      0, 123, 124, 125, 126,   0, 126, 127, 128, 129, 130,   6, 131,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 135, 105,   6,   6,   6,   6, 136,   6,  82,   6, 137, 138, 139, 139,   6,
+      6,   6,   6,   6,   6,   6,   6, 132,   6,  81,   6, 133, 134, 135, 135,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  67,   6, 142,  67,   6,  83, 143,  14,   6,   6, 144,   6,   0,  24,
+    136, 137,  66,   6, 138,  66,   6,  82, 139,  14,   6,   6, 112,   6,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  24,  80,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  26, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  96,   6,   6, 150, 151,   6, 152,  96,  77,   6,   6, 153, 103,
+      6, 134, 154, 155,   6,   6, 156, 157, 158, 159,  82,  79,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  78,
-      6,   6,   6,   6, 145,   0,  24,  81,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  26, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  97,   6,   6, 155, 156,   6, 157,  97,  78,   6,   6, 158, 105,
-      6, 138, 159, 160,   6,   6, 161, 162, 163, 164,  83,  80,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  29,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  29,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  26, 172,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  81,  24,   6, 173,   6, 174, 175,
-     91, 176, 177, 178,   6,   6,   6,  78,   1,   2,   3, 107,   6, 105, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  68,   0,   0,   6,  96,   0,   0,   0, 183,
-      0,   0,   0,   0,  78,   6, 184, 114,   6, 185, 103,  68,  81,   6, 186,   0,
-      6,   6,   6,   6,  81,  80, 187,  29,   6, 188,   6, 189,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 138, 104, 174,   0,   0,   0,   0,
-    190, 191, 104, 138, 105,   0,   0, 192, 104, 168,   0,   0,   6, 193,   0,   0,
-    194, 195,   0,  78,  78,   0,  75, 196,   6, 104, 104, 197,  26,   0,   0,   0,
-      6,   6, 134,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 199,   0,   0,  78, 200, 184,   0,   0,  24, 201, 138,
-      6,   6, 196, 202,   6,  68,  24, 203,   6,  31, 204, 205,   6,   6, 206,   0,
-    207, 208,   0,   0, 209, 119,   6, 210,  34, 211, 212, 213,   0,   0,   0,   0,
-      6,   6, 214, 215,   6,   6, 216,   0,   0,   0,   0,   0,   6, 217, 218,   0,
-      6,   6, 219,   0,   6, 102, 100,   0,  89, 115,   0,   0,   0,   0,   0,   0,
-      6,  68,   0,   0,   0,   6,   6, 220, 221, 222, 223,   0,   0, 224, 225, 226,
-      6, 105, 200,   6, 227,   0,   6, 102,   0,   0,   0,   0,   0,   0,   0,   0,
-    228,   5, 229, 230, 173, 231,   0,   0, 232, 233, 198, 234, 235, 100,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 138,   0,   0,   0,   0,   0, 236,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  26, 167,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  80,  24,   6, 168,   6, 169, 170,
+     90, 171, 172, 173,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  67,   0,   0,   6,  95,   0,   0,   0, 178,
+      0,   0,   0,   0,  77,   6, 179, 180,   6, 181,  30,  67,  80,   6, 182,   0,
+      6,   6,   6,   6,  80,  79, 183,  29,   6, 184,   6, 185, 186, 187,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 134, 102, 169, 188, 189,   0,   0,
+    190, 191, 102, 134, 103,   0,   0, 192, 102, 163,   0,   0,   6, 193,   0,   0,
+    194, 195,   0,  77,  77,   0,  74, 196,   6, 102, 102, 197,  26,   0,   0,   0,
+      6,   6, 131,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 199,   0,   0,  77, 200, 179,  24, 201,  24, 202, 134,
+      6,   6, 196, 203,   6,  67, 204, 205,   6, 206, 207, 208,   6,   6, 209,   0,
+    210, 211,   0,   0, 212, 117,   6, 213,  33, 214, 215, 216,   0,   0,   0,   0,
+      6,   6, 217, 218,   6,   6, 219,   0,   0,   0,   0,   0,   6, 220, 221,   0,
+      6,   6, 222,   0,   6, 101,  99,   0,  88, 223, 196,   0,   0,   0,   0,   0,
+      6,  67,   0,   0,   0,   6,   6, 224, 225, 226, 227,   0,   0, 228, 229, 230,
+      6, 103, 200,   6, 231,  24,   6, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+    232,   5, 233, 148, 168, 234,   0,   0, 235, 236, 198, 237, 238,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 134,   0,   0,   0,   0,   0, 239,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 189,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 112,   6,   6,   6,   6,   6,   6, 240,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   6,   6, 179,
+      6, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 102, 105, 100,   0,   0,  24, 108,   6, 138, 223, 237,  91,   0,   0,   0,
+      6, 101, 103,  79,   6, 103,  79, 106,   6, 134, 227, 241,  90,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 238,   6, 239,   0,   0, 240,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 242,   6, 243,   0,   0, 244,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 117,
-      6,   6,   6,   6,   6,   6, 104,   0, 134,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 115,
+      6,   6,   6,   6,   6,   6, 102,   0, 131,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 105,   0, 241, 204,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 246, 247, 207,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 242, 243,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 248, 249,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244, 245, 246,   0,   0,
-      0,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  31,   6, 248, 249, 250,   6, 251, 252, 253,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 254, 255,  83,  31,  31, 135, 135, 228, 228, 256,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 257,   6, 258, 259, 260,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    261, 262,   0,   0,   0,   0,   0,   0,   6, 263, 264,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 265,   0,   6,   6, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 196,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 250, 251, 252,   0,   0,
+      0,   0, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 206,   6, 254, 255, 256,   6, 257, 258, 259,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 260, 261,  82, 206, 206, 262, 262, 232, 232, 263,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6, 264,   6, 265, 266, 267,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    250, 266, 267, 268, 269, 270,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    268, 269,   0,   0,   0,   0,   0,   0,   6, 270, 271,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 112,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 272,
+      6,   6,   6,   6,   6,   6, 273,   0,   6,   6, 223,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    256, 274, 275, 276, 277, 278,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  81,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  96,   6,   6,   6,   6,   6,   6,
-     81,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 101,   6,   6,   6,   6,   6,   6,
+     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 271,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 279,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 180,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  30,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  91,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 280,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  90,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -12666,67 +12921,70 @@ static RE_UINT8 re_id_continue_table_3[] = {
     255,   1, 254, 255, 255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,
       0,   0, 255,   7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,
       0,   0, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36,
-    255,  63,   0,   0, 255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255,   0,   0, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255,   0,   0, 239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64,
-    207, 255,   6,   0, 223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252,
-    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255,
-    255, 255, 255,   7, 255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,
-     95,  63, 255, 243,   1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255,
-    255,  31, 254, 255, 223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
-    255,   3, 255, 255, 255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  31,   0,
-    255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48,
-    255,   3,   0,   0,   0,  56, 255,   3, 255, 255, 255,   1, 255,   7, 255, 255,
-    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   7, 255, 255, 255, 159,
-    255,   3, 255,   3, 128,   0, 255, 191,   1,   0,   0,   0, 255,  15, 255,   3,
-      0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,
-      0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170, 255, 255, 223,  95,
-    220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,   1,   0,  16,   0,
-      0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0, 255, 127, 255, 255,
+    255,  63,   0,   0, 255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255,
+    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
+    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
+    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
+    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
+    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
+    255, 223, 253, 255, 255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0,
+    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0,
+    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
+    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
+    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
+      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
+    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
+    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0, 255, 255,  63,  63,
+    255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  63, 128, 255, 255,  31,   0,
+    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,
+      0, 184, 255,   3, 255, 255, 255,   1, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255,   7, 255, 255, 255, 159, 255,   3, 255,   3, 128,   0, 255, 191,
+    255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0,
+    255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,  63,  63, 255, 170,
+    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,
+      1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0,
+    132, 252,  47,  63,  80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0,
      31, 248,  15,   0, 255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 254, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 240, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
-    255, 255,   1,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 240, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32, 255, 255,   1,   0,
+      1,   0,   0,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135,
     127,   0,   0,   0, 255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,
-    128,   0, 255, 255,  31,   0,   0,   0, 192, 255,   0, 128, 255,   1, 255,   3,
-    240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255,
-    255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
-    159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0,
-    191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3,
+    128,   0, 255, 255,  63,   0,   0,   0,  31,   0,   0,   0, 192, 255,  63, 128,
+      4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 223, 255, 240,   0, 255, 255,
+    255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64,
+    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
+    207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3,
+    255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3, 255,  15, 255,   3,
     255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 249,  15,   0, 255,   3,
     255, 252, 255, 255, 255, 255, 255, 252,  27,   0,   0,   0, 255, 255, 255,  35,
-    255, 253, 255, 255,   1,   0, 255,   3,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
-      0,   0,   1,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
-     27,   0,   3,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
-    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
-    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
-    247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
-    255,  67,   0,   0,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255, 253, 255, 255,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
+     15,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
+     27,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
+    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
+    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,
+    127, 111, 255, 127,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_id_continue(RE_UINT32 codepoint) {
@@ -12752,17 +13010,17 @@ RE_UINT32 re_get_id_continue(RE_UINT32 codepoint) {
 static RE_UINT8 re_ideographic_table_1[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  2,  2,
      2,  2,  2,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,
+     2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  2,  2,  2,  2,
-     2,  7,  2,  8,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  2,  2,  2,  2,
+     2,  6,  2,  7,  0,  0,  0,  0,  0,  0,  0,  0,  8,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  2,  2, 10,  2,  2,  2, 11, 12,  2,
-     2,  2,  2, 13,  2,  2,  2,  2,  2,  2, 14,  0,  0,  0, 15,  0,
-     2,  2,  2,  2, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     2,  2,  2,  2,  2,  2,  2,  2,  2,  9,  2,  2,  2, 10, 11,  2,
+     2,  2,  2, 12,  2,  2,  2,  2,  2,  2, 13,  0,  0,  0, 14,  0,
+     2,  2,  2,  2, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -12829,40 +13087,38 @@ static RE_UINT8 re_ideographic_table_2[] = {
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  5,  3,  3,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     3,  3,  3,  4,  3,  3,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  8,
-     3,  3,  3,  3,  3,  3,  9,  0, 10,  0,  0,  0,  0,  0,  0,  0,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  7,
+     3,  3,  3,  3,  3,  3,  8,  0,  9,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3, 12,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3, 11,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3, 13,  0,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  0,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3, 14,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3, 12,  3,  3,  3,  3,  3,  3,
     13,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3, 15,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3, 14,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 16,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 15,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 17,  0,  0,  0,  0,  0
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 16,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_ideographic_table_3[] = {
       0,   0,   0,   0, 192,   0,   0,   0, 254,   3,   0,   7, 255, 255, 255, 255,
-    255, 255, 255,  31, 255,  63, 255, 255, 255, 255, 255,   3,  16,   0,   0,   0,
-    255, 255, 255,   0, 255, 255,  63,   0, 255,   1,   0,   0,   0,   0, 255, 255,
-    255, 255, 255,  15, 255, 255, 255,  63, 255, 255,  31,   0,   3,   0, 255, 255,
-      1,   0,   0,   0, 255,   7,   0,   0
+    255,  63, 255, 255, 255, 255, 255,   3,  16,   0,   0,   0, 255, 255, 255,   0,
+    255, 255,  63,   0, 255,   1,   0,   0,   0,   0, 255, 255, 255, 255, 255,  15,
+    255, 255, 255,   1, 255, 255, 255,  63,   3,   0, 255, 255,   1,   0,   0,   0,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_ideographic(RE_UINT32 codepoint) {
@@ -12898,17 +13154,17 @@ RE_UINT32 re_get_ids_binary_operator(RE_UINT32 codepoint) {
 static RE_UINT8 re_id_start_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9,  9, 38,  9,  9, 39,  9, 40, 41,  9,  9,  9,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9,  9,  9, 39,  9, 40, 41, 42, 43, 44,  9,  9,  9,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 42, 12, 12, 12, 43, 44, 12,
-    12, 12, 12, 45, 12, 12, 12, 12, 12, 12, 46,  9,  9,  9, 47,  9,
-    12, 12, 12, 12, 48,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
+    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
+    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12971,96 +13227,102 @@ static RE_UINT8 re_id_start_table_2[] = {
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   0,   7,   8,   9,   4,  10,
       4,   4,   4,   4,  11,   4,   4,   4,   4,  12,  13,   4,  14,   0,  15,  16,
       0,   4,  17,  18,   4,   4,  19,  20,  21,  22,  23,   4,   4,  24,  25,  26,
-     27,  28,  29,  17,   0,  30,  31,   0,  32,  33,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  44,  45,  46,  47,  48,  45,  49,  50,  51,  52,  46,   0,
-     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,
-     68,  69,  67,   0,  70,  71,  72,   0,  73,   0,  74,  75,  76,   0,   0,   0,
-      4,  77,  78,  79,  80,   4,  81,  82,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  83,   4,  84,  85,  86,   4,  87,   4,  88,   0,  22,   4,   4,  89,
-     68,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,  90,   1,   4,   4,  91,  92,  93,  93,  94,   4,  95,  96,   0,
-      0,   4,   4,  29,   4,  97,   4,  98,  99,   0,  15, 100,   4, 101, 102,   0,
-    103,   4, 104,   0,   0, 105,   0,   0, 106,  95, 107,   0, 108, 109,   4, 110,
+     27,  28,  29,  30,  31,   4,  32,   0,  33,  34,  35,  36,  37,  38,  39,  40,
+     41,  42,  43,  44,  45,  46,  47,  48,  49,  46,  50,  51,  52,  53,  47,   0,
+     54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,   0,
+     69,  70,  68,   0,  71,  72,  73,   0,  74,   0,  75,  76,  77,   0,   0,   0,
+      4,  78,  79,  80,  81,   4,  82,  83,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,  84,   4,  85,  86,  87,   4,  88,   4,  89,   0,  22,   4,   4,  90,
+     69,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,  91,   1,   4,   4,  92,  93,  94,  94,  95,   4,  96,  97,   0,
+      0,   4,   4,  29,   4,  98,   4,  99, 100,   0,  15, 101,   4, 102,  32,   0,
+    103,   4, 104,   0,   0, 105,   0,   0, 106,  96, 107,   0, 108, 109,   4, 110,
       4, 111, 112, 113, 114, 115,   0, 116,   4,   4,   4,   4,   4,   4,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  89,   4, 117, 113,   4, 118, 119, 120,
+      4,   4,   4,   4,   4,   4,   4,   4,  90,   4, 117, 113,   4, 118, 119, 120,
       0,   0,   0, 121, 122,   0,   0,   0, 123, 124, 125,   4,  14,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 126,  99,   4,   4,   4,   4, 127,   4,  81,   4, 128, 103, 129, 129,   0,
+      4,   4,   4,   4,   4,   4,   4, 126,   4,  82,   4, 127, 103, 128, 128,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 131,  68,   4, 132,  68,   4,  82, 106,  12,   4,   4, 133,   4,   0,  15,
+    129, 130,  69,   4, 131,  69,   4,  83, 106,  12,   4,   4, 132,   4,   0,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,  76,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
+    133, 134,   4, 135, 113,   4,   4,  22, 136, 137,   4,   4, 138,   4, 139, 140,
+    141, 142,   4,  96, 137,  96,   0, 143,  25, 144,  68, 145,  33, 146, 147, 148,
+      4,  14, 149, 150,   4, 151, 152, 153, 154, 155,  83, 156,   4,   4,   4, 142,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 134,
-      4,   4,   4,   4,  75,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
-    135, 136,   4, 137, 113,   4,   4,  22, 138, 139,   4,   4, 140,   4, 141, 142,
-    143, 144,   4,  95, 139,  95,   0, 145,  25, 146,  67, 134,  32, 147, 148, 149,
-      4,  14, 150, 151,   4, 152, 153, 154, 155, 156,  82, 157,   4,   4,   4, 144,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 158, 159, 160,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 157, 158, 159,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 161,   4,   4, 162,   0, 163, 164, 165,   4,   4,  93, 166,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 113,  15,   4, 167,   4,  31, 168,
-      0,   0,   0, 169,   4,   4,   4, 134,   0,   1,   1, 170,   4,  99, 171,   0,
-    172, 173, 174,   0,   4,   4,   4,  88,   0,   0,   4, 104,   0,   0,   0,   0,
-      0,   0,   0,   0, 134,   4, 175,   0,   4,  23, 176,  98, 113,   4, 177,   0,
-      4,   4,   4,   4, 113,  15, 178, 160,   4, 179,   4, 111,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  98,  31,   0,   0,   0,   0,
-    180, 181,  98, 103,  99,   0,   0, 182,  98, 162,   0,   0,   4, 183,   0,   0,
-    184,  98,   0, 134, 134,   0,  74, 185,   4,  98,  98, 147,  93,   0,   0,   0,
-      4,   4,  14,   0,   4, 147,   4, 147,   4, 111,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 186,   0,   0, 134, 187, 110,   0,   0,  15, 185, 103,
-    108, 188,   0,   0, 108,  22,  15,  14, 108,  67, 189, 190, 108, 147, 191,   0,
-    192, 193,   0,   0, 194, 114,  99,   0,  48,  45, 195,  56,   0,   0,   0,   0,
-      4, 104, 196,  56,   4,  22, 197,   0,   0,   0,   0,   0,   4, 133, 198,   0,
-      4,  22, 199,   0,   4, 200,   0,   0,  88,   0,   0,   0,   0,   0,   0,   0,
-      4, 193,   0,   0,   0,   4,   4, 201, 202, 203, 204,   0,   0, 205, 175, 206,
-    207, 208, 209,   4, 210,   0,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-    211, 133,  73, 212,  22,   0,   0,   0, 213, 175, 214, 215, 216,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,  46,   0,   0,
+      4,   4,   4, 160,   4,   4, 161,   0, 162, 163, 164,   4,   4,  94, 165,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 113,  15,   4, 166,   4, 167, 168,
+      0,   0,   0, 169,   4,   4,   4, 145,   0,   1,   1, 170,   4, 100, 171,   0,
+    172, 173, 174,   0,   4,   4,   4,  89,   0,   0,   4, 104,   0,   0,   0,   0,
+      0,   0,   0,   0, 145,   4, 175,   0,   4,  23,  30,  99, 113,   4, 176,   0,
+      4,   4,   4,   4, 113,  15, 177, 159,   4, 178,   4, 179, 180, 181,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  99, 167, 182, 183,   0,   0,
+    184, 185,  99, 103, 100,   0,   0, 186,  99, 161,   0,   0,   4, 187,   0,   0,
+    188,  99,   0, 145, 145,   0,  75, 189,   4,  99,  99, 146,  94,   0,   0,   0,
+      4,   4,  14,   0,   4, 146,   4, 146,   4, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 190,   0,   0, 145, 191, 110,  15,  57,  15, 189, 103,
+    108, 192,   0, 193, 108,  22,  15,  14, 108,  68, 194, 195, 108, 146, 196,   0,
+    197, 198,   0,   0, 199, 114, 100,   0,  49,  46, 200,  57,   0,   0,   0,   0,
+      4, 104, 201,  57,   4,  22, 202,   0,   0,   0,   0,   0,   4, 132, 203,   0,
+      4,  22, 204,   0,   4, 205,   0,   0,  89,   0,  68,   0,   0,   0,   0,   0,
+      4, 198,   0,   0,   0,   4,   4, 206, 207, 208, 209,   0,   0, 210, 175, 211,
+    212, 213, 214,   4, 215,  15,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
+    216, 132,  74, 140,  22,   0,   0,   0, 217, 175, 218, 219, 220,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,
-      4,   4,   4, 133,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 161,   0,   0,   0,
+      4,   4,   4, 132,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  15,   4,   4, 175,
+      4, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  29,  99,   0,   0,   0,  15, 217,   4,  22, 111, 218,  22,   0,   0,   0,
+      4,  29, 100,  15,   4, 100,  15, 221,   4,  22, 111, 222,  22,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 219,   0, 166,   0,   0, 220,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 223,   0, 165,   0,   0, 224,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 188,
-      4,   4,   4,   4,   4,   4,  98,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 192,
+      4,   4,   4,   4,   4,   4,  99,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  99,   0, 221, 222,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 160,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 223, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 225,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 142, 226, 227,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 159,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 228, 229,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  30,   4, 225, 226, 227,   4, 228, 229, 230,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 231, 232,  82,  30,  30, 126, 126, 211, 211, 150,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   4, 233, 234,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 193,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 185,   0,   4,   4, 235,   0,   0,   0,   0,   0,
+      4,   4, 230,   4, 231, 232, 233,   4, 234, 235, 236,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 237, 238,  83, 230, 230, 239, 239, 216, 216, 149,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   4, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  15, 221,   4, 198,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    227, 236, 237, 238, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 243,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    233, 244, 245, 246, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 113,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 104,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  29,   4,   4,   4,   4,   4,   4,
     113,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 241,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 249,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  73,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  74,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
@@ -13075,58 +13337,60 @@ static RE_UINT8 re_id_start_table_3[] = {
     255, 135,   7,   0, 255,   7,   0,   0,   0, 192, 254, 255, 255, 255,  47,   0,
      96, 192,   0, 156,   0,   0, 253, 255, 255, 255,   0,   0,   0, 224, 255, 255,
      63,   0,   2,   0,   0, 252, 255, 255, 255,   7,  48,   4, 255, 255,  63,   4,
-     16,   1,   0,   0, 255, 255, 255,   1, 255, 255, 223, 255, 255,   0,   0,   0,
-    240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,   3,   0, 254, 255,
-    225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,   3,   0,   3,  16,
-    224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,   0,   0,  28,   0,
-    224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,   3,   0,   0,   2,
-    224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0, 232, 199,  61, 214,
-     24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,   0,   0,   0,   7,
-      3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,   0,   0,   0,  64,
-      3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,   0,  64, 112, 128,
-      3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47, 127,   0,   0,   0,
-    254, 255, 255, 255, 255, 255,  13,   0, 214, 247, 255, 255, 175, 255,  13,  32,
-     95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255, 255,  31,   0,   0,
-      0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,  98, 192, 225, 255,
-      3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,   3,   0, 255, 255,   3,   0, 255, 223,   1,   0, 255, 255,  15,   0,
-      0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 127,   0,
-    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  15,   0,   0,
+     16,   1,   0,   0, 255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0,
+    255,   3,   0,   0, 240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,
+      3,   0, 254, 255, 225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,
+      3,   0,   3,  16, 224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,
+      0,   0,  28,   0, 224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,
+      3,   0,   0,   2, 224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0,
+    232, 199,  61, 214,  24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,
+      0,   0,   0,  39,   3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,
+      0,   0,   0,  96,   3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,
+      0,  64, 112, 128,   3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47,
+    127,   0,   0,   0, 254, 255, 255, 255, 255, 255,  13,   0, 214, 247, 255, 255,
+    175, 255,  13,  32,  95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255,
+    255,  31,   0,   0,   0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,
+     98, 192, 225, 255,   3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247,
+    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
+    255, 255,  61, 255, 255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255,
+    255, 199, 255,   1, 255, 255,   3, 128, 255, 255,   3,   0, 255, 223,   1,   0,
+    255, 255,  15,   0,   0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0,
+    255, 255, 255, 127, 255,  63,  31,   0, 255,  15, 255, 255, 255, 255, 127,   0,
+    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  31,   0,   0,
     248, 255, 255, 255,   1, 192,   0, 252,  63,   0,   0,   0,  15,   0,   0,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255, 255, 255, 255, 231,
       0, 222, 111,   4,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31,
-    255, 255, 127, 248, 255, 127,   0,   0, 255, 255, 255,  31, 255,  31, 255, 255,
-      0,  12,   0,   0, 255, 127,   0, 128,   0,   0, 128, 255, 252, 255, 255, 255,
-    255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255, 187, 247, 255, 255,
-      7,   0,   0,   0,   0,   0, 252, 104,  63,   0, 255, 255, 255, 255,   7,   0,
-      0, 128,   0,   0, 223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196,
-    255, 255,  98,  62,   5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160,
-    255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
+     80, 253, 255, 243, 224,  67,   0,   0,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 248,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127,   0, 128,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255,   7,   0,   0,   0,   0,   0, 252, 104,
+     63,   0, 255, 255, 255, 255, 255,  31, 255, 255,   7,   0,   0, 128,   0,   0,
+    223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196, 255, 255,  98,  62,
+      5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,  15,
+    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160, 255, 253, 127,  95,
+    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
       0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,   1,   0,
-    255,   7, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15,   0, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
       1,   0, 239, 254,  31,   0,   0,   0, 255,   3,   3,   0, 128,   0, 255, 255,
-    255, 255, 255,   0, 144,   0, 255, 255, 255, 255,  71,   0,  30,   0,   0,  20,
-    255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,   0,   0,   1, 224,
-    128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,  16,   0,   0,   0,
-    255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255, 255, 255,   0, 128,
-      2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,   1, 248, 255, 255,
-    255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32, 255, 253, 255, 255,
-      0,   0, 252, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
+    255, 255, 255,   0,   0,   0,  38,   0, 144,   0, 255, 255, 255, 255,  71,   0,
+     30,   0,   0,  20, 255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,
+      0,   0,   1, 224, 128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,
+     16,   0,   0,   0, 255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255,   0, 128,   2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,
+      1, 248, 255, 255, 255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32,
+    255, 253, 255, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
     255,   3,   0,   1, 255,  63,   0,   0, 248, 255, 255, 224, 255,   7,   1,   0,
-     11,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255,   3, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255,  31, 128,  63,   0,  64,   0,   0,  15,   8,   0,   0,
+     11,   0,   0,   0,   0,   0, 239, 111,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255,   3, 255, 255, 223, 255, 255, 255, 255, 223,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255,
+    255,  31, 128,  63,   0,  64,   0,   0, 127, 111, 255, 127,  15,   8,   0,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
     238, 251, 255,  15,   3,   0, 255, 255
 };
@@ -13240,25 +13504,25 @@ static RE_UINT8 re_indic_positional_category_table_2[] = {
       0,  38,  39,  40,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  42,  42,  43,  43,   0,  44,  45,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  46,   0,   0,   0,  47,  48,   0,
-     49,   0,  50,  51,   0,   0,   0,   0,  52,  53,  54,  55,  56,  57,   0,  58,
-      0,  59,   0,   0,   0,   0,  60,  61,   0,   0,   0,   0,   0,   0,   0,  62,
+      0,   0,   0,   0,   0,   0,   0,   0,  42,  43,  44,  44,   0,  45,  46,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  47,   0,   0,   0,  48,  49,   0,
+     50,   0,  51,  52,   0,   0,   0,   0,  53,  54,  55,  56,  57,  58,   0,  59,
+      0,  60,   0,   0,   0,   0,  61,  62,   0,   0,   0,   0,   0,   0,   0,  63,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  64,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     64,  65,   0,   0,  66,  67,  68,  69,   0,  70,  71,   0,   1,  72,  73,  74,
-      0,  75,  76,  77,   0,  78,  79,  80,   0,   0,   0,   0,   0,   0,   0,  81,
+     65,  66,   0,   0,  67,  68,  69,  70,   0,  71,  72,   0,   1,  73,  74,  75,
+      0,  76,  77,  78,   0,  79,  80,  81,   0,   0,   0,   0,   0,   0,   0,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     82,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     84,  85,  86,   0,  56,  87,   0,   0,  88,  89,  90,  91,  56,  92,  93,   0,
-      0,  94,   0,   0,   0,   0,  95,  96,  23,  97,  98,  99,   0,   0,   0,   0,
-      0, 100, 101,   0,   0, 102, 103,   0,   0,   0,   0,   0,   0, 104, 105,   0,
-      0, 106, 107,   0,   0, 108,   0,   0, 109, 110,   0,   0,   0,   0,   0,   0,
-      0, 111,   0,   0,   0,   0,   0,   0,   0, 112, 113,   0,   0,   0, 114, 115,
-    116, 117, 118,   0, 119,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 120,   0,   0, 121, 122,   0,   0,   0, 123, 124,   0, 125,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 126,   0,   0,   0,   0,   0,   0,   0,   0
+     83,  84,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     85,  86,  87,  88,  57,  89,  90,   0,  91,  92,  93,  94,  57,  95,  96,   0,
+      0,  97,   0,   0,   0,   0,  98,  99,  23, 100, 101, 102,   0,   0,   0,   0,
+      0, 103, 104,   0,   0, 105, 106,   0,   0,   0,   0,   0,   0, 107, 108,   0,
+      0, 109, 110,   0,   0, 111,   0,   0, 112, 113,   0,   0,   0,   0,   0,   0,
+      0, 114,   0,   0,   0,   0,   0,   0,   0, 115, 116,   0,   0,   0, 117, 118,
+    119, 120, 121,   0, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 123,   0,   0, 124, 125,   0,   0,   0, 126, 127,   0, 128,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_indic_positional_category_table_3[] = {
@@ -13303,7 +13567,7 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      1,  2,  2,  2,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  1,  1,
      1,  2,  2,  2,  2,  0,  1,  1,  9,  0,  1,  1,  1,  1,  0,  0,
      0,  0,  0,  0,  0,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  2,  2,  2,  2,  0,  1,  6,  6,  0,  6,  6,  1,  1,  0,  0,
@@ -13347,7 +13611,9 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      0,  0,  3,  2,  4,  1,  1,  2,  2,  2,  2,  2,  2,  3,  0,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  1,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  1,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -13437,7 +13703,11 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      3,  3,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      2,  4,  2,  3,  3,  1,  1,  2,  2,  3,  3,  0,  0,  0,  0,  0,
+     0,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  3,  3,  4,  1,  9,  9,
@@ -13632,14 +13902,14 @@ static RE_UINT8 re_indic_syllabic_category_table_2[] = {
     107, 108, 109, 110,  54, 111, 112, 113,   0,   0,   0,   0,   0,   0, 114, 115,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     116, 117, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    119, 120, 121, 122, 123, 124,   0,   0, 125, 126, 127, 128, 129, 130, 131, 132,
-    133, 134,   0,   0, 135, 136, 137, 138, 139, 140, 141, 142,   0,   0,   0,   0,
-    143, 144, 145, 146, 147, 148, 149,   0,   0,   0,   0,   0, 143, 150, 151,   0,
-    143, 152, 153,   0, 154, 155,  65,   0, 156, 157,   0,   0,   0,   0,   0,   0,
-    154, 158,   0,   0,   0,   0,   0,   0, 159, 160, 161,   0,   0, 162, 163, 164,
-    165, 166, 167,  54, 168,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    169, 170, 171, 172, 173, 174,   0,   0, 175, 176, 177, 178, 179,  65,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 180,   0,   0,   0,   0,   0,   0,   0,   0
+    119, 120, 121, 122, 123, 124, 125,   0, 126, 127, 128, 129, 130, 131, 132, 133,
+    134, 135,   0,   0, 136, 137, 138, 139, 140, 141, 142, 143,   0,   0,   0,   0,
+    144, 145, 146, 147, 148, 149, 150,   0,   0,   0,   0,   0, 144, 151, 152,   0,
+    144, 153, 154,   0, 155, 156,  65,   0, 157, 158, 159,   0,   0,   0,   0,   0,
+    155, 160,   0,   0,   0,   0,   0,   0, 161, 162, 163,   0,   0, 164, 165, 166,
+    167, 168, 169,  54, 170,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    171, 172, 173, 174, 175, 176,   0,   0, 177, 178, 179, 180, 181,  65,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 182,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_indic_syllabic_category_table_3[] = {
@@ -13700,9 +13970,9 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      4,  4,  4,  5,  4,  6,  6,  6,  6,  6,  6,  6,  6,  0,  6,  6,
      6,  0,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  7,
-     7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0, 10,  8,  8,
+     7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  9, 10,  8,  8,
      8,  8,  8,  8,  8,  0,  8,  8,  8,  0,  8,  8,  8, 11,  0,  0,
-     0,  0,  0,  0,  0,  8,  8,  0,  7,  7,  7,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  8,  8,  0,  7,  7,  7,  0,  0, 13,  0,  0,
      6,  6,  8,  8,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  5,  0,  6,  6,  6,  6,  6,  6,  6,  6,  0,  6,  6,
@@ -13710,7 +13980,7 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  0,  0,  9, 10,  8,  8,
      8,  8,  8,  8,  8,  0,  8,  8,  8,  0,  8,  8,  8, 11,  0,  0,
-     0,  0,  0,  0,  0,  8,  8,  0,  0,  0,  0,  0,  0,  0,  7,  0,
+     0,  0,  0,  0,  0,  8,  8,  0,  0,  0,  0,  0,  0, 13,  7,  0,
      6,  6,  8,  8,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      0, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
@@ -13761,8 +14031,8 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7, 15,  8,  8,  8,  8, 20, 20, 20, 20, 20, 20, 20,  7, 20,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 20, 20,  8,  8,  0,  0,
-     6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,
-     7,  7,  8,  8, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+     7,  7,  8,  8, 18, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  8,  8, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
@@ -13795,13 +14065,13 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      8,  8,  8,  8,  4, 20, 20, 20, 20, 20, 18,  3,  3,  0,  0,  3,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
-     4,  4,  4, 26,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+     4,  4,  4, 27,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8, 11,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0,  0,
+     8,  8,  8,  8, 11,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
-     4, 26,  5,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,
+     4, 27,  5,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7, 23, 23, 23,  8,  8,  8,  8,  8,  8, 18, 24, 23, 23,  7,  7,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 10,  7,  7,  7, 27, 27,
@@ -13849,7 +14119,7 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8, 27,
     27, 27, 27, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4,  4, 26,  5,  6,  6,  6,  6,  6,  7,  7,  7,  6,  6,  6,  7,
+     4,  4, 27,  5,  6,  6,  6,  6,  6,  7,  7,  7,  6,  6,  6,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8, 15, 15, 15,
@@ -13888,11 +14158,13 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      8,  8,  8,  8,  8,  8, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
     33, 33, 33, 33, 33, 33,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,
+    18,  6,  6,  8,  8,  7,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,
      4,  4,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  8,  8,  8, 11,  9,  0,  0,  0,  0,  0,
+     0,  0,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  5,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  8,
@@ -13959,6 +14231,8 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0, 15, 15, 15,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 18,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,
+     7,  7,  7,  7,  7,  7,  7,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  4,  5, 11,  9,  0,  0,  0,  0,  0,
      6,  6,  6,  6,  6,  6,  6,  0,  0,  6,  0,  0,  7,  7,  7,  7,
@@ -14109,11 +14383,11 @@ static RE_UINT8 re_joining_group_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  0,  0,  0,  0,
-     0,  0,  0, 12,  0, 13, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 12, 13, 14, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 15, 16,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 17, 18,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 16, 17,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 19,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -14143,18 +14417,20 @@ static RE_UINT8 re_joining_group_table_3[] = {
      15,  15,  13,  13,  13,  19,  19,  20,  20,  20,  18,   8,   8,   9,   6,   6,
       9,   8,   6,   2,   2,  14,  14,   1,   3,   3,  56,  56,   6,   9,   9,  17,
      57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   0,   0,   0,  68,   0,   0,  20,   6,  11,  11,  13,  69,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   6,  11,  15,  16,  18,  19,   1,   1,   8,   3,  68,   0,   7,  10,
-     13,  69,   8,  12,  17,   0,   4,   4,   4,   8,   1,  70,  71,  72,   4,   4,
-      4,   6,  13,  12,  71,   6,   6,  18,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   6,  11,  15,  16,  18,  19,   1,   1,   8,   3,  70,   0,   7,  10,
+     13,  71,   8,  12,  17,  16,   4,   4,   4,   8,   1,  72,  73,  74,   4,   4,
+      4,   6,  13,  12,  73,   6,   6,  18,  13,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     73,  74,  74,  75,  75,  76,   0,  77,   0,  78,  78,   0,   0,  79,  80,  81,
-     82,  82,  82,  83,  84,  85,  86,  87,  88,  89,  89,  90,  90,  91,  92,  92,
-     92,  93,   0,   0,  94,   0,   0,   0,   0,   0,   0,  95,  96,  97,  98,  99,
+     75,  76,  76,  77,  77,  78,   0,  79,   0,  80,  80,   0,   0,  81,  82,  83,
+     84,  84,  84,  85,  86,  87,  88,  89,  90,  91,  91,  92,  92,  93,  94,  94,
+     94,  95,   0,   0,  96,   0,   0,   0,   0,   0,   0,  97,  98,  99, 100, 101,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 100,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 101,   0,   0, 100,   0, 101,   0,
-    101,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 102,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0, 102,   0, 103,   0,
+    103,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -14184,7 +14460,7 @@ static RE_UINT8 re_joining_type_table_1[] = {
     16,  9, 17, 18, 19, 20, 21, 22,  9,  9,  9,  9,  9, 23,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24, 25,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 26,
-     9,  9,  9,  9, 27,  9, 28,  9, 29,  9, 30,  9,  9,  9,  9,  9,
+     9,  9,  9, 27, 28,  9, 29,  9, 30,  9, 31,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -14233,7 +14509,7 @@ static RE_UINT8 re_joining_type_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    31,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    32,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -14252,19 +14528,19 @@ static RE_UINT8 re_joining_type_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   3,   0,   0,   0,   0,
       0,   0,   0,   0,   4,   0,   0,   0,   0,   0,   0,   0,   5,   6,   7,   0,
       8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,   0,  20,  21,  22,
-     23,  24,  25,  26,   0,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
-     38,  35,  39,  40,  38,  35,  41,  42,  34,  43,  44,  33,  45,   0,  46,   0,
-     47,  48,  49,  33,  34,  43,  50,  33,  51,  52,  36,  33,  34,   0,  53,   0,
-      0,  54,  55,   0,   0,  56,  57,   0,  58,  59,   0,  60,  61,  62,  63,   0,
-      0,  64,  65,  66,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,
+     23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
+     39,  36,  40,  41,  39,  36,  42,  43,  35,  44,  45,  34,  46,   0,  47,   0,
+     48,  49,  50,  34,  35,  44,  51,  34,  52,  53,  37,  34,  35,   0,  54,   0,
+      0,  55,  56,   0,   0,  57,  58,   0,  59,  60,   0,  61,  62,  63,  64,   0,
+      0,  65,  66,  67,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  69,  69,  70,  70,   0,  71,  72,   0,
-     73,  13,  13,  74,  75,  76,   0,   0,   0,  77,   0,   0,   0,   0,   0,   0,
-     78,   0,  79,  80,   0,  81,  82,   0,  83,  84,  45,  85,  51,  86,   0,  87,
-      0,  88,   0,   0,   0,   0,  89,  90,   0,   0,   0,   0,   0,   0,   2,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,  70,  71,  71,  71,   0,  72,  73,   0,
+     74,  13,  13,  75,  76,  77,   0,   0,   0,  78,   0,   0,   0,   0,   0,   0,
+     79,   0,  80,  81,   0,  82,  83,   0,  84,  85,  46,  86,  52,  87,   0,  88,
+      0,  89,   0,   0,   0,   0,  90,  91,   0,   0,   0,   0,   0,   0,   2,   2,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     92,  93,   0,  94,   0,   0,  81,  95,   0,   0,   0,   0,   0,   0,   0,   0,
+     92,  93,   0,  94,   0,   0,  82,  95,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -14273,44 +14549,46 @@ static RE_UINT8 re_joining_type_table_2[] = {
       0,  98,   0,   0,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 100,  48,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,   0,
-    102, 103,  13, 104,   0,   0, 105, 106,   0, 107, 108,   0,  30, 109,   0, 110,
-      0, 111, 112,  35,   0, 113,  34, 114,   0,   0,   0,   0,   0,   0,   0, 115,
+      0,   0,   0, 100, 101,   0,   0, 102,   0,   0,   0,   0,   0,   0,   0,   0,
+    103, 104,  13, 105,   0,   0, 106, 107,   0, 108, 109,   0,  31, 110,   0, 111,
+      0, 112, 113,  36,   0, 114,  35, 115,   0,   0,   0,   0,   0,   0,   0, 116,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 117,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      3,   3,   0,   0,   0,   0,   0,  97,   0,   0,   0,   0,   0,   0,   0, 117,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118,
-      0,   0,   0,   0,   0,   0,   0,  82,   0,   0,   0, 119,   0,   0,   0,   0,
+      3,   3,   0,   0,   0,   0,   0,  97,   0,   0,   0,   0,   0,   0,   0, 118,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 119,
+      0,   0,   0,   0,   0,   0,   0, 120,   0,   0,   0, 121,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    122, 123,   0,   0,   0,   0, 124, 125,   0,   0,   0,   0, 126, 127,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 128, 129,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   0,   0,   0, 131, 132, 133, 134, 135, 136,   0,
+     35, 137, 138, 139,  52, 140,  46,   0,  31, 141,   0, 142,  52, 143, 144,   0,
+      0, 145,   0,   0,   0,   0,  97, 146,  52,  53, 120, 147,   0,   0,   0,   0,
+      0, 137, 148,   0,   0, 149, 150,   0,   0,   0,   0,   0,   0, 151, 152,   0,
+      0, 153, 120,   0,   0, 154,   0,   0,  69, 155,   0,   0,   0,   0,   0,   0,
+      0, 156,   0,   0,   0,   0,   0,   0,   0, 157, 158,   0,   0,   0, 159, 120,
+    160, 161, 162,   0, 163,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 164,   0,   0, 165, 166,   0,   0,   0, 167, 168,   0, 169,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 171,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    120, 121,   0,   0,   0,   0, 122, 123,   0,   0,   0,   0, 124, 125,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 126, 127,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 128,   0,   0,   0, 129, 130,   0,   0, 131, 132,   0,
-     34, 133, 134,  97,  51, 135,   0,   0,  30, 136,   0, 137,  51, 138, 139,   0,
-      0, 140,   0,   0,   0,   0,  97, 141,  51,  52,  82, 142,   0,   0,   0,   0,
-      0, 133, 143,   0,   0, 144, 145,   0,   0,   0,   0,   0,   0, 146, 147,   0,
-      0, 148,  82,   0,   0, 149,   0,   0,  68, 150,   0,   0,   0,   0,   0,   0,
-      0, 151,   0,   0,   0,   0,   0,   0,   0, 152, 153,   0,   0,   0, 154,  82,
-    155, 156, 157,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 159,   0,   0, 160, 161,   0,   0,   0, 162, 163,   0, 164,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 165,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 166,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 172,   0, 173,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 167,   0, 168,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 174,   0, 175,   0,   0, 176,
+      0,   0,   0,   0, 177,  84,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 169,   0, 170,   0,   0, 171,
-      0,   0,   0,   0, 172,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,  98,   0,   0,
-      0,   0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2, 178, 138,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 179, 180,  98,   0,   0,
+      0,   0, 181,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2, 176,   2, 177, 178, 179,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    180, 181,   0,   0,   0,   0,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 182,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 168,   0,  13,  13, 183,   0,   0,   0,   0,   0,
+      2, 182,   2, 183, 184, 185,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    186, 187,   0,   0,   0,   0,   0,   0,   0, 173,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 188,   0, 189,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 173,   0,  13,  13, 190,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     34,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   3,
+     35,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   3,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -14368,11 +14646,13 @@ static RE_UINT8 re_joining_type_table_3[] = {
     3, 2, 2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 3, 2, 3, 3, 3, 1, 1, 1, 0, 0, 0, 0,
     2, 0, 2, 2, 2, 2, 0, 3, 2, 3, 3, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+    3, 3, 3, 4, 4, 4, 2, 0, 0, 2, 2, 2, 2, 2, 3, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 0, 3, 2,
-    2, 3, 3, 2, 2, 0, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14412,7 +14692,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,
     1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
@@ -14461,7 +14741,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 4, 1, 1, 1, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 4, 1, 1, 1, 0, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
@@ -14479,7 +14759,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14497,8 +14777,6 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0,
     0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
@@ -14518,6 +14796,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14553,6 +14833,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
     0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
@@ -14578,6 +14860,10 @@ static RE_UINT8 re_joining_type_table_3[] = {
     2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 0, 2, 2, 3, 3, 3, 0, 2, 3, 3, 2, 2, 3, 2, 2,
     0, 2, 3, 3, 2, 0, 0, 0, 0, 3, 2, 5, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14586,6 +14872,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,
     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14661,6 +14949,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
@@ -14679,6 +14969,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
     1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
@@ -14708,18 +15000,18 @@ static RE_UINT8 re_line_break_table_1[] = {
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 20, 21, 22,
     23, 24, 18, 19, 20, 25, 26, 26, 27, 27, 27, 27, 27, 27, 28, 29,
-    30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 27, 27, 40, 41, 27, 27,
-    27, 42, 27, 27, 27, 27, 27, 27, 27, 27, 43, 44, 13, 13, 13, 13,
-    13, 45, 46, 47, 27, 27, 27, 27, 27, 27, 27, 27, 48, 27, 27, 49,
-    27, 27, 27, 27, 50, 51, 52, 27, 53, 27, 54, 55, 56, 57, 58, 59,
+    30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 27, 40, 41, 42, 27, 27,
+    27, 43, 27, 27, 27, 27, 27, 27, 27, 27, 44, 45, 13, 13, 13, 13,
+    13, 46, 47, 48, 27, 27, 27, 27, 27, 27, 27, 49, 50, 27, 27, 51,
+    27, 27, 27, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 59,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 64,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 59,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 64,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
@@ -14760,7 +15052,7 @@ static RE_UINT8 re_line_break_table_1[] = {
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-    60, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+    65, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
@@ -14779,26 +15071,26 @@ static RE_UINT16 re_line_break_table_2[] = {
       7,   7,   7,   7,   7,   7,   8,   7,   9,   9,  10,  11,  12,  13,   7,   7,
       7,   7,   7,   7,  14,   7,   7,   7,   7,  15,  16,   7,  17,  18,  19,  20,
      21,   7,  22,  23,   7,   7,  24,  25,  26,  27,  28,   7,   7,  29,  30,  31,
-     32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
-     48,  49,  50,  51,  52,  53,  54,  55,  56,  53,  57,  58,  59,  60,  61,  62,
-     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
-     79,  80,  81,  36,  82,  83,  84,  36,  85,  86,  87,  88,  89,  90,  91,  36,
+     32,  33,  34,  35,  36,   7,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  52,  56,  57,  58,  59,  60,  61,
+     62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
+     78,  79,  80,  81,  82,  83,  84,  81,  85,  86,  87,  88,  89,  90,  91,  81,
      92,  92,  93,  92,  94,   7,  95,   7,  96,  96,  96,  97,  97,  98,  99,  99,
       7,   7, 100,   7, 101, 102, 103,   7, 104,   7, 105, 106, 107,   7,   7, 108,
     109,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7, 110,   7,   7, 111, 112, 113, 114, 115,  92,  92, 116, 117,
     118,   7,   7, 119, 120, 121,   7, 122, 123, 124, 125, 126,  92, 127, 128,   7,
-    129,  92, 130, 131, 132, 133, 134,  36, 135, 136, 137, 138, 139, 140,   7, 141,
-      7, 142, 143, 144, 145, 146, 147, 148,   7,   7,   7,   7,   7,   7,   9, 149,
-      7,   7,   7,   7,   7,   7,   7,   7, 108,   7, 150, 151,   7,  37, 152, 153,
+    129,  92, 130, 131, 132, 133, 134,  81, 135, 136, 137, 138, 139, 140,   7, 141,
+      7, 142, 143, 144, 145, 146, 147, 148,   7,   7,   7,   7,   7,   7,   9,   9,
+      7,   7,   7,   7,   7,   7,   7,   7, 108,   7, 149, 150,   7, 151, 152, 153,
     154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,   7, 167,   7,
     168, 169, 170, 171, 172, 173,   7, 174, 175, 176,   7,   7,   7,   7,   7, 177,
-      7, 178,  35, 179, 179, 179, 179, 180, 179, 179, 181, 182, 183, 184, 185, 186,
-    187, 188, 189, 190, 191, 192, 193, 194, 195,   7, 196, 197, 198,   7, 199, 200,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 201,   7, 202, 203,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 204, 205, 206,   7,   7,   7,
-      7, 207, 123,   7,   7,   7,   7, 208,   7,  95,   7, 209, 210, 211, 211,   9,
-    212, 213, 214,  36, 215, 216, 216, 217, 216, 216, 216, 216, 216, 216, 218, 219,
+      7, 178, 179, 180, 180, 180, 180, 181, 180, 180, 182, 183, 184, 185, 186, 187,
+    188, 189, 190, 191, 192, 193, 194, 195, 196,   7, 197, 198, 199,   7, 200, 201,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 202,   7, 203, 204,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 205, 206, 207,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 208,   7,  95,   7, 209, 210, 211, 211,   9,
+    212, 213, 214,  81, 215, 216, 216, 217, 216, 216, 216, 216, 216, 216, 218, 219,
     220, 221, 222, 223, 224, 225, 223, 226, 227, 228, 216, 216, 229, 216, 216, 230,
     231, 216, 232, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
@@ -14809,7 +15101,7 @@ static RE_UINT16 re_line_break_table_2[] = {
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 234, 216, 235, 144,   7,   7,   7,   7,   7,   7,   7,   7,
     236, 237,   7, 238, 239,   7,   7, 240,   7,   7,   7,   7,   7,   7, 241, 242,
-    243, 244,   7, 245, 246, 136, 247, 248,  30, 249, 250, 251,  40, 252, 253, 254,
+    243, 244,   7, 245, 246, 136, 247, 248,  30, 249, 250, 251,  39, 252, 253, 254,
       7, 255, 256,  92,  92,  92, 257, 258, 259, 260,   7, 261,   7,   7,   7, 262,
     263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 269, 263, 264,
     265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266,
@@ -14829,74 +15121,84 @@ static RE_UINT16 re_line_break_table_2[] = {
     263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 270, 271, 272,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36, 216, 216, 216, 216, 216, 216, 216, 216,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 274, 275, 276,   7,   7,   7, 277,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 278, 279,   7, 280,   7, 281, 282,
-    283, 284, 285, 286,   7,   7,   7, 287, 288, 289, 290, 291, 292, 231, 293, 294,
-    295, 296, 297,  36,   7,   7,   7, 298, 299, 300,   7,   7, 301, 302, 279, 303,
-     36,  36,  36,  36, 304,   7, 305, 306,   7, 307, 308, 309, 310,   7, 311,  36,
-      7,   7,   7,   7, 151, 312, 313, 314,   7, 315,   7, 316,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 210, 122, 281,  36,  36,  36,  36,
-    317, 318, 319,   7, 123, 320,  36, 321, 322, 323,  36,  36,   7, 324, 280,   7,
-    325, 326, 327,   7,   7,  36,   7, 328,   7, 329, 330, 331, 332, 333,  36,  36,
-      7,   7, 334,  36,   7, 335,   7, 336,   7, 337,  36,  36,  36,  36,  36,  36,
-     36,  36,  36, 123,   7, 338,  36,  36,   7, 315, 339,  36,  36, 279, 340, 210,
-    139, 341, 342, 343, 139, 344, 345, 346, 139, 347, 348, 349, 139, 252, 350, 351,
-    352, 353,  36,  36, 354, 355, 356, 357, 358, 359, 360, 361,  36,  36,  36,  36,
-      7, 362, 363, 364,   7,  27, 365,  36,  36,  36,  36,  36,   7, 366, 367,  36,
-      7,  27, 368, 369,   7, 370, 371,  36, 372, 373,  36,  36,  36,  36,  36,  36,
-      7, 374,  36,  36,  36,   7,   7, 375, 376, 377, 378,  36,  36, 379, 380, 381,
-    382, 383, 384,   7, 385, 386,   7, 119,  36,  36,  36,  36,  36,  36,  36,  36,
-    387, 388, 389, 390, 391, 392,  36,  36, 393, 394, 395, 396, 397, 371,  36,  36,
-     36,  36,  36,  36,  36,  36,  36, 398,  36,  36,  36,  36,  36, 399, 400, 401,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 278,   7,   7, 279,   7, 280, 281,
+    282, 283, 284, 285,   7,   7,   7, 286, 287, 288, 289, 290, 291, 231, 292, 293,
+    294, 295, 296,  81,   7,   7,   7, 297, 298, 299,   7,   7, 300, 301, 302, 303,
+     81,  81,  81,  81, 304,   7, 305, 306,   7, 307,  35, 308, 309,   7, 310,  81,
+      7,   7,   7,   7, 150, 311, 312, 313,   7, 314,   7, 315, 316, 317,  81,  81,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 210, 122, 318, 319, 320,  81,  81,
+    321, 322, 323,   7, 123, 324,  81, 325, 326, 327,  81,  81,   7, 328, 279,   7,
+    329, 330, 331,   7,   7,  81,   7, 332,   7, 333, 334, 335, 336, 337,  81,  81,
+      7,   7, 338,  81,   7, 339,   7, 340,   7, 341,  81,  81,  81,  81,  81,  81,
+     81,  81,  81, 123,   7, 342,  81,  81,   7, 314, 343, 302, 344, 302, 345, 210,
+    139, 346, 347, 348, 139, 349, 350, 351, 139, 352, 353, 354, 139, 252, 355, 356,
+    357, 358,  81,  81, 359, 360, 361, 362, 363, 364, 365, 366,  81,  81,  81,  81,
+      7, 367, 368, 369,   7,  27, 370,  81,  81,  81,  81,  81,   7, 371, 372,  81,
+      7,  27, 373, 374,   7, 375, 376,  81, 377, 378, 379,  81,  81,  81,  81,  81,
+      7, 380,  81,  81,  81,   7,   7, 381, 382, 383, 384,  81,  81, 385, 386, 387,
+    388, 389, 390,   7, 391, 392,   7, 119,  81,  81,  81,  81,  81,  81,  81,  81,
+    393, 394, 395, 396, 397, 398,  81,  81, 399, 400, 401, 402, 403, 376,  81,  81,
+     81,  81,  81,  81,  81,  81,  81, 404,  81,  81,  81,  81,  81, 405, 406, 407,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 107,  36,  36,  36,
-      7,   7,   7, 402,   7,   7,   7,   7,   7,   7, 403,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 107,  81,  81,  81,
+      7,   7,   7, 408,   7,   7,   7,   7,   7,   7, 409,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 302,   7,   7, 339,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7, 404,   7, 405,   7,   7,   7,   7,   7,   7, 406,   7,   7,   7,   7,
-      7, 407,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 408,   7,
-      7,   7, 178,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7, 410,   7, 411,   7,   7,   7,   7,   7,   7, 412,   7,   7,   7,   7,
+      7, 413,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 414,   7,
+      7,   7, 178,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 119, 123, 409,  36,  36, 279, 410,   7, 411, 412, 413, 414,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,   7,   7, 415,  36,  36,  36,   7,   7, 416,   9, 417,  36,  36, 418,
+      7, 119, 123, 415,   7, 123, 311, 416,   7, 417, 418, 419, 420,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,   7,   7, 421,  81,  81,  81,   7,   7, 422,   9, 423,  81,  81, 424,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 419,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 425,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7, 122,  36, 420,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    216, 216, 216, 216, 216, 216, 216, 216, 231,  36, 421, 422, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 423,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7, 424, 425, 426,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7, 122,   7, 427,   7, 428, 429, 430,   7, 334,
-      7,   7, 431,  36,  36,  36,  36, 432,   7,   7, 210, 119,  36,  36,  36,  36,
-      7,   7,  37,   7, 433, 434, 435,   7, 436, 437, 438,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7, 439,   7,   7,   7,   7,   7,   7,   7,   7, 440, 441,
+      7,   7,   7,   7,   7,   7, 122,  81, 426,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 427,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 428, 429, 430, 216, 216, 216, 216,
+    216, 216, 216, 216, 216, 216, 216, 431,  81,  81,  81,  81,  81,  81,  81,  81,
+      7,   7,   7, 432, 433, 434,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,   9, 435, 436,   7,   7,   7, 409,  81,
+      7,   7,   7,   7,   7,   7,   7, 122,   7, 437,   7, 438, 439, 440,   7, 179,
+      7,   7, 441,  81,  81,  81,  81, 442,   7,   7, 210, 119,  81,  81,  81,  81,
+      7,   7, 151,   7, 443, 444, 445,   7, 446, 447, 448,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 449,   7,   7,   7,   7,   7,   7,   7,   7, 450, 451,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      9, 442,   9, 443, 444, 445,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    446, 447,  36,  36,  36,  36,  36,  36,   7, 448, 449,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,   7, 450,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7, 451,  36,   7,   7, 452,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36, 453,   7, 454,  36,  36, 455, 151,  36,  36,  36,  36,  36,  36,
-    435, 456, 457, 458, 459, 460,  36, 461,  36,  36,  36,  36,  36,  36,  36,  36,
-    216, 216, 216, 216, 216, 216, 216, 216, 462, 463, 179, 464, 179, 465, 216, 466,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 467, 468, 469, 470,
-    216, 216, 471, 472, 473, 474, 216, 216, 475, 476, 477, 478, 479, 216, 480, 481,
-    216, 216, 482, 483, 216, 484, 485, 216,   7,   7,   7, 486,   7,   7, 487, 216,
-    488,   7, 489,   7, 490, 491, 216, 216, 492, 493, 216, 494, 216, 495, 496, 216,
-      7,   7, 486, 216, 216, 216, 216, 216,   7,   7,   7,   7, 497,   7,  35, 498,
+      9, 452,   9, 453, 454, 455,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81, 123,  81,  81,  81,  81,  81,  81,  81,
+    456, 457,  81,  81,  81,  81,  81,  81,   7, 458, 459,  81,  81,  81,  81,  81,
+     81,  81,  81,  81, 302, 460,   7, 461,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 462,
+      7,   7,   7,   7,   7,   7, 463,  81,   7,   7, 464,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81, 465,   7, 466,  81,  81, 467, 150,  81,  81,  81,  81,  81,  81,
+    445, 468, 469, 470, 471, 472,  81, 473,  81,  81,  81,  81,  81,  81,  81,  81,
+    216, 216, 216, 216, 216, 216, 216, 216, 474, 475, 180, 476, 180, 477, 216, 478,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 479, 480, 481, 482,
+    216, 216, 483, 484, 485, 486, 216, 216, 487, 488, 489, 490, 491, 216, 492, 493,
+    216, 216, 494, 495, 216, 496, 497, 216,   7,   7,   7, 498,   7,   7, 499, 216,
+    500,   7, 501,   7, 502, 503, 216, 216, 504, 505, 216, 506, 216, 507, 508, 216,
+      7,   7, 498, 216, 216, 216, 509, 510,   7,   7,   7,   7, 511,   7, 179, 512,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 499,
-    500,   9,   9,   9,  36,  36,  36,  36,   9,   9,   9,   9,   9,   9,   9, 501,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 513,
+    514,   9,   9,   9,  81,  81,  81,  81,   9,   9,   9,   9,   9,   9,   9, 515,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81
 };
 
 static RE_UINT8 re_line_break_table_3[] = {
@@ -14943,7 +15245,7 @@ static RE_UINT8 re_line_break_table_3[] = {
     23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,  0,  0,  0,  0, 23,
     23, 23, 23,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9, 11, 11, 11, 14, 14,  9,  9,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  1,  0,  7,  7,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  1,  7,  7,  7,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11, 17, 17,  9,  9,  9,
@@ -14971,13 +15273,11 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  0,  0,  9,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
+     9,  9,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15029,9 +15329,9 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
      9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  9,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  1,  9,  1,  1,
      1,  1,  1,  1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  0,  0,
-     0,  0,  0,  0,  0,  1,  1,  0,  9,  9,  9,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  1,  1,  0,  9,  9,  9,  0,  0,  9,  0,  0,
      9,  9,  1,  1,  0,  0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
      0,  0,  0,  0,  0,  0,  0, 22,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  1,  1,  1, 22,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
@@ -15039,7 +15339,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  0,  0,  1,  9,  1,  1,
      1,  1,  1,  1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  0,  0,
-     0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  9,  0,
+     0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  9,  9,  0,
      9,  9,  1,  1,  0,  0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
      0,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
@@ -15064,6 +15364,8 @@ static RE_UINT8 re_line_break_table_3[] = {
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0, 10,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  9,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  2,  2,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 24, 24,  0, 24,  0, 24, 24, 24, 24, 24,  0, 24, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
     24, 24, 24, 24,  0, 24,  0, 24, 24, 24, 24, 24, 24, 24, 24, 24,
@@ -15124,8 +15426,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 12, 18,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  2,  2,  2,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
-     9,  9,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  1,  1,  1,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15136,7 +15438,7 @@ static RE_UINT8 re_line_break_table_3[] = {
     24, 24, 24, 24,  2,  2, 28, 24,  2,  9,  2, 10, 24, 24,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-     9,  9,  7,  7,  2,  2, 22,  9,  7,  7,  9,  1,  1,  1, 20,  0,
+     9,  9,  7,  7,  2,  2, 22,  9,  7,  7,  9,  1,  1,  1, 20,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
@@ -15168,16 +15470,16 @@ static RE_UINT8 re_line_break_table_3[] = {
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  2,  2,  9,  2,  2,  2,
      2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
+     1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  2,  2,  0,
      1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,
@@ -15198,12 +15500,12 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  9,  1,  9,  9,
      9,  9,  9,  9,  1,  9,  9,  1,  1,  1,  9,  0,  0,  0,  0,  0,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,
      9,  9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  0,  9,  0,  9,  0,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15220,7 +15522,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 11, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -15258,6 +15560,8 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
@@ -15314,8 +15618,6 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,
      1,  1,  9,  9,  0,  0,  0,  0,  0,  7,  2,  2,  2,  9,  7,  2,
      9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  9,
@@ -15329,7 +15631,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      8,  8, 12, 18, 12, 18, 12, 18, 12, 18,  2,  2,  2,  2,  7,  9,
      2,  2,  9,  2,  2,  9,  9,  9,  9,  9, 31, 31,  2,  2,  2,  9,
      2,  2, 12,  2,  2,  2,  2,  2,  2,  2,  2,  9,  2,  9,  2,  2,
-     9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  7,  7, 12, 18, 12, 18, 12, 18, 12, 18,  2,  0,  0,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34,  0, 34, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
@@ -15382,10 +15684,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  9,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
+     9,  9,  0,  9,  0,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  1,  9,  9,  9,  1,  9,  9,  9,  9,  1,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  1,  1,  1,  1,  1,  9,  9,  9,  9,  1,  0,  0,  0,
@@ -15454,18 +15756,16 @@ static RE_UINT8 re_line_break_table_3[] = {
     23, 23, 23, 23, 23, 23, 23,  0, 23, 23, 23, 23, 23,  0, 23,  0,
     23, 23,  0, 23, 23,  0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 12,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 11,  9,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 11,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
     14, 18, 18, 14, 14,  7,  7, 12, 18, 32,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
@@ -15506,6 +15806,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
      9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15516,8 +15818,6 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
      9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15533,7 +15833,17 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  0,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  0,  0,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15580,6 +15890,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+     9,  9,  1,  1,  1,  1,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15587,10 +15899,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  2,  2,  9,  9,  9,  9,  9,  0,  0,
      0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
+     1,  9,  9,  1,  1,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  2,  2,
-     2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,
+     2,  2,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
@@ -15641,13 +15953,15 @@ static RE_UINT8 re_line_break_table_3[] = {
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 24, 24,  2,  2,  2, 24,
+    24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  9,  9,  9,  9,  9,  9,
@@ -15673,7 +15987,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  9, 22, 22,
     22,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,
@@ -15719,7 +16033,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 12, 18,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  2,  2,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,
      1,  1,  1,  1,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15743,6 +16057,10 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34, 34, 34, 34, 34, 34,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  0,
+    34, 34, 34,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     36, 36, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 36, 36, 36, 36,  0,  0,  0,  0,  0,  0,  0,  0,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
@@ -15754,6 +16072,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  9,  1,  1,  2,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  9,  9,  9,  1,  1,  1,
@@ -15799,9 +16121,13 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  9,  9,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0, 10,
+     9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  0,  9,  9,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
      9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,
@@ -15894,6 +16220,10 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34, 34, 35, 35, 34, 35, 35, 34, 35, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
     34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34,
+    34, 34, 34, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -15952,7 +16282,7 @@ static RE_UINT8 re_lowercase_table_1[] = {
      2, 12,  2, 13,  2,  2, 14,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 15,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2, 16,  2,  2,  2,  2, 17,  2,  2,  2,  2,  2,
+     2,  2,  2,  2,  2, 16,  2, 17,  2,  2, 18,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -16030,27 +16360,29 @@ static RE_UINT8 re_lowercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 26, 47,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 26, 48, 49,  5,  5,  5, 50, 15, 51,  0,  0,  0,  0,  0,  0,
+     0, 26, 15, 48,  5,  5,  5, 49, 15, 50,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 52, 53,  0,  0,  0,  0, 54,  5, 55, 56, 57, 58, 59,
+     0,  0,  5, 51, 52,  0,  0,  0,  0, 53,  5, 54, 55, 56, 57, 58,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 60, 61, 15, 15,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 59, 60, 15, 15,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 62,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 15, 67,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 62, 63,  0,  0,  0, 64, 65,  0,  0,  0,  0, 66, 67,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 69,  0,  0,
+     0,  0,  0,  0,  0,  0, 15, 70,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 68, 69, 81,
-    71, 72, 82, 64, 75, 83, 84, 85, 86, 82, 87, 26, 88, 75, 89,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 90, 91,  0,  0,  0,  0,  0,
+    71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 71, 72, 84,
+    74, 75, 85, 63, 78, 86, 87, 88, 89, 85, 90, 26, 91, 78, 92,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 93,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 94, 95,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -16067,17 +16399,18 @@ static RE_UINT8 re_lowercase_table_3[] = {
      63,   0, 255,   0, 255,   0, 255,  63, 255,   0, 223,  64, 220,   0, 207,   0,
     255,   0, 220,   0,   0,   0,   2, 128,   0,   0, 255,  31,   0, 196,   8,   0,
       0, 128,  16,  50, 192,  67,   0,   0,  16,   0,   0,   0, 255,   3,   0,   0,
-    255, 255, 255, 127,  98,  21, 218,  63,  26,  80,   8,   0, 191,  32,   0,   0,
-    170,  42,   0,   0, 170, 170, 170,  58, 168, 170, 171, 170, 170, 170, 255, 149,
-    170,  80, 186, 170, 170, 130, 160, 170,   8,   5,   0,   0,   0,   0,  64,   7,
-    255, 255, 255, 247, 255,   1, 255, 255, 127,   0, 248,   0,   0, 255, 255, 255,
-    255, 255,   0,   0,   0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-      0,   0,   0, 252, 255, 255,  15,   0,   0, 192, 223, 255, 255,   0,   0,   0,
-    252, 255, 255,  15,   0,   0, 192, 235, 239, 255,   0,   0,   0, 252, 255, 255,
-     15,   0,   0, 192, 255, 255, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0,
-    192, 255, 255, 255,   0, 192, 255, 255,   0,   0, 192, 255,  63,   0,   0,   0,
-    252, 255, 255, 247,   3,   0,   0, 240, 255, 255, 223,  15, 255, 127,  63,   0,
-    255, 253,   0,   0, 247,  11,   0,   0, 252, 255, 255, 255,  15,   0,   0,   0
+     98,  21, 218,  63,  26,  80,   8,   0, 191,  32,   0,   0, 170,  42,   0,   0,
+    170, 170, 170,  58, 168, 170, 171, 170, 170, 170, 255, 149, 170,  80, 186, 170,
+    170, 130, 160, 170,  10,   5, 170,   2,   0,   0,  64,   7, 255, 255, 255, 247,
+    255,   1, 255, 255, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
+      0,   0,   0, 255, 255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27,
+    185, 255, 255, 255, 255, 255, 253,   7, 255, 255,   7,   0,   0,   0,   0, 252,
+    255, 255,  15,   0,   0, 192, 223, 255, 255,   0,   0,   0, 252, 255, 255,  15,
+      0,   0, 192, 235, 239, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0, 192,
+    255, 255, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0, 192, 255, 255, 255,
+      0, 192, 255, 255,   0,   0, 192, 255,  63,   0,   0,   0, 252, 255, 255, 247,
+      3,   0,   0, 240, 255, 255, 223,  15, 255, 127,  63,   0, 255, 253,   0,   0,
+    247,  11,   0,   0, 255, 251, 255, 127, 252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_lowercase(RE_UINT32 codepoint) {
@@ -16630,14 +16963,14 @@ static RE_UINT8 re_nfkc_quick_check_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 15, 16,
-     5,  5,  5,  5, 17, 18, 19,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 17,  5,  5, 18, 19, 20,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 20, 21,  5,  5,  5,  5,  5, 22, 23,  5, 24,  5,
+     5,  5,  5,  5, 21, 22,  5,  5,  5,  5,  5, 23, 24,  5, 25,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 25,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 26,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -16731,20 +17064,22 @@ static RE_UINT8 re_nfkc_quick_check_table_2[] = {
      80,  81,  48,  82,  48,  48,  83,   0,  84,  85,  86,  48,  48,  87,  88,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  89,  90,  48,  91,  48,  92,  93,
      94,  90,  95,  96,  48,  48,  48,  97,  98,  48,  48,  48,  48,  75,  99, 100,
-      0,   0,   0,   0,   0, 101,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 101, 102,   0,   0,
+      0,   0,   0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  22,  27,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0, 104,   0,   0,
+      0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,   0, 106,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 107,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,   9,   0,  47,  70,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 108,   9,   0,  47,  70,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     48,  48, 107,  48, 108, 109, 110,  48, 111, 112, 113,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48, 114,  48,  48,  48,  48,  48,  48,  48,  48, 115,  48,
+     48,  48, 109,  48, 110, 111, 112,  48, 113, 114, 115,  48,  48,  48,  48,  48,
+     48,  48,  48,  48,  48, 116,  48,  48,  48,  48,  48,  48,  48,  48, 117,  48,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    110, 116, 117, 118, 119, 120,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 121, 122, 123, 124,  77,   0,   0,   0,
-    125, 126, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    112, 118, 119, 120, 121, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 123, 124, 125, 126,  77,   0,   0,   0,
+    127, 128, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
@@ -16909,7 +17244,7 @@ static RE_UINT8 re_nfkc_quick_check_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
+    1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
@@ -16954,6 +17289,10 @@ static RE_UINT8 re_nfkc_quick_check_table_3[] = {
     1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -17033,14 +17372,14 @@ static RE_UINT8 re_nfkd_quick_check_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 16,  5,  5,  5,  5,  5,  5,  5,  5, 17, 18,
-     5,  5,  5,  5, 19, 20, 21,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 19,  5,  5, 20, 21, 22,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 22, 23,  5,  5,  5,  5,  5, 24, 25,  5, 26,  5,
+     5,  5,  5,  5, 23, 24,  5,  5,  5,  5,  5, 25, 26,  5, 27,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 27,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 28,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -17138,20 +17477,22 @@ static RE_UINT8 re_nfkd_quick_check_table_2[] = {
     107, 108,  59, 109,  59,  59,  61,   0, 110, 111, 112,  59,  59, 113, 114,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  64, 115,  59,   4,  59, 116, 117,
     118, 115, 119, 120,  59,  59,  59, 121, 122,  59,  59,  59,  59, 100, 123, 124,
-      0,   0,   0,   0, 125, 126,   0,   0,   0, 127,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0, 130,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 131,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 125, 126,   0,   0,
+      0,   0,   0,   0, 127, 128,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 130,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 131,   0,   0,   0,   0,   0,   0,   0, 132,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 132,  15,   0,  58,  92,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 134,  15,   0,  58,  92,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     59,  59,  65,  59, 133, 134, 135,  59, 136, 137, 138,  59,  59,  59,  59,  59,
-     59,  59,  59,  59,  59,   7,  59,  59,  59,  59,  59,  59,  59,  59, 139,  59,
+     59,  59,  65,  59, 135, 136, 137,  59, 138, 139, 140,  59,  59,  59,  59,  59,
+     59,  59,  59,  59,  59,   7,  59,  59,  59,  59,  59,  59,  59,  59, 141,  59,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    135, 140, 141, 142, 143, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 145, 146, 147,  39, 102,   0,   0,   0,
-    148,  60, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    137, 142, 143, 144, 145, 146,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 147, 148, 149,  39, 102,   0,   0,   0,
+    150,  60, 151,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
@@ -17184,19 +17525,19 @@ static RE_UINT8 re_nfkd_quick_check_table_3[] = {
     255, 255, 143, 255, 255, 127, 255, 255, 255, 255, 255, 127,   0,   0, 192, 255,
     254, 255, 255, 255, 255, 255, 191, 248, 255, 175, 170, 170,  90, 253,  36, 201,
     255, 255, 239,  39, 255, 255, 111,  56, 255, 255,   1,   0,   0, 128,   3,   0,
-      0,   0,   0, 128,   0, 255,   0,   0, 255, 255, 254, 255, 255, 255, 255, 252,
+      0,   0,   0, 128,   0, 255,   0,   0, 255, 255, 254, 255, 255, 255, 227, 252,
     255, 255, 255,  15, 255, 253, 255, 255, 240, 255, 255, 255,   0, 192,  26, 128,
     154,   3,   0,   0,   0, 192,   0,   0, 128, 255,   7,  95,   0,   0, 128, 160,
      36,   0,   0,   0,   0,   0, 252, 255, 255, 255,   7,   0, 255, 255,   0,   0,
       0, 255, 255, 255, 255, 255,   0, 224, 255, 255,   0, 252,  96,   0,   8,   0,
     128, 240,  40,   0,   0,   0,   0, 224,   1,   0,   0,   0,   3,   3,   3, 227,
-    128, 128, 255, 255, 255, 255, 255, 235, 255, 247, 255, 255, 255,  63, 255, 255,
-    255, 231, 255, 255, 255, 255, 255, 167, 255, 255, 255, 243, 255, 255, 255, 254,
-    255, 255, 255,  63,   0,   0,   0,  32, 155,  33,   0,  20,  16,   0,   0,   0,
-     64,  24,  32,  32,   0,   0,   0, 132, 160,   3,   2,   0,   0,  48,   0,   0,
-    105,   1,   8, 245, 123,  21, 105,  85, 105,   8,   8, 161,   0,   4,   0, 240,
-     17,   4,   0, 240,   0, 248,   0,   0,   0, 128,   0,   0,   0,   0, 255, 255,
-    248, 255,   0,   0,   0, 254, 252, 255
+    128, 128, 255, 255,  65,   0,   0,   0,   0,   0,   2, 248, 255, 255, 255, 235,
+    255, 247, 255, 255, 255,  63, 255, 255, 255, 231, 255, 255, 255, 255, 255, 167,
+    255, 255, 255, 243, 255, 255, 255, 254, 255, 255, 255,  63,   0,   0,   0,  32,
+    155,  33,   0,  20,  16,   0,   0,   0,  64,  24,  32,  32,   0,   0,   0, 132,
+    160,   3,   2,   0,   0,  48,   0,   0, 105,   1,   8, 245, 123,  21, 105,  85,
+    105,   8,   8, 161,   0,   4,   0, 240,  17,   4,   0, 240,   0, 248,   0,   0,
+      0, 128,   0,   0,   0,   0, 255, 255, 248, 255,   0,   0,   0, 254, 252, 255
 };
 
 RE_UINT32 re_get_nfkd_quick_check(RE_UINT32 codepoint) {
@@ -17480,7 +17821,7 @@ static RE_UINT8 re_numeric_type_table_2[] = {
      20,  20,  20, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   0,   0,   0,   0,   0,   0, 101, 102,   0,   0,   0,   0,
+      0,   0,   0,   3,   0,   0,   3,   0,   0,   0, 101, 102,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -17919,7 +18260,7 @@ static RE_UINT8 re_numeric_value_table_2[] = {
     112, 113, 114, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   0,   0,   0,   0,   0,   0, 116, 117,   0,   0,   0,   0,
+      0,   0,   0,   3,   0,   0,   3,   0,   0,   0, 116, 117,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -18363,23 +18704,23 @@ static RE_UINT8 re_other_alphabetic_table_2[] = {
      78,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  79,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  81,  82,   0,  28,  83,   0,   0,  56,  69,  46,   0,  56,  84,  85,   0,
-      0,  86,   0,   0,   0,   0,  52,  45,  16,  21,  22,  19,   0,   0,   0,   0,
-      0,  55,  87,   0,   0,  10,  66,   0,   0,   0,   0,   0,   0,  88,  89,   0,
-      0,  90,  53,   0,   0,  91,   0,   0,  92,  93,   0,   0,   0,   0,   0,   0,
-      0,  94,   0,   0,   0,   0,   0,   0,   0,  95,  96,   0,   0,   0,  97,  98,
-     99, 100, 101,   0, 102,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 103,   0,   0, 104, 105,   0,   0,   0, 106, 107,   0, 108,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 109,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 110,  61, 111,   0,   0, 112,
+     56,  81,  82,  83,  28,  84,  28,   0,  56,  69,  46,   0,  56,  85,  86,   0,
+      0,  87,   0,   0,   0,   0,  52,  45,  16,  21,  22,  19,   0,   0,   0,   0,
+      0,  55,  88,   0,   0,  10,  66,   0,   0,   0,   0,   0,   0,  89,  90,   0,
+      0,  91,  92,   0,   0,  93,   0,   0,  94,  95,   0,   0,   0,   0,   0,   0,
+      0,  96,   0,   0,   0,   0,   0,   0,   0,  97,  98,   0,   0,   0,  99, 100,
+    101, 102, 103,   0, 104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 105,   0,   0, 106, 107,   0,   0,   0, 108, 109,   0, 110,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,  61, 113,   0,   0, 114,
       0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    113, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    115, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 117,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  10, 116, 116,  62,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  10, 118, 118,  62,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -18397,23 +18738,23 @@ static RE_UINT8 re_other_alphabetic_table_3[] = {
       0, 248, 127, 121,   0,   0, 192, 195, 157,  63,  30,   0, 252, 191,   0,  60,
       0,   0, 192, 255, 255,   1,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0,
     255,  15, 255,   1,   0,   0, 128,  15,   0,   0, 224, 127, 254, 255,  31,   0,
-      0,   0,   0, 128,   1,   0,   0,   0,  31,   0,   0,   0,   0,   0, 224, 255,
+      0,   0,   0, 128,   1, 112,   0,   0,  31,   0,   0,   0,   0,   0, 224, 255,
       7,   0,   0,   0, 254,  51,   0,   0, 128, 255,   3,   0, 240, 255, 127,   0,
     128, 255,  31,   0, 255, 255, 255, 255, 255,   3,   0,   0,   0,   0, 240,  15,
       4,   8,   0,   0, 248,   0,   0,   0,   3,   0,   0,   0,  47,   0,   0,   0,
     192,   7,   0,   0, 128, 255,   7,   0,   0, 254, 127,   0,   8,  48,   0,   0,
       0,   0,   0,  56,   0,   0, 157,  65,   0, 248,  32,   0, 248,   7,   0,   0,
       0,   0,   0,  64,   0,   0, 192,   7, 110, 240,   0,   0, 240,   0,   0,   0,
-      0,  24,   0,   0,   0,   0,   0, 255,  63,   0,   0,   0,   0,   0, 255,   1,
-      0,   0, 248, 255,   0, 192,   0,   0,   0, 240, 159,  64,  59,   0,   0,   0,
-      0, 128,  63, 127,   0,   0,   0,  48,   0,   0, 255, 127,   0, 248,  63,   0,
-      0,   0,   0, 224, 255,   7,   0,   0,   0, 240, 255,   1,   0,   0, 191,  25,
-      5,   0,   0,   0,   0,   0, 254, 252,  16,   0,   0,   0, 254,   7,   0,   0,
-      0,   0, 224, 123,   0,   0, 254,  15,   0, 252, 255,   0,   0, 128, 127, 127,
-      0,   0, 252, 255, 255, 254, 127,   0,   0,   0, 126, 180, 139,   0,   0,   0,
-      0, 124, 123,   0,   0,   0, 120,   0,   0, 128, 254, 255, 255, 128,   7,   0,
-      0,   0,   3,   0, 127, 255, 255, 249, 219,   7,   0,   0, 128,   0,   0,   0,
-    255,   3, 255, 255
+      0,  24,   0,   0,   0,   0,   0, 255,  63,   0,   0,   0,   0,   0,  24,   0,
+      0,   0, 255,   1,   0,   0, 248, 255,   0, 192,   0,   0,   0, 240, 159,  64,
+     59,   0,   0,   0,   0, 128,  63, 127,   0,   0,   0,  48,   0,   0, 255, 127,
+      1,   0,   0,   0,   0, 248,  63,   0,   0,   0,   0, 224, 255,   7,   0,   0,
+      0, 240, 255,   1,   0,   0, 191,  25,   5,   0,   0,   0,   0,   0, 254, 252,
+     16,   0,   0,   0, 254,   7,   0,   0,   0,   0, 224, 123,   0,   0, 254,  15,
+      0, 252, 255,   0,   0, 128, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0,
+      0,   0, 126, 180, 139,   0,   0,   0,   0, 124, 123,   0,   0,   0, 120,   0,
+      0, 128, 254, 255, 255, 128,   7,   0,   0,   0,   3,   0, 127, 255, 255, 249,
+    219,   7,   0,   0, 128,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_other_alphabetic(RE_UINT32 codepoint) {
@@ -18712,7 +19053,7 @@ static RE_UINT8 re_other_lowercase_table_1[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -18794,7 +19135,9 @@ static RE_UINT8 re_other_lowercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 15,  0,  0,  0,  0,  0,  0, 16,  0,  0,  0, 17,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 19, 20,  0,  0
 };
 
 static RE_UINT8 re_other_lowercase_table_3[] = {
@@ -18802,7 +19145,8 @@ static RE_UINT8 re_other_lowercase_table_3[] = {
      31,   0,   0,   0,  32,   0,   0,   0,   0,   0,   0,   4,   0, 240, 255, 255,
     255, 255, 255, 255, 255,   7,   0,   1,   0,   0,   0, 248,   0,   0,   2, 128,
       0,   0, 255,  31,   0,   0, 255, 255, 255,   3,   0,   0,   0,   0,   0,  48,
-      0,   0,   1,   0,   0,   0,   0,   3,   0,   0,   0, 240
+      0,   0,   1,   0,   0,   0,   0,   3,   0,   0,   0, 240, 185, 255, 255, 255,
+    255, 255, 253,   7
 };
 
 RE_UINT32 re_get_other_lowercase(RE_UINT32 codepoint) {
@@ -19104,17 +19448,17 @@ RE_UINT32 re_get_pattern_white_space(RE_UINT32 codepoint) {
 static RE_UINT8 re_posix_alnum_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 10, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 10, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 44, 13, 13, 13, 45, 46, 13,
-    13, 13, 13, 47, 13, 13, 13, 13, 13, 13, 48, 10, 10, 10, 49, 10,
-    13, 13, 13, 13, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
+    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
+    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -19172,12 +19516,12 @@ static RE_UINT8 re_posix_alnum_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
 };
 
-static RE_UINT8 re_posix_alnum_table_2[] = {
+static RE_UINT16 re_posix_alnum_table_2[] = {
       0,   1,   2,   2,   0,   3,   4,   4,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   6,   7,   0,   0,   8,   9,  10,  11,   5,  12,
       5,   5,   5,   5,  13,   5,   5,   5,   5,  14,  15,   5,  16,  17,  18,  19,
      20,   5,  21,  22,   5,   5,  23,  24,  25,   5,  26,   5,   5,  27,  28,  29,
-     30,  31,  32,  33,   0,  34,  35,  36,   5,  37,  38,  39,  40,  41,  42,  43,
+     30,  31,  32,  33,  34,   5,  35,  36,   5,  37,  38,  39,  40,  41,  42,  43,
      44,  45,  46,  47,  48,  49,  50,  51,  52,  49,  53,  54,  55,  56,  57,   0,
      58,  59,  60,  61,  58,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,
      73,  74,  75,   0,  76,  77,  78,   0,  79,   0,  80,  81,  82,  83,   0,   0,
@@ -19185,96 +19529,102 @@ static RE_UINT8 re_posix_alnum_table_2[] = {
       5,   5,  88,   5,  89,  90,  91,   5,  92,   5,  74,   0,  93,   5,   5,  94,
      73,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,  95,   2,   5,   5,  96,  97,  98,  98,  99,   5, 100, 101,   0,
-      0,   5,   5,  32,   5, 102,   5, 103, 104, 105,  25, 106,   5, 107, 108,   0,
-    109,   5, 104, 110,   0, 111,  79,   0,   5, 112, 113,   0,   5, 114,   5, 115,
+      0,   5,   5,  32,   5,  33,   5, 102, 103, 104,  25, 105,   5, 106, 107,   0,
+    108,   5, 103, 109,   0, 110, 111,   0,   5, 112, 113,   0,   5, 114,   5, 115,
       5, 116, 117, 118, 119,  66,   0, 120,   5,   5,   5,   5,   5,   5,   0, 121,
       5,   5,   5,   5,   5,   5,   5,   5,  94,   5, 122, 118,   5, 123, 124, 125,
       0,   0,   0, 126, 127,   0,   0,   0, 128, 129, 130,   5,  16,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 131,   5, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 131,   5, 107,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 132, 104,   5,   5,   5,   5, 133,   5,  86,   5, 134, 116, 135, 135,   5,
-      0, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 138,  73,   5, 139,  73,   5,  87, 140,  14,   5,   5, 141,   5,   0,  25,
+      5,   5,   5,   5,   5,   5,   5, 132,   5,  86,   5, 133, 116, 134, 134,   5,
+      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    136, 137,  73,   5, 138,  73,   5,  87, 139,  14,   5,   5, 140,   5,   0,  25,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  83,
       5,   5,   5,   5,  31,   0,  25, 118,   5,   5,   5,   5,   5,   5,   5,   5,
-    142, 143,   5, 144,   5,   5,   5,  93, 145, 146,   5,   5, 147,   5, 148, 149,
-    150, 151,   5,  98,   5,   5, 152, 153,  28, 102, 154,  83,   5, 155, 136, 156,
-      5, 116, 157, 158,   5, 104, 159, 160, 161, 162,  87, 163,   5,   5,   5,  33,
+    141, 142,   5, 143,   5,   5,   5,  93, 144, 145,   5,   5, 146,   5, 147, 148,
+    149, 150,   5,  98,   5,   5, 151, 152,  28,  33, 153,  83,   5, 154, 135, 155,
+      5, 116, 156, 157,   5, 103, 158, 159, 160, 161,  87, 162,   5,   5,   5, 163,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 164, 165, 109,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 164, 165, 108,
       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5, 166,   5,   5, 167,   0, 168, 169, 170,   5,   5,  27, 171,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 118,  25,   5, 172,   5, 151, 173,
-      0,   0,   0, 174,   5,   5,   5,  83,   0,   2,   2, 175,   5, 104, 176,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 118,  25,   5, 172,   5, 150, 173,
+      0,   0,   0, 174,   5,   5,   5,  83,   0,   2,   2, 175,   5, 103, 176,   0,
     177, 178, 179,   0,   5,   5,   5,  74,   0,   0,   5, 180,   0,   0,   0,   0,
-      0,   0,   0,   0,  83,   5, 181,   0,   5,  26, 102,  74, 118,   5, 182,   0,
-      5,   5,   5,   5, 118,  25, 183, 109,   5, 184,   5,  61,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 116, 103, 151,   0,   0,   0,   0,
-    185, 186, 103, 116, 104,   0,   0, 187, 103, 167,   0,   0,   5, 188,   0,   0,
-    189, 103,   0,  83,  83,   0,  80, 190,   5, 103, 103, 154,  27,   0,   0,   0,
-      5,   5,  16,   0,   5, 154,   5, 154,   5, 151,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   5, 191,   0,   0,  83, 192, 193,   0,   0,  25, 190, 116,
-      5,   5, 193,   0, 146,  32,  25,  16,   5, 154, 194, 195,   5,   5, 196,   0,
-    197, 198,   0,   0, 199, 119,   5,  16,  40,  49, 200,  61,   0,   0,   0,   0,
-      5,   5, 201, 202,   5,   5, 203,   0,   0,   0,   0,   0,   5, 204, 205,   0,
-      5, 104, 206,   0,   5, 207,   0,   0,  66,  33,   0,   0,   0,   0,   0,   0,
-      5,  32,   0,   0,   0,   5,   5, 208, 209, 210, 211,   0,   0, 212,  30, 213,
-      5, 214,  25,   5, 215,   0,   5,  32,   0,   0,   0,   0,   0,   0,   0,   0,
-    216, 217,  79, 218, 172, 219,   0,   0, 220, 221, 222, 223, 224,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0, 225,   0,   0,
+      0,   0,   0,   0,  83,   5, 181,   0,   5,  26,  33,  74, 118,   5, 182,   0,
+      5,   5,   5,   5, 118,  25, 183, 108,   5, 184,   5, 185, 186, 187,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 116, 102, 150, 149, 188,   0,   0,
+    189, 190, 102, 116, 103,   0,   0, 191, 102, 167,   0,   0,   5, 192,   0,   0,
+    193, 102,   0,  83,  83,   0,  80, 194,   5, 102, 102, 153,  27,   0,   0,   0,
+      5,   5,  16,   0,   5, 153,   5, 153,   5, 150,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   5, 195,   0,   0,  83, 196, 197,  25, 198,  25, 194, 116,
+      5,   5, 197, 199, 145,  32, 200,  16,   5, 153, 201, 202,   5,   5, 203,   0,
+    204, 205,   0,   0, 206, 119,   5,  16,  40,  49, 207,  61,   0,   0,   0,   0,
+      5,   5, 208, 198,   5,   5, 209,   0,   0,   0,   0,   0,   5, 210, 211,   0,
+      5, 103, 212,   0,   5, 213,   0,   0,  66, 163, 214,   0,   0,   0,   0,   0,
+      5,  32,   0,   0,   0,   5,   5, 215, 216, 217, 218,   0,   0, 219,  30, 220,
+      5, 221,  25,   5, 222,  25,   5,  32,   0,   0,   0,   0,   0,   0,   0,   0,
+    223, 224,  79, 148, 172, 225,   0,   0, 226, 227, 228, 229, 230,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0, 231,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 167,   0,   0,   0,
-      5,   5,   5, 141,   5,   5,   5,   5,   5,   5,  61,   0,   0,   0,   0,   0,
+      5,   5,   5, 140,   5,   5,   5,   5,   5,   5,  61,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 141,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  25,   5,   5, 181,
+      5, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5, 226,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,  32, 104,   0,   0,   0,  25, 157,   5,  93,  61, 227,  93,   0,   0,   0,
+      5,  32, 103,  25,   5, 103,  25, 156,   5,  93,  61, 232,  93,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 228,   5, 229,   0,   0, 230,
+      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 233,   5, 234,   0,   0, 235,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 231,
-      5,   5,   5,   5,   5,   5, 103,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 236,
+      5,   5,   5,   5,   5,   5, 102,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 237,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 218, 238, 201,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 241,   5, 242, 243, 244,   5, 245, 246, 247,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 248, 249,  87, 241, 241, 250, 250, 223, 223, 251,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5, 104,   0, 232, 194,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5, 109,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5, 233, 234,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    252, 253,   0,   0,   0,   0,   0,   0,   5, 254, 255,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  25, 156,   5, 256,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,  34,   5, 235, 236, 237,   5, 238, 239, 240,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 241, 242,  87,  34,  34, 132, 132, 216, 216, 243,   0,
-    244, 245,   0,   0,   0,   0,   0,   0,   5, 246, 247,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   5, 248,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5, 190,   0,   5,   5, 249,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 257,
+      5,   5,   5,   5,   5,   5, 194,   0,   5,   5, 258,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    237, 250, 251, 252, 253, 254,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  25, 163, 163, 108,   0,   0,   0,
+    244, 259, 260, 261, 262, 263,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  25, 162, 162, 107,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5, 118,   0,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 180,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  32,   5,   5,   5,   5,   5,   5,
     118,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 255,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 264,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  79,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  33,   0,   0,   0,   0,   0
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 163,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_posix_alnum_table_3[] = {
@@ -19286,14 +19636,14 @@ static RE_UINT8 re_posix_alnum_table_3[] = {
       0,   0, 255,   7, 255, 255, 255, 254,   0, 192, 255, 255, 255, 255, 239,  31,
     254, 225,   0, 156,   0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,
       0, 252, 255, 255, 255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0,
-    255, 255, 255,   1, 255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255,
+    255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255,
     248,   3, 255, 255, 255, 255, 255, 239, 255, 223, 225, 255,  15,   0, 254, 255,
     239, 159, 249, 255, 255, 253, 197, 227, 159,  89, 128, 176,  15,   0,   3,  16,
     238, 135, 249, 255, 255, 253, 109, 195, 135,  25,   2,  94,   0,   0,  63,   0,
     238, 191, 251, 255, 255, 253, 237, 227, 191,  27,   1,   0,  15,   0,   0,  30,
     238, 159, 249, 255, 159,  25, 192, 176,  15,   0,   2,   0, 236, 199,  61, 214,
      24, 199, 255, 195, 199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227,
-    223,  29,  96,   7,  15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,
+    223,  29,  96,  39,  15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,
      15,   0,   6,   0, 255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,
      15,   0,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,
       0,   0,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 127,  32,   0,   0,
@@ -19302,46 +19652,49 @@ static RE_UINT8 re_posix_alnum_table_3[] = {
     255, 255, 127, 249, 255, 255,   0,  60, 191,  32, 255, 255, 255, 255, 255, 247,
     255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
     255, 255,  61, 255, 255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255,
-    255, 199, 255,   1, 255, 223,  15,   0, 255, 255,  15,   0, 255, 223,  13,   0,
-    255, 255, 207, 255, 255,   1, 128,  16, 255,   7, 255, 255, 255, 255,  63,   0,
-    255, 255, 255, 127, 255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255,
-    255,   3,   0,   0, 255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128,
-    255, 255, 239, 255, 239,  15,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0,
+    255, 199, 255,   1, 255, 255,  15, 128, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 207, 255, 255,   1, 128,  16, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0,
+    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0,
+    255, 255, 239, 255, 239,  31,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0,
     255, 255, 127,   0,   0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255,
       0, 222, 111,   4, 128, 255,  31,   0,  63,  63, 255, 170, 255, 255, 223,  95,
     220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31,
     132, 252,  47,  62,  80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255,
-    255, 127, 255, 255,  31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,
-      0, 128,   0,   0, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224,
-    224, 255, 255, 255, 255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0,
-    255, 127, 240, 143,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 191, 255, 255, 255, 255,   0,   0,   0,
-     47,   0,   0,   0,   0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255,
-    255, 255,   0, 124, 255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56,
-    255, 255,  60,   0, 126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255,
+     31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0,
+    224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,
+      0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124,
+    255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0,
+    126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255, 255,   7,   0,   0,
      15,   0, 255, 255, 127, 248, 255, 255, 255,  63, 255, 255, 255, 255, 255,   3,
     127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
     255, 255, 252, 255,   0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255,
     252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
     255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
     255, 255, 255, 192, 111, 240, 239, 254,  31,   0,   0,   0, 255,  27,   3,   0,
-    128,   0, 255, 255,  63,   0,   0,   0, 240,   0, 255, 255, 255, 255,  71,   0,
-     30, 192,   0,  20, 255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191,
-    159,  25, 129, 224, 187,   7,   0, 128,   3,   0,   0,   0, 179,   0,   0,   0,
-    255, 255,  63, 127,   0,   0,   0,  63,  17,   0,   0,   0, 255, 255,  63,   1,
-      0,   0,   0, 128, 127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0,
-    255, 252, 255, 255,  26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32,
-    255, 253, 255, 255, 255, 255, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 203,   0,   0,   0, 191, 253, 255, 255,
-    255, 127, 123,   1,   0,   0,   1,   0, 127,   0,   0,   0, 248, 255, 255, 224,
-    255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
-      0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223,
-    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
-     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 247,  15,   0,   0,
+    128,   0, 255, 255,  63,   0,   0,   0,   3,   0,   0,   0,   0,   0,  62,   0,
+      4,   0, 255, 255, 240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20,
+    255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,
+    187,   7,   0, 128, 179,   0,   0,   0, 255, 255,  63, 127,   0,   0,   0,  63,
+     17,   0,   0,   0, 255, 255,  63,   1, 127,   0,   0,   0,   0,   0,   0, 128,
+    127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,
+     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
+    255, 255, 127, 127, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
+    203,   0,   0,   0, 191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0,
+    248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0,
+    255, 255, 255,   0,   0,   0, 239, 111,   0,   0,   7,   0, 255,   7, 255,  31,
+    255,   1, 255,  67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247,  15,   0,   0,
     127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 128,  63,   0,  64,   0,   0,
-    255,  15,   0,   0, 143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255,  15,   0,   0, 127, 111, 255, 127, 143,   8,   0,   0, 150, 254, 247,  10,
+    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
+      3,   0, 255, 255
 };
 
 RE_UINT32 re_get_posix_alnum(RE_UINT32 codepoint) {
@@ -19377,10 +19730,10 @@ static RE_UINT8 re_posix_punct_table_1[] = {
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 17, 18,
-    19, 20, 21, 22, 23, 24, 25, 26, 13, 27, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 28, 29, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 30,
-    13, 13, 13, 13, 31, 32, 33, 13, 34, 13, 35, 36, 37, 38, 39, 13,
+    19, 20, 21, 22, 23, 24, 25, 26, 13, 27, 13, 28, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 30, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 31,
+    13, 13, 13, 32, 33, 34, 35, 13, 36, 13, 37, 38, 39, 40, 41, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -19448,82 +19801,86 @@ static RE_UINT8 re_posix_punct_table_2[] = {
       0,   0,   0,   0,   0,   0,   6,   7,   0,   0,   0,   8,   9,   0,   0,  10,
       0,   0,   0,   0,  11,   0,   0,   0,   0,   0,  12,   0,  13,  14,  15,  16,
      17,   0,   0,  18,   0,   0,  19,  20,  21,   0,   0,   0,   0,   0,   0,  22,
-      0,  23,  14,   0,   0,   0,   0,   0,   0,   0,   0,  24,   0,   0,   0,  25,
-      0,   0,   0,  10,   0,   0,   0,  26,   0,   0,   0,  27,   0,   0,   0,  28,
-      0,   0,   0,  29,  30,   0,   0,   0,   0,   0,  31,  32,   0,   0,   0,  33,
-      0,  34,  35,   0,   0,   0,   0,   0,  36,  37,   0,   0,  38,  39,  40,   0,
-      0,   0,  41,   0,  39,   0,   0,  42,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  43,  44,   0,   0,   0,
-     45,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  46,  47,   0,   0,  48,   0,  49,   0,   0,   0,   0,  50,   0,
-     51,   0,   0,   0,   0,   0,   0,   0,   0,   0,  52,   0,   0,   0,  39,  53,
-     39,   0,   0,   0,   0,  54,   0,   0,   0,   0,  12,  55,   0,   0,   0,  56,
-      0,  57,   0,  39,   0,   0,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  59,  60,  61,
-     62,  63,  64,  65,  66,  53,   0,   0,  67,  68,  69,   0,  70,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  71,  51,   0,  56,  72,   0,   0,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  72,  73,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  74,  75,  53,  53,  53,
-      0,   0,   0,   0,   0,   0,   0,  76,   0,   0,   0,  27,   0,   0,   0,   0,
-     53,  77,  78,   0,  79,  53,  53,  80,  53,  53,  53,  53,  53,  53,  72,  81,
-     82,  83,   0,   0,  47,  45,   0,  42,   0,   0,   0,   0,  84,   0,  53,  85,
-     64,  86,  87,  53,  86,  88,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
+      0,  23,  14,   0,  24,   0,   0,   0,   0,   0,   0,  25,   0,   0,   0,  26,
+      0,   0,   0,  10,   0,   0,   0,  27,   0,   0,   0,  28,   0,   0,   0,  29,
+      0,   0,   0,  30,  31,   0,   0,   0,   0,   0,  32,  33,   0,   0,   0,  34,
+      0,  35,  36,   0,   0,   0,   0,   0,  37,  38,   0,   0,  39,  40,  41,   0,
+      0,   0,  42,   0,  40,   0,   0,  43,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  44,  45,   0,   0,   0,
+     46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  47,  48,   0,   0,  49,   0,  50,   0,   0,   0,   0,  51,   0,
+     52,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,   0,   0,   0,  40,  54,
+     40,   0,   0,   0,   0,  55,   0,   0,   0,   0,  12,  56,   0,   0,   0,  57,
+      0,  58,   0,  40,   0,   0,  59,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  60,  61,  62,
+     63,  64,  65,  66,  67,  54,  46,   0,  68,  69,  70,   0,  71,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  72,  52,   0,  57,  73,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  73,  74,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  75,  76,  54,  54,  54,
+      0,   0,   0,   0,   0,   0,   0,  77,   0,   0,   0,  28,   0,   0,   0,   0,
+     54,  78,  79,   0,  80,  54,  54,  81,  54,  54,  54,  54,  54,  54,  73,  82,
+     83,  84,   0,   0,  48,  46,   0,  43,   0,   0,   0,   0,  85,   0,  54,  86,
+     65,  87,  88,  54,  87,  89,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,  53,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,  62,  53,  71,  39,   0,   0,   0,   0,   0,   0,   0,   0,
-     89,   0,   0,  90,   0,   0,   0,  91,  92,  93,   0,   0,  94,   0,   0,   0,
-      0,  95,   0,  96,   0,   0,  97,  98,   0,  97,  34,   0,   0,   0,  99,   0,
-      0,   0,  56, 100,   0,   0,  39,  26,   0,   0,  42, 101,   0,   0,   0, 102,
+      0,   0,   0,   0,  63,  54,  72,  40,   0,   0,   0,   0,   0,   0,   0,   0,
+     90,   0,   0,  91,   0,   0,   0,  92,  93,  94,   0,   0,  95,   0,   0,   0,
+      0,  96,   0,  97,   0,   0,  98,  99,   0,  98,  35,   0,   0,   0, 100,   0,
+      0,   0,  57, 101,   0,   0,  40,  27,   0,   0,  43, 102,   0,   0,   0, 103,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0, 104,  93,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0, 105,
-     44,  62, 106, 107,   0,   0,   0,   0,   1,   2,   2, 108,   0,   0,   0, 109,
-      0,   0,   0,   0,   0,   0,   0,   0, 110, 111,   0, 112, 113,  45,  62, 114,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  34,   0,  27,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104,   0,   0,   0, 105, 106,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  40, 107,   0,   0,   0,  32,  57,
+     45,  63, 108, 109,   0,   0,   0,   0,   1,   2,   2, 110,   0,   0,   0, 111,
+      0,   0,   0,   0,   0,   0,   0,   0, 106, 112,   0, 113, 114,  46,  63, 115,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  35,   0,  28,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  32,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5, 115,   0,   0,   0,   0,  34,  34,   0,   0,   0,   0,   0,   0,
-      0,   0, 116,  34,   0,   0, 117, 118,   0, 112,   0,   0, 119,   0,   0,   0,
+      0,   0,   5, 116,   0,   0,   0,   0,  35,  35,   0,   0,   0,   0,   0,   0,
+      0,   0, 117,  35,   0,   0,  24, 118,   0, 113,   0,   0, 119,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 120,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0,
-      0,   0, 122,   0,   0, 123,  93,   0,   0,   0,  85, 124,   0,   0, 125,   0,
-      0, 126,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 127,   0,   0,   0, 128,   0,   0,   0,   0,   0,   0,   0, 129,   0,
-      0,   0, 130, 131,   0,   0,   0,   0,   0,  56,   0,   0,   0,   0,   0,   0,
-      0,  42,   0,   0,   0,   0,   0,   0,   0,   0, 132,   0,   0,   0,   0,  11,
-      0,  34,  71,   0, 133, 110,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 134,  26,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,   0, 135, 136,
-      0,   0,   0, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 120,   0,   0,   0,   0, 121,   0, 122,   0,   0,   0,
+      0,   0, 123,   0,   0, 124,  94,   0,   0,   0,  86, 125,   0,   0, 126,   0,
+      0, 127,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 128,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0, 130,   0,
+      0,   0, 131, 132,   0,  33,   0,   0,   0,  57,   0,   0,   0,   0,   0,   0,
+      0,  43,   0,   0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,  11,
+      0,  35,  72,   0, 134, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 135,  27,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0,   0, 136, 137,
+      0,   0,   0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  97,   0,   0,   0, 138,   0, 111, 139,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 139,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11,
-      0,   0,   0,   0, 141,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  98,   0,   0,   0, 140,   0, 112, 141,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     53,  53,  53,  53,  53,  53,  53,  72,  53, 142,  53, 143, 144, 145,  53,  43,
-     53,  53, 146,   0,   0,   0,   0,   0,  53,  53,  92,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11,
+      0,   0,   0,   0, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 147,  42, 138, 138,  31,  31, 103, 103, 148,   0,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-      0, 140,   0, 149, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 151,   0,   0,   0, 152,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  26,   0,   0,   0,   0,   0,   0,   0,   0,
-     53, 153,  53,  53,  80, 154, 155,  72, 156, 157,  41,  41,  86,  21,   0, 158,
-    159, 160, 161, 108,   0,   0,   0,   0,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53, 162, 163,  53,  53,  53,  80,  53,  53, 164, 165,
-    153,  53, 166,  53,  63, 167,   0,   0,  53,  53,  53, 168,  53,  53, 169,  53,
-     53,  53,  80, 170, 171, 172, 173,   0,  53,  53,  53,  53, 106,  53,  51,   0
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  63,  54,  54,  54,  86,   0,
+     54,  54,  54,  54,  54,  54,  54,  73,  54, 144,  54, 145, 146, 147,  54,  52,
+     54,  54, 148,   0,   0,   0,   0,   0,  54,  54,  93,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 149,  43, 140, 140,  32,  32, 104, 104, 150,   0,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+      0, 142,   0, 151, 152,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 153,   0,   0,   0, 154,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  27,   0,   0,   0,   0,   0,   0,   0,   0,
+     54, 155,  54,  54,  81, 156, 157,  73, 158, 107,  42,  42,  87,  21,   0, 159,
+    160, 161, 162, 110,   0,   0,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54, 163, 164,  54,  54,  54,  81,  54,  54, 165, 166,
+    155,  54, 167,  54,  64, 168,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  81, 169, 170, 171, 172, 173,  54,  54,  54,  54, 108,  54,  52,   0
 };
 
 static RE_UINT8 re_posix_punct_table_3[] = {
@@ -19531,46 +19888,46 @@ static RE_UINT8 re_posix_punct_table_3[] = {
     254, 219, 211, 137,   0,   0, 128,   0,  60,   0, 252, 255, 224, 175, 255, 255,
       0,   0,  32,  64, 176,   0,   0,   0,   0,   0,  64,   0,   4,   0,   0,   0,
       0,   0,   0, 252,   0, 230,   0,   0,   0,   0,   0,  64,  73,   0,   0,   0,
-      0,   0,  24,   0, 192, 255,   0, 200,   0,  60,   0,   0,   0,   0,  16,  64,
+      0,   0,  24,   0, 192, 255,   0, 232,   0,  60,   0,   0,   0,   0,  16,  64,
       0,   2,   0,  96, 255,  63,   0,   0,   0,   0, 192, 195,   0,   0, 255, 127,
-     48,   0,   1,   0,   0,   0,  12,  44,   0,   0,   3,   0,   0,   0,   1,   0,
-      0,   0, 248,   7,   0,   0, 128, 128,  16,   0,   0,   0,   0, 128,   0,   0,
-      0,   0,   0,   2,   0,   0,  16,   0,   0,   0,   0, 128,   0, 128,   0,  12,
-    254, 255, 255, 252,   0,   0,  80,  61,  32,   0,   0,   0,   0,   0,   0, 192,
-    191, 223, 255,   7,   0, 252,   0,   0,   0,   0,   0,   8, 255,   1,   0,   0,
-      0,   0, 255,   3,   1,   0,   0,   0,   0,  96,   0,   0,   0,   0,   0,  24,
-      0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,  15, 255,   7,   0,   0,
-     49,   0,   0,   0, 255, 255, 255, 255, 127,  63,   0,   0, 255,   7, 240,  31,
-      0,   0,   0, 240,   0,   0,   0, 248, 255,   0,   8,   0,   0,   0,   0, 160,
-      3, 224,   0, 224,   0, 224,   0,  96,   0,   0, 255, 255, 255,   0, 255, 255,
-    255, 255, 255, 127,   0,   0,   0, 124,   0, 124,   0,   0, 123,   3, 208, 193,
-    175,  66,   0,  12,  31, 188,   0,   0,   0,  12, 255, 255, 127,   0,   0,   0,
-    255, 255,  63,   0,   0,   0, 240, 255, 255, 255, 207, 255, 255, 255, 191, 255,
-    224,   7,   0, 222, 255, 127, 255, 255, 255, 255,   7,   0, 255, 255, 255, 251,
-    255, 255,  15,   0,   0,   0, 255,  15,  30, 255, 255, 255,   1,   0, 193, 224,
-      0,   0, 195, 255,  15,   0,   0,   0,   0, 252, 255, 255, 255,   0,   1,   0,
-    255, 255,   1,   0,   0, 224,   0,   0,   0,   0,   8,  64,   0,   0, 252,   0,
-    255, 255, 127,   0,   3,   0,   0,   0,   0,   6,   0,   0,   0,  15, 192,   3,
-      0,   0, 240,   0,   0, 192,   0,   0,   0,   0,   0,  23, 254,  63,   0, 192,
-      0,   0, 128,   3,   0,  12,   0,   0,   0,   8,   0,   0,   0,   2,   0,   0,
-      0,   0, 252, 255,   0,   0,   0,  48, 255, 255, 247, 255, 127,  15,   0,   0,
-     63,   0,   0,   0, 127, 127,   0,  48,   7,   0,   0,   0,   0,   0, 128, 255,
-      0,   0,   0, 254, 255, 115, 255,  31, 255, 255, 255,  31,   0,   0, 128,   1,
-      0,   0, 255,   1,   0,   1,   0,   0,   0,   0, 127,   0,   0,   0,   0,  30,
-      0,  32,   0,   0,   0,   0, 224,   3, 128,  63,   0,   0,   0,   0,   0, 216,
-      0,   0,  48,   0, 224,  33,   0, 232,   0,   0,   0,  63,   0, 248,   0,  44,
-     64,   0,   0,   0, 254, 255, 255,   0,  14,   0,   0,   0, 255,  31,   0,   0,
-    112,   0,   0,   0,   0,   0,   0, 220,  62,   0,   0,   0,   0,   0, 224, 255,
-    255, 255,   3, 128,   0,   0,  31,   0,   0,   0,  32,   0,  48,   0,   0,   0,
-      0,   0, 128,   7,   0,   0,   0, 144, 127, 254, 255, 255,  31,  28,   0,   0,
-     24, 240, 255, 255, 255, 195, 255, 255,  35,   0,   0,   0,   2,   0,   0,   8,
-      8,   0,   0,   0,   0, 224, 223, 255, 239,  15,   0,   0,   0,  16,   1,   0,
-      0,  64,   0,   0, 255,  15, 255, 255, 255, 127, 254, 255, 254, 255, 254, 255,
-      0, 224, 255, 255, 255, 255,   0,   0, 192, 255, 255, 255,   7,   0, 255, 255,
-    255, 255, 255,  15, 255,   1,   3,   0, 255, 255, 255,   0, 255,  31, 255,  31,
-    255, 255, 255,   1, 255,  15,   0,   0, 255,   0, 255,   3, 255,  63,   3,   0,
-    255, 255, 255, 253, 255, 239, 255, 255, 255,  63,  31,   7, 127,   0, 255, 255,
-    255,   1, 127,   0,   7,   0, 127,   0
+      0,   1,   0,   0,  48,   0,   1,   0,   0,   0,  12,  44,   0,   0,   3,   0,
+      0,   0,   1,   0,   0,   0, 248,   7,   0,   0, 128, 128,  16,   0,   0,   0,
+      0, 128,   0,   0,   0,   0,   0,   2,   0,   0,  16,   0,   0,   0,   0, 128,
+      0, 128,   0,  12, 254, 255, 255, 252,   0,   0,  80,  61,  32,   0,   0,   0,
+      0,   0,   0, 192, 191, 223, 255,   7,   0, 252,   0,   0,   0,   0,   0,   8,
+    255,   1,   0,   0,   0,   0, 255,   3,   1,   0,   0,   0,   0,  96,   0,   0,
+      0,   0,   0,  24,   0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,  15,
+    255,   7,   0,   0,  49,   0,   0,   0, 255, 255, 255, 255, 127,  63,   0,   0,
+    255,   7, 240, 127,   0,   0,   0, 240,   0,   0,   0, 248, 255,   0,   8,   0,
+      0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,   0,   0, 255, 255,
+    255,   0, 255, 255, 255, 255, 255, 127,   0,   0,   0, 124,   0, 124,   0,   0,
+    123,   3, 208, 193, 175,  66,   0,  12,  31, 188,   0,   0,   0,  12, 255, 255,
+    127,   0,   0,   0, 255, 255,  63,   0,   0,   0, 240, 255, 255, 255, 207, 255,
+    255, 255, 191, 255, 224,   7,   0, 222, 255, 127, 255, 255, 255, 255, 255,  63,
+    255, 255, 255, 251, 255, 255,  15,   0,   0,   0, 255,  15,  30, 255, 255, 255,
+      1,   0, 193, 224,   0,   0, 195, 255,  15,   0,   0,   0,   0, 252, 255, 255,
+    255,   0,   1,   0, 255, 255,   1,   0,   0, 224,   0,   0,   0,   0,   8,  64,
+      0,   0, 252,   0, 255, 255, 127,   0,   3,   0,   0,   0,   0,   6,   0,   0,
+      0,  15, 192,   3,   0,   0, 240,   0,   0, 192,   0,   0,   0,   0,   0,  23,
+    254,  63,   0, 192,   0,   0, 128,   3,   0,  12,   0,   0,   0,   8,   0,   0,
+      0,   2,   0,   0,   0,   0, 252, 255,   7,   0,   0,   0, 255, 255,   0,   0,
+    255, 255, 247, 255, 127,  15,   0,   0,  63,   0,   0,   0, 127, 127,   0,  48,
+      0,   0, 128, 255,   0,   0,   0, 254, 255, 115, 255,  31, 255, 255, 255,  31,
+      0,   0, 128,   1,   0,   0, 255,   1,   0,   0, 127,   0,   0,   0,   0,  30,
+      0,  32,   0,   0,   0,   0, 224,   3, 192,   3,   0,   0, 128,  63,   0,   0,
+      0,   0,   0, 216,   0,   0,  48,   0, 224,  33,   0, 232,   0,   0,   0,  63,
+      0, 248,   0,  44,  64,   0,   0,   0, 254, 255, 255,   0,  14,   0,   0,   0,
+    255,  31,   0,   0, 112,   0,   0,   0,   0,   0,   0, 220,  62,   0,   0,   0,
+      0,   0, 224, 255, 255, 255,   3, 128,   0,   0,  31,   0,   0,   0,   6,   0,
+      0,   0,  32,   0,  48,   0,   0,   0,   0,   0, 128,   7,   0,   0,   0, 144,
+    127, 254, 255, 255,  31,  28,   0,   0,  24, 240, 255, 255, 255, 195, 255, 255,
+     35,   0,   0,   0,   2,   0,   0,   8,   8,   0,   0,   0,   0, 224, 223, 255,
+    239,  15,   0,   0,   0,  16,   1,   0,   0,  64,   0,   0, 255,  15, 255, 255,
+    255, 127, 254, 255, 254, 255, 254, 255,   0, 224, 255, 255, 192, 255, 255, 255,
+      7,   0, 255, 255, 255, 255, 255,  15, 255,   1,   3,   0, 255, 255, 255, 224,
+    255,  31, 255,  31, 255, 255, 255,   1, 255,  15,   1,   0, 255,   0, 255,   3,
+    255,  63,   3,   0, 255,  63,  31,  31, 127,   0, 255, 255, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_posix_punct(RE_UINT32 codepoint) {
@@ -19612,6 +19969,8 @@ RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 codepoint) {
         return 1;
     if (codepoint == 0x070F)
         return 1;
+    if (0x0890 <= codepoint && codepoint <= 0x0891)
+        return 1;
     if (codepoint == 0x08E2)
         return 1;
     if (codepoint == 0x0110BD)
@@ -19626,257 +19985,268 @@ RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 codepoint) {
 static RE_UINT8 re_print_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 13, 13, 13, 13, 13, 13, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 13, 13, 13, 13, 13, 13, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    59, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60
 };
 
 static RE_UINT16 re_print_table_2[] = {
       0,   1,   1,   2,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   3,   4,   5,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   6,   7,   1,   8,   1,   9,  10,
-     11,   1,   1,   1,   1,   1,   1,   1,  12,   1,  13,   1,   1,  14,   1,  15,
-      1,  16,  17,  18,   0,  19,  20,   1,   1,   1,   1,   1,  21,  22,  23,  24,
-     25,  26,  27,  28,  29,  30,  31,  32,  33,  30,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  40,  44,  45,  46,  40,   1,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,   0,  56,  57,  58,   0,   1,   1,  59,  60,  61,  11,  62,   0,
-      1,   1,   1,   1,   1,   1,  63,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,  64,   1,  65,  66,  67,   1,  68,   1,  15,  69,  70,   1,   1,  71,
+      1,   1,   1,   1,   1,   1,   1,   1,  11,   1,  12,   1,   1,  13,   1,  14,
+      1,  15,  16,  17,  18,   1,   1,   1,   1,   1,   1,   1,  19,  20,  21,  22,
+     23,  24,  25,  26,  27,  28,  29,  30,  31,  28,  32,  33,  34,  35,  36,  37,
+     38,  39,  40,  41,  38,  42,  43,  44,  38,   1,  45,  46,  47,  48,  49,  50,
+     51,  52,  53,   0,  54,  55,  56,   0,   1,   1,  57,  58,  59,  60,  61,   0,
+      1,   1,   1,   1,   1,   1,  62,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  63,   1,  64,  65,  66,   1,  67,   1,  14,  68,  69,   1,   1,  70,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,  69,   1,   1,  72,  73,  74,  75,  76,   1,   1,  77,  78,
-     79,   1,   1,  72,   1,  80,   1,  81,   2,  82,  83,  84,   1,  85,  86,   1,
-     87,   1,   2,  88,  78,  89,  90,   0,   1,   1,  85,  69,   1,   1,   1,  91,
-      1,  92,  93,   1,  94,  15,   9,  95,   1,   1,   1,   1,   1,   1,   1,  96,
-      1,   1,   1,   1,   1,   1,   1,   1,  71,   1,  97,  77,   1,  19,  98,  99,
-      1, 100,   1, 101, 102,   1, 103, 104,   1,   1,   1,   1,  85,   1,   1,   1,
+      1,   1,   1,   1,  68,   1,   1,  71,  72,  73,  74,  75,   1,   1,  76,  77,
+     69,   1,   1,  71,   1,  17,   1,  78,   2,  79,  80,  81,   1,  82,  83,   1,
+     84,   1,   2,  85,  77,  86,  87,   0,   1,   1,  88,   2,   1,   1,   1,  89,
+      1,  90,  91,   1,  92,  14,   9,  93,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,  70,   1,  94,  76,   1,  95,  96,  97,
+      1,  98,   1,  99, 100,   1, 101, 102,   1,   1,   1,   1,  82,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 105,  18,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 103, 104,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 106, 107,   1,   1,   1,
-      1, 108,   2,   1,   1,   1,   1, 109,   1,  63,   1, 110,  74, 111, 111,   1,
-      1,   1, 112,   0,  96,   1,   1,  75,   1,   1,   1,   1,   1,   1,  81, 113,
-      1,   1,  53,   1,   7,   1,   1,   1, 114,   6,   1,   1, 108,   1,   1, 115,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 105, 106,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 107,   1,  62,   1, 108,  73, 109, 109,   1,
+      1,   1,  76,   0, 110,   1,   1,  74,   1,   1,   1,   1,   1,   1,  78, 111,
+      1,   1,  51,   1,   7,   1,   1,   1, 112,   6,   1,   1, 113,   1,   1, 114,
       2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,  88,   1, 115,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 116,   1,   1,   1,   1,   1, 117,   1,   1,   1,   1,   1,   1, 118, 119,
+      1, 120,   1, 117,   1,   1, 121,   1,   1,   1, 122,  68,   1,   1, 123,   2,
+      1,  73, 124,   1,   1,   1, 125,  73, 126, 127,   1,  82,   1,   1,   1, 128,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  69,
-      1,   1,   1,   1, 116,   1, 117,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 118,   1,   1,   1,   1,   1, 119,   1,   1,   1,   1,   1,   1, 120, 121,
-      1, 122,   1, 119,   1,   1, 123,   1,   1,   1, 124,  69,   1,   1, 125,   2,
-      1,  74, 126,   1,   1,   1, 127,  74, 128, 129,   1,  85,   1,   1,   1, 130,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 115, 131,  55,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 114, 129,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,  89,   1,   1,  70,   0, 132, 133, 134,   1,   1,   1, 135,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 103,   1, 136,   1, 137, 138,
-     70,   1, 139, 140,   1,   1,   1,  88,  53,   1,   1,   1,   1,   2, 141, 142,
-    143, 144, 145,   0,   1,   1,   1,  95, 146, 147,   1,   1, 102,  90, 103,  77,
-      0,   0,   0,   0,  69,   1, 104,  55,   1, 148,  80,  95, 149,   1, 150,   0,
-      1,   1,   1,   1,  77, 151, 152,  55,   1,   9,   1, 153,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,  74,  81, 137,   0,   0,   0,   0,
-    154, 155, 107,   1,   2, 156,   0, 157, 158, 159,   0,   0,   1, 160, 136,   1,
-    161, 162, 163,   1,   1,   0,   1, 164,   1, 165, 166, 167, 168, 169,   0,   0,
-      1,   1, 170,   0,   1, 112,   1, 171,   1, 172,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   2,   1, 173,   0,   0,   1,   9,  70,   0,   0, 103, 118,  74,
-      1,   1, 174, 175,   1,   1, 176, 177,   1,  19,   9,  74,   1,   1,   1, 178,
-    179,   2,   0,   0, 180, 151,   1, 181,  21, 182, 183, 184,   0,   0,   0,   0,
-      1,   1, 185, 186,   1,   1, 172,   0,   0,   0,   0,   0,   1, 166,  77,   0,
-      1,   1, 187, 188,   1,  72, 189,   0,  15,  85,   0,   0,   0,   0,   0,   0,
-      1,  55,   0,   0,   0,   1,   1, 190, 191, 192, 193,   0,   0, 100,   3, 194,
-      1,   1,   9,   1,   1, 195,   1,  72,   0,   0,   0,   0,   0,   0,   0,   0,
-    196, 197, 198, 116, 136, 199,   0,   0, 200, 201, 172, 202, 203, 189,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  72,   0,   0,   0,   0,   0, 204,   1, 205,
+      1,   1,   1,  86,   1,   1,  69,   0, 130, 131, 132,   1,   1,   1, 133,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 134,   1, 135, 136,
+     69,   1, 137, 138,   1,   1,   1,  85,  51,   1,   1,   1,   1,   2, 139, 140,
+    141, 142, 143,   0,   1,   1,   1,  93, 144, 145,   1,   1, 100, 146, 136,  76,
+      0,   0,   0,   0,  68,   1, 102,  53,   1, 147,  17,  93, 148,   1, 149,   0,
+      1,   1,   1,   1,  76, 150, 151,  53,   1,   9,   1, 152, 153, 154,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  73,  78, 155, 156, 157,   0,   0,
+    158, 159, 106,   1,   2, 160,   0, 161, 162, 163,   0,   0,   1, 164, 134,   1,
+    165, 166, 167,   1,   1,   0,   1, 168,   1, 169, 170, 171, 172, 173,   0,   0,
+      1,   1, 174,   0,   1, 175,   1, 176,   1, 177,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   2,   1, 178,   0,   0,   1,   9,  69, 136, 179, 136, 116,  73,
+      1,   1, 180,  72,   1,   1, 181, 182,   1,  95,   9,  73,   1,   1,   1, 183,
+    184,   2,   0,   0, 185, 150,   1, 186,  19, 187, 188, 189,   0,   0,   0,   0,
+      1,   1, 190, 191,   1,   1, 177,   0,   0,   0,   0,   0,   1, 170,  76,   0,
+      1,   1, 192, 193,   1,  69, 179,   0,  14,  82, 103,   0,   0,   0,   0,   0,
+      1,  53,   0,   0,   0,   1,   1, 194, 195, 196, 197,   0,   0,  98,   3, 198,
+      1,   1,   9,   1,   1, 199,   1,  71,   0,   0,   0,   0,   0,   0,   0,   0,
+    200, 201, 202,  88, 134, 203,   0,   0, 204, 205, 177, 206, 207, 179,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  71,   0,   0,   0,   0,   0, 208,   1, 209,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  70,   0,   0,   0,
-      1,   1,   1, 206,   1,   1,   1,   1,   1,   1, 207,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  69,   0,   0,   0,
+      1,   1,   1, 210,   1,   1,   1,   1,   1,   1, 211,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 208,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 136,   1,   1, 175,
+      1, 212,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,  72,   2, 209,   0,   0, 103, 210,   1,   1, 211, 212, 213,   0,   0,   0,
+      1,  71,   2, 213,   1,   2, 150, 214,   1,   1, 215, 216, 217,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   1,  95,   0,   0,   0,   1,   1, 214,   1, 215,   0,   0, 216,
+      0,   0,   1,   1,  93,   0,   0,   0,   1,   1, 218,   1, 219,   0,   0, 220,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 119,
-      1,   1,   1,   1,   1,   1,  81,   0, 170,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 117,
+      1,   1,   1,   1,   1,   1,  78,   0, 174,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   2,   0, 217, 218,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,  55,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1, 219, 220, 207,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 221,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 222, 223, 224,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,  53,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 225, 226, 211,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,  81,   1, 221,   1,   1,   1,   1,   1, 170,
-      1,   1, 222,   0,   0,   0,   0,  75,   1,   1,  74,  72,   0,   0,   0,   0,
-      1,   1,  19,   1,  11, 223, 224,   1, 225, 226, 227,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 228,   1,   1,   1,   1,   1,   1,   1,   1, 229,   1,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1,  86, 115,   1,   1,   1, 211,   0,
+      1,   1,   1,   1,   1,   1,   1,  78,   1, 227,   1,   1,   1,   1,   1, 104,
+      1,   1, 228,   0,   0,   0,   0,  74,   1,   1,  73,  71,   0,   0,   0,   0,
+      1,   1,  95,   1,  60, 229, 230,   1, 231, 232, 233,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 234,   1,   1,   1,   1,   1,   1,   1,   1, 235,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1, 230, 231,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    232, 233,   0,   0,   0,   0,   0,   0,   1, 234, 209,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   1, 159,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1, 235,   0,   1,   1, 236,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 237,   1, 238,   0,   0,  53,  77,   0,   0,   0,   0,   0,   0,
-    224, 239, 240, 241, 242, 243,   0, 244,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,  85,   1,   1,  75, 245, 246,  81,   1,   1,   1,   1,   1, 247,   0, 248,
-    249,  55, 250, 222,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1, 236, 237,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,
+    238, 239,   0,   0,   0,   0,   0,   0,   1, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 136,  87,   1, 163,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      1,   1,   1,   1,   1,   1, 243,   0,   1,   1, 244,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 245,   1, 246,   0,   0,  51,  76,   0,   0,   0,   0,   0,   0,
+    230, 247, 248, 249, 250, 251,   0, 252,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,  82,   1,   1,  74, 253, 254,  78,   1,   1,   1,   1,   1, 255,   0, 256,
+    199,  53, 257, 228,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 119, 251,   1,   1,   1,  75,   1,   1,  72, 118,
-     85,   1, 172,   1,   9, 252,   0,   0,   1,   1,   1, 253,   1,   1, 143,   1,
-      1,   1,  75, 254, 117, 255, 256,   0,   1,   1,   1,   1, 139,   1,  18, 257,
+      1,   1,   1,   1,   1,   1, 258, 259,   1,   1,   1,  74,   1,   1,  71, 260,
+     82,   1, 177,   1,   9, 261,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  74, 262, 115, 263, 264, 265,   1,   1,   1,   1, 137,   1, 104, 266,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,  77,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 238,   1,   1,   1,   1,   1,   1,
-     77,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  71,   1,   1,   1,   1,   1,   1,
+     76,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 258,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 267,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  90,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 146,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-     77,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  18,   0,   0,   0,   0,   0,
-    259,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1, 213,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 104,   0,   0,   0,   0,   0,
+    268,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1, 217,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  77
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  76
 };
 
 static RE_UINT8 re_print_table_3[] = {
       0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 252,
     240, 215, 255, 255, 251, 255, 255, 255, 255, 255, 254, 255, 255, 255, 127, 254,
-    255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0, 255, 255, 255, 223,
-    255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231,
-    255,  63, 255, 127, 255, 255, 255,  79, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
-    207, 255, 255, 127, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
-    192, 255, 127,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
-    207, 255,   3, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255, 255,   0,
-    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255, 255,   7,
-    255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7, 207, 255, 128, 255,
-    255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0, 223, 253, 240, 255,
-    207, 255, 255, 255, 238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255,
-    192, 255,  28,   0, 254, 255, 255, 255, 255, 255, 255, 135, 255, 255, 255,  15,
-    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243, 255, 254, 255, 255,
-    255,  31, 254, 255, 255, 255, 255, 254, 255, 223, 255,   7, 191,  32, 255, 255,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
-    255, 255, 255,   1, 255, 223,  31,   0, 255, 255, 127,   0, 255, 255,  15,   0,
-    255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3, 255, 127, 255,   3,
-    255,   7, 255, 255, 255, 255,  63,   0, 255,  15, 255,  15, 241, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199, 255, 255, 255, 207,
-    255, 255, 255, 159, 255,  63, 255, 255,   1,   0,   0,   0, 255, 255,  15, 240,
-    255, 255, 255, 248, 255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255,   7,
-    255, 255, 255, 251,  63,  63, 255, 170, 223, 255, 207, 239, 255, 255, 220, 127,
-    255, 252, 255, 255, 223, 255, 243, 255, 255, 127, 255,  31,   0,   0, 255, 255,
-    255, 255,   1,   0, 127,   0,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255,
-    255, 127, 255, 255, 255, 255,  15, 254, 255, 128,   1, 128, 127, 127, 127, 127,
-    255, 255,   7,   0,   0,   0, 255,  15, 224, 255, 255, 255,  15,   0, 255, 255,
-    255,  31, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0, 255, 255, 255,   0,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  31, 255,   3,  63, 192, 255,   3,
-    255, 255,  15, 128, 255, 191, 255, 195, 255,  63, 255, 243,   7,   0,   0, 248,
-    126, 126, 126,   0, 127, 127, 255, 255, 255,  63, 255,   3, 127, 248, 255, 255,
-    127,   0, 248, 224, 255, 255, 127,  95, 219, 255, 255, 255,   3,   0, 248, 255,
-    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  63, 255, 255, 247, 255,
-    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  62, 255, 239, 255, 255,
-    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
-     15, 224, 255, 255, 255, 255, 255, 191,  15, 255,  63,   0, 255,   3, 255, 255,
-    255, 255,  15, 255,  15, 128,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0, 255, 191, 255, 255,
+    255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231, 255,  63, 255, 127,
+    255, 255, 255,  79, 255,   7, 255, 255, 255, 127,   3, 255, 239, 159, 249, 255,
+    255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 127, 238, 135, 249, 255,
+    255, 253, 109, 211, 135,  57,   2,  94, 192, 255, 127,   0, 238, 191, 251, 255,
+    255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   3, 254, 238, 159, 249, 255,
+    159,  57, 224, 176, 207, 255, 255,   0, 236, 199,  61, 214,  24, 199, 255, 195,
+    199,  61, 129,   0, 192, 255, 255,   7, 255, 223, 253, 255, 255, 253, 255, 243,
+    223,  61,  96,  39, 207, 255, 128, 255, 255, 253, 239, 243, 223,  61,  96,  96,
+    207, 255,   6,   0, 223, 253, 240, 255, 207, 255, 255, 255, 238, 255, 127, 252,
+    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  28,   0, 254, 255, 255, 255,
+    255, 255, 255, 135, 255, 255, 255,  15, 214, 247, 255, 255, 175, 255, 255,  63,
+     95,  63, 255, 243, 255, 254, 255, 255, 255,  31, 254, 255, 255, 255, 255, 254,
+    255, 255, 255, 223, 255, 223, 255,   7, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 255, 255, 255,   1,
+    255, 255,  63, 128, 255, 255, 127,   0, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 255,  63, 255,   3, 255,   3, 255, 255,  63,   0, 255,  15, 255,  15,
+    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
+    255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255, 255, 127,   0,   0,
+    255,  31, 255, 255, 255, 255,  15, 240, 255, 255, 255, 248, 255, 227, 255, 255,
+    255,   1, 255, 255, 255, 255, 255,   7,  63,  63, 255, 170, 255, 255, 223, 255,
+    223, 255, 207, 239, 255, 255, 220, 127, 255, 252, 255, 255, 223, 255, 243, 255,
+    255, 127, 255,  31,   1,   0, 255, 255, 255, 255,   1,   0, 127,   0,   0,   0,
+    255,   7,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255, 255, 255,  15, 254,
+    255, 128,   1, 128, 127, 127, 127, 127, 255, 255, 255, 251,   0,   0, 255,  15,
+    224, 255, 255, 255, 255, 127, 255, 255,  15,   0, 255, 255, 127,   0, 255, 255,
+    255,  15,   0,   0, 255, 255, 255,   0, 255,   7, 235,   3,   0,   0, 252, 255,
+    255,  31, 255,   3,  63, 192, 255,   3, 255, 255,  15, 128, 255, 191, 255, 195,
+    255,  63, 255, 243,   7,   0,   0, 248, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  63, 255,   3, 127, 248, 255, 255, 127,   0, 248, 224, 255, 255, 127,  95,
+    219, 255, 255, 255,   7,   0, 248, 255, 255, 255, 252, 255, 255, 128,   0,   0,
+      0,   0, 255, 255, 255, 255, 247, 255, 127,  15, 223, 255, 252, 252, 252,  28,
+    127, 127,   0,  62, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
+    135, 255, 255, 255, 255, 255, 143, 255,   1,   0,   0,   0,  15, 224, 255, 255,
+    255, 255, 255, 191,  15, 255,  63,   0, 255,   3, 255, 255, 255, 255,  15, 255,
+     15, 128, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255,   0,   0,   0,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     128, 255,   0,   0, 255, 255,  55, 248, 255, 255, 255, 143, 255, 255, 255, 131,
     255, 255, 255, 240, 111, 240, 239, 254, 255, 255,  63, 135, 255,   1, 255,   1,
     127, 248, 127,   0, 255, 255,  63, 254, 255, 255,  63, 255, 255, 255,   7, 255,
-    255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0, 255, 255,   7, 252,
-    255,   0, 255,   3, 255,  59,   3,   0, 255,  63, 252, 255, 255, 255,   0, 128,
-      3,  32, 255, 255, 255,   1, 255,   3, 254, 255,  31,   0, 255, 255, 251, 255,
-    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
-    207,  31,  31,   0, 255, 255, 255, 239,   3,   0,   0,   0,  31,   0, 255,   3,
-    255,  31,   0,   0, 255,   3,   0,   0, 255, 255,   7, 128, 127, 242, 111, 255,
-    255, 255, 191, 249, 127,   0, 255,   3,  31,   0,   0,   0,   7,   0,   0,   0,
+    255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0, 255, 255,   7,   0,
+    255, 255,   7, 252, 255,   0, 255,   3, 255,  59,   3,   0, 255,   3,   0,   0,
+    255,  63, 252, 255,   7,  32, 255, 255, 255,   1, 255,   3, 254, 255,  31,   0,
+    255, 255, 251, 255, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
+    159,  57, 129, 224, 207,  31,  31,   0, 255, 255, 255, 239,   3,   0,   0,   0,
+     31,   0, 255,   3, 255,  31,   0,   0, 255, 255,   7, 128, 127, 242, 111, 255,
+    255, 255, 191, 249, 127,   0, 255,   3,  31,   0,   0,   0,   7,   0, 255, 255,
     255, 253, 255, 255, 255, 255, 127, 255,  63,   0, 255, 255, 255, 254, 127,   0,
     127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
       0,   0,   1,   0, 255, 255,   3, 128, 255, 127,  31,   0,  15,   0,   0,   0,
-    255, 127, 255,   1, 255, 195,   0,   0, 255,  63,  63,   0,  63,   0, 255, 251,
+    255, 127, 255,   1, 255, 195, 255, 255, 255,  63,  63,   0,  63,   0, 255, 251,
     251, 255, 255, 224, 255, 255,   0,   0, 255, 135, 255, 255, 255, 128, 255, 255,
-     31,   0,   3,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255, 243, 127, 254, 255, 255,  63,   0,   0,   0, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 255, 207, 255, 255, 255,  15,   0, 248, 254, 255,   0,   0,
-    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 159, 255, 127,   0,
+     31,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    240,   0, 255, 255, 255,   7, 255,  31, 255,   1, 255, 243, 127, 254, 255, 255,
+     63,   0,   0,   0, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 255, 207, 255, 255,
+    255,  15,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+    255,  31, 255,  63, 255, 195,   0,   0, 127, 111, 255, 127, 159, 255, 127,   0,
     255,  15, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10,
     132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
       0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255, 255,  63,   0,   0,
-    192, 255, 255, 255,   7,   0, 255, 255, 255,   1,   3,   0, 255,  31, 255,  31,
-    255,  63,   3,   0, 255, 255, 255, 253, 255,  63,  31,   7, 255,   1, 127,   0,
-      7,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
+    192, 255, 255, 255, 255,   1,   3,   0, 255, 255, 255, 224, 255,  31, 255,  31,
+    255,  15,   1,   0, 255,  63,   3,   0, 255,  63,  31,  31, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,
+      2,   0,   0,   0
 };
 
 RE_UINT32 re_get_print(RE_UINT32 codepoint) {
@@ -20034,72 +20404,72 @@ RE_UINT32 re_get_regional_indicator(RE_UINT32 codepoint) {
 static RE_UINT8 re_script_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 21, 21, 34, 35, 21, 21,
-    21, 36, 21, 21, 21, 21, 21, 21, 21, 21, 37, 38, 39, 39, 39, 39,
-    39, 40, 41, 42, 21, 21, 21, 21, 21, 21, 21, 21, 43, 21, 21, 44,
-    21, 21, 21, 21, 45, 46, 47, 21, 48, 21, 49, 50, 51, 52, 53, 21,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 54, 13, 13, 13, 55, 56, 13,
-    13, 13, 13, 57, 13, 13, 13, 13, 13, 13, 58, 21, 21, 21, 59, 21,
-    13, 13, 13, 13, 60, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    61, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33, 34, 35, 20, 20,
+    20, 36, 20, 20, 20, 20, 20, 20, 20, 20, 37, 38, 39, 39, 39, 39,
+    39, 40, 41, 42, 20, 20, 20, 20, 20, 20, 20, 43, 44, 20, 20, 45,
+    20, 20, 20, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 20,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 58, 13, 13, 13, 59, 60, 13,
+    13, 13, 13, 61, 13, 13, 13, 13, 13, 13, 62, 20, 20, 20, 63, 20,
+    13, 13, 13, 13, 64, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    65, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
 };
 
 static RE_UINT16 re_script_table_2[] = {
@@ -20107,126 +20477,134 @@ static RE_UINT16 re_script_table_2[] = {
       4,   4,   4,   4,   4,   5,   0,   6,   7,   7,   7,   8,   9,  10,  11,  12,
      13,  13,  13,  13,  14,  13,  13,  13,  13,  15,  16,  17,  18,  19,  20,  21,
      22,  23,  24,  25,  23,  23,  26,  23,  27,  28,  29,  23,  30,  31,  32,  33,
-     34,  35,  36,  37,  38,  39,  40,  41,  42,  42,  43,  44,  45,  46,  47,  48,
-     49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,
-     65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,
-     81,  82,  83,  38,  84,  85,  86,  38,  87,  87,  88,  89,  90,  91,  92,  38,
-     93,  93,  93,  93,  93,  94,  95,  96,  97,  97,  97,  97,  97,  97,  97,  97,
-     98,  98,  99,  98, 100, 101, 102,  98, 103,  98, 104, 105, 106, 107, 107, 108,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 110, 111, 111, 112, 113, 114, 115, 116, 117, 117, 118, 119,
-    120, 121, 121, 122, 121, 123, 109, 124, 125, 126, 127, 128, 129, 130, 131, 117,
-    132, 133, 134, 135, 136, 137, 138,  38, 139, 139, 140, 141, 142, 142, 143, 144,
-    145, 146, 147, 148, 149, 150, 151, 152,   4, 153, 154, 155,   4, 156,   7, 157,
-      4,   4,   4,   4,   4,   4,   4,   4, 158,  11, 159, 160,  11, 161, 162, 163,
-    164,   0,   0, 165, 166,   0, 167, 168,   0, 169, 170,   4, 171,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 172, 173,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    174, 174, 174, 174, 174, 174, 174, 174,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 175, 176,   0,   0,   0,
-    177, 178, 179,   4, 180, 180, 180, 181,  94, 182, 183, 184, 185, 186, 186,  13,
-      0,   0, 187,  38, 188, 189, 189, 190, 189, 189, 189, 189, 189, 189, 191, 192,
-    193, 194, 195, 196, 197, 198, 199, 200, 201, 202,  97,  97, 203, 204,   0, 205,
-    206,   0,   0, 207,   0,   0, 208, 209, 199, 199, 210,   0,   0,   0,   0,   0,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,   0,   0,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 211,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 213, 212, 214, 215, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 217,  13,  13,  13, 218, 218, 219,   0, 220,   4,   4, 221,   4, 222, 223,
-    224, 225, 226, 227, 228, 228, 229,  42, 230, 231, 232, 233, 234, 234, 235, 236,
-    237, 238, 239,  93, 240, 240, 241, 242, 243, 244, 245, 246, 107, 107, 247, 248,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97, 249, 250, 251,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 252, 189, 189, 253,  38, 254, 255, 256,  23,  23,  23, 257,  23,
-     23,  23,  23,  23,  23,  23,  23,  23,  23, 258, 259,  23, 260,  23, 261, 262,
-    263, 264, 265, 266,  23,  23,  23, 267, 268,   1,   1, 269, 270, 206, 271, 272,
-    273, 274, 275,  38, 276, 276, 276, 277, 278, 279,  11,  11, 280, 281, 282, 283,
-     38,  38,  38,  38, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,  38,
-    295, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,  38,  38,  38,  38,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 308, 309,  38,  38,  38,  38,
-    310, 311, 312, 313, 314, 315,  38, 316, 317, 318,  38,  38, 319, 320, 321, 322,
-    323, 324, 325, 326, 327,  38, 328, 329, 330, 331, 332, 333, 334, 335,  38,  38,
-    336, 336, 337,  38, 338, 339, 338, 340, 341, 342,  38,  38,  38,  38,  38,  38,
-     38,  38,  38, 343, 344, 345,  38,  38, 346, 347, 348,  38,  38, 349, 350, 351,
+     34,  35,  36,  37,  38,  23,  23,  39,  40,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,
+     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
+     79,  80,  81,  82,  83,  84,  85,  82,  86,  86,  87,  88,  89,  90,  91,  82,
+     92,  92,  92,  92,  92,  93,  94,  95,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  98,  97,  99, 100, 101,  97, 102,  97, 103, 104, 105, 106, 106, 107,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
+    108, 108, 108, 108, 109, 110, 110, 111, 112, 113, 114, 115, 116, 116, 117, 118,
+    119, 120, 120, 121, 120, 122, 108, 123, 124, 125, 126, 127, 128, 129, 130, 116,
+    131, 132, 133, 134, 135, 136, 137,  82, 138, 138, 139, 140, 141, 141, 142, 143,
+    144, 145, 146, 147, 148, 149, 150, 151,   4, 152, 153, 154,   4, 155,   7,   7,
+      4,   4,   4,   4,   4,   4,   4,   4, 156,  11, 157, 158,  11, 159, 160, 161,
+    162,   0,   0, 163, 164,   0, 165, 166,   0, 167, 168,   4, 169,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 170, 171,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    172, 172, 172, 172, 172, 172, 172, 172,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,   0,   0,   0,
+    175, 175, 175,   4, 176, 176, 176, 177,  93, 178, 179, 180, 181, 182, 182,  13,
+      0,   0, 183,  82, 184, 185, 185, 186, 185, 185, 185, 185, 185, 185, 187, 188,
+    189, 190, 191, 192, 193, 194, 195, 196, 197, 198,  96,  96, 199, 200,   0, 201,
+    202,   0,   0, 203,   0,   0, 204, 205, 195, 195, 206,   0,   0,   0,   0,   0,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,   0,   0,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+    207, 207, 207, 207, 208, 207, 209, 210, 211, 211, 211, 211, 211, 211, 211, 211,
+    211, 212,  13,  13,  13, 213, 213, 214,   0, 215,   4,   4, 216,   4, 217, 218,
+    219, 220, 221, 222, 223, 223, 224,  40, 225, 226, 227, 228, 229, 229, 230, 231,
+    232, 233, 234,  92, 235, 235, 236, 237, 238, 239, 240, 241, 106, 106, 242, 243,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96, 244, 245, 246,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 247, 185, 185, 248,  82, 249, 250, 251,  23,  23,  23, 252,  23,
+     23,  23,  23,  23,  23,  23,  23,  23,  23, 253,  23,  23, 254,  23, 255, 256,
+    257, 258, 259, 260,  23,  23,  23, 261, 262,   1,   1, 263, 264, 202, 265, 266,
+    267, 268, 269,  82, 270, 270, 270, 271, 272, 273,  11,  11, 274, 275, 276, 277,
+     82,  82,  82,  82, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,  82,
+    289, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,  82,  82,
+    302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, 305, 306, 307,  82,  82,
+    308, 309, 310, 311, 312, 313,  82, 314, 315, 316,  82,  82, 317, 318, 319, 320,
+    321, 322, 323, 324, 325,  82, 326, 327, 328, 329, 330, 331, 332, 333,  82,  82,
+    334, 334, 335,  82, 336, 337, 336, 338, 339, 340,  82,  82,  82,  82,  82,  82,
+     82,  82,  82, 341, 342, 343,  82,  82, 344, 345, 346, 347, 348, 349, 350, 351,
     352, 352, 353, 354, 355, 355, 356, 357, 358, 359, 360, 361, 362, 362, 362, 363,
-    364, 365,  38,  38, 366, 367, 368, 369, 370, 371, 372, 373,  38,  38,  38,  38,
-    374, 374, 375, 376, 377, 377, 378,  38,  38,  38,  38,  38, 379, 380, 381,  38,
-    382, 382, 383, 384, 385, 386, 387,  38, 388, 389,  38,  38,  38,  38,  38,  38,
-    390, 391,  38,  38,  38, 392, 392, 393, 394, 395, 396,  38,  38, 397, 398, 399,
-    400, 400, 401, 402, 402, 403, 404, 405,  38,  38,  38,  38,  38,  38,  38,  38,
-    406, 407, 408, 409, 410, 411,  38,  38, 412, 413, 414, 415, 416, 417,  38,  38,
-     38,  38,  38,  38,  38,  38,  38, 418,  38,  38,  38,  38,  38, 419, 420, 421,
-    422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
-    422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 423,  38,  38,  38,
-    422, 422, 422, 424, 422, 422, 422, 422, 422, 422, 425,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
-    426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
-    426, 427,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428,
-    428, 428, 429,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
-    218, 430, 431, 432,  38,  38, 433, 434, 435, 435, 436, 437, 438,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38, 439, 439, 440,  38,  38,  38, 441, 441, 442, 441, 443,  38,  38, 444,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 446,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 447, 447, 447, 447, 447, 447, 447, 447,
-    447, 447, 447, 447, 447, 447, 448,  38, 449,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    450, 196, 196, 196, 196, 196, 196, 196, 451,  38, 452, 453, 454, 454, 454, 454,
-    454, 454, 454, 454, 454, 454, 454, 455,  38,  38,  38,  38,  38,  38,  38,  38,
-    456, 456, 456, 457, 458, 459,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-      0,   0,   0,   0,   0,   0,   0, 460,   0, 461,   0, 462, 463, 464,   0, 465,
-     11,  11, 466,  38,  38,  38,  38, 467,   0,   0, 468, 469,  38,  38,  38,  38,
-      0,   0, 470,   0, 471, 472, 473,   0, 474, 475, 476,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 477,   0,   0,   0,   0,   0,   0,   0,   0, 478,   0,
-    479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
-    479, 479, 479, 479, 480, 481,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    482, 483,  38,  38,  38,  38,  38,  38, 484, 485, 486,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38, 487, 488,  38,  38,  38,  38,  38,  38,  38,  38,
-    489, 489, 489, 489, 489, 489, 490,  38, 491, 491, 492,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38, 493,   0, 494,  38,  38, 268, 495,  38,  38,  38,  38,  38,  38,
-    496, 497, 498, 499, 500, 501,  38, 502,  38,  38,  38,  38,  38,  38,  38,  38,
-      0, 503,   0,   0, 467, 504, 505, 460,   0,   0,   0,   0,   0, 506,  38, 507,
-    508, 509, 510, 511,  38,  38,  38,  38,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 512, 513,   0,   0,   0, 467,   0,   0, 469, 514,
-    503,   0, 515,   0, 516, 517,  38,  38,   0,   0,   0, 518,   0,   0, 519,   0,
-      0,   0, 467, 520, 521, 522, 523,  38,   0,   0,   0,   0, 265,   0, 173, 524,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 525,  38, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 526, 189, 189, 189, 189, 189, 189,
-    525, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 527, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 528,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    525,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 529,  38,  38,  38,  38,  38,
-    530,   0,   0,   0,  38,  38,  38,  38,   7,   7,   7,   7,   7,   7,   7, 531,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38
+    364, 365,  82,  82, 366, 367, 368, 369, 370, 371, 372, 373,  82,  82,  82,  82,
+    374, 374, 375, 376, 377, 377, 378,  82,  82,  82,  82,  82, 379, 380, 381,  82,
+    382, 382, 383, 384, 385, 386, 387,  82, 388, 389, 390,  82,  82,  82,  82,  82,
+    391, 392,  82,  82,  82, 393, 393, 394, 395, 396, 397,  82,  82, 398, 399, 400,
+    401, 401, 402, 403, 403, 404, 405, 406,  82,  82,  82,  82,  82,  82,  82,  82,
+    407, 408, 409, 410, 411, 412,  82,  82, 413, 414, 415, 416, 417, 418,  82,  82,
+     82,  82,  82,  82,  82,  82,  82, 419,  82,  82,  82,  82,  82, 420, 421, 422,
+    423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
+    423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 424,  82,  82,  82,
+    423, 423, 423, 425, 423, 423, 423, 423, 423, 423, 426,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 427, 428, 428, 429,
+    430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
+    430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
+    430, 431,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
+    432, 432, 433,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
+    213, 434, 435, 436, 437, 438, 439, 440, 441, 441, 442, 443, 444,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82, 445, 445, 446,  82,  82,  82, 447, 447, 448, 447, 449,  82,  82, 450,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 453, 453, 453, 453, 453, 453, 453, 453,
+    453, 453, 453, 453, 453, 453, 454,  82, 455,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 456,
+    457, 192, 192, 192, 192, 192, 192, 192, 192, 458, 459, 460, 461, 461, 461, 461,
+    461, 461, 461, 461, 461, 461, 461, 462,  82,  82,  82,  82,  82,  82,  82,  82,
+    463, 463, 463, 464, 465, 466,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,   7, 467, 468,   0,   0,   0, 466,  82,
+      0,   0,   0,   0,   0,   0,   0, 469,   0, 470,   0, 471, 472, 473,   0, 171,
+     11,  11, 474,  82,  82,  82,  82, 475,   0,   0, 476, 477,  82,  82,  82,  82,
+      0,   0, 478,   0, 479, 480, 481,   0, 482, 483, 484,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 485,   0,   0,   0,   0,   0,   0,   0,   0, 486,   0,
+    487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487,
+    487, 487, 487, 487, 488, 489,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82, 490,  82,  82,  82,  82,  82,  82,  82,
+    491, 492,  82,  82,  82,  82,  82,  82, 493, 494, 495,  82,  82,  82,  82,  82,
+     82,  82,  82,  82, 496, 497, 498, 499,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 500,
+    501, 501, 501, 501, 501, 501, 502,  82, 503, 503, 504,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82, 505,   0, 506,  82,  82, 262, 183,  82,  82,  82,  82,  82,  82,
+    507, 508, 509, 510, 511, 512,  82, 513,  82,  82,  82,  82,  82,  82,  82,  82,
+      0, 514,   0,   0, 475, 515, 516, 469,   0,   0,   0,   0,   0, 517,  82, 518,
+    519, 520, 521, 522,  82,  82,  82,  82,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 523, 524,   0,   0,   0, 475,   0,   0, 477, 525,
+    514,   0, 526,   0, 527, 528,  82,  82,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 475, 529, 530, 531, 532, 533,   0,   0,   0,   0, 259,   0, 171, 534,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185,  82, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 535, 185, 185, 185, 185, 185, 185,
+    536, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 537, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 538,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    536,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 539,  82,  82,  82,  82,  82,
+    540,   0,   0,   0,  82,  82,  82,  82,   7,   7,   7,   7,   7,   7,   7, 541,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82
 };
 
 static RE_UINT8 re_script_table_3[] = {
@@ -20275,7 +20653,7 @@ static RE_UINT8 re_script_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   0,   0,   0,   0,   9,
       9,   9,   9,   9,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10,   1,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,   0,  10,   1,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,  10,   1,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   4,   4,   4,   4,   4,
@@ -20305,13 +20683,9 @@ static RE_UINT8 re_script_table_3[] = {
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,   0,   0,  15,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+     10,  10,   0,   0,   0,   0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,   1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
@@ -20363,9 +20737,9 @@ static RE_UINT8 re_script_table_3[] = {
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,
      22,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,  22,  22,  22,  22,
-     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,   0,  22,  22,  22,
+     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,  22,  22,  22,  22,
      22,  22,  22,  22,  22,   0,  22,  22,  22,   0,  22,  22,  22,  22,   0,   0,
-      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,  22,   0,   0,
      22,  22,  22,  22,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
       0,   0,   0,   0,   0,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,
@@ -20373,7 +20747,7 @@ static RE_UINT8 re_script_table_3[] = {
      23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,  23,  23,  23,  23,
      23,  23,  23,  23,   0,  23,  23,  23,  23,  23,   0,   0,  23,  23,  23,  23,
      23,  23,  23,  23,  23,   0,  23,  23,  23,   0,  23,  23,  23,  23,   0,   0,
-      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,  23,   0,
+      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,  23,  23,   0,
      23,  23,  23,  23,   0,   0,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,
       0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,   0,  24,  24,
@@ -20398,6 +20772,8 @@ static RE_UINT8 re_script_table_3[] = {
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,   1,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,   0,  27,  27,  27,  27,
      27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
      27,  27,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,  27,  27,  27,  27,
@@ -20456,8 +20832,8 @@ static RE_UINT8 re_script_table_3[] = {
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,   1,   1,   1,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,   0,   0,   0,   0,   0,   0,   0,
-     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,   0,  37,  37,
-     37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,
+     37,  37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,
      38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
      38,  38,  38,  38,  38,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
@@ -20470,7 +20846,7 @@ static RE_UINT8 re_script_table_3[] = {
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
-     42,  42,   1,   1,  42,   1,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,
+     42,  42,   1,   1,  42,   1,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,   0,   0,   0,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
@@ -20506,14 +20882,14 @@ static RE_UINT8 re_script_table_3[] = {
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,   0,   0,   0,   0,
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -20544,8 +20920,6 @@ static RE_UINT8 re_script_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   7,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
@@ -20564,7 +20938,7 @@ static RE_UINT8 re_script_table_3[] = {
       1,   2,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -20586,10 +20960,6 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -20605,7 +20975,7 @@ static RE_UINT8 re_script_table_3[] = {
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
@@ -20652,8 +21022,6 @@ static RE_UINT8 re_script_table_3[] = {
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,   1,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,   1,   1,   1,   1,   1,   1,   1,   1,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,   0,   0,   0,
@@ -20674,10 +21042,10 @@ static RE_UINT8 re_script_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   1,   1,   1,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   0,   2,   0,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,   0,   0,   0,
@@ -20744,18 +21112,16 @@ static RE_UINT8 re_script_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   0,   9,   9,   9,   9,   9,   0,   9,   0,
       9,   9,   0,   9,   9,   0,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,   1,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,  10,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   7,   7,
@@ -20841,315 +21207,345 @@ static RE_UINT8 re_script_table_3[] = {
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  85,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,   0,   0,  87,   0,  87,  87,  87,  87,  87,  87,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,   0,  86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,   0,  87,  87,   0,   0,   0,  87,   0,   0,  87,
+     87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+     88,  88,  88,  88,  88,  88,   0,   0,  88,   0,  88,  88,  88,  88,  88,  88,
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     88,  88,  88,  88,  88,  88,   0,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
+     88,  88,  88,  88,  88,  88,   0,  88,  88,   0,   0,   0,  88,   0,   0,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     89,  89,  89,  89,  89,  89,   0,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,   0,
-      0,   0,   0,   0,   0,   0,   0,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,   0,  91,  91,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,   0,
+      0,   0,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
-     92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,   0,   0,   0,  92,
+     92,  92,  92,   0,  92,  92,   0,   0,   0,   0,   0,  92,  92,  92,  92,  92,
      93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,
-     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,   0,   0,  93,
-     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,  93,
      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,   0,   0,   0,   0,   0,  94,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,   0,   0,   0,   0,  95,  95,  95,  95,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-      0,   0,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     96,  96,  96,  96,   0,  96,  96,   0,   0,   0,   0,   0,  96,  96,  96,  96,
-     96,  96,  96,  96,   0,  96,  96,  96,   0,  96,  96,  96,  96,  96,  96,  96,
      96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
-     96,  96,  96,  96,  96,  96,   0,   0,  96,  96,  96,   0,   0,   0,   0,  96,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+      0,   0,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  97,  97,   0,  97,  97,   0,   0,   0,   0,   0,  97,  97,  97,  97,
+     97,  97,  97,  97,   0,  97,  97,  97,   0,  97,  97,  97,  97,  97,  97,  97,
      97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     97,  97,  97,  97,  97,  97,   0,   0,  97,  97,  97,   0,   0,   0,   0,  97,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100,   0,   0,   0, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-    101, 101, 101, 101, 101, 101,   0,   0, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101,   0,   0,   0, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
-    102, 102, 102,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
+    102, 102, 102, 102, 102, 102,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    103, 103, 103,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103, 103,
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104,   0,   0,   0,   0,   0,   0,   0,
+    104, 104,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104, 104, 104, 104,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0, 105, 105, 105, 105, 105, 105,
+    105, 105, 105, 105, 105, 105, 105, 105, 105,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 106, 106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0, 106, 106, 106, 106, 106, 106,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0, 107, 107, 107,   0,   0,
-    107, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
-    108, 108, 108, 108, 108, 108, 108, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108,   0, 108, 108, 108,   0,   0,
+    108, 108,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,
-      0,   0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    111, 111, 111, 111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113,   0,   0,
+    113, 113, 113, 113, 113, 113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
-    114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,
+      0,   0, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115,   0, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115, 115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
-    116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
-      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
-     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117,   0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117, 117, 117, 117,   0,   0,   0,   0,   0,   0,   0,   0,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118,   0, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,   0,
-    119, 119, 119, 119, 119, 119, 119,   0, 119,   0, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    118, 118, 118, 118, 118, 118, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
+     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    120, 120,   0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,   0,
-    121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0, 121,
-    121,   0,   0, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121,
-    121,   0, 121, 121,   0, 121, 121, 121, 121, 121,   0,   4, 121, 121, 121, 121,
-    121, 121, 121, 121, 121,   0,   0, 121, 121,   0,   0, 121, 121, 121,   0,   0,
-    121,   0,   0,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0, 121, 121, 121,
-    121, 121, 121, 121,   0,   0, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,
-    121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,
+    121, 121, 121, 121, 121, 121, 121,   0, 121,   0, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0, 122, 122, 122,
-    122, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,   0,
+    123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0, 123,
+    123,   0,   0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123,
+    123,   0, 123, 123,   0, 123, 123, 123, 123, 123,   0,   4, 123, 123, 123, 123,
+    123, 123, 123, 123, 123,   0,   0, 123, 123,   0,   0, 123, 123, 123,   0,   0,
+    123,   0,   0,   0,   0,   0,   0, 123,   0,   0,   0,   0,   0, 123, 123, 123,
+    123, 123, 123, 123,   0,   0, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,
+    123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124,   0,   0, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0,   0,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0, 124, 124, 124,
+    124, 124,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,
-     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,   0,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    126, 126, 126, 126, 126, 126,   0,   0, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+    127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 129,
-    130, 130, 130, 130, 130, 130, 130,   0,   0, 130,   0,   0, 130, 130, 130, 130,
-    130, 130, 130, 130,   0, 130, 130,   0, 130, 130, 130, 130, 130, 130, 130, 130,
+    129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130,   0, 130, 130,   0,   0, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 131,
+    132, 132, 132, 132, 132, 132, 132,   0,   0, 132,   0,   0, 132, 132, 132, 132,
+    132, 132, 132, 132,   0, 132, 132,   0, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
-    132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,
-    133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+    132, 132, 132, 132, 132, 132,   0, 132, 132,   0,   0, 132, 132, 132, 132, 132,
+    132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
+    133, 133, 133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,
-    135, 135, 135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135,
+    134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,   0,   0,   0,
+    135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-      0,   0, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136, 136,   0, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137,   0, 137, 137,   0, 137, 137, 137, 137, 137,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,
+    137, 137, 137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
-    137, 137, 137, 137, 137, 137, 137,   0,   0,   0, 137,   0, 137, 137,   0, 137,
-    137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138,   0, 138, 138,   0, 138, 138, 138, 138, 138, 138,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,
-    138, 138,   0, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,   0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138, 138,   0, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139,   0, 139, 139,   0, 139, 139, 139, 139, 139,
     139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
-    139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    139, 139, 139, 139, 139, 139, 139,   0,   0,   0, 139,   0, 139, 139,   0, 139,
+    139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140,   0, 140, 140,   0, 140, 140, 140, 140, 140, 140,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
+    140, 140,   0, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
+    141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
-    140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,   0,
-    141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-    142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,   0,   0,   0, 143, 143,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,
+    142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,
-    144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,
+    144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145,   0, 145, 145, 145, 145, 145,
-    145, 145,   0, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0, 146, 146,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    148, 149,   1,   1, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,
+    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,
+    148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0, 149, 149, 149, 149, 149,
+    149, 149,   0, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
-    150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,
+    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    152, 153,  56,  56, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,   0,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     58,  58,  58,  58,   0,  58,  58,  58,  58,  58,  58,  58,   0,  58,  58,   0,
      58,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   0,
+     58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      57,  57,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,  58,  58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0, 151, 151, 151, 151,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155,
       1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,   1,   1,   1,   1,   1,
@@ -21160,8 +21556,6 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -21188,40 +21582,46 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 152, 152, 152, 152,
-      0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 156, 156, 156, 156, 156,
+      0, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
      54,  54,  54,  54,  54,  54,  54,   0,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,   0,   0,  54,  54,  54,  54,  54,
      54,  54,   0,  54,  54,   0,  54,  54,  54,  54,  54,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0, 153, 153,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,   0, 157, 157,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0, 154,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159,   0,   0,   0,   0,   0, 159,
+     32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,   0,  32,  32,   0,
+     32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,   0,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160,   0,   0, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0, 161, 161,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,  10,  10,   0,  10,   0,   0,  10,   0,  10,  10,  10,  10,  10,  10,  10,
@@ -21255,35 +21655,33 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
       1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
      56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -21317,198 +21715,206 @@ RE_UINT32 re_get_script(RE_UINT32 codepoint) {
 static RE_UINT8 script_extensions_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 21, 21, 34, 35, 21, 21,
-    21, 36, 21, 21, 21, 21, 21, 21, 21, 21, 37, 38, 39, 39, 39, 39,
-    39, 40, 41, 42, 21, 21, 21, 21, 21, 21, 21, 21, 43, 21, 21, 44,
-    21, 21, 21, 21, 45, 46, 47, 21, 48, 21, 49, 50, 51, 52, 53, 21,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 54, 13, 13, 13, 55, 56, 13,
-    13, 13, 13, 57, 13, 13, 13, 13, 13, 13, 58, 21, 21, 21, 59, 21,
-    13, 13, 13, 13, 60, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    61, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33, 34, 35, 20, 20,
+    20, 36, 20, 20, 20, 20, 20, 20, 20, 20, 37, 38, 39, 39, 39, 39,
+    39, 40, 41, 42, 20, 20, 20, 20, 20, 20, 20, 43, 44, 20, 20, 45,
+    20, 20, 20, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 20,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 58, 13, 13, 13, 59, 60, 13,
+    13, 13, 13, 61, 13, 13, 13, 13, 13, 13, 62, 20, 20, 20, 63, 20,
+    13, 13, 13, 13, 64, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    65, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
 };
 static RE_UINT16 script_extensions_table_2[] = {
       0,   0,   1,   1,   0,   2,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   5,   0,   6,   7,   7,   8,   9,  10,  11,  12,  13,
      14,  14,  14,  14,  15,  14,  14,  14,  14,  16,  17,  18,  19,  20,  21,  22,
      23,  24,  25,  26,  24,  24,  27,  24,  28,  29,  30,  24,  31,  32,  33,  34,
-     35,  36,  37,  38,  39,  40,  41,  42,  43,  43,  44,  45,  46,  47,  48,  49,
-     50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  39,  85,  86,  87,  39,  88,  88,  89,  90,  91,  92,  93,  39,
-     94,  94,  95,  94,  94,  96,  97,  98,  99,  99,  99,  99,  99,  99,  99,  99,
-    100, 100, 101, 100, 102, 103, 104, 100, 105, 100, 106, 107, 108, 109, 109, 110,
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 112, 113, 113, 114, 115, 116, 117, 118, 119, 119, 120, 121,
-    122, 123, 123, 124, 123, 125, 111, 126, 127, 128, 129, 130, 131, 132, 133, 119,
-    134, 135, 136, 137, 138, 139, 140,  39, 141, 141, 142, 143, 144, 144, 145, 146,
-    147, 148, 149, 150, 151, 152, 153, 154,   4, 155, 156, 157,   4, 158, 159, 160,
-      4,   4,   4,   4,   4,   4,   4,   4, 161,  12, 162, 163,  12, 164, 165, 166,
-    167, 168,   0, 169, 170,   0, 171, 172,   0, 173, 174,   4, 175,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 176, 177,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    178, 178, 178, 178, 178, 178, 178, 178,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 179, 180,   0,   0,   0,
-    181, 182, 183,   4, 184, 184, 184, 185,  96, 186, 187, 188, 189, 190, 190,  14,
-      0,   0, 191,  39, 192, 193, 193, 194, 193, 193, 193, 193, 193, 193, 195, 196,
-    197, 198, 199, 200, 201, 202, 203, 204, 205, 206,  99,  99, 207, 208, 209, 210,
-    211, 209, 212, 213, 209, 214, 215, 216, 203, 203, 217, 218,   0,   0,   0, 219,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,   0,   0,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 220,
-    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-    221, 221, 221, 221, 222, 221, 223, 224, 225, 225, 225, 225, 225, 225, 225, 225,
-    225, 226,  14, 227,  14, 228, 228, 229, 230, 231,   4,   4, 232,   4, 233, 234,
-    235, 236, 237, 238, 239, 239, 240, 241, 242, 243, 244, 245, 246, 246, 247, 248,
-    249, 250, 251,  94, 252, 252, 253, 254, 255, 256, 257, 258, 109, 109, 259, 260,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99, 261, 262, 263,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 264, 193, 193, 265,  39, 266, 267, 268,  24,  24,  24, 269,  24,
-     24,  24,  24,  24,  24,  24,  24,  24,  24, 270, 271,  24, 272,  24, 273, 274,
-    275, 276, 277, 278,  24,  24,  24, 279, 280,   1,   1, 281, 282, 211, 283, 284,
-    285, 286, 287,  39, 288, 288, 288, 289, 290, 291,  12,  12, 292, 293, 294, 295,
-     39,  39,  39,  39, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,  39,
-    307, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,  39,  39,  39,  39,
-    318, 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, 321,  39,  39,  39,  39,
-    322, 323, 324, 325, 326, 327,  39, 328, 329, 330,  39,  39, 331, 332, 333, 334,
-    335, 336, 337, 338, 339,  39, 340, 341, 342, 343, 344, 345, 346, 347,  39,  39,
-    348, 348, 349,  39, 350, 351, 350, 352, 353, 354,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 355, 356, 357,  39,  39, 358, 359, 360,  39,  39, 361, 362, 363,
-    364, 364, 365, 366, 367, 367, 368, 369, 370, 371, 372, 373, 374, 374, 374, 375,
-    376, 377,  39,  39, 378, 379, 380, 381, 382, 383, 384, 385,  39,  39,  39,  39,
-    386, 386, 387, 388, 389, 389, 390,  39,  39,  39,  39,  39, 391, 392, 393,  39,
-    394, 394, 395, 396, 397, 398, 399,  39, 400, 401,  39,  39,  39,  39,  39,  39,
-    402, 403,  39,  39,  39, 404, 404, 405, 406, 407, 408,  39,  39, 409, 410, 411,
-    412, 412, 413, 414, 414, 415, 416, 417,  39,  39,  39,  39,  39,  39,  39,  39,
-    418, 419, 420, 421, 422, 423,  39,  39, 424, 425, 426, 427, 428, 429,  39,  39,
-     39,  39,  39,  39,  39,  39,  39, 430,  39,  39,  39,  39,  39, 431, 432, 433,
-    434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
-    434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 435,  39,  39,  39,
-    434, 434, 434, 436, 434, 434, 434, 434, 434, 434, 437,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438,
-    438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438,
-    438, 439,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
-    440, 440, 441,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
-    228, 442, 443, 444,  39,  39, 445, 446, 447, 447, 448, 449, 450,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39, 451, 451, 452,  39,  39,  39, 453, 453, 454, 453, 455,  39,  39, 456,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 459, 459, 459, 459, 459, 459, 459, 459,
-    459, 459, 459, 459, 459, 459, 460,  39, 461,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    462, 200, 200, 200, 200, 200, 200, 200, 463,  39, 464, 465, 466, 466, 466, 466,
-    466, 466, 466, 466, 466, 466, 466, 467,  39,  39,  39,  39,  39,  39,  39,  39,
-    468, 468, 468, 469, 470, 471,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-      0,   0,   0,   0,   0,   0,   0, 472,   0, 473,   0, 474, 475, 476,   0, 477,
-     12,  12, 478,  39,  39,  39,  39, 479,   0,   0, 480, 481,  39,  39,  39,  39,
-      0,   0, 482,   0, 483, 484, 485,   0, 486, 487, 488,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 489,   0,   0,   0,   0,   0,   0,   0,   0, 490,   0,
-    491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
-    491, 491, 491, 491, 492, 493,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    494, 495,  39,  39,  39,  39,  39,  39, 496, 497, 498,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39, 499, 500,  39,  39,  39,  39,  39,  39,  39,  39,
-    501, 501, 501, 501, 501, 501, 502,  39, 503, 503, 504,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 505,   0, 506,  39,  39, 280, 507,  39,  39,  39,  39,  39,  39,
-    508, 509, 510, 511, 512, 513,  39, 514,  39,  39,  39,  39,  39,  39,  39,  39,
-      0, 515,   0,   0, 479, 516, 517, 472,   0,   0,   0,   0,   0, 518,  39, 519,
-    520, 521, 522, 523,  39,  39,  39,  39,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 524, 525,   0,   0,   0, 479,   0,   0, 526, 527,
-    515,   0, 528,   0, 529, 530,  39,  39,   0,   0,   0, 531,   0,   0, 532,   0,
-      0,   0, 479, 533, 534, 535, 536,  39,   0,   0,   0,   0, 537,   0, 177, 538,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 539,  39, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 540, 193, 193, 193, 193, 193, 193,
-    539, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 541, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 542,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    539,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 543,  39,  39,  39,  39,  39,
-    544,   0,   0,   0,  39,  39,  39,  39,   7,   7,   7,   7,   7,   7,   7, 545,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39
+     35,  36,  37,  38,  39,  24,  24,  40,  41,  41,  42,  43,  44,  45,  46,  47,
+     48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
+     64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
+     80,  81,  82,  83,  84,  85,  86,  83,  87,  87,  88,  89,  90,  91,  92,  83,
+     93,  93,  94,  93,  93,  95,  96,  97,  98,  98,  98,  98,  98,  98,  98,  98,
+     99,  99, 100,  99, 101, 102, 103,  99, 104,  99, 105, 106, 107, 108, 108, 109,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+    110, 110, 110, 110, 111, 112, 112, 113, 114, 115, 116, 117, 118, 118, 119, 120,
+    121, 122, 122, 123, 122, 124, 110, 125, 126, 127, 128, 129, 130, 131, 132, 118,
+    133, 134, 135, 136, 137, 138, 139,  83, 140, 140, 141, 142, 143, 143, 144, 145,
+    146, 147, 148, 149, 150, 151, 152, 153,   4, 154, 155, 156,   4, 157, 158, 159,
+      4,   4,   4,   4,   4,   4,   4,   4, 160,  12, 161, 162,  12, 163, 164, 165,
+    166, 167,   0, 168, 169,   0, 170, 171,   0, 172, 173,   4, 174,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 175, 176,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    177, 177, 177, 177, 177, 177, 177, 177,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 178, 179,   0,   0,   0,
+    180, 180, 180,   4, 181, 181, 181, 182,  95, 183, 184, 185, 186, 187, 187,  14,
+      0,   0, 188,  83, 189, 190, 190, 191, 190, 190, 190, 190, 190, 190, 192, 193,
+    194, 195, 196, 197, 198, 199, 200, 201, 202, 203,  98,  98, 204, 205, 206, 207,
+    208, 206, 209, 210, 206, 211, 212, 213, 200, 200, 214, 215,   0,   0,   0, 216,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,   0,   0,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
+    217, 217, 217, 217, 218, 217, 219, 220, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 222,  14, 223,  14, 224, 224, 225, 226, 227,   4,   4, 228,   4, 229, 230,
+    231, 232, 233, 234, 235, 235, 236, 237, 238, 239, 240, 241, 242, 242, 243, 244,
+    245, 246, 247,  93, 248, 248, 249, 250, 251, 252, 253, 254, 108, 108, 255, 256,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98, 257, 258, 259,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 260, 190, 190, 261,  83, 262, 263, 264,  24,  24,  24, 265,  24,
+     24,  24,  24,  24,  24,  24,  24,  24,  24, 266,  24,  24, 267,  24, 268, 269,
+    270, 271, 272, 273,  24,  24,  24, 274, 275,   1,   1, 276, 277, 208, 278, 279,
+    280, 281, 282,  83, 283, 283, 283, 284, 285, 286,  12,  12, 287, 288, 289, 290,
+     83,  83,  83,  83, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,  83,
+    302, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,  83,  83,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 316, 317, 318, 319, 320,  83,  83,
+    321, 322, 323, 324, 325, 326,  83, 327, 328, 329,  83,  83, 330, 331, 332, 333,
+    334, 335, 336, 337, 338,  83, 339, 340, 341, 342, 343, 344, 345, 346,  83,  83,
+    347, 347, 348,  83, 349, 350, 349, 351, 352, 353,  83,  83,  83,  83,  83,  83,
+     83,  83,  83, 354, 355, 356,  83,  83, 357, 358, 359, 360, 361, 362, 363, 364,
+    365, 365, 366, 367, 368, 368, 369, 370, 371, 372, 373, 374, 375, 375, 375, 376,
+    377, 378,  83,  83, 379, 380, 381, 382, 383, 384, 385, 386,  83,  83,  83,  83,
+    387, 387, 388, 389, 390, 390, 391,  83,  83,  83,  83,  83, 392, 393, 394,  83,
+    395, 395, 396, 397, 398, 399, 400,  83, 401, 402, 403,  83,  83,  83,  83,  83,
+    404, 405,  83,  83,  83, 406, 406, 407, 408, 409, 410,  83,  83, 411, 412, 413,
+    414, 414, 415, 416, 416, 417, 418, 419,  83,  83,  83,  83,  83,  83,  83,  83,
+    420, 421, 422, 423, 424, 425,  83,  83, 426, 427, 428, 429, 430, 431,  83,  83,
+     83,  83,  83,  83,  83,  83,  83, 432,  83,  83,  83,  83,  83, 433, 434, 435,
+    436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+    436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 437,  83,  83,  83,
+    436, 436, 436, 438, 436, 436, 436, 436, 436, 436, 439,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 440, 441, 441, 442,
+    443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
+    443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
+    443, 444,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
+    445, 445, 446,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+    224, 447, 448, 449, 450, 451, 452, 453, 454, 454, 455, 456, 457,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83, 458, 458, 459,  83,  83,  83, 460, 460, 461, 460, 462,  83,  83, 463,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 465,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 466, 466, 466, 466, 466, 466, 466, 466,
+    466, 466, 466, 466, 466, 466, 467,  83, 468,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 469,
+    470, 197, 197, 197, 197, 197, 197, 197, 197, 471, 472, 473, 474, 474, 474, 474,
+    474, 474, 474, 474, 474, 474, 474, 475,  83,  83,  83,  83,  83,  83,  83,  83,
+    476, 476, 476, 477, 478, 479,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,   7, 480, 481,   0,   0,   0, 482,  83,
+      0,   0,   0,   0,   0,   0,   0, 483,   0, 484,   0, 485, 486, 487,   0, 176,
+     12,  12, 488,  83,  83,  83,  83, 489,   0,   0, 490, 491,  83,  83,  83,  83,
+      0,   0, 492,   0, 493, 494, 495,   0, 496, 497, 498,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 499,   0,   0,   0,   0,   0,   0,   0,   0, 500,   0,
+    501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
+    501, 501, 501, 501, 502, 503,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83, 504,  83,  83,  83,  83,  83,  83,  83,
+    505, 506,  83,  83,  83,  83,  83,  83, 507, 508, 509,  83,  83,  83,  83,  83,
+     83,  83,  83,  83, 510, 511, 512, 513,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 514,
+    515, 515, 515, 515, 515, 515, 516,  83, 517, 517, 518,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83, 519,   0, 520,  83,  83, 275, 521,  83,  83,  83,  83,  83,  83,
+    522, 523, 524, 525, 526, 527,  83, 528,  83,  83,  83,  83,  83,  83,  83,  83,
+      0, 529,   0,   0, 489, 530, 531, 483,   0,   0,   0,   0,   0, 532,  83, 533,
+    534, 535, 536, 537,  83,  83,  83,  83,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 538, 539,   0,   0,   0, 489,   0,   0, 540, 541,
+    529,   0, 542,   0, 543, 544,  83,  83,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 489, 545, 546, 547, 548, 549,   0,   0,   0,   0, 550,   0, 176, 551,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190,  83, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 552, 190, 190, 190, 190, 190, 190,
+    553, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 554, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 555,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    553,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 556,  83,  83,  83,  83,  83,
+    557,   0,   0,   0,  83,  83,  83,  83,   7,   7,   7,   7,   7,   7,   7, 558,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83
 };
 static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -21527,9 +21933,9 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4, 158,   4,   4, 158,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4, 163,   4,   4, 163,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+      4,   4,   4, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
       5,   5,   5,   5,   1,   5,   5,   5,   0,   0,   5,   5,   5,   5,   1,   5,
       0,   0,   0,   0,   5,   1,   5,   1,   5,   5,   5,   0,   5,   0,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
@@ -21541,7 +21947,7 @@ static RE_UINT8 script_extensions_table_3[] = {
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7, 160, 161, 162, 162, 161,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,   7, 165, 166, 167, 167, 166,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       0,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
@@ -21557,16 +21963,16 @@ static RE_UINT8 script_extensions_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   0,   0,   0,   0,   9,
       9,   9,   9,   9,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10, 163,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 163, 164,   0,  10, 163,
+     10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10, 168,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 168, 169,  10,  10, 170,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-    165,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 166, 166, 166, 166, 166,
-    166, 166, 166, 166, 166, 166,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-    167, 167, 167, 167, 167, 167, 167, 167, 167, 167,  10,  10,  10,  10,  10,  10,
-    166,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+    171,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 172, 172, 172, 172, 172,
+    172, 172, 172, 172, 172, 172,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173,  10,  10,  10,  10,  10,  10,
+    172,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10, 168,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,
+     10,  10,  10,  10, 174,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,  11,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
@@ -21588,20 +21994,16 @@ static RE_UINT8 script_extensions_table_3[] = {
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,   0,   0,  15,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+     10,  10,   0,   0,   0,   0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,   1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16, 169, 170,   4,   4,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16, 171, 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+     16, 175, 176,   4,   4,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
+     16,  16,  16,  16, 177, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      17,  17,  17,  17,   0,  17,  17,  17,  17,  17,  17,  17,  17,   0,   0,  17,
      17,   0,   0,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,
@@ -21609,7 +22011,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      17,   0,  17,   0,   0,   0,  17,  17,  17,  17,   0,   0,  17,  17,  17,  17,
      17,  17,  17,  17,  17,   0,   0,  17,  17,   0,   0,  17,  17,  17,  17,   0,
       0,   0,   0,   0,   0,   0,   0,  17,   0,   0,   0,   0,  17,  17,   0,  17,
-     17,  17,  17,  17,   0,   0, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+     17,  17,  17,  17,   0,   0, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
      17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,   0,
       0,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,  18,
      18,   0,   0,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
@@ -21617,7 +22019,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      18,   0,  18,  18,   0,  18,  18,   0,  18,  18,   0,   0,  18,   0,  18,  18,
      18,  18,  18,   0,   0,   0,   0,  18,  18,   0,   0,  18,  18,  18,   0,   0,
       0,  18,   0,   0,   0,   0,   0,   0,   0,  18,  18,  18,  18,   0,  18,   0,
-      0,   0,   0,   0,   0,   0, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+      0,   0,   0,   0,   0,   0, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
      18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  19,  19,  19,   0,  19,  19,  19,  19,  19,  19,  19,  19,  19,   0,  19,
      19,  19,   0,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
@@ -21625,7 +22027,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      19,   0,  19,  19,   0,  19,  19,  19,  19,  19,   0,   0,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,   0,  19,  19,  19,   0,  19,  19,  19,   0,   0,
      19,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     19,  19,  19,  19,   0,   0, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+     19,  19,  19,  19,   0,   0, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
      19,  19,   0,   0,   0,   0,   0,   0,   0,  19,  19,  19,  19,  19,  19,  19,
       0,  20,  20,  20,   0,  20,  20,  20,  20,  20,  20,  20,  20,   0,   0,  20,
      20,   0,   0,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,
@@ -21641,14 +22043,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,  21,  21,
      21,  21,  21,   0,   0,   0,  21,  21,  21,   0,  21,  21,  21,  21,   0,   0,
      21,   0,   0,   0,   0,   0,   0,  21,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
-    177, 177, 177, 177,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
+    183, 183, 183, 183,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,   0,
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,
      22,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,  22,  22,  22,  22,
-     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,   0,  22,  22,  22,
+     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,  22,  22,  22,  22,
      22,  22,  22,  22,  22,   0,  22,  22,  22,   0,  22,  22,  22,  22,   0,   0,
-      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,  22,   0,   0,
      22,  22,  22,  22,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
       0,   0,   0,   0,   0,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,
@@ -21656,8 +22058,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,  23,  23,  23,  23,
      23,  23,  23,  23,   0,  23,  23,  23,  23,  23,   0,   0,  23,  23,  23,  23,
      23,  23,  23,  23,  23,   0,  23,  23,  23,   0,  23,  23,  23,  23,   0,   0,
-      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,  23,   0,
-     23,  23,  23,  23,   0,   0, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,  23,  23,   0,
+     23,  23,  23,  23,   0,   0, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
       0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,   0,  24,  24,
      24,   0,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,
@@ -21681,6 +22083,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,   1,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,   0,  27,  27,  27,  27,
      27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
      27,  27,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,  27,  27,  27,  27,
@@ -21701,14 +22105,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      28,  28,  28,  28,  28,   1,   1,   1,   1,  28,  28,   0,   0,   0,   0,   0,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-    179, 179, 179, 179, 179, 179, 179, 179, 179, 179,  29,  29,  29,  29,  29,  29,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,   0,  30,   0,   0,   0,   0,   0,  30,   0,   0,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30, 180,  30,  30,  30,  30,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30, 186,  30,  30,  30,  30,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,
@@ -21741,10 +22145,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,   1,   1,   1,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,   0,   0,   0,   0,   0,   0,   0,
-     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,   0,  37,  37,
-     37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,
+     37,  37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,
      38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38, 181, 181,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     38,  38,  38,  38,  38, 187, 187,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,  40,  40,
@@ -21755,7 +22159,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
-     42,  42, 182, 182,  42, 182,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,
+     42,  42, 188, 188,  42, 188,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,   0,   0,   0,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
@@ -21791,14 +22195,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,   0,   0,   0,   0,
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -21818,9 +22222,9 @@ static RE_UINT8 script_extensions_table_3[] = {
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,   0,   0,  30,  30,  30,
      49,  49,  49,  49,  49,  49,  49,  49,   0,   0,   0,   0,   0,   0,   0,   0,
-    183, 184, 183, 185, 184, 186, 186, 187, 186, 187, 188, 184, 187, 187, 184, 184,
-    187, 186, 184, 184, 184, 184, 184, 184, 184, 189, 186, 184, 184, 186, 184, 184,
-    184, 184, 190, 185, 191, 186, 186, 192, 185, 185, 193,   0,   0,   0,   0,   0,
+    189, 190, 189, 191, 190, 192, 192, 193, 192, 193, 194, 190, 193, 193, 190, 190,
+    193, 192, 190, 190, 190, 190, 190, 190, 190, 195, 192, 190, 190, 192, 190, 190,
+    190, 190, 196, 191, 197, 192, 192, 198, 191, 191, 199,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   5,   5,   5,   5,   5,   7,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
@@ -21829,10 +22233,10 @@ static RE_UINT8 script_extensions_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   7,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,
-    158, 158,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+    163, 163,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4, 194,   4,   0,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4, 200,   4, 201,   4,   4,   4,   4,   4,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
@@ -21847,16 +22251,16 @@ static RE_UINT8 script_extensions_table_3[] = {
       0,   0,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 195,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 202,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   2,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-    196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    203,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   5,   1,   1,   1,   2,   2,   1,   1,   1,   1,
       1,   1,   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,   1,
@@ -21875,10 +22279,6 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -21893,8 +22293,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      32,  32,  32,  32,  32,  32,  32,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
-      1,   1,   1, 161,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 166,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
@@ -21905,54 +22305,52 @@ static RE_UINT8 script_extensions_table_3[] = {
      56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      1, 197, 197, 198,   1,  56, 199,  56, 197, 197, 197, 197, 197, 197, 197, 197,
-    197, 197,   1, 198, 197, 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, 198,
-      1,  56,  56,  56,  56,  56,  56,  56,  56,  56, 200, 200, 200, 200,  31,  31,
-    198, 201, 201, 201, 201, 201,   1, 198,  56,  56,  56,  56, 202, 202, 199, 199,
+      1, 204, 204, 205,   1,  56, 206,  56, 204, 204, 204, 204, 204, 204, 204, 204,
+    204, 204,   1, 205, 204, 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, 205,
+      1,  56,  56,  56,  56,  56,  56,  56,  56,  56, 207, 207, 207, 207,  31,  31,
+    205, 208, 208, 208, 208, 208,   1, 205,  56,  56,  56,  56, 209, 209, 206, 206,
       0,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,   0,   0, 201, 201, 201, 201,  57,  57,  57,
-    201,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+     57,  57,  57,  57,  57,  57,  57,   0,   0, 208, 208, 208, 208,  57,  57,  57,
+    208,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 197, 201,  58,  58,  58,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 204, 208,  58,  58,  58,
       0,   0,   0,   0,   0,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       0,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,
-    199, 199, 199, 199, 199, 199, 199, 199,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   1,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,   1,   1,   1,   1,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 199,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 206,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,   1,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,
+     58,  58,  58,  58,  58,  58,  58,  58, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,   1,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,   0,   0,   0,
@@ -21965,26 +22363,26 @@ static RE_UINT8 script_extensions_table_3[] = {
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 161,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 166,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,   0,
-    203, 203, 203, 203, 203, 203, 203, 203,   1,   1,   1,   1,   1,   1,   1,   1,
+    210, 210, 210, 210, 210, 210, 210, 210,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   1,   1,   1,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   0,   2,   0,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,   0,   0,   0,
-    204, 204, 204, 205, 205, 205, 206, 206, 206, 206,   0,   0,   0,   0,   0,   0,
+    211, 211, 211, 212, 212, 212, 213, 213, 213, 213,   0,   0,   0,   0,   0,   0,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
@@ -21994,10 +22392,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      65,  65,  65,  65,  65,  65,   0,   0,   0,   0,   0,   0,   0,   0,  65,  65,
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,   0,   0,   0,   0,   0,   0,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16, 186,  16, 207,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
+     16, 192,  16, 214,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66, 208,  66,
+     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66, 215,  66,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,
@@ -22005,7 +22403,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,   0,   0,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
-     68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0, 209,
+     68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0, 216,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0,   0,   0,   0,  68,  68,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,   0,
@@ -22049,23 +22447,21 @@ static RE_UINT8 script_extensions_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   0,   9,   9,   9,   9,   9,   0,   9,   0,
       9,   9,   0,   9,   9,   0,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,   1,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 217, 217,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,  10,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10, 210,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 210,   0,   0,
+     10,  10, 218,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 218,  10,  10,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   7,   7,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 198, 198,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 205, 205,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   0,   0,   0,   0,
      10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
@@ -22073,10 +22469,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   1,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 197, 197, 197, 197, 197,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-    201,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+      1, 204, 204, 204, 204, 204,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+    208,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 201, 201,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 208, 208,
       0,   0,  31,  31,  31,  31,  31,  31,   0,   0,  31,  31,  31,  31,  31,  31,
       0,   0,  31,  31,  31,  31,  31,  31,   0,   0,  31,  31,  31,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   0,
@@ -22091,10 +22487,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,   0,   0,   0,   0,   0,
-    211, 211, 211,   0,   0,   0,   0, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212,   0,   0,   0, 211, 211, 211, 211, 211, 211, 211, 211, 211,
+    219, 219, 220,   0,   0,   0,   0, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221,   0,   0,   0, 220, 220, 220, 220, 220, 220, 220, 220, 220,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22109,8 +22505,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,
      74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,
      74,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,   0,   0,   0,   0,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,   0,   0,   0,   0,
      75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
      75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
      75,  75,  75,  75,   0,   0,   0,   0,   0,   0,   0,   0,   0,  75,  75,  75,
@@ -22146,314 +22542,346 @@ static RE_UINT8 script_extensions_table_3[] = {
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  85,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,   0,   0,  87,   0,  87,  87,  87,  87,  87,  87,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,   0,  86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,   0,  87,  87,   0,   0,   0,  87,   0,   0,  87,
+     87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+     88,  88,  88,  88,  88,  88,   0,   0,  88,   0,  88,  88,  88,  88,  88,  88,
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     88,  88,  88,  88,  88,  88,   0,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
+     88,  88,  88,  88,  88,  88,   0,  88,  88,   0,   0,   0,  88,   0,   0,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     89,  89,  89,  89,  89,  89,   0,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,   0,
-      0,   0,   0,   0,   0,   0,   0,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,   0,  91,  91,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,   0,
+      0,   0,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
-     92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,   0,   0,   0,  92,
+     92,  92,  92,   0,  92,  92,   0,   0,   0,   0,   0,  92,  92,  92,  92,  92,
      93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,
-     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,   0,   0,  93,
-     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,  93,
      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,   0,   0,   0,   0,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-      0,   0,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
+     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,   0,   0,   0,   0,   0,  94,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     96,  96,  96,  96,   0,  96,  96,   0,   0,   0,   0,   0,  96,  96,  96,  96,
-     96,  96,  96,  96,   0,  96,  96,  96,   0,  96,  96,  96,  96,  96,  96,  96,
      96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
-     96,  96,  96,  96,  96,  96,   0,   0,  96,  96,  96,   0,   0,   0,   0,  96,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+      0,   0,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  97,  97,   0,  97,  97,   0,   0,   0,   0,   0,  97,  97,  97,  97,
+     97,  97,  97,  97,   0,  97,  97,  97,   0,  97,  97,  97,  97,  97,  97,  97,
      97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     97,  97,  97,  97,  97,  97,   0,   0,  97,  97,  97,   0,   0,   0,   0,  97,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100,   0,   0,   0, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0, 100, 100, 100, 100, 100,
+    100, 100, 223, 100, 100, 100, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-    101, 101, 101, 101, 101, 101,   0,   0, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101,   0,   0,   0, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
-    102, 102, 102,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
+    102, 102, 102, 102, 102, 102,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
+    103, 103, 103,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103, 103,
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104,   0,   0,   0,   0,   0,   0,   0,
+    104, 104,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104, 104, 104, 104,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0, 105, 105, 105, 105, 105, 105,
+    105, 105, 105, 105, 105, 105, 105, 105, 105,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 106, 106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0, 106, 106, 106, 106, 106, 106,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0, 107, 107, 107,   0,   0,
-    107, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
-    108, 108, 108, 108, 108, 108, 108, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108,   0, 108, 108, 108,   0,   0,
+    108, 108,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,   0,   0,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,
-      0,   0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    111, 111, 111, 111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113,   0,   0,
+    113, 113, 113, 113, 113, 113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
-    114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,
+      0,   0, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115,   0, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115, 115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
-    116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
-      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
-     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117,   0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117, 117, 117, 117,   0,   0,   0,   0,   0,   0,   0,   0,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118,   0, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,   0,
-    119, 119, 119, 119, 119, 119, 119,   0, 119,   0, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    118, 118, 118, 118, 118, 118, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
+     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    120, 120,   0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,   0,
-    121, 177, 121, 177,   0, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0, 121,
-    121,   0,   0, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121,
-    121,   0, 121, 121,   0, 121, 121, 121, 121, 121,   0, 177, 177, 121, 121, 121,
-    121, 121, 121, 121, 121,   0,   0, 121, 121,   0,   0, 121, 121, 121,   0,   0,
-    121,   0,   0,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0, 121, 121, 121,
-    121, 121, 121, 121,   0,   0, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,
-    121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,
+    121, 121, 121, 121, 121, 121, 121,   0, 121,   0, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0, 122, 122, 122,
-    122, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,   0,
+    123, 183, 123, 183,   0, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0, 123,
+    123,   0,   0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123,
+    123,   0, 123, 123,   0, 123, 123, 123, 123, 123,   0, 183, 183, 123, 123, 123,
+    123, 123, 123, 123, 123,   0,   0, 123, 123,   0,   0, 123, 123, 123,   0,   0,
+    123,   0,   0,   0,   0,   0,   0, 123,   0,   0,   0,   0,   0, 123, 123, 123,
+    123, 123, 123, 123,   0,   0, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,
+    123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124,   0,   0, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0,   0,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0, 124, 124, 124,
+    124, 124,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,
-     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,   0,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    126, 126, 126, 126, 126, 126,   0,   0, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+    127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 129,
-    130, 130, 130, 130, 130, 130, 130,   0,   0, 130,   0,   0, 130, 130, 130, 130,
-    130, 130, 130, 130,   0, 130, 130,   0, 130, 130, 130, 130, 130, 130, 130, 130,
+    129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130,   0, 130, 130,   0,   0, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 131,
+    132, 132, 132, 132, 132, 132, 132,   0,   0, 132,   0,   0, 132, 132, 132, 132,
+    132, 132, 132, 132,   0, 132, 132,   0, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
-    132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132,   0, 132, 132,   0,   0, 132, 132, 132, 132, 132,
+    132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
+    133, 133, 133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,
-    135, 135, 135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135,
+    134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,   0,   0,   0,
+    135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-      0,   0, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136, 136,   0, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137,   0, 137, 137,   0, 137, 137, 137, 137, 137,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,
+    137, 137, 137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
-    137, 137, 137, 137, 137, 137, 137,   0,   0,   0, 137,   0, 137, 137,   0, 137,
-    137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138,   0, 138, 138,   0, 138, 138, 138, 138, 138, 138,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,
-    138, 138,   0, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,   0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138, 138,   0, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139,   0, 139, 139,   0, 139, 139, 139, 139, 139,
     139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
-    139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-    177, 177,  21, 177,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    139, 139, 139, 139, 139, 139, 139,   0,   0,   0, 139,   0, 139, 139,   0, 139,
+    139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140,   0, 140, 140,   0, 140, 140, 140, 140, 140, 140,
     140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
     140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
-    140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    140, 140,   0, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,   0,
     141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+    183, 183,  21, 183,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+     21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-    142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,   0,   0,   0, 143, 143,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,
+    142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,
-    144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,
+    144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145,   0, 145, 145, 145, 145, 145,
-    145, 145,   0, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0, 146, 146,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    148, 149,   1,   1, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,
+    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,
+    148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0, 149, 149, 149, 149, 149,
+    149, 149,   0, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
-    150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,
+    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    152, 153,  56,  56, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,   0,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     58,  58,  58,  58,   0,  58,  58,  58,  58,  58,  58,  58,   0,  58,  58,   0,
      58,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   0,
+     58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      57,  57,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,  58,  58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0, 151, 151, 151, 151,
-    214, 214, 214, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155,
+    224, 224, 224, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22465,16 +22893,14 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -22493,34 +22919,42 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 152, 152, 152, 152,
-      0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 156, 156, 156, 156, 156,
+      0, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
      54,  54,  54,  54,  54,  54,  54,   0,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,   0,   0,  54,  54,  54,  54,  54,
      54,  54,   0,  54,  54,   0,  54,  54,  54,  54,  54,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0, 153, 153,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,   0, 157, 157,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0, 154,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0, 156, 156,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159,   0,   0,   0,   0,   0, 159,
+     32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,   0,  32,  32,   0,
+     32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,   0,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160,   0,   0, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0, 161, 161,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -22556,43 +22990,41 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-    199, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    206, 206,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
       1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
      56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22605,31 +23037,32 @@ static RE_UINT8 script_extensions_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 static RE_UINT16 script_extensions_table_4[] = {
-      0,   2,   4,   7,  10,  13,  19,  23,  32,  35,  39,  42,  56,  69,  90, 112,
-    117, 121, 124, 127, 130, 133, 137, 140, 145, 148, 153, 155, 158, 161, 164, 171,
-    174, 183, 187, 189, 191, 194, 197, 201, 208, 214, 216, 219, 222, 226, 229, 244,
-    258, 270, 273, 277, 280, 283, 286, 290, 293
+      0,   2,   4,   7,  10,  13,  20,  24,  32,  42,  45,  49,  52,  66,  79, 100,
+    122, 127, 131, 134, 137, 140, 143, 147, 150, 155, 158, 163, 165, 168, 171, 174,
+    181, 184, 193, 197, 199, 201, 204, 206, 209, 213, 220, 226, 228, 231, 234, 238,
+    241, 256, 270, 282, 285, 289, 292, 295, 298, 302, 305, 309, 312, 315
 };
 static RE_UINT8 script_extensions_table_5[] = {
-      5,   0,   2,   0,   7,  77,   0,   7,  54,   0,   7,   2,   0,  10, 106,  11,
-     12, 107,   0,  10,  11,  12,   0, 156,  10,  15,  99, 103, 106, 109,  11,   0,
-     10,  11,   0,  10,  12, 107,   0,  10, 106,   0,  17,  16, 121,  19,  18,  23,
-      2,  24,  20, 117,  21,  22, 123,   0,  17,  16, 121,  19,  18,  23,   2,  24,
-     20,  21,  22, 123,   0,  17,  16, 128, 138, 137, 121,  19,  18,  23, 116,  24,
-    131,  20, 120,  25,  63, 126,  21,  22, 123,   0,  17,  16, 128, 138, 137, 121,
-     19,  18,  23,  43, 116,  24, 131,  20, 120,  25,  63, 126,  21,  22, 123,   0,
-     16, 128, 113, 116,   0,  17, 115,  63,   0,  18, 119,   0,  19, 118,   0, 121,
-     21,   0,  23, 131,   0, 115,  29,  44,   0,  30,   2,   0,  39,  38,  40,  37,
-      0,  42,  64,   0,  17,  16, 121,  23,   0,  16,   0,  16, 121,   0,  17,  16,
-      0,  16, 117,   0,  16,  23,  24,  20,  21,  22,   0,  16, 131,   0,  17,  16,
-    121,  23, 131,  20,  22, 123,   0,  16, 121,  23,   0,  17,   0, 131,   0,   7,
-     11,   0,   2,  42,   0,  16, 121,   2,   0,   3,  31,  56,  57,  58,  59,   0,
-      3,  31,  56,  57,  58,   0,  56,   0,   3,  56,   0,  57,  58,   0,  56,  57,
-     58,   0,  56,   2,   0,  16, 128,  19,  18, 118,  23, 113, 116,  24, 125, 131,
-    120, 126, 123,   0,  16, 128,  19,  18, 118,  23, 113, 116, 125, 131, 120, 126,
-    123,   0,  16, 128,  19,  18, 118, 113, 116, 125, 120, 126, 123,   0,  16,  21,
-      0,  66,   2,  29,   0,  46,  68,   0,  10,  12,   0,  87,  72,   0,  87,  86,
-     72,   0,  10,   6,   0, 151,   0
+      5,   0,   2,   0,   7,  77,   0,   7,  54,   0,   7,   2,   0,  10,  13, 107,
+     11,  12, 108,   0,  10,  11,  12,   0, 161,  10,  13, 107,  11,  12, 108,   0,
+    161,  10,  15, 100, 111, 104, 107, 110,  11,   0,  10,  11,   0,  10,  12, 108,
+      0,  10, 107,   0,  17,  16, 123,  19,  18,  23,   2,  24,  20, 119,  21,  22,
+    125,   0,  17,  16, 123,  19,  18,  23,   2,  24,  20,  21,  22, 125,   0,  17,
+     16, 130, 140, 139, 123,  19,  18,  23, 118,  24, 133,  20, 122,  25,  63, 128,
+     21,  22, 125,   0,  17,  16, 130, 140, 139, 123,  19,  18,  23,  43, 118,  24,
+    133,  20, 122,  25,  63, 128,  21,  22, 125,   0,  16, 130, 115, 118,   0,  17,
+    117,  63,   0,  18, 121,   0,  19, 120,   0, 123,  21,   0,  23, 133,   0, 117,
+     29,  44,   0,  30,   2,   0,  39,  38,  40,  37,   0,  42,  64,   0,  17,  16,
+    123,  23,   0,  16,   0,  16, 123,   0,  17,  16,   0,  16, 119,   0,  16,  23,
+     24,  20,  21,  22,   0,  16, 133,   0,  17,  16, 123,  23, 133,  20,  22, 125,
+      0,  16, 123,  23,   0,  17,   0, 133,   0,   7,  11,   0,  11,   0,   2,  42,
+      0,  16, 123,   2,   0,   3,  31,  56,  57,  58,  59,   0,   3,  31,  56,  57,
+     58,   0,  56,   0,   3,  56,   0,  57,  58,   0,  56,  57,  58,   0,  56,   2,
+      0,  16, 130,  19,  18, 120,  23, 115, 118,  24, 127, 133, 122, 128, 125,   0,
+     16, 130,  19,  18, 120,  23, 115, 118, 127, 133, 122, 128, 125,   0,  16, 130,
+     19,  18, 120, 115, 118, 127, 122, 128, 125,   0,  16,  21,   0,  66,   2,  29,
+      0,  46,  68,   0,  10,  13,   0,  10,  12,   0, 143,  88,  72,   0,  88,  72,
+      0,  88,  87,  72,   0,  10,   6,   0, 100, 111,   0, 155,   0
 };
 
 int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
@@ -22648,13 +23081,13 @@ int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
     v = script_extensions_table_2[(v << 5) | field_1];
     v = script_extensions_table_3[(v << 5) | field_0];
 
-    if (v < 158) {
+    if (v < 163) {
         scripts[0] = v;
 
         return 1;
     }
 
-    offset = script_extensions_table_4[v - 158];
+    offset = script_extensions_table_4[v - 163];
     count = 0;
 
     do {
@@ -22669,72 +23102,72 @@ int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
 static RE_UINT8 re_sentence_break_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21,
-    22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 19, 19, 13, 32, 19, 19,
-    19, 33, 19, 19, 19, 19, 19, 19, 19, 19, 34, 35, 13, 13, 13, 13,
-    13, 36, 13, 37, 19, 19, 19, 19, 19, 19, 19, 19, 38, 19, 19, 39,
-    19, 19, 19, 19, 40, 41, 42, 19, 43, 19, 44, 45, 46, 47, 48, 19,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 49, 13, 13, 13, 50, 51, 13,
-    13, 13, 13, 52, 13, 13, 13, 13, 13, 13, 53, 19, 19, 19, 54, 19,
-    13, 13, 13, 13, 55, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    56, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20,
+    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 31, 13, 32, 18, 18,
+    18, 33, 18, 18, 18, 18, 18, 18, 18, 18, 34, 35, 13, 13, 13, 13,
+    13, 36, 13, 37, 18, 18, 18, 18, 18, 18, 18, 38, 39, 18, 18, 40,
+    18, 18, 18, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 53, 13, 13, 13, 54, 55, 13,
+    13, 13, 13, 56, 13, 13, 13, 13, 13, 13, 57, 18, 18, 18, 58, 18,
+    13, 13, 13, 13, 59, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    60, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18
 };
 
 static RE_UINT16 re_sentence_break_table_2[] = {
@@ -22742,116 +23175,124 @@ static RE_UINT16 re_sentence_break_table_2[] = {
       8,  16,  17,  18,  19,  20,  21,  22,  23,  23,  23,  24,  25,  26,  27,  28,
      29,  30,  18,   8,  31,   8,  32,   8,   8,  33,  34,  18,  35,  36,  37,  38,
      39,  40,  41,  42,  40,  40,  43,  44,  45,  46,  47,  40,  40,  48,  49,  50,
-     51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,  70,  71,  72,  73,  74,  75,  72,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,  97,
-     98,  99, 100,  55, 101, 102, 103,  55, 104, 105, 106, 107, 108, 109, 110,  55,
+     51,  52,  53,  54,  55,  40,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,  69,  70,  71,  72,  73,  74,  71,  75,  76,  77,  78,  79,  80,
+     81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,
+     97,  98,  99, 100, 101, 102, 103, 100, 104, 105, 106, 107, 108, 109, 110, 100,
      40, 111, 112, 113, 114,  29, 115, 116,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40, 117,  40, 118, 119, 120,  40, 121,  40, 122, 123, 124,  29,  29, 125,
-     98,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     97,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40, 126, 127,  40,  40, 128, 129, 130, 131, 132,  40, 133, 134, 135,
-    136,  40,  40, 137, 138, 139,  40, 140, 141, 142, 143, 144,  40, 145, 146,  55,
-    147,  40, 148, 149, 150, 151, 152,  55, 153, 133, 154, 155, 156, 157,  40, 158,
-     40, 159, 160, 161, 162, 163, 164, 165,  18,  18,  18,  18,  18,  18,  23, 166,
-      8,   8,   8,   8, 167,   8,   8,   8, 168, 169, 170, 171, 169, 172, 173, 174,
-    175, 176, 177, 178, 179,  55, 180, 181, 182, 183, 184,  30, 185,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55, 186, 187,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55, 188,  30, 189,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 190, 191,  55,  55, 192, 193,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 194,  55, 195, 196,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     29, 197, 198, 199,   8,   8,   8, 200,  18, 201,  40, 202, 203, 204, 204,  23,
-    205, 206, 207,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    208, 209,  98,  40, 210,  98,  40, 116, 211, 212,  40,  40, 213,  40,  55, 214,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 215,
-     40,  40,  40,  40, 216,  55, 214, 217,  40,  40,  40,  40,  40,  40,  40,  40,
-    218, 219,   8, 220, 221,  40,  40, 222, 223, 224,   8, 225, 226, 227, 228, 229,
-    230, 231,  40, 232, 233, 133, 234, 235,  49, 236, 237, 215,  59, 238, 239, 240,
-     40, 241, 242, 243,  40, 244, 245, 246, 247, 248, 249, 250,  18,  18,  40, 251,
+    136,  40,  40, 137, 138, 139,  40, 140, 141, 142, 143, 144,  40, 145, 146, 100,
+    147,  40, 148, 149, 150, 151, 152, 100, 153, 133, 154, 155, 156, 157,  40, 158,
+     40, 159, 160, 161, 162, 163, 164, 165,  18,  18,  18,  18,  18,  18,  23,  23,
+      8,   8,   8,   8, 166,   8,   8,   8, 167, 168, 169, 170, 168, 171, 172, 173,
+    174, 175, 176, 177, 178, 100, 179, 180, 181, 182, 183,  30, 184, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 185, 186, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 187,  30, 188, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 189, 190, 100, 100, 191, 192,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 193, 100, 194, 195,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     29,  30,  18, 196,   8,   8,   8, 197,  18, 198,  40, 199, 200, 201, 201,  23,
+    202, 203, 204, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    205, 206,  97,  40, 207,  97,  40, 116, 208, 209,  40,  40, 210,  40, 100, 211,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 252, 253, 254,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40, 255,  40,  40, 256,  55, 257, 258, 259,  40,  40, 260, 261,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 262, 214,  40, 263,  40, 264, 265,
-    266, 267, 268, 269,  40,  40,  40, 270, 271,   2, 272, 273, 274, 141, 275, 276,
-    277, 278, 279,  55,  40,  40,  40, 280,  55,  55,  40, 281,  55,  55,  55, 282,
-     55,  55,  55,  55, 215,  40, 283, 152,  40, 284, 285, 286, 287,  40, 288,  55,
-     29, 289, 290,  40, 287, 291, 292, 293,  40, 294,  40, 295,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 203, 140, 264,  55,  55,  55,  55,
-    296, 297, 140, 203, 141,  55,  55, 298, 140, 256,  55,  55,  40, 299,  55,  55,
-    300, 301, 302, 215, 215,  55, 106, 303,  40, 140, 140, 304, 260,  55,  55,  55,
-     40,  40, 305,  55,  29, 306,  18, 307,  40, 308,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  40, 309,  55,  55, 215, 310, 311,  55,  55, 214, 312, 203,
-    156, 313, 314, 315, 156, 316, 317, 318, 156, 319, 320, 321, 156, 238, 322,  55,
-    323, 324,  55,  55, 325, 326, 327, 328, 329, 330, 331, 332,  55,  55,  55,  55,
-     40, 333, 334, 335,  40,  46, 336,  55,  55,  55,  55,  55,  40, 337, 338,  55,
-     40,  46, 339,  55,  40, 340, 135,  55, 122, 341,  55,  55,  55,  55,  55,  55,
-     40, 342,  55,  55,  55,  29,  18, 343, 344, 345, 346,  55,  55, 347, 348, 349,
-    350, 351, 352,  40, 353,  55,  40, 137,  55,  55,  55,  55,  55,  55,  55,  55,
-    354, 355, 356, 357, 358, 359,  55,  55, 360, 361, 362, 363, 364, 135,  55,  55,
-     55,  55,  55,  55,  55,  55,  55, 365,  55,  55,  55,  55,  55, 366,  55,  55,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 256,  55,  55,  55,
-     40,  40,  40, 213,  40,  40,  40,  40,  40,  40, 295,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40, 367,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40, 368,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+     40,  40,  40,  40, 212, 100, 211, 213,  40,  40,  40,  40,  40,  40,  40,  40,
+    214, 215,   8, 216, 217,  40,  40, 218, 219, 220,   8, 221, 222, 223, 224, 225,
+    226, 227,  40, 228, 229, 133, 230, 231,  49, 232, 233, 234,  58, 235, 236, 237,
+     40, 238, 239, 240,  40, 241, 242, 243, 244, 245, 246, 247,  18,  18,  40, 248,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40, 137, 141, 369,  55,  55, 214, 370,  40, 371, 372, 373, 124,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  29,  18, 374,  55,  55,  55,  40,  40, 375,  23, 376,  55,  55, 377,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 249, 250, 251,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40, 252,  40,  40, 253, 100, 254, 255, 256,  40,  40, 257, 258,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 259, 211,  40, 260,  40, 261, 262,
+    263, 264, 265, 266,  40,  40,  40, 267, 268,   2, 269, 270, 271, 141, 272, 273,
+    274, 275, 276, 100,  40,  40,  40, 277, 100, 100,  40, 278, 100, 100, 100, 279,
+    100, 100, 100, 100, 234,  40, 280, 281,  40, 282,  54, 283, 284,  40, 285, 100,
+     29, 286, 287,  40, 284, 288, 289, 290,  40, 291,  40, 292, 293, 294, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 200, 140, 261, 295, 296, 100, 100,
+    297, 298, 140, 200, 141, 100, 100, 299, 140, 253, 100, 100,  40, 300, 100, 100,
+    301, 302, 303, 234, 234, 100, 106, 304,  40, 140, 140, 305, 257, 100, 100, 100,
+     40,  40, 306, 100,  29, 307,  18, 308,  40, 309, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100,  40, 310, 100, 100, 234, 311, 312, 211, 313, 211, 314, 200,
+    156, 315, 316, 317, 156, 318, 319, 320, 156, 321, 322, 323, 156, 235, 324, 100,
+    325, 326, 100, 100, 327, 328, 329, 330, 331, 332, 333, 334, 100, 100, 100, 100,
+     40, 335, 336, 337,  40,  46, 338, 100, 100, 100, 100, 100,  40, 339, 340, 100,
+     40,  46, 341, 100,  40, 342, 135, 100, 122, 343, 344, 100, 100, 100, 100, 100,
+     40, 345, 100, 100, 100,  29,  18, 346, 347, 348, 349, 100, 100, 350, 351, 352,
+    353, 354, 355,  40, 356, 211,  40, 137, 100, 100, 100, 100, 100, 100, 100, 100,
+    357, 358, 359, 360, 361, 362, 100, 100, 363, 364, 365, 366, 367, 135, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 368, 100, 100, 100, 100, 100, 369, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 378,
-     40,  40,  40,  40,  40,  40, 140,  55, 305,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40, 141,  55, 379, 380,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40, 254,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40, 381, 382, 383,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 384, 385, 386,  55,  55,
-     55,  55, 387,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 388, 389, 401,
-    391, 402, 403, 404, 395, 405, 406, 407, 408, 409, 410, 197, 411, 412, 413, 414,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     23, 415,  23, 416, 417, 418,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    419, 420,  55,  55,  55,  55,  55,  55,  40, 421, 422,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  40, 423,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40, 424,  55,  29, 425, 426,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    427, 428, 429, 430, 431, 432,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55, 433, 434, 434, 435,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55, 436,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 437,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 253, 100, 100, 100,
+     40,  40,  40, 210,  40,  40,  40,  40,  40,  40, 370, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 211,  40,  40, 280,
+     40, 371, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40, 344, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40, 137, 141, 372,  40, 141, 373, 374,  40, 375, 376, 377, 124, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100,  29,  18, 378, 100, 100, 100,  40,  40, 379,  23, 380, 100, 100, 381,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 382,
+     40,  40,  40,  40,  40,  40, 140, 100, 306, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 383,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 384, 385, 386,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40, 251, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40, 387, 388, 389, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  23, 390, 391, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 392, 393, 394, 100, 100,
+    100, 100, 395, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 396, 397, 409,
+    399, 410, 411, 412, 403, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     23, 424,  23, 425, 426, 427, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 428, 100, 100, 100, 100, 100, 100, 100,
+    429, 430, 100, 100, 100, 100, 100, 100,  40, 431, 432, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 211, 433,  40, 434, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 435,
+     40,  40,  40,  40,  40,  40, 436, 100,  29, 437, 438, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    439, 440, 441, 442, 443, 444, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 445, 446, 446, 447, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 448, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 449,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40, 287,  55,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40, 100,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 281,  40,  40,  40,  40,  40,  40,
-    287,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 137,  40,  40,  40,  40,  40,  40,
+    284,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40, 438,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40, 450,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 439,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 451,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-    287,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+    284, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  54,  55,  55,  55,  55,  55,
-    440,  23,  23,  23,  55,  55,  55,  55,  23,  23,  23,  23,  23,  23,  23, 441,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 452, 100, 100, 100, 100, 100,
+    453,  23,  23,  23, 100, 100, 100, 100,  23,  23,  23,  23,  23,  23,  23, 454,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
 };
 
 static RE_UINT8 re_sentence_break_table_3[] = {
@@ -22934,7 +23375,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0, 13,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     12, 12, 12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  6,  6,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 12,  0,  4,  4,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 12,  4,  4,  4,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,
@@ -22964,13 +23405,11 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,  0,
+    12, 12,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23022,9 +23461,9 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
     13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 13, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0, 14, 13, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0, 13, 13, 13,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14, 14,  0, 13, 13, 13,  0,  0, 13,  0,  0,
     13, 13, 14, 14,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 14, 14, 14,  0, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
@@ -23032,7 +23471,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0, 13, 13, 13, 13, 13,  0,  0, 14, 13, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0, 13,  0,
+     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0, 13, 13,  0,
     13, 13, 14, 14,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      0, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
@@ -23057,6 +23496,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 14, 13, 13, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 13, 13,  0, 13,  0, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23113,8 +23554,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
-    13, 13, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23127,7 +23568,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14,  0,  0,  0, 13,  0,  0,  0,  0, 13, 14,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  6,  4,  0,  0,  0,  0,  6,  4,  0, 14, 14, 14, 12,  0,
+     0,  0,  6,  4,  0,  0,  0,  0,  6,  4,  0, 14, 14, 14, 12, 14,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
@@ -23159,14 +23600,14 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 13,  4,  4,  4,  4,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  4,  4,  0,  0,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
-    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,
     14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13,
@@ -23187,8 +23628,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 14, 13, 13,
     13, 13, 13, 13, 14, 13, 13, 14, 14, 14, 13,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
      9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
      9, 10,  9, 10,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10,  9, 10,
     10, 10, 10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -23249,10 +23688,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
      9, 10,  9,  9,  9, 10, 10,  9, 10,  9, 10,  9, 10,  9,  9,  9,
      9, 10,  9, 10, 10,  9, 10, 10, 10, 10, 10, 10, 10, 10,  9,  9,
      9, 10,  9, 10, 10,  0,  0,  0,  0,  0,  0,  9, 10,  9, 10, 14,
@@ -23270,7 +23705,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  4, 13,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,
      0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  4,  4,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
      1,  6,  4,  0,  0, 13, 13, 13,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,
      0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
@@ -23285,8 +23720,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23311,10 +23744,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      9, 10,  9, 10, 10, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
      9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9,  9,  9,  9,  9, 10,
      9,  9,  9,  9,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
-     0,  0,  9, 10,  9,  9,  9,  9, 10,  9, 10,  0,  0,  0,  0,  0,
+     9, 10,  9, 10,  9,  9,  9,  9, 10,  9, 10,  0,  0,  0,  0,  0,
+     9, 10,  0, 10,  0, 10,  9, 10,  9, 10,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  9, 10, 13, 10, 10, 10, 13, 13, 13, 13, 13,
+     0,  0, 13, 13, 13,  9, 10, 13, 10, 10, 10, 13, 13, 13, 13, 13,
     13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 13, 14, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 14, 14, 14, 14, 14,  0,  0,  0,  0, 14,  0,  0,  0,
@@ -23332,6 +23765,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0, 13,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23423,10 +23858,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23446,7 +23881,15 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  0,  9,  9,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10,  0, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10,  0,  0,  0,
+    10, 13, 13, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13,  0,  0, 13,  0, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23479,6 +23922,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
+    13, 13, 14, 14, 14, 14,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23486,10 +23931,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
+    14, 13, 13, 14, 14, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 12,  4,  4,
-     4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,
+     4,  4, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23539,6 +23984,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 13,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  4,  4,  4,  0,
+    13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23589,12 +24036,14 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 14, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     12, 12, 12, 12, 12, 12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  4,  4,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,
     14, 14, 14, 14, 14,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23614,6 +24063,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,  0,
+    13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23623,6 +24076,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 14, 14,  4,
     12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14,
     14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
@@ -23677,6 +24134,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      9,  9,  9,  9,  9,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
     10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0, 10, 10, 10, 10, 10, 10,
@@ -23693,6 +24152,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
      0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 13, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
     14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14,
     14, 14,  0, 14, 14,  0, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
@@ -23701,8 +24162,12 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0, 13,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13,  0, 13, 13,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -23735,6 +24200,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -23844,57 +24311,57 @@ static RE_UINT8 re_sentence_terminal_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 11,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 14,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0,
-     0, 16,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14,  0,  0,  0,  0, 15, 16,  0,  0,  0,  0,
+     0, 17,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 17, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 19, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 21, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    23,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,
-    22,  0,  0,  0,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 24,  0,  0, 22,  0,  0, 25,  0,  0,  0,  0, 26,  0,
-     0,  0, 27,  0,  0,  0,  0, 28,  0,  0,  0,  0,  0,  0,  0, 29,
+     0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,
+    25,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 27,  0,  0, 25,  0,  0, 28,  0,  0,  0,  0, 29,  0,
+     0,  0,  3,  0,  0,  0,  0, 30,  0,  0,  0,  0,  0,  0,  0, 31,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 30,  0,  0,  0,  0,  0,  1,  0,  0, 31,  0,  0,  0,  0,
+     0,  0, 32,  0,  0,  0,  0,  0,  1,  0,  0, 33,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,
-     0,  0, 33,  0,  0,  3, 34,  0,  0,  0, 35,  0,  0,  0, 36,  0,
-     0, 37,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 39,  0,
-     0,  0, 40,  0,  0,  0,  0,  0,  0, 41,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 42,  0,  0,  0,  0,  0,
-     0,  0, 43,  0, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 40,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 44,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,  0, 35,  0,  0,  0,
+     0,  0, 36,  0,  0, 18, 37,  0,  0,  0, 38,  0,  0,  0, 39,  0,
+     0, 40,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 41,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 42,  0,
+     0,  0, 43,  0,  0,  0,  0,  0,  0, 44,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 45,  0,  0,  0,  0,  0,
+     0,  0, 46,  0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 43,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 22,  0,  0,  0, 45,  0, 44, 46,  0,  0,  0,  0,  0,
+     0,  0,  0, 25,  0,  0,  0, 48,  0, 47, 49,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 50,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 48,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_sentence_terminal_table_3[] = {
-      0,   0,   0,   0,   2,  64,   0, 128,   0,   2,   0,   0,   0,   0,   0, 192,
+      0,   0,   0,   0,   2,  64,   0, 128,   0,   2,   0,   0,   0,   0,   0, 224,
       0,   0,  16,   0,   7,   0,   0,   0,   0,   0,   0,   2,   0,   0, 128,  98,
      48,   0,   0,   0,   0,  12,   0,   0, 132,   1,   0,   0,   0,  64,   0,   0,
       0,   0,  96,   0,   8,   2,   0,   0,   0,  15,   0,   0,   0,   0,   0, 204,
-      0,   0,   0,  24,   0,   0,   0,  48, 128,   3,   0,   0,   0,  64,   0,  16,
-      4,   0,   0,   0,   0,   0,   0, 128,   0, 192,   0,   0,   0,   0, 136,   0,
-      0,   0, 192,   0,   0, 128,   0,   0,   0,   3,   0,   0,   0,   0,   0, 224,
-      0,   0,   3,   0,   0,   8,   0,   0,   0,   0, 196,   0,   2,   0,   0,   0,
-      0,   0, 224,   3, 128,   1,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,
-     96,  32,   0, 192,   0,   0,   0,  27,   0,  24,   0,   0,  12, 254, 255,   0,
-      6,   0,   0,   0,   0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,
-      0,   0, 128,   1,   0,   0,  32,   0,  16,   0,   0,   0,   0,   0,   0,   1,
-      0,   1,   0,   0
+      0,   0,   0,  96,   0,   0,   0,  24,   0,   0,   0, 192,   0,   0,   0,  48,
+    128,   3,   0,   0,   0,  64,   0,  16,   0,   0,  24,   0,   4,   0,   0,   0,
+      0,   0,   0, 128,   0, 192,   0,   0,   0,   0, 136,   0,   0,   0, 192,   0,
+      0, 128,   0,   0,   0,   3,   0,   0,   0,   0,   3,   0,   0,   8,   0,   0,
+      0,   0, 196,   0,   2,   0,   0,   0,   0,   0, 224,   3, 192,   3,   0,   0,
+    128,   1,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,  96,  32,   0, 192,
+      0,   0,   0,  27,   0,  24,   0,   0,  12, 254, 255,   0,   6,   0,   0,   0,
+      0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,   0,   0, 128,   1,
+      0,   0,  32,   0,  16,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0
 };
 
 RE_UINT32 re_get_sentence_terminal(RE_UINT32 codepoint) {
@@ -23925,7 +24392,7 @@ static RE_UINT8 re_soft_dotted_table_1[] = {
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    2, 2, 2, 2, 2, 6, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -24002,7 +24469,9 @@ static RE_UINT8 re_soft_dotted_table_2[] = {
      0,  0,  0, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 17, 18,  0, 19, 20,  0, 21,  0, 22, 23,  0, 24,  0, 17, 18,
-     0, 19, 20,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0, 19, 20,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_soft_dotted_table_3[] = {
@@ -24012,7 +24481,7 @@ static RE_UINT8 re_soft_dotted_table_3[] = {
       0,  32,   0,   0,   0,   8,   0,   0,   0,   0,   2,   0,   0,   3,   0,   0,
       0,   0,   0,  16,  12,   0,   0,   0,   0,   0, 192,   0,   0,  12,   0,   0,
       0,   0,   0, 192,   0,   0,  12,   0, 192,   0,   0,   0,   0,   0,   0,  12,
-      0, 192,   0,   0
+      0, 192,   0,   0,   0,   0,   0,   4
 };
 
 RE_UINT32 re_get_soft_dotted(RE_UINT32 codepoint) {
@@ -24120,67 +24589,67 @@ static RE_UINT8 re_terminal_punctuation_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 16,  0,  0,  0, 17,  0, 18,  0,  0,  0,  0, 19,  0,
     20,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 21,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,
-     0, 23,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 21,  0,  0,  0,  0, 22, 23,  0,  0,  0,  0,
+     0, 24,  0, 25,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 25, 26,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 26, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 27, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 28, 29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,
-    30,  0,  0,  0,  0,  0,  0, 31,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 32,  0,  0, 33,  0,  0, 34,  0,  0,  0,  0, 26,  0,
-     0,  0, 35,  0,  0,  0, 36, 37,  0,  0,  0,  0,  0,  0,  0, 38,
+     0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,  0,  0,
+    31,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 33,  0,  0, 34,  0,  0, 35,  0,  0,  0,  0, 27,  0,
+     0,  0, 36,  0,  0,  0, 37, 38,  0,  0,  0,  0,  0,  0,  0, 39,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 39,  0,  0,  0,  0,  0,  1,  0,  0, 40,  0,  0,  0,  0,
+     0,  0, 40,  0,  0,  0,  0,  0,  1,  0,  0, 41,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 36,  0, 41,  0,
-     0,  0, 42,  0,  0,  0,  0,  0, 36,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 32,  0,  0,  0,  0, 43,  0, 44,  0,  0, 45,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 37,  0, 42,  0,
+     0,  0, 43,  0,  0,  0,  0,  0, 37,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 33,  0,  0,  0,  0, 44,  0, 45,  0,  0, 46,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 46,  0,  0,  0,  0,  0,
-     0,  0, 47,  0,  0, 24, 48,  0,  0,  0, 49,  0,  0,  0, 50,  0,
-     0, 51,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 52,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 53,  0,
-     0,  0, 29,  0,  0,  0,  0,  0,  0, 54,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55,  0,  0,  0,  0,  0,
-     0,  0, 56,  0, 57, 29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 49, 58,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 60,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 47,  0, 48,  0,  0,  0,
+     0,  0, 49,  0,  0, 25, 50,  0,  0,  0, 51,  0,  0,  0, 52,  0,
+     0, 53,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 54,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55,  0,
+     0,  0, 30,  0,  0,  0,  0,  0,  0, 56,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,
+     0,  0, 58,  0, 59, 30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 51, 60,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 62,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 33,  0,  0,  0, 61,  0, 62, 63,  0,  0,  0,  0,  0,
+     0,  0,  0, 34,  0,  0,  0, 63,  0, 64, 65,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 37,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_terminal_punctuation_table_3[] = {
       0,   0,   0,   0,   2,  80,   0, 140,   0,   0,   0,  64, 128,   0,   0,   0,
-      0,   2,   0,   0,   8,   0,   0,   0,   0,  16,   0, 200,   0,   0,  16,   0,
+      0,   2,   0,   0,   8,   0,   0,   0,   0,  16,   0, 232,   0,   0,  16,   0,
     255,  23,   0,   0,   0,   0,   0,   3,   0,   0, 255, 127,  48,   0,   0,   0,
       0,   0,   0,  12,   0, 225,   7,   0,   0,  12,   0,   0, 254,   1,   0,   0,
       0,  64,   0,   0,   0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,   4,
-     60,   3,   0,   0,   0,  15,   0,   0,   0,   0,   0, 236,   0,   0,   0, 248,
-      0,   0,   0, 192,   0,   0,   0,  48, 128,   3,   0,   0,   0,  64,   0,  16,
-      2, 208,   0,   0,   6,   0,   0,   0,   0, 224,   0,   0,   0,   0, 248,   0,
-      0,   0, 192,   0,   0, 192,   0,   0,   0, 128,   0,   0,   0,   0,   0, 224,
-      0,   0,   0, 128,   0,   0,   3,   0,   0,   8,   0,   0,   0,   0, 247,   0,
-     18,   0,   0,   0,   0,   0,   1,   0,   0,   0, 128,   0,   0,   0,  63,   0,
-      0,   0,   0, 252,   0,   0,   0,  30,   0,   0, 224,   3, 128,  63,   0,   0,
-      3,   0,   0,   0,  14,   0,   0,   0,  96,  32,   0, 192,   0,   0,   0,  31,
-      0,  56,   0,  12,  60, 254, 255,   0,   0,   0,   0, 112,  80,   0,   0,   0,
-     12,   0,   0,   0,   0,   0,   0,  24,   0,   0,   2,   0,   0,   0, 128,   1,
-      0,   0,  31,   0,   0,   0,  32,   0,   0,   0, 128,   3,  16,   0,   0,   0,
-    128,   7,   0,   0
+     60,   3,   0,   0,   0,  15,   0,   0,   0,   0,   0, 236,   0,   0,   0,  96,
+      0,   0,   0, 248,   0,   0,   0, 192,   0,   0,   0,  48, 128,   3,   0,   0,
+      0,  64,   0,  16,   2, 208,  24,   0,   6,   0,   0,   0,   0, 224,   0,   0,
+      0,   0, 248,   0,   0,   0, 192,   0,   0, 192,   0,   0,   0, 128,   0,   0,
+      0,   0,   0, 224,   0,   0,   0, 128,   0,   0,   3,   0,   0,   8,   0,   0,
+      0,   0, 247,   0,  18,   0,   0,   0,   0,   0,   1,   0,   0,   0, 128,   0,
+      0,   0,  63,   0,   0,   0,   0, 252,   0,   0,   0,  30,   0,   0, 224,   3,
+    192,   3,   0,   0, 128,  63,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,
+     96,  32,   0, 192,   0,   0,   0,  31,   0,  56,   0,  12,  60, 254, 255,   0,
+      0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,   0,   0,   0,  24,
+      0,   0,   2,   0,   0,   0, 128,   1,   0,   0,  31,   0,   0,   0,  32,   0,
+      0,   0, 128,   3,  16,   0,   0,   0, 128,   7,   0,   0
 };
 
 RE_UINT32 re_get_terminal_punctuation(RE_UINT32 codepoint) {
@@ -24204,74 +24673,74 @@ RE_UINT32 re_get_terminal_punctuation(RE_UINT32 codepoint) {
 
 /* Unified_Ideograph. */
 static RE_UINT8 re_unified_ideograph_table_1[] = {
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,
-     1,  1,  1,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  5,  1,  1,  1,  6,  7,  1,
-     1,  1,  1,  8,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,  0,
-     1,  1,  1,  1, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+    1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 5, 6, 1,
+    1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
 static RE_UINT8 re_unified_ideograph_table_2[] = {
@@ -24281,28 +24750,26 @@ static RE_UINT8 re_unified_ideograph_table_2[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
     5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 0, 0, 0, 0, 0
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0
 };
 
 static RE_UINT8 re_unified_ideograph_table_3[] = {
-      0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255,  31,   0, 192,  26, 128,
-    154,   3,   0,   0, 255, 255, 255,  63, 255, 255,  31,   0,   3,   0, 255, 255,
-      1,   0,   0,   0, 255,   7,   0,   0
+      0,   0,   0,   0, 255, 255, 255, 255,   0, 192,  26, 128, 154,   3,   0,   0,
+    255, 255, 255,   1, 255, 255, 255,  63,   3,   0, 255, 255,   1,   0,   0,   0,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_unified_ideograph(RE_UINT32 codepoint) {
@@ -24411,25 +24878,25 @@ static RE_UINT8 re_uppercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 40, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    18, 41,  0, 42,  3,  3,  3, 43,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 19,  0, 41,  3,  3,  3, 42,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  3, 44, 45,  0,  0,  0,  0, 46,  3, 47, 48, 49, 50, 51,
+     0,  0,  3, 43, 44,  0,  0,  0,  0, 45,  3, 46, 47, 48, 49, 50,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    18, 52,  0,  0,  0, 26, 53,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 51,  0,  0,  0, 26, 52,  0,  0,  0,  0, 53, 54,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 18, 54,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 18, 55,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    55, 56, 57, 58, 59, 60, 26, 61, 62, 63, 64, 65, 66, 55, 56, 57,
-    58, 67, 25, 26, 61, 58, 68, 69, 70, 71, 40, 41, 26, 72, 73,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 18, 74,  0,  0,  0,  0,  0,  0,
+    56, 57, 58, 59, 60, 61, 26, 62, 63, 64, 65, 66, 67, 56, 57, 58,
+    59, 68, 25, 26, 62, 59, 69, 70, 71, 72, 40, 73, 26, 74, 75,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 76,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 75, 75, 61,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 77, 77, 62,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -24444,15 +24911,16 @@ static RE_UINT8 re_uppercase_table_3[] = {
      85,  85,  21,  64,   0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,
       0, 255,   0,   0,   0,   0,   0,  15,   0,  15,   0,  15,   0,  31,   0,  15,
     132,  56,  39,  62,  80,  61,  15, 192,  32,   0,   0,   0,   8,   0,   0,   0,
-      0,   0, 192, 255, 255, 127,   0,   0, 157, 234,  37, 192,   5,  40,   4,   0,
-     85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,
-     85,  40,  69,  85,  85, 125,  95,  85, 244,   2,   0,   0,   0,   0,  32,   0,
-    255,   0,   0,   0, 255, 255,  15,   0, 255, 255,   7,   0, 255, 255, 255,   3,
-      0,   0, 240, 255, 255,  63,   0,   0,   0, 255, 255, 255,   3,   0,   0, 208,
-    100, 222,  63,   0, 255,   3,   0,   0, 176, 231, 223,  31,   0,   0,   0, 123,
-     95, 252,   1,   0,   0, 240, 255, 255,  63,   0,   0,   0,   3,   0,   0, 240,
-      1,   0,   0,   0, 252, 255, 255,   7,   0,   0,   0, 240, 255, 255,  31,   0,
-    255,   1,   0,   0,   0,   4,   0,   0,   3,   0,   0,   0, 255,   3, 255, 255
+      0,   0, 192, 255, 157, 234,  37, 192,   5,  40,   4,   0,  85,  21,   0,   0,
+     85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,  85,  40,  69,  85,
+     85, 125,  95,  85, 245,   2,  65,   1,   0,   0,  32,   0, 255,   0,   0,   0,
+    255, 255,  15,   0,   0,   0, 255, 247, 255, 247,  55,   0, 255, 255,   7,   0,
+    255, 255, 255,   3,   0,   0, 240, 255, 255,  63,   0,   0,   0, 255, 255, 255,
+      3,   0,   0, 208, 100, 222,  63,   0, 255,   3,   0,   0, 176, 231, 223,  31,
+      0,   0,   0, 123,  95, 252,   1,   0,   0, 240, 255, 255,  63,   0,   0,   0,
+      3,   0,   0, 240,   1,   0,   0,   0, 252, 255, 255,   7,   0,   0,   0, 240,
+    255, 255,  31,   0, 255, 127,   0,   0, 255,   1,   0,   0,   0,   4,   0,   0,
+      3,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_uppercase(RE_UINT32 codepoint) {
@@ -24478,6 +24946,8 @@ RE_UINT32 re_get_uppercase(RE_UINT32 codepoint) {
 RE_UINT32 re_get_variation_selector(RE_UINT32 codepoint) {
     if (0x180B <= codepoint && codepoint <= 0x180D)
         return 1;
+    if (codepoint == 0x180F)
+        return 1;
     if (0xFE00 <= codepoint && codepoint <= 0xFE0F)
         return 1;
     if (0x0E0100 <= codepoint && codepoint <= 0x0E01EF)
@@ -24599,17 +25069,17 @@ RE_UINT32 re_get_white_space(RE_UINT32 codepoint) {
 static RE_UINT8 re_word_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 39, 40, 41, 10, 42, 10, 43, 44, 45, 10, 46, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 10, 50, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
-    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
-    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 51, 13, 13, 13, 52, 53, 13,
+    13, 13, 13, 54, 13, 13, 13, 13, 13, 13, 55, 10, 10, 10, 56, 10,
+    13, 13, 13, 13, 57, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24653,7 +25123,7 @@ static RE_UINT8 re_word_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    54, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    58, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24672,183 +25142,193 @@ static RE_UINT16 re_word_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  11,   6,   6,   6,   6,  13,  14,   6,  15,  16,  17,  18,
      19,   6,   6,  20,   6,   6,  21,  22,  23,   6,  24,   6,   6,  25,   6,  26,
-      6,  27,  28,  29,   0,  30,  31,  11,   6,   6,   6,  32,  33,  34,  35,  36,
-     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
-     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
-      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,   0,  89,   6,   6,  90,
-     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  91,   3,   6,   6,  92,  93,  94,  95,  96,   6,   6,  97,  98,
-     99,   6,   6, 100,   6, 101,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
-     28,   6, 103, 109, 108, 110, 111,   0,   6,   6, 112, 113,   6,   6,   6,  95,
-      6, 114, 115,  80, 116,  88, 117,  67,   6,   6,   6,   6,   6,   6,   6, 118,
-      6,   6,   6,   6,   6,   6,   6,   6,  90,   6, 119,  80,   6, 120, 121, 122,
-    123, 124, 125, 126, 127,   0,  23, 128, 129, 130, 131,   6, 132,   0,   0,   0,
+      6,  27,  28,  29,  30,   6,   6,  11,   6,   6,   6,  31,  32,  33,  34,  35,
+     36,  37,  38,  39,  40,  41,  42,  43,  44,  41,  45,  46,  47,  48,  49,  50,
+     51,  52,  53,  54,  55,  56,  57,  58,  51,   6,  59,  60,  61,  62,  63,  64,
+     65,  66,  67,   0,  68,  69,  70,   0,  71,  72,  73,  74,  75,  76,  77,   0,
+      6,   6,  78,   6,  79,   6,  80,  81,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  82,   6,  83,  84,  85,   6,  86,   6,  87,   0,  88,   6,   6,  89,
+     65,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  90,   3,   6,   6,  91,  92,  93,  94,  95,   6,   6,  96,  97,
+     98,   6,   6,  99,   6,  29,   6, 100, 101, 102, 103, 104,   6, 105, 106,   0,
+     28,   6, 101, 107, 106, 108, 109,   0,   6,   6, 110, 111,   6,   6,   6,  94,
+      6, 112, 113,  79, 114,  87, 115,  66,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  89,   6, 116,  79,   6, 117, 118, 119,
+    120, 121, 122, 123, 124,   0,  23, 125, 126, 127, 128,   6, 129,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 133,   6,  98,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   6,  97,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 134, 103,   6,   6,   6,   6, 135,   6,  81,   6, 136, 137, 138, 138,   6,
-      0, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  66,   6, 142,  66,   6,  82, 143,  13,   6,   6, 144,   6,   0,  23,
+      6,   6,   6,   6,   6,   6,   6, 131,   6,  80,   6, 132, 133, 134, 134,   6,
+      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    136, 137,  65,   6, 138,  65,   6,  81, 139,  13,   6,   6, 109,   6,   0,  23,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  23,  79,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  25, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  94,   6,   6, 150, 151,   6, 152,  94,  76,   6,   6, 153, 101,
+      6, 133, 154, 155,   6,   6, 156, 157, 158, 159,  81,  78,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  77,
-      6,   6,   6,   6, 145,   0,  23,  80,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  25, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  95,   6,   6, 155, 156,   6, 157,  95,  77,   6,   6, 158, 103,
-      6, 137, 159, 160,   6,   6, 161, 162, 163, 164,  82,  79,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  28,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  28,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  25, 172,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  80,  23,   6, 173,   6, 174, 175,
-     89, 176, 177, 178,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  67,   0,   0,   6,  94,   0,   0,   0, 183,
-      0,   0,   0,   0,  77,   6, 128, 111,   6, 184, 101,  67,  80,   6, 185,   0,
-      6,   6,   6,   6,  80,  79, 186,  28,   6, 187,   6, 188,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 137, 102, 174,   0,   0,   0,   0,
-    189, 190, 102, 137, 103,   0,   0, 191, 102, 168,   0,   0,   6, 192,   0,   0,
-    193, 194,   0,  77,  77,   0,  74, 195,   6, 102, 102, 196,  25,   0,   0,   0,
-      6,   6, 132,   0,   6, 196,   6, 196,   6, 197,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 198,   0,   0,  77, 110, 128,   0,   0,  23, 199, 137,
-      6,   6, 195, 200,   6,  67,  23, 201,   6,  30, 202, 203,   6,   6, 204,   0,
-    205, 206,   0,   0, 207, 116,   6, 208,  33, 209, 210, 211,   0,   0,   0,   0,
-      6,   6, 212, 213,   6,   6, 214,   0,   0,   0,   0,   0,   6, 215, 216,   0,
-      6,   6, 217,   0,   6, 100,  98,   0,  88, 112,   0,   0,   0,   0,   0,   0,
-      6,  67,   0,   0,   0,   6,   6, 218, 219, 220, 221,   0,   0, 222, 223, 224,
-      6, 103, 110,   6, 225,   0,   6, 100,   0,   0,   0,   0,   0,   0,   0,   0,
-    226,   5, 227, 228, 173, 229,   0,   0, 230, 231, 197, 232, 233,  98,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 137,   0,   0,   0,   0,   0, 234,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  25, 167,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  79,  23,   6, 168,   6, 169, 170,
+     88, 171, 172, 173,   6,   6,   6,  76,   1,   2,   3, 103,   6, 101, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  66,   0,   0,   6,  93,   0,   0,   0, 178,
+      0,   0,   0,   0,  76,   6, 125, 179,   6, 180,  29,  66,  79,   6, 181,   0,
+      6,   6,   6,   6,  79,  78, 182,  28,   6, 183,   6, 184, 185, 186,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 133, 100, 169, 187, 188,   0,   0,
+    189, 190, 100, 133, 101,   0,   0, 191, 100, 163,   0,   0,   6, 192,   0,   0,
+    193, 194,   0,  76,  76,   0,  73, 195,   6, 100, 100, 196,  25,   0,   0,   0,
+      6,   6, 129,   0,   6, 196,   6, 196,   6, 197,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 198,   0,   0,  76, 108, 125,  23, 199,  23, 200, 133,
+      6,   6, 195, 201,   6,  66, 202, 203,   6, 204, 205, 206,   6,   6, 207,   0,
+    208, 209,   0,   0, 210, 114,   6, 211,  32, 212, 213, 214,   0,   0,   0,   0,
+      6,   6, 215, 216,   6,   6, 217,   0,   0,   0,   0,   0,   6, 218, 219,   0,
+      6,   6, 220,   0,   6,  99,  97,   0,  87, 221, 195,   0,   0,   0,   0,   0,
+      6,  66,   0,   0,   0,   6,   6, 222, 223, 224, 225,   0,   0, 226, 227, 228,
+      6, 101, 108,   6, 229,  23,   6,  99,   0,   0,   0,   0,   0,   0,   0,   0,
+    230,   5, 231, 148, 168, 232,   0,   0, 233, 234, 197, 235, 236,  97,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,   0, 237,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 188,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 109,   6,   6,   6,   6,   6,   6, 238,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  23,   6,   6, 125,
+      6, 109,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 195,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 100, 103,  98,   0,   0,  23, 106,   6, 137, 221, 235,  89,   0,   0,   0,
+      6,  99, 101,  78,   6, 101,  78, 104,   6, 133, 225, 239,  88,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 236,   6, 237,   0,   0, 238,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 240,   6, 241,   0,   0, 242,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
-      6,   6,   6,   6,   6,   6, 102,   0, 132,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 112,
+      6,   6,   6,   6,   6,   6, 100,   0, 129,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 103,   0, 239, 202,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 243,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 244, 245, 205,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  28,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 240, 241,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 246, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 195,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 248, 249, 250,   0,   0,
+      0,   0, 251,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 204,   6, 252, 253, 254,   6, 255, 256, 257,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 258, 259,  81, 204, 204, 260, 260, 230, 230, 261,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6, 262,   6, 263, 264, 265,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242, 243, 244,   0,   0,
-      0,   0, 245,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  30,   6, 246, 247, 248,   6, 249, 250, 251,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 252, 253,  82,  30,  30, 134, 134, 226, 226, 254,   6,
+      0,   0,   0,   0,   0,   0,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,
+    266, 267,   0,   0,   0,   0,   0,   0,   6, 268, 269,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  23, 109,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 255,   6, 256, 257, 258,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    259, 260,   0,   0,   0,   0,   0,   0,   6, 261, 262,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 263,   0,   6,   6, 112,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 270,
+      6,   6,   6,   6,   6,   6, 271,   0,   6,   6, 221,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    248, 264, 265, 266, 267, 268,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  23,  79,  79,  98,   0,   0,   0,
+    254, 272, 273, 274, 275, 276,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  23,  78,  78,  97,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  80,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  94,   6,   6,   6,   6,   6,   6,
-     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  99,   6,   6,   6,   6,   6,   6,
+     79,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 269,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 277,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 111,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 179,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     79,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  89,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 278,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  88,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
-
-static RE_UINT8 re_word_table_3[] = {
-      0,   0,   0,   0,   0,   0, 255,   3, 254, 255, 255, 135, 254, 255, 255,   7,
-      0,   4,  32,   4, 255, 255, 127, 255, 255, 255, 255, 255, 195, 255,   3,   0,
-     31,  80,   0,   0, 255, 255, 223, 188,  64, 215, 255, 255, 251, 255, 255, 255,
-    255, 255, 191, 255, 255, 255, 254, 255, 255, 255, 127,   2, 255,   1, 254, 255,
-    255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,   0,   0, 255,   7,
-    255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,   0,   0, 255, 255,
-    255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36, 255,  63,   0,   0,
-    255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 248, 255,
-    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
-    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
-    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
-    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
-    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
-    255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7, 207, 255,   0,   0,
-    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0,
-    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
-    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
-    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
-      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
-    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
-    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255, 231, 255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255,
-    255, 199, 255,   1, 255, 223,  31,   0, 255, 255,  31,   0, 255, 255,  15,   0,
-    255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,   0,  56, 255,   3,
-    255, 255, 255,   1, 255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
-    255,   3, 255,   3, 255, 255, 255, 159, 128,   0, 255, 255,   1,   0,   0,   0,
-    255,  15, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255,
-    255,   1, 255, 255,   0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170,
-    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,  48,   0,   0,
-      0,   0,   0, 128,   1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31,
-    255, 255,   1,   0, 132, 252,  47,  62,  80, 189, 255, 243, 224,  67,   0,   0,
-    255,   1,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,  31, 248,  15,   0,
+
+static RE_UINT8 re_word_table_3[] = {
+      0,   0,   0,   0,   0,   0, 255,   3, 254, 255, 255, 135, 254, 255, 255,   7,
+      0,   4,  32,   4, 255, 255, 127, 255, 255, 255, 255, 255, 195, 255,   3,   0,
+     31,  80,   0,   0, 255, 255, 223, 188,  64, 215, 255, 255, 251, 255, 255, 255,
+    255, 255, 191, 255, 255, 255, 254, 255, 255, 255, 127,   2, 255,   1, 254, 255,
+    255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,   0,   0, 255,   7,
+    255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,   0,   0, 255, 255,
+    255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36, 255,  63,   0,   0,
+    255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255, 207, 255, 254, 255,
+    239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255,   3,  80,
+    238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94, 192, 255,  63,   0,
+    238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   0, 254,
+    238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0, 236, 199,  61, 214,
+     24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0, 255, 223, 253, 255,
+    255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0, 239, 223, 253, 255,
+    255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0, 223, 125, 240, 128,
+    207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255,
+    192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 255, 127, 255,   3,
+    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,   1,   0,   0,   3,
+    255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255, 223, 255, 255, 254,
+    255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255, 255, 255, 255,  63,
+    191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61, 255,  61, 255, 255,
+    255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255, 255, 231,
+    255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
+    255, 255,  63, 128, 255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 143,  48, 255,   3,   0,   0,   0, 184, 255,   3, 255, 255, 255,   1,
+    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3, 255, 255, 255, 159,
+    128,   0, 255, 255, 255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0,
+    255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,
+     63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
+      0,  48,   0,   0,   0,   0,   0, 128,   1,   0,  16,   0,   0,   0,   2, 128,
+      0,   0, 255,  31, 255, 255,   1,   0, 132, 252,  47,  62,  80, 189, 255, 243,
+    224,  67,   0,   0, 255,   1,   0,   0,   0,   0, 192, 255,  31, 248,  15,   0,
     255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,   0, 128,   0,   0,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 230, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 247, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 247, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,   1,   0,   0,   0,
       0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
-     15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+     15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
     255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135, 127,   0,   0,   0,
-    255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,  31,   0,   0,   0,
-    192, 255,   0, 128, 255,   1, 255,   3, 240,   0, 255, 255, 255, 255,  79,   0,
-     31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64, 127, 189, 255, 191,
-    255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0,
-    255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3, 255, 255,  63, 255,
-      1,   0,   0,  63,  17,   0, 255,   3, 255,   3,   0, 128, 127, 242, 111, 255,
+    255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,  63,   0,   0,   0,
+     31,   0,   0,   0, 192, 255,  63, 128,   4,   0, 255, 255, 255,   1, 255,   3,
+    255, 255, 223, 255, 240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23,
+    255, 255, 251, 255, 255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3,
+    255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,
+      3,   0,   0,   0, 191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,
+     17,   0, 255,   3, 255,  15, 255,   3, 255,   3,   0, 128, 127, 242, 111, 255,
     255, 255, 191, 249,  15,   0, 255,   3, 255, 252, 255, 255, 255, 255, 255, 252,
      27,   0,   0,   0, 255, 255, 255,  35, 255, 253, 255, 255,   1,   0, 255,   3,
-      0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
-    191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0, 248, 255, 255, 224,
-    255, 135, 255, 255, 255, 128, 255, 255,  27,   0,   3,   0,   0,   0,   7,   0,
-    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
-      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 253, 255, 255, 247, 247, 207, 255, 255, 255, 255, 127, 248,
-    255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
-    219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,  31,   0, 127,   0,
+    255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255,
+    255, 127, 251,   1,   0,   0,   1,   0,  15,   0,   0,   0, 248, 255, 255, 224,
+    255, 135, 255, 255, 255, 128, 255, 255,  27,   0,   3,   0,   0,   0, 239, 111,
+      7,   0,   0,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
+    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
+    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
+    255, 127, 255, 255, 247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,
+     16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+    255,  31, 255,  63, 255,  67,   0,   0, 127, 111, 255, 127,  31,   0, 127,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
-    238, 251, 255,  15,   3,   0, 255, 255
+    238, 251, 255,  15,   3,   0, 255, 255, 255,   7,   0,   0
 };
 
 RE_UINT32 re_get_word(RE_UINT32 codepoint) {
@@ -24876,10 +25356,10 @@ static RE_UINT8 re_word_break_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 13, 14, 15, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 16, 10, 10, 10, 10, 10, 10, 10, 10, 17, 18,
-    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 10, 10, 13, 29, 10, 10,
-    10, 30, 10, 10, 10, 10, 10, 10, 10, 10, 31, 32, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 33, 10, 10, 34,
-    10, 10, 10, 10, 35, 36, 37, 10, 38, 10, 39, 40, 41, 10, 42, 10,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 10, 29, 13, 30, 10, 10,
+    10, 31, 10, 10, 10, 10, 10, 10, 10, 10, 32, 33, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 34, 35, 10, 10, 36,
+    10, 10, 10, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 10, 47, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24928,7 +25408,7 @@ static RE_UINT8 re_word_break_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    43, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    48, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24947,90 +25427,100 @@ static RE_UINT16 re_word_break_table_2[] = {
       7,   7,   7,   7,   7,   7,   8,   7,   9,   9,   9,  10,  11,  12,   7,  13,
       7,   7,   7,   7,  14,   7,   7,   7,   7,  15,  16,   7,  17,  18,  19,  20,
      21,   7,  22,  23,   7,   7,  24,  25,  26,  27,  28,   7,   7,  29,  30,  31,
-     32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
-     48,  49,  50,  51,  52,  53,  54,  55,  56,  53,  57,  58,  59,  60,  61,  62,
-     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
-     36,  79,  80,  36,  36,  81,  82,  36,  83,  84,  85,  86,  87,  88,  89,  36,
-     36,  90,  91,  92,  93,   7,  94,  95,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,  96,   7,  97,  98,  99,   7, 100,   7, 101,  36, 102,   7,   7, 103,
+     32,  33,  34,  35,  36,   7,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  52,  56,  57,  58,  59,  60,  61,
+     62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
+     78,  79,  80,  78,  78,  81,  82,  78,  83,  84,  85,  86,  87,  88,  89,  78,
+     78,  90,  91,  92,  93,   7,  94,  95,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,  96,   7,  97,  98,  99,   7, 100,   7, 101,  78, 102,   7,   7, 103,
     104,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7, 105, 106,   7,   7, 107, 108, 109, 110, 111,  36, 112, 113, 114,
-    115,   7,   7, 116, 117, 118,   7, 119, 120, 121,  62,  36,  36,  36, 122,  36,
-    123,  36, 124, 125, 126, 127, 128,  36, 129, 130, 131, 132, 133, 134,   7, 135,
-      7, 136, 137, 138, 139, 140, 141, 142,   7,   7,   7,   7,   7,   7,   9, 143,
-      7,   7,   7,   7,   7,   7,   7,   7, 103,   7, 144, 138,   7, 145, 146, 147,
-    148, 149, 150, 151, 152,  36, 127, 153, 154, 155, 156,   7, 157,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36, 158,   7, 159,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7, 160, 120,   7,   7,   7,   7, 161,   7,  94,   7, 162, 163, 164, 164,   9,
-     36, 165,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    166, 167,  36,  36, 168, 169, 169, 170, 171,  15,   7,   7, 172,   7,  36, 173,
-     36,  36,  36,  36,  36,  36, 173, 174, 169, 169, 175,  36,  36,  36,  36,  36,
+      7,   7,   7, 105, 106,   7,   7, 107, 108, 109, 110, 111,  78, 112, 113, 114,
+    115,   7,   7, 116, 117, 118,   7, 119, 120, 121,  61,  78,  78,  78, 122,  78,
+    123,  78, 124, 125, 126, 127, 128,  78, 129, 130, 131, 132, 133, 134,   7, 135,
+      7, 136, 137, 138, 139, 140, 141, 142,   7,   7,   7,   7,   7,   7,   9,   9,
+      7,   7,   7,   7,   7,   7,   7,   7, 103,   7, 143, 138,   7, 144, 145, 146,
+    147, 148, 149, 150, 151,  78, 127, 152, 153, 154, 155,   7, 156,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78, 157,   7, 158,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7,   7,   7,   7,   7,   7, 159,   7,  94,   7, 160, 161, 162, 162,   9,
+     78, 163,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+    164, 165,  78,  78, 166, 167, 167, 168, 169,  15,   7,   7, 170,   7,  78, 171,
+     78,  78,  78,  78,  78,  78, 171, 172, 167, 167, 173,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7, 176,  36, 177, 138,   7,   7,   7,   7,   7,   7,   7,   7,
-    178, 179,   7, 180, 181,   7,   7, 182, 183,   7,   7,   7,   7,   7, 184, 185,
-    186, 187,   7, 188, 189, 130, 190, 191,  30, 192, 193, 194,  40, 195, 196, 197,
-      7, 198, 199, 200,  36, 201, 202, 203, 204, 205,   7, 206,   7,   7,   7, 207,
+      7,   7,   7,   7, 174,  78, 175, 138,   7,   7,   7,   7,   7,   7,   7,   7,
+    176, 177,   7, 178, 179,   7,   7, 180, 181,   7,   7,   7,   7,   7, 182, 183,
+    184, 185,   7, 186, 187, 130, 188, 189,  30, 190, 191, 192,  39, 193, 194, 195,
+      7, 196, 197, 198,  78, 199, 200, 201, 202, 203,   7, 204,   7,   7,   7, 205,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 208, 209, 210,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36, 211, 212, 213,   7,   7, 214, 215,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 138, 177,   7, 216,   7, 217, 218,
-    219, 220, 221, 222,   7,   7,   7, 223, 224,   2,   3, 225, 226, 120, 227, 228,
-    229, 230, 231,  36,   7,   7,   7, 232,  36,  36,   7, 233,  36,  36,  36, 234,
-     36,  36,  36,  36, 194,   7, 235, 128,   7, 236, 237, 238, 138,   7, 239,  36,
-      7,   7,   7,   7, 138, 240, 241, 210,   7, 242,   7, 243,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 163, 119, 217,  36,  36,  36,  36,
-    244, 245, 119, 163, 120,  36,  36, 246, 119, 247,  36,  36,   7,   8,  36,  36,
-    248, 249,  36, 194, 194,  36,  85, 250,   7, 119, 119, 251, 214,  36,  36,  36,
-      7,   7, 157,  36,   7, 251,   7, 251,   7, 252,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,   7, 253,  36,  36, 194, 254, 255,  36,  36, 177, 256, 163,
-    133, 257, 258, 259, 133, 260, 261, 262, 133, 263, 264, 265, 133, 195, 266,  36,
-    267, 268,  36,  36, 269, 139, 270, 271, 272, 273, 274, 275,  36,  36,  36,  36,
-      7, 276, 277, 278,   7,  27, 279,  36,  36,  36,  36,  36,   7, 280, 281,  36,
-      7,  27, 282,  36,   7, 283, 114,  36, 284, 285,  36,  36,  36,  36,  36,  36,
-      7, 286,  36,  36,  36,   7,   7, 287, 288, 289, 290,  36,  36, 291, 292, 293,
-    294, 295, 296,   7, 297,  36,   7, 116,  36,  36,  36,  36,  36,  36,  36,  36,
-    298, 299, 300, 301, 302, 303,  36,  36, 304, 305, 306, 307, 308, 114,  36,  36,
-     36,  36,  36,  36,  36,  36,  36, 309,  36,  36,  36,  36,  36, 310,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 206, 207, 208,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78, 209, 210, 211,   7,   7, 212, 213,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 138, 175,   7, 214,   7, 215, 216,
+    217, 218, 219, 220,   7,   7,   7, 221, 222,   2,   3, 223, 224, 120, 225, 226,
+    227, 228, 229,  78,   7,   7,   7, 230,  78,  78,   7, 231,  78,  78,  78, 232,
+     78,  78,  78,  78, 192,   7, 233, 234,   7, 235,  35, 236, 138,   7, 237,  78,
+      7,   7,   7,   7, 138, 238, 239, 208,   7, 240,   7, 241, 242, 243,  78,  78,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 161, 119, 215, 244, 245,  78,  78,
+    246, 247, 119, 161, 120,  78,  78, 248, 119, 249,  78,  78,   7,   8,  78,  78,
+    250, 251,  78, 192, 192,  78,  85, 252,   7, 119, 119, 253, 212,  78,  78,  78,
+      7,   7, 156,  78,   7, 253,   7, 253,   7, 254,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,   7, 255,  78,  78, 192, 256, 257, 175, 258, 175, 259, 161,
+    133, 260, 261, 262, 133, 263, 264, 265, 133, 266, 267, 268, 133, 193, 269,  78,
+    270, 271,  78,  78, 272, 139, 273, 274, 275, 276, 277, 278,  78,  78,  78,  78,
+      7, 279, 280, 281,   7,  27, 282,  78,  78,  78,  78,  78,   7, 283, 284,  78,
+      7,  27, 285,  78,   7, 286, 114,  78, 287, 288,  78,  78,  78,  78,  78,  78,
+      7, 289,  78,  78,  78,   7,   7, 290, 291, 292, 293,  78,  78, 294, 295, 296,
+    297, 298, 299,   7, 300, 175,   7, 116,  78,  78,  78,  78,  78,  78,  78,  78,
+    301, 302, 303, 183, 304, 305,  78,  78, 306, 307, 308, 309, 310, 114,  78,  78,
+     78,  78,  78,  78,  78,  78,  78, 311,  78,  78,  78,  78,  78, 312,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 247,  36,  36,  36,
-      7,   7,   7, 172,   7,   7,   7,   7,   7,   7, 243,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7, 311,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 249,  78,  78,  78,
+      7,   7,   7, 170,   7,   7,   7,   7,   7,   7, 313,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 175,   7,   7, 233,
+      7, 314,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7, 312,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7, 315,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 116, 120, 114,  36,  36, 177, 313,   7, 314, 315, 316, 102,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,   7,   7,  36,  36,  36,  36,   7,   7, 317,   9, 318,  36,  36, 319,
-    320,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 321,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7, 322, 323, 324,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 325, 326, 327,  36,  36,
-     36,  36, 328,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,  37,   7, 329, 330, 331,   7, 332, 333, 334,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7, 335, 336,  95,  37,  37, 160, 160, 298, 298, 337, 338,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      9, 339,   9, 340, 341, 342,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    343, 344,  36,  36,  36,  36,  36,  36,   7, 345, 346,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,   7, 347,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7, 348,  36,   7,   7, 349,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    331, 350, 351, 352, 353, 354,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36, 177, 206, 206, 159,  36,  36, 355,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 356,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 122,
-    357,   9,   9,   9,  36,  36,  36,  36,   9,   9,   9,   9,   9,   9,   9, 358,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36
+      7, 116, 120, 238,   7, 120, 238, 316,   7, 317, 318, 319, 102,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,   7,   7,  78,  78,  78,  78,   7,   7, 320,   9, 321,  78,  78, 322,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 323,
+    324,  78,  78,  78,  78,  78,  78,  78,  78, 325,  78, 326,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7,   7, 327, 328, 329,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,   9, 330, 261,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 331, 332, 333,  78,  78,
+     78,  78, 334,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7, 335,   7, 336, 337, 338,   7, 339, 340, 341,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 342, 343,  95, 335, 335, 344, 344, 301, 301, 345, 346,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      9, 347,   9, 348, 349, 350,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78, 120,  78,  78,  78,  78,  78,  78,  78,
+    351, 352,  78,  78,  78,  78,  78,  78,   7, 353, 354,  78,  78,  78,  78,  78,
+     78,  78,  78,  78, 175, 355,   7, 356,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 357,
+      7,   7,   7,   7,   7,   7, 358,  78,   7,   7, 359,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+    338, 360, 361, 362, 363, 364,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78, 175, 204, 204, 158,  78,  78, 365,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 366,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 122,
+    367,   9,   9,   9,  78,  78,  78,  78,   9,   9,   9,   9,   9,   9,   9, 368,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78
 };
 
 static RE_UINT8 re_word_break_table_3[] = {
@@ -25105,13 +25595,11 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,  0,
+    13, 13,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25163,9 +25651,9 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
     11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 11, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0, 14, 11, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0, 11, 11, 11,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14, 14,  0, 11, 11, 11,  0,  0, 11,  0,  0,
     11, 11, 14, 14,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 14, 14, 14,  0, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
@@ -25173,7 +25661,7 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11,  0, 11, 11, 11, 11, 11,  0,  0, 14, 11, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0, 11,  0,
+     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0, 11, 11,  0,
     11, 11, 14, 14,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
@@ -25193,6 +25681,8 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -25250,8 +25740,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
-    11, 11, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25264,7 +25754,7 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 13,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 13, 14,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
@@ -25290,13 +25780,13 @@ static RE_UINT8 re_word_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -25320,8 +25810,6 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 14, 11, 11,
     11, 11, 11, 11, 14, 11, 11, 14, 14, 14, 11,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
     11, 11, 11, 11, 11, 11,  0,  0, 11, 11, 11, 11, 11, 11,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11,  0, 11,  0, 11,  0, 11,  0, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25354,8 +25842,6 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 14,
     14, 14, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0, 11,
@@ -25402,10 +25888,10 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
+    11, 11,  0, 11,  0, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 14, 11, 11, 11, 14, 11, 11, 11, 11, 14, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 14, 14, 14, 14, 14,  0,  0,  0,  0, 14,  0,  0,  0,
@@ -25506,10 +25992,10 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     11, 11, 11, 11,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25521,7 +26007,15 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11,  0, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11,  0, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,  0,  0,  0,
+    11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11,  0,  0, 11,  0, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25546,6 +26040,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25553,10 +26049,10 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
+    14, 11, 11, 14, 14, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 13,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,
+     0,  0, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -25636,8 +26132,6 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
      0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14,
@@ -25656,6 +26150,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -25674,8 +26170,12 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11,  0, 11, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    17, 17, 17, 17,  0, 17, 17, 17, 17, 17, 17, 17,  0, 17, 17,  0,
     17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
@@ -25684,6 +26184,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 14, 14,  0,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,
     14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
@@ -25693,6 +26195,8 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
      0,  0, 11,  0,  0, 11, 11,  0,  0, 11, 11, 11, 11,  0, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11,  0, 11, 11, 11,
@@ -25708,6 +26212,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25728,8 +26234,12 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0, 11,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,  0, 11, 11,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 11,  0,  0,  0,  0,
@@ -25881,7 +26391,7 @@ static RE_UINT8 re_xdigit_table_2[] = {
     0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+    0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
@@ -25921,17 +26431,17 @@ RE_UINT32 re_get_xdigit(RE_UINT32 codepoint) {
 static RE_UINT8 re_xid_continue_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9, 38, 39, 40,  9, 41,  9, 42, 43,  9,  9, 44,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9, 39, 40, 41, 42, 43, 44, 45, 46, 47,  9,  9, 48,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
-    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
-    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 49, 12, 12, 12, 50, 51, 12,
+    12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 53,  9,  9,  9, 54,  9,
+    12, 12, 12, 12, 55,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25975,7 +26485,7 @@ static RE_UINT8 re_xid_continue_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    52,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    56,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25994,107 +26504,115 @@ static RE_UINT16 re_xid_continue_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  13,   6,   6,   6,   6,  14,  15,   6,  16,  17,  18,  19,
      20,   6,   6,  21,   6,   6,  22,  23,  24,   6,  25,   6,   6,  26,   6,  27,
-      6,  28,  29,  30,   0,  31,  32,  11,   6,   6,   6,  33,  34,  35,  36,  37,
-     38,  39,  40,  41,  42,  43,  44,  45,  46,  43,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,  56,  57,  58,  59,  60,  53,   6,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,   0,  70,  71,  72,   0,  73,  74,  75,  76,  77,  78,  79,   0,
-      6,   6,  80,   6,  81,   6,  82,  83,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  84,   6,  85,  86,  87,   6,  88,   6,  89,  90,  91,   6,   6,  92,
-     67,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  93,   3,   6,   6,  94,  95,  96,  97,  98,   6,   6,  99, 100,
-    101,   6,   6, 102,   6, 103,   6, 104, 105, 106, 107, 108,   6, 109, 110,   0,
-     29,   6, 105, 111, 112, 113, 114,   0,   6,   6, 115, 116,   6,   6,   6,  97,
-      6, 117, 118,  81, 119,  89, 120,  68,   6,   6,   6,   6,   6,   6,   6, 121,
-      6,   6,   6,   6,   6,   6,   6,   6,  92,   6, 122,  81,   6, 123, 124, 125,
-      0, 126, 127, 128, 129,   0, 129, 130, 131, 132, 133,   6, 134,   0,   0,   0,
+      6,  28,  29,  30,  31,   6,   6,  11,   6,   6,   6,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
+     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
+      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,  89,  90,   6,   6,  91,
+     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  92,   3,   6,   6,  93,  94,  95,  96,  97,   6,   6,  98,  99,
+    100,   6,   6, 101,   6,  30,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
+     29,   6, 103, 109, 110, 111, 112,   0,   6,   6, 113, 114,   6,   6,   6,  96,
+      6, 115, 116,  80, 117,  88, 118,  67,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  91,   6, 119,  80,   6, 120, 121, 122,
+      0, 123, 124, 125, 126,   0, 126, 127, 128, 129, 130,   6, 131,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 135, 105,   6,   6,   6,   6, 136,   6,  82,   6, 137, 138, 139, 139,   6,
+      6,   6,   6,   6,   6,   6,   6, 132,   6,  81,   6, 133, 134, 135, 135,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  67,   6, 142,  67,   6,  83, 143,  14,   6,   6, 144,   6,   0,  24,
+    136, 137,  66,   6, 138,  66,   6,  82, 139,  14,   6,   6, 112,   6,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  24,  80,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  26, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  96,   6,   6, 150, 151,   6, 152,  96,  77,   6,   6, 153, 103,
+      6, 134, 154, 155,   6,   6, 156, 157, 158, 159,  82,  79,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  78,
-      6,   6,   6,   6, 145,   0,  24,  81,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  26, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  97,   6,   6, 155, 156,   6, 157,  97,  78,   6,   6, 158, 105,
-      6, 138, 159, 160,   6,   6, 161, 162, 163, 164,  83,  80,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  29,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  29,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  26, 172,   6,
-      6,   6,  81, 173,   6,   6,   6,   6,   6,  81,  24,   6, 174,   6, 175,   1,
-     91, 176, 177, 178,   6,   6,   6,  78,   1,   2,   3, 107,   6, 105, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  68,   0,   0,   6,  96,   0,   0,   0, 183,
-      0,   0,   0,   0,  78,   6, 184, 114,   6, 185, 103,  68,  81,   6, 186,   0,
-      6,   6,   6,   6,  81,  80, 187,  29,   6, 188,   6, 189,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 138, 104, 175,   0,   0,   0,   0,
-    190, 191, 104, 138, 105,   0,   0, 192, 104, 168,   0,   0,   6, 193,   0,   0,
-    194, 195,   0,  78,  78,   0,  75, 196,   6, 104, 104, 197,  26,   0,   0,   0,
-      6,   6, 134,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 199,   0,   0,  78, 200, 184,   0,   0,  24, 201, 138,
-      6,   6, 196, 202,   6,  68,  24, 203,   6,  31, 204, 205,   6,   6, 206,   0,
-    207, 208,   0,   0, 209, 119,   6, 210,  34, 211, 212, 213,   0,   0,   0,   0,
-      6,   6, 214, 215,   6,   6, 216,   0,   0,   0,   0,   0,   6, 217, 218,   0,
-      6,   6, 219,   0,   6, 102, 100,   0,  89, 115,   0,   0,   0,   0,   0,   0,
-      6,  68,   0,   0,   0,   6,   6, 220, 221, 222, 223,   0,   0, 224, 225, 226,
-      6, 105, 200,   6, 227,   0,   6, 102,   0,   0,   0,   0,   0,   0,   0,   0,
-    228,   5, 229, 230, 174, 231,   0,   0, 232, 233, 198, 234, 235, 100,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 138,   0,   0,   0,   0,   0, 236,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  26, 167,   6,
+      6,   6,  80, 168,   6,   6,   6,   6,   6,  80,  24,   6, 169,   6, 170,   1,
+     90, 171, 172, 173,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  67,   0,   0,   6,  95,   0,   0,   0, 178,
+      0,   0,   0,   0,  77,   6, 179, 180,   6, 181,  30,  67,  80,   6, 182,   0,
+      6,   6,   6,   6,  80,  79, 183,  29,   6, 184,   6, 185, 186, 187,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 134, 102, 170, 188, 189,   0,   0,
+    190, 191, 102, 134, 103,   0,   0, 192, 102, 163,   0,   0,   6, 193,   0,   0,
+    194, 195,   0,  77,  77,   0,  74, 196,   6, 102, 102, 197,  26,   0,   0,   0,
+      6,   6, 131,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 199,   0,   0,  77, 200, 179,  24, 201,  24, 202, 134,
+      6,   6, 196, 203,   6,  67, 204, 205,   6, 206, 207, 208,   6,   6, 209,   0,
+    210, 211,   0,   0, 212, 117,   6, 213,  33, 214, 215, 216,   0,   0,   0,   0,
+      6,   6, 217, 218,   6,   6, 219,   0,   0,   0,   0,   0,   6, 220, 221,   0,
+      6,   6, 222,   0,   6, 101,  99,   0,  88, 223, 196,   0,   0,   0,   0,   0,
+      6,  67,   0,   0,   0,   6,   6, 224, 225, 226, 227,   0,   0, 228, 229, 230,
+      6, 103, 200,   6, 231,  24,   6, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+    232,   5, 233, 148, 169, 234,   0,   0, 235, 236, 198, 237, 238,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 134,   0,   0,   0,   0,   0, 239,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 189,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 112,   6,   6,   6,   6,   6,   6, 240,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   6,   6, 179,
+      6, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 102, 105, 100,   0,   0,  24, 108,   6, 138, 223, 237,  91,   0,   0,   0,
+      6, 101, 103,  79,   6, 103,  79, 106,   6, 134, 227, 241,  90,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 238,   6, 239,   0,   0, 240,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 242,   6, 243,   0,   0, 244,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 117,
-      6,   6,   6,   6,   6,   6, 104,   0, 134,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 115,
+      6,   6,   6,   6,   6,   6, 102,   0, 131,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 105,   0, 241, 204,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 246, 247, 207,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 242, 243,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 248, 249,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 196,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 250, 251, 252,   0,   0,
+      0,   0, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 206,   6, 254, 255, 256,   6, 257, 258, 259,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 260, 261,  82, 206, 206, 262, 262, 232, 232, 263,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244, 245, 246,   0,   0,
-      0,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  31,   6, 248, 249, 250,   6, 251, 252, 253,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 254, 255,  83,  31,  31, 135, 135, 228, 228, 256,   6,
+      6, 264,   6, 265, 266, 267,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 257,   6, 258, 259, 260,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    261, 262,   0,   0,   0,   0,   0,   0,   6, 263, 264,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 265,   0,   6,   6, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    268, 269,   0,   0,   0,   0,   0,   0,   6, 270, 271,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 112,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 272,
+      6,   6,   6,   6,   6,   6, 273,   0,   6,   6, 223,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    250, 266, 267, 268, 269, 270,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    256, 274, 275, 276, 277, 278,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  81,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  96,   6,   6,   6,   6,   6,   6,
-     81,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 101,   6,   6,   6,   6,   6,   6,
+     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 271,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 279,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 180,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  30,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  91,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 280,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  90,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -26106,67 +26624,70 @@ static RE_UINT8 re_xid_continue_table_3[] = {
     255,   1, 254, 255, 255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,
       0,   0, 255,   7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,
       0,   0, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36,
-    255,  63,   0,   0, 255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255,   0,   0, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255,   0,   0, 239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64,
-    207, 255,   6,   0, 223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252,
-    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255,
-    255, 255, 255,   7, 255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,
-     95,  63, 255, 243,   1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255,
-    255,  31, 254, 255, 223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
-    255,   3, 255, 255, 255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  31,   0,
-    255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48,
-    255,   3,   0,   0,   0,  56, 255,   3, 255, 255, 255,   1, 255,   7, 255, 255,
-    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   7, 255, 255, 255, 159,
-    255,   3, 255,   3, 128,   0, 255, 191,   1,   0,   0,   0, 255,  15, 255,   3,
-      0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,
-      0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170, 255, 255, 223,  95,
-    220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,   1,   0,  16,   0,
-      0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0, 255, 127, 255, 255,
+    255,  63,   0,   0, 255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255,
+    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
+    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
+    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
+    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
+    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
+    255, 223, 253, 255, 255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0,
+    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0,
+    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
+    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
+    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
+      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
+    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
+    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0, 255, 255,  63,  63,
+    255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  63, 128, 255, 255,  31,   0,
+    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,
+      0, 184, 255,   3, 255, 255, 255,   1, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255,   7, 255, 255, 255, 159, 255,   3, 255,   3, 128,   0, 255, 191,
+    255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0,
+    255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,  63,  63, 255, 170,
+    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,
+      1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0,
+    132, 252,  47,  63,  80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0,
      31, 248,  15,   0, 255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 230, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 240, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 240, 255, 255, 255, 255, 255, 252, 255, 255,   0,   0,   0,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 138, 170, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
-    255, 255,   1,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 240, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    240, 255, 255, 255, 255, 255, 252, 255, 255,   0,   0,   0, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 138, 170, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32, 255, 255,   1,   0,
+      1,   0,   0,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135,
     127,   0,   0,   0, 255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,
-    128,   0, 255, 255,  31,   0,   0,   0, 192, 255,   0, 128, 255,   1, 255,   3,
-    240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255,
-    255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
-    159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0,
-    191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3,
+    128,   0, 255, 255,  63,   0,   0,   0,  31,   0,   0,   0, 192, 255,  63, 128,
+      4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 223, 255, 240,   0, 255, 255,
+    255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64,
+    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
+    207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3,
+    255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3, 255,  15, 255,   3,
     255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 249,  15,   0, 255,   3,
     255, 252, 255, 255, 255, 255, 255, 252,  27,   0,   0,   0, 255, 255, 255,  35,
-    255, 253, 255, 255,   1,   0, 255,   3,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
-      0,   0,   1,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
-     27,   0,   3,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
-    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
-    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
-    247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
-    255,  67,   0,   0,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255, 253, 255, 255,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
+     15,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
+     27,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
+    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
+    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,
+    127, 111, 255, 127,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_xid_continue(RE_UINT32 codepoint) {
@@ -26192,17 +26713,17 @@ RE_UINT32 re_get_xid_continue(RE_UINT32 codepoint) {
 static RE_UINT8 re_xid_start_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9,  9, 38,  9,  9, 39,  9, 40, 41,  9,  9,  9,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9,  9,  9, 39,  9, 40, 41, 42, 43, 44,  9,  9,  9,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 42, 12, 12, 12, 43, 44, 12,
-    12, 12, 12, 45, 12, 12, 12, 12, 12, 12, 46,  9,  9,  9, 47,  9,
-    12, 12, 12, 12, 48,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
+    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
+    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -26265,96 +26786,102 @@ static RE_UINT8 re_xid_start_table_2[] = {
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   0,   7,   8,   9,   4,  10,
       4,   4,   4,   4,  11,   4,   4,   4,   4,  12,  13,   4,  14,   0,  15,  16,
       0,   4,  17,  18,   4,   4,  19,  20,  21,  22,  23,   4,   4,  24,  25,  26,
-     27,  28,  29,  17,   0,  30,  31,   0,  32,  33,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  44,  45,  46,  47,  48,  45,  49,  50,  51,  52,  46,   0,
-     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,
-     68,  69,  67,   0,  70,  71,  72,   0,  73,   0,  74,  75,  76,   0,   0,   0,
-      4,  77,  78,  79,  80,   4,  81,  82,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  83,   4,  84,  85,  86,   4,  87,   4,  88,   0,  22,   4,   4,  89,
-     68,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,  90,   1,   4,   4,  91,  92,  93,  93,  94,   4,  95,  96,   0,
-      0,   4,   4,  29,   4,  97,   4,  98,  99,   0,  15, 100,   4, 101, 102,   0,
-    103,   4, 104,   0,   0, 105,   0,   0, 106,  95, 107,   0, 108, 109,   4, 110,
+     27,  28,  29,  30,  31,   4,  32,   0,  33,  34,  35,  36,  37,  38,  39,  40,
+     41,  42,  43,  44,  45,  46,  47,  48,  49,  46,  50,  51,  52,  53,  47,   0,
+     54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,   0,
+     69,  70,  68,   0,  71,  72,  73,   0,  74,   0,  75,  76,  77,   0,   0,   0,
+      4,  78,  79,  80,  81,   4,  82,  83,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,  84,   4,  85,  86,  87,   4,  88,   4,  89,   0,  22,   4,   4,  90,
+     69,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,  91,   1,   4,   4,  92,  93,  94,  94,  95,   4,  96,  97,   0,
+      0,   4,   4,  29,   4,  98,   4,  99, 100,   0,  15, 101,   4, 102,  32,   0,
+    103,   4, 104,   0,   0, 105,   0,   0, 106,  96, 107,   0, 108, 109,   4, 110,
       4, 111, 112, 113, 114, 115,   0, 116,   4,   4,   4,   4,   4,   4,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  89,   4, 117, 113,   4, 118, 119, 120,
+      4,   4,   4,   4,   4,   4,   4,   4,  90,   4, 117, 113,   4, 118, 119, 120,
       0,   0,   0, 121, 122,   0,   0,   0, 123, 124, 125,   4,  14,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 126,  99,   4,   4,   4,   4, 127,   4,  81,   4, 128, 103, 129, 129,   0,
+      4,   4,   4,   4,   4,   4,   4, 126,   4,  82,   4, 127, 103, 128, 128,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 131,  68,   4, 132,  68,   4,  82, 106,  12,   4,   4, 133,   4,   0,  15,
+    129, 130,  69,   4, 131,  69,   4,  83, 106,  12,   4,   4, 132,   4,   0,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,  76,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
+    133, 134,   4, 135, 113,   4,   4,  22, 136, 137,   4,   4, 138,   4, 139, 140,
+    141, 142,   4,  96, 137,  96,   0, 143,  25, 144,  68, 145,  33, 146, 147, 148,
+      4,  14, 149, 150,   4, 151, 152, 153, 154, 155,  83, 156,   4,   4,   4, 142,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 134,
-      4,   4,   4,   4,  75,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
-    135, 136,   4, 137, 113,   4,   4,  22, 138, 139,   4,   4, 140,   4, 141, 142,
-    143, 144,   4,  95, 139,  95,   0, 145,  25, 146,  67, 134,  32, 147, 148, 149,
-      4,  14, 150, 151,   4, 152, 153, 154, 155, 156,  82, 157,   4,   4,   4, 144,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 158, 159, 160,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 157, 158, 159,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 161,   4,   4, 162,   0, 163, 164, 165,   4,   4,  93, 166,   4,
-      4,   4, 113,  32,   4,   4,   4,   4,   4, 113,  15,   4, 167,   4,  31, 168,
-      0,   0,   0, 169,   4,   4,   4, 134,   0,   1,   1, 170, 113,  99, 171,   0,
-    172, 173, 174,   0,   4,   4,   4,  88,   0,   0,   4, 104,   0,   0,   0,   0,
-      0,   0,   0,   0, 134,   4, 175,   0,   4,  23, 176,  98, 113,   4, 177,   0,
-      4,   4,   4,   4, 113,  15, 178, 160,   4, 179,   4, 111,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  98,  31,   0,   0,   0,   0,
-    180, 181,  98, 103,  99,   0,   0, 182,  98, 162,   0,   0,   4, 183,   0,   0,
-    184,  98,   0, 134, 134,   0,  74, 185,   4,  98,  98, 147,  93,   0,   0,   0,
-      4,   4,  14,   0,   4, 147,   4, 147,   4, 111,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 186,   0,   0, 134, 187, 110,   0,   0,  15, 185, 103,
-    108, 188,   0,   0, 108,  22,  15,  14, 108,  67, 189, 190, 108, 147, 191,   0,
-    192, 193,   0,   0, 194, 114,  99,   0,  48,  45, 195,  56,   0,   0,   0,   0,
-      4, 104, 196,  56,   4,  22, 197,   0,   0,   0,   0,   0,   4, 133, 198,   0,
-      4,  22, 199,   0,   4, 200,   0,   0,  88,   0,   0,   0,   0,   0,   0,   0,
-      4, 193,   0,   0,   0,   4,   4, 201, 202, 203, 204,   0,   0, 205, 175, 206,
-    207, 208, 209,   4, 210,   0,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-    211, 133,  73, 212,  22,   0,   0,   0, 213, 175, 214, 215, 216,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,  46,   0,   0,
+      4,   4,   4, 160,   4,   4, 161,   0, 162, 163, 164,   4,   4,  94, 165,   4,
+      4,   4, 113,  33,   4,   4,   4,   4,   4, 113,  15,   4, 166,   4, 167, 168,
+      0,   0,   0, 169,   4,   4,   4, 145,   0,   1,   1, 170, 113, 100, 171,   0,
+    172, 173, 174,   0,   4,   4,   4,  89,   0,   0,   4, 104,   0,   0,   0,   0,
+      0,   0,   0,   0, 145,   4, 175,   0,   4,  23,  30,  99, 113,   4, 176,   0,
+      4,   4,   4,   4, 113,  15, 177, 159,   4, 178,   4, 179, 180, 181,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  99, 167, 182, 183,   0,   0,
+    184, 185,  99, 103, 100,   0,   0, 186,  99, 161,   0,   0,   4, 187,   0,   0,
+    188,  99,   0, 145, 145,   0,  75, 189,   4,  99,  99, 146,  94,   0,   0,   0,
+      4,   4,  14,   0,   4, 146,   4, 146,   4, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 190,   0,   0, 145, 191, 110,  15,  57,  15, 189, 103,
+    108, 192,   0, 193, 108,  22,  15,  14, 108,  68, 194, 195, 108, 146, 196,   0,
+    197, 198,   0,   0, 199, 114, 100,   0,  49,  46, 200,  57,   0,   0,   0,   0,
+      4, 104, 201,  57,   4,  22, 202,   0,   0,   0,   0,   0,   4, 132, 203,   0,
+      4,  22, 204,   0,   4, 205,   0,   0,  89,   0,  68,   0,   0,   0,   0,   0,
+      4, 198,   0,   0,   0,   4,   4, 206, 207, 208, 209,   0,   0, 210, 175, 211,
+    212, 213, 214,   4, 215,  15,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
+    216, 132,  74, 140,  22,   0,   0,   0, 217, 175, 218, 219, 220,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,
-      4,   4,   4, 133,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 161,   0,   0,   0,
+      4,   4,   4, 132,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  15,   4,   4, 175,
+      4, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  29,  99,   0,   0,   0,  15, 217,   4,  22, 111, 218,  22,   0,   0,   0,
+      4,  29, 100,  15,   4, 100,  15, 221,   4,  22, 111, 222,  22,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 219,   0, 166,   0,   0, 220,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 223,   0, 165,   0,   0, 224,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 188,
-      4,   4,   4,   4,   4,   4,  98,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 192,
+      4,   4,   4,   4,   4,   4,  99,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 225,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 142, 226, 227,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 159,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 228, 229,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 230,   4, 231, 232, 233,   4, 234, 235, 236,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 237, 238,  83, 230, 230, 239, 239, 216, 216, 149,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  99,   0, 221, 222,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 160,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 223, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   4, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  15, 221,   4, 198,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  30,   4, 225, 226, 227,   4, 228, 229, 230,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 231, 232,  82,  30,  30, 126, 126, 211, 211, 150,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   4, 233, 234,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 193,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 185,   0,   4,   4, 235,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 243,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    227, 236, 237, 238, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    233, 244, 245, 246, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 113,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 104,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  29,   4,   4,   4,   4,   4,   4,
     113,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 241,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 249,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  73,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  74,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
@@ -26369,58 +26896,60 @@ static RE_UINT8 re_xid_start_table_3[] = {
     255, 135,   7,   0, 255,   7,   0,   0,   0, 192, 254, 255, 255, 255,  47,   0,
      96, 192,   0, 156,   0,   0, 253, 255, 255, 255,   0,   0,   0, 224, 255, 255,
      63,   0,   2,   0,   0, 252, 255, 255, 255,   7,  48,   4, 255, 255,  63,   4,
-     16,   1,   0,   0, 255, 255, 255,   1, 255, 255, 223, 255, 255,   0,   0,   0,
-    240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,   3,   0, 254, 255,
-    225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,   3,   0,   3,  16,
-    224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,   0,   0,  28,   0,
-    224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,   3,   0,   0,   2,
-    224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0, 232, 199,  61, 214,
-     24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,   0,   0,   0,   7,
-      3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,   0,   0,   0,  64,
-      3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,   0,  64, 112, 128,
-      3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47, 127,   0,   0,   0,
-    254, 255, 255, 255, 255, 255,   5,   0, 214, 247, 255, 255, 175, 255,   5,  32,
-     95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255, 255,  31,   0,   0,
-      0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,  98, 192, 225, 255,
-      3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,   3,   0, 255, 255,   3,   0, 255, 223,   1,   0, 255, 255,  15,   0,
-      0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 127,   0,
-    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  15,   0,   0,
+     16,   1,   0,   0, 255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0,
+    255,   3,   0,   0, 240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,
+      3,   0, 254, 255, 225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,
+      3,   0,   3,  16, 224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,
+      0,   0,  28,   0, 224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,
+      3,   0,   0,   2, 224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0,
+    232, 199,  61, 214,  24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,
+      0,   0,   0,  39,   3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,
+      0,   0,   0,  96,   3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,
+      0,  64, 112, 128,   3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47,
+    127,   0,   0,   0, 254, 255, 255, 255, 255, 255,   5,   0, 214, 247, 255, 255,
+    175, 255,   5,  32,  95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255,
+    255,  31,   0,   0,   0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,
+     98, 192, 225, 255,   3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247,
+    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
+    255, 255,  61, 255, 255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255,
+    255, 199, 255,   1, 255, 255,   3, 128, 255, 255,   3,   0, 255, 223,   1,   0,
+    255, 255,  15,   0,   0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0,
+    255, 255, 255, 127, 255,  63,  31,   0, 255,  15, 255, 255, 255, 255, 127,   0,
+    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  31,   0,   0,
     248, 255, 255, 255,   1, 192,   0, 252,  63,   0,   0,   0,  15,   0,   0,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255, 255, 255, 255, 231,
       0, 222, 111,   4,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31,
-    255, 255, 127, 224, 255, 127,   0,   0, 255, 255, 255,  31, 255,  31, 255, 255,
-      0,  12,   0,   0, 255, 127,   0, 128,   0,   0, 128, 255, 252, 255, 255, 255,
-    255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255, 187, 247, 255, 255,
-      7,   0,   0,   0,   0,   0, 252, 104,  63,   0, 255, 255, 255, 255,   7,   0,
-      0, 128,   0,   0, 223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196,
-    255, 255,  98,  62,   5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160,
-    255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
+     80, 253, 255, 243, 224,  67,   0,   0,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127,   0, 128,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255,   7,   0,   0,   0,   0,   0, 252, 104,
+     63,   0, 255, 255, 255, 255, 255,  31, 255, 255,   7,   0,   0, 128,   0,   0,
+    223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196, 255, 255,  98,  62,
+      5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,  15,
+    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160, 255, 253, 127,  95,
+    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
       0,   0, 255,   3,   0,   0, 138, 170, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,   1,   0,
-    255,   7, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15,   0, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
       1,   0, 239, 254,  31,   0,   0,   0, 255,   3,   3,   0, 128,   0, 255, 255,
-    255, 255, 255,   0, 144,   0, 255, 255, 255, 255,  71,   0,  30,   0,   0,  20,
-    255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,   0,   0,   1, 224,
-    128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,  16,   0,   0,   0,
-    255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255, 255, 255,   0, 128,
-      2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,   1, 248, 255, 255,
-    255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32, 255, 253, 255, 255,
-      0,   0, 252, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
+    255, 255, 255,   0,   0,   0,  38,   0, 144,   0, 255, 255, 255, 255,  71,   0,
+     30,   0,   0,  20, 255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,
+      0,   0,   1, 224, 128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,
+     16,   0,   0,   0, 255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255,   0, 128,   2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,
+      1, 248, 255, 255, 255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32,
+    255, 253, 255, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
     255,   3,   0,   1, 255,  63,   0,   0, 248, 255, 255, 224, 255,   7,   1,   0,
-     11,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255,   3, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255,  31, 128,  63,   0,  64,   0,   0,  15,   8,   0,   0,
+     11,   0,   0,   0,   0,   0, 239, 111,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255,   3, 255, 255, 223, 255, 255, 255, 255, 223,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255,
+    255,  31, 128,  63,   0,  64,   0,   0, 127, 111, 255, 127,  15,   8,   0,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
     238, 251, 255,  15,   3,   0, 255, 255
 };
@@ -26539,27 +27068,27 @@ static RE_UINT8 re_all_cases_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 74, 75, 76, 77,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 78, 78,  0,  0,  0,  0,  0,
-    79, 80, 81,  0,  0, 82, 83, 84,  0,  0,  0,  0,  0,  0,  0,  0,
+    79, 80, 81,  0,  0, 82, 83, 84,  0,  0,  0, 85, 86, 87,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 85, 86, 85, 86,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 88, 89, 88, 89,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 87, 87,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 90, 90,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 88, 88,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 89, 90, 91,  0,  0,  0,  0,  0,
+     0,  0, 91, 91,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 92, 93, 94,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_all_cases_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   1,   1,   1,   1,   1,   1,   1,   1, 134,   1,   3,   1,   1,   1,   1,
+      0,   1,   1,   1,   1,   1,   1,   1,   1, 147,   1,   3,   1,   1,   1,   1,
       1,   1,   1,   4,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   2,   1,   3,   1,   1,   1,   1,
       1,   1,   1,   4,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   5,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,  83,
       1,   1,   1,   1,   1,   5,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -26567,19 +27096,19 @@ static RE_UINT8 re_all_cases_table_3[] = {
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-    133,  15,  16,  16,  16,  16,  16,  16,   0,  23,  23,  25,  25,  23,  23,  27,
+    146,  15,  16,  16,  16,  16,  16,  16,   0,  23,  23,  25,  25,  23,  23,  27,
      27,  23,  23,  25,  25,  23,  23,  28,  28,   0,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16,  16,  16,  16,  16,  29,  23,  23,  25,  25,  23,  23, 136,
+     16,  16,  16,  16,  16,  16,  16,  16,  29,  23,  23,  25,  25,  23,  23, 149,
      53,  30,  16,  16,  16,  16,  30,  28,  28,  31,  32,  25,  25,   0,  33,  34,
      35,  23,  23,  36,  37,  47,  38,  38,  16,  16,  51,   0,  36,  39,  49,  40,
      16,  16,  16,  16,  16,  16,  41,  28,  28,  42,   0,   0,  16,  16,  41,  43,
      43,  44,  45,  25,  25,  23,  23,  46,  16,  16,   0,   0,  16,  16,   0,  48,
-      0,   0,   0,   0, 155, 155,  24, 149, 149,  17, 156, 156,  26,  23,  23,  43,
+      0,   0,   0,   0, 168, 168,  24, 162, 162,  17, 169, 169,  26,  23,  23,  43,
      43,  23,  23,  25,  25,  23,  23,  28,  28,  23,  23,  25,  25,  33,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-      0, 150, 150,  18,  16,  16,  47,  48,  16,  16,  16,  16,  16,  16,  16,  16,
+      0, 163, 163,  18,  16,  16,  47,  48,  16,  16,  16,  16,  16,  16,  16,  16,
      49,   0,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,   0,   0,   0,   0,   0,   0,  50,  25,  25,  51,  52, 108,
     106,  23,  23,  53,  54,  55,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
@@ -26588,18 +27117,18 @@ static RE_UINT8 re_all_cases_table_3[] = {
       0, 105,  39,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,
      41,   0, 120,  42,   0,   0,   0, 117,  41,  54,  44,  45,  55,   0,   0,   0,
       0,   0,  46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118, 116,   0,
-      0,   0,   0,   0,   0, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      16,  16,  16,  16,   0,   0,  16,  16,   0,   0,   0,  75,  76,  76,   0,  56,
       0,   0,   0,   0,   0,   0,  57,   0,  58,  59,  58,   0,  60,   0,  61,  62,
-      0,   1,   6,   1,   1,   7,   1,   1,   8, 142,  10,   1, 145,   1,   1,   1,
-     63,  64,   0, 151,  65,  65,  66,  65,  65,  67,  65,  65,  57,  58,  59,  58,
+      0,   1,   6,   1,   1,   7,   1,   1,   8, 155,  10,   1, 158,   1,   1,   1,
+     63,  64,   0, 164,  65,  65,  66,  65,  65,  67,  65,  65,  57,  58,  59,  58,
       0,   1,   6,   1,   1,   7,   1,   1,   8,   9,  10,   1,  11,   1,   1,   1,
-     63,  64, 151,  19,  65,  65,  66,  65,  65,  67,  65,  65,  60,  61,  62,  71,
-    138, 140,   0,   0,   0, 159, 157,  71,  16,  16,  16,  16,  16,  16,  16,  16,
+     63,  64, 164,  19,  65,  65,  66,  65,  65,  67,  65,  65,  60,  61,  62,  71,
+    151, 153,   0,   0,   0, 172, 170,  71,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-    144, 158,  74,  56, 141, 139,   0,  28,  28,  74,  16,  16,   0,  75,  76,  76,
+    157, 171,  74,  56, 154, 152,   0,  28,  28,  74,  16,  16,   0,  75,  76,  76,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
       1,   1,  12,   1,  13,   1,   1,   1,   1,   1,   1,   1,   1,   1,  14,   1,
      65,  68,  69,  65,  65,  65,  65,  65,  65,  65,  70,  65,  65,  65,  65,  65,
@@ -26632,7 +27161,7 @@ static RE_UINT8 re_all_cases_table_3[] = {
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
      81,  81,  81,  81,  81,  81,   0,   0,  81,  81,  81,  81,  81,  81,   0,   0,
-    146, 147, 148, 161, 162, 163, 164, 152, 154,   0,   0,   0,   0,   0,   0,   0,
+    159, 160, 161, 174, 175, 176, 177, 165, 167,   0,   0,   0,   0,   0,   0,   0,
      82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0, 109,   0,   0,   0, 102,   0,   0,
@@ -26641,7 +27170,7 @@ static RE_UINT8 re_all_cases_table_3[] = {
      21,  21,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16,  16,  16,   0,   0,   0,   0,   0, 153,   0,   0,  83,   0,
+     16,  16,  16,  16,  16,  16,   0,   0,   0,   0,   0, 166,   0,   0,  83,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
      81,  81,  81,  81,  81,  81,   0,   0,  81,  81,  81,  81,  81,  81,   0,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
@@ -26651,12 +27180,12 @@ static RE_UINT8 re_all_cases_table_3[] = {
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
      84,  84,  85,  85,  86,  86,  87,  87,  90,  90,  88,  88,  75,  75,   0,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
-     81,  81,   0,  28,   0,   0,   0,   0,  81,  81,  84,  84,  28,   0, 143,   0,
+     81,  81,   0,  28,   0,   0,   0,   0,  81,  81,  84,  84,  28,   0, 156,   0,
       0,   0,   0,  28,   0,   0,   0,   0,  85,  85,  86,  86,  28,   0,   0,   0,
      81,  81,   0,   0,   0,   0,   0,   0,  81,  81,  87,  87,   0,   0,   0,   0,
      81,  81,   0,   0,   0,  89,   0,   0,  81,  81,  88,  88,  89,   0,   0,   0,
       0,   0,   0,  28,   0,   0,   0,   0,  90,  90,  75,  75,  28,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 160,   0,   0,   0, 135, 137,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 173,   0,   0,   0, 148, 150,   0,   0,   0,   0,
       0,   0,  91,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  91,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26672,17 +27201,17 @@ static RE_UINT8 re_all_cases_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      16,  16, 101, 102, 103,  50,  52,  28,  28,  23,  23,  25,  25, 104, 105, 106,
     107,   0,  16,  16,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0, 108, 106,
      16,  16,  16,  16,   0,   0,   0,   0,   0,   0,   0,  25,  25,  23,  23,   0,
       0,   0,  16,  16,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      80,  80,  80,  80,  80,  80,   0,  80,   0,   0,   0,   0,   0,  80,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 154,  22,  16,  16,  16,  16,
+     16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 167,  22,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26696,8 +27225,8 @@ static RE_UINT8 re_all_cases_table_3[] = {
      16,  16,  16,  16,  77,   0,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 111, 112, 113, 114, 115,   0,
     116, 117, 118, 119,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-      0,   0,  16,  16,  77, 120, 121,  28,  28,  23,  23,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     16,  16,  16,  16,  77, 120, 121,  28,  28,  23,  23,   0,   0,   0,   0,   0,
+     16,  16,   0,   0,   0,   0,  16,  16,  16,  16,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26722,6 +27251,12 @@ static RE_UINT8 re_all_cases_table_3[] = {
     126, 126, 126, 126,   0,   0,   0,   0, 129, 129, 129, 129, 129, 129, 129, 129,
     128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126,
     127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 131, 132, 131, 133, 131, 132, 131, 130, 134, 135,   0, 136, 134, 135, 134,
+     59, 137, 138, 137, 139, 137, 138, 137,  59, 140, 141,   0, 142, 140, 141, 140,
+     59, 137, 138,   0, 139, 137,   0, 130, 131, 132, 131, 133, 131, 132, 131, 130,
+    134, 135,   0, 136, 134, 135, 134,  59, 137, 138, 137, 139, 137, 138, 137,  59,
+    140, 141,   0, 142, 140, 141, 140,  59, 137, 138,   0, 139, 137,   0,   0,   0,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
@@ -26730,11 +27265,11 @@ static RE_UINT8 re_all_cases_table_3[] = {
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130, 131, 131,
-    130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130, 132, 132,
-     72,  72, 130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130,
-    131, 131, 130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130,
-    132, 132,  72,  72,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143, 144, 144,
+    143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143, 145, 145,
+     72,  72, 143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143,
+    144, 144, 143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143,
+    145, 145,  72,  72,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -26869,6 +27404,19 @@ static RE_AllCases re_all_cases_table_4[] = {
     {   56, {    0,     0}},
     {   88, {    0,     0}},
     {  104, {    0,     0}},
+    {  231, {    0,     0}},
+    {  233, {    0,     0}},
+    {  235, {    0,     0}},
+    {  239, {    0,     0}},
+    {  217, {    0,     0}},
+    {  219, {    0,     0}},
+    {  223, {    0,     0}},
+    {   41, {    0,     0}},
+    {   43, {    0,     0}},
+    {   47, {    0,     0}},
+    {   57, {    0,     0}},
+    {   59, {    0,     0}},
+    {   63, {    0,     0}},
     {   34, {    0,     0}},
     {   62, {    0,     0}},
     {   94, {    0,     0}},
@@ -27035,83 +27583,83 @@ static RE_UINT8 re_simple_folding_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 57, 58,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,
-    60, 61,  0,  0,  0, 62, 63,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    60, 61,  0,  0,  0, 62, 63,  0,  0,  0,  0, 64, 65,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 66, 67,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 68,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 67,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 68, 69,  0,  0,  0,  0,  0,  0,
+     0,  0, 69,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 70, 71,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  18,  18,  18,  18,  18,  18,  18,  18,  66,  18,  18,  18,  18,  18,  18,
+      0,  18,  18,  18,  18,  18,  18,  18,  18,  79,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     65,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  49,
+     78,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  55,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,  67,   3,   0,   5,   0,   3,   0,  64,
-      0,  78,   1,   0,   1,   0,  78,  10,   0,  81,  80,   5,   0,   0,  36,  79,
-     77,   3,   0,  84,  85,   0,  86,  86,   1,   0,   0,   0,  84,  83,   0,  82,
-      1,   0,   1,   0,   1,   0,  70,  10,   0,  71,   0,   0,   1,   0,  70,  17,
-      0,  73,  72,   5,   0,   3,   0,  69,   1,   0,   0,   0,   1,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,  80,   3,   0,   5,   0,   3,   0,  77,
+      0,  91,   1,   0,   1,   0,  91,  10,   0,  94,  93,   5,   0,   0,  42,  92,
+     90,   3,   0,  97,  98,   0,  99,  99,   1,   0,   0,   0,  97,  96,   0,  95,
+      1,   0,   1,   0,   1,   0,  83,  10,   0,  84,   0,   0,   1,   0,  83,  17,
+      0,  86,  85,   5,   0,   3,   0,  82,   1,   0,   0,   0,   1,   0,   0,   0,
       0,   0,   0,   0,   2,   3,   0,   9,   1,   0,   4,   5,   0,   3,   0,  17,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   2,   1,   0,   1,   0,  41,  32,   1,   0,   1,   0,   1,   0,   1,   0,
-     75,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 110,   5,   0,  74, 109,   0,
-      0,   3,   0,  76,  60,  58,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      0,   2,   1,   0,   1,   0,  47,  38,   1,   0,   1,   0,   1,   0,   1,   0,
+     88,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 123,   5,   0,  87, 122,   0,
+      0,   3,   0,  89,  66,  64,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  53,
-      0,   0,   0,   0,   0,   0,  24,   0,  20,  22,  20,   0,  29,   0,  31,  30,
+      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  59,
+      0,   0,   0,   0,   0,   0,  25,   0,  20,  22,  20,   0,  35,   0,  37,  36,
       0,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     39,  39,   0,  39,  39,  39,  39,  39,  39,  39,  39,  39,   0,   0,   0,   0,
+     45,  45,   0,  45,  45,  45,  45,  45,  45,  45,  45,  45,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  14,
-     40,  44,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     46,  50,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     33,  26,   0,   0,  34,  29,   0,  10,   0,   8,   1,   0,   0,  52,  51,  51,
-     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     39,  29,   0,   0,  40,  35,   0,  10,   0,   8,   1,   0,   0,  58,  57,  57,
+     41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
      10,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   3,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     61,  61,  61,  61,  61,  61,  61,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    113, 113, 113, 113, 113, 113,   0, 113,   0,   0,   0,   0,   0, 113,   0,   0,
+      0,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
+     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
+     67,  67,  67,  67,  67,  67,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+    126, 126, 126, 126, 126, 126,   0, 126,   0,   0,   0,   0,   0, 126,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-     89,  90,  91,  92,  93,  94,  95,  96, 130,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,   0,   0,  87,  87,  87,
+    102, 103, 104, 105, 106, 107, 108, 109, 143,   0,   0,   0,   0,   0,   0,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,   0, 100, 100, 100,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,  62,   0,   0,  98,   0,
+      1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,  75,   0,   0, 111,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -27121,27 +27669,27 @@ static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  59,  59,  10,   0,  97,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  56,  56,  57,  57,  10,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  55,  55,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  54,  54,   7,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  50,  50,  52,  52,  10,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 101,   0,   0,   0,  99, 100,   0,   0,   0,   0,
-      0,   0,  48,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  65,  65,  10,   0, 110,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  62,  62,  63,  63,  10,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  61,  61,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  60,  60,   7,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  56,  56,  58,  58,  10,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 114,   0,   0,   0, 112, 113,   0,   0,   0,   0,
+      0,   0,  54,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  42,  42,  45,  45,  46,  46,  45,  45,  42,  42,
-     15,  15,  16,  16,  15,  15,  21,  21,  24,  24,  25,  25,  24,  24,  21,  21,
+      0,   0,   0,   0,   0,   0,  48,  48,  51,  51,  52,  52,  51,  51,  48,  48,
+     15,  15,  16,  16,  15,  15,  21,  21,  25,  25,  27,  27,  25,  25,  21,  21,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
-     47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,
+     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
+     41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
+     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0, 102, 111, 103,   0,   0,  10,   0,   3,   0,   5,   0, 106, 104, 107,
-    105,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 108, 107,
+      1,   0, 115, 124, 116,   0,   0,  10,   0,   3,   0,   5,   0, 119, 117, 120,
+    118,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 121, 120,
       1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   3,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,
@@ -27151,42 +27699,46 @@ static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 128,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 122,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 141,   1,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 135,   0,   0,
       1,   0,   1,   0,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 120, 123, 121, 118, 119,   0,
-    114, 116, 115,  88,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   1,   0,  35, 117, 129,  10,   0,   3,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 133, 136, 134, 131, 132,   0,
+    127, 129, 128, 101,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,  41, 130, 142,  10,   0,   3,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-      0,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,   0,   0,   0,   0,   0,
-     23,  23,  23,  23,  23,  23,  23,  23,  27,  27,  27,  27,  27,  27,  27,  27,
-     23,  23,  23,  23,  23,  23,  23,  23,  37,  37,  37,  37,  37,  37,  37,  37,
-     43,  43,  43,  43,  43,  43,  43,  43,   0,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,   0,   0,   0,   0,   0,
+     23,  23,  23,  23,  23,  23,  23,  23,  30,  30,  30,  30,  30,  30,  30,  30,
+     23,  23,  23,  23,  23,  23,  23,  23,  43,  43,  43,  43,  43,  43,  43,  43,
+     49,  49,  49,  49,  49,  49,  49,  49,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     43,  43,  43,  43,  43,  43,  43,  43,  37,  37,  37,  37,  37,  37,  37,  37,
-     23,  23,  23,  23,  23,  23,  23,  23,  27,  27,  27,  27,  27,  27,  27,  27,
+     49,  49,  49,  49,  49,  49,  49,  49,  43,  43,  43,  43,  43,  43,  43,  43,
+     23,  23,  23,  23,  23,  23,  23,  23,  30,  30,  30,  30,  30,  30,  30,  30,
      23,  23,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     71,  72,  73,  72,  74,  72,  73,  72,  71,  68,  69,   0,  70,  68,  69,  68,
+     22,  24,  26,  24,  28,  24,  26,  24,  22,  31,  32,   0,  34,  31,  32,  31,
+     22,  24,  26,   0,  28,  24,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     19,  19,  21,  21,  19,  19,  25,  25,  19,  19,  21,  21,  19,  19,  28,  28,
-     19,  19,  21,  21,  19,  19,  25,  25,  19,  19,  21,  21,  19,  19,  38,  38,
-     40,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     19,  19,  21,  21,  19,  19,  27,  27,  19,  19,  21,  21,  19,  19,  33,  33,
+     19,  19,  21,  21,  19,  19,  27,  27,  19,  19,  21,  21,  19,  19,  44,  44,
+     46,  46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -27194,20 +27746,21 @@ static RE_UINT16 re_simple_folding_table_4[] = {
         0,     1,     2,     3,     6,     7,     8,     9,
        11,    14,    15,    16,    19,    22,    24,    26,
        30,    31,    32,    34,    37,    38,    39,    40,
-       42,    46,    48,    56,    62,    64,    65,    67,
-       72,    74,    76,    80,    83,    88,    94,    96,
-       98,    99,   102,   104,   105,   106,   110,   112,
-      124,   127,   128,   130,   134,   140,   144,   172,
-      186,   190,   201,   202,   205,   208,   250,   252,
-      268,   345,   376,   391,   777,   805,   806,   810,
-      825,   827,   935,   958,   963,   971,   978,   982,
-      989,   991,  1002,  1007,  1011,  1015,  1023,  3136,
-     3296,  6322,  6325,  6332,  6338,  6342,  6343,  6348,
-     6372,  7175,  7745,  8513,  8654,  8943, 11785, 11801,
-    11807, 11810, 11836, 11839, 11841, 11864, 11871, 12574,
-    15776, 15840, 42286, 42287, 42294, 42311, 42433, 42436,
-    42444, 42445, 42472, 42487, 47152, 47184, 47216, 47312,
-    47620, 47688, 47811
+       41,    42,    43,    46,    47,    48,    56,    57,
+       59,    62,    63,    64,    65,    67,    72,    74,
+       76,    80,    83,    88,    94,    96,    98,    99,
+      102,   104,   105,   106,   110,   112,   124,   127,
+      128,   130,   134,   140,   144,   172,   186,   190,
+      201,   202,   205,   208,   217,   219,   223,   231,
+      233,   235,   239,   250,   252,   268,   345,   376,
+      391,   777,   805,   806,   810,   825,   827,   935,
+      958,   963,   971,   978,   982,   989,   991,  1002,
+     1007,  1011,  1015,  1023,  3136,  3296,  6322,  6325,
+     6332,  6338,  6342,  6343,  6348,  6372,  7175,  7745,
+     8513,  8654,  8943, 11785, 11801, 11807, 11810, 11836,
+    11839, 11841, 11864, 11871, 12574, 15776, 15840, 42286,
+    42287, 42294, 42311, 42433, 42436, 42444, 42445, 42472,
+    42487, 47152, 47184, 47216, 47312, 47620, 47688, 47811
 };
 
 RE_UINT32 re_get_simple_case_folding(RE_UINT32 codepoint) {
@@ -27324,117 +27877,117 @@ static RE_UINT8 re_full_folding_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 62,  0,  0,  0,  0,  0,  0,
-    63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0, 67, 68,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 67, 68,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 69, 70,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 69,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 71,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 70,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 71, 72,  0,  0,  0,  0,  0,  0,
+     0,  0, 72,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 73, 74,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_full_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  18,  18,  18,  18,  18,  18,  18,  18,  80,  18,  18,  18,  18,  18,  18,
+      0,  18,  18,  18,  18,  18,  18,  18,  18,  93,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  96,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,  61,
+     18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,  67,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     79,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  51,
-      0,   3,   0,   5,   0,   3,   0,  10,   0, 100,   1,   0,   1,   0,   1,   0,
+     92,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  57,
+      0,   3,   0,   5,   0,   3,   0,  10,   0, 113,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,  81,   3,   0,   5,   0,   3,   0,  77,
-      0,  93,   1,   0,   1,   0,  93,  10,   0,  96,  95,   5,   0,   0,  37,  94,
-     92,   3,   0,  99, 101,   0, 102, 102,   1,   0,   0,   0,  99,  98,   0,  97,
-      1,   0,   1,   0,   1,   0,  85,  10,   0,  86,   0,   0,   1,   0,  85,  17,
-      0,  88,  87,   5,   0,   3,   0,  84,   1,   0,   0,   0,   1,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,  94,   3,   0,   5,   0,   3,   0,  90,
+      0, 106,   1,   0,   1,   0, 106,  10,   0, 109, 108,   5,   0,   0,  43, 107,
+    105,   3,   0, 112, 114,   0, 115, 115,   1,   0,   0,   0, 112, 111,   0, 110,
+      1,   0,   1,   0,   1,   0,  98,  10,   0,  99,   0,   0,   1,   0,  98,  17,
+      0, 101, 100,   5,   0,   3,   0,  97,   1,   0,   0,   0,   1,   0,   0,   0,
       0,   0,   0,   0,   2,   3,   0,   9,   1,   0,   4,   5,   0,   3,   0,  17,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     82,   2,   1,   0,   1,   0,  42,  33,   1,   0,   1,   0,   1,   0,   1,   0,
-     90,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 158,   5,   0,  89, 157,   0,
-      0,   3,   0,  91,  72,  70,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     95,   2,   1,   0,   1,   0,  48,  39,   1,   0,   1,   0,   1,   0,   1,   0,
+    103,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 171,   5,   0, 102, 170,   0,
+      0,   3,   0, 104,  78,  76,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  57,
-      0,   0,   0,   0,   0,   0,  25,   0,  20,  22,  20,   0,  30,   0,  32,  31,
-     24,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     40,  40,   0,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,   0,   0,   0,
-     49,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  63,
+      0,   0,   0,   0,   0,   0,  26,   0,  20,  22,  20,   0,  36,   0,  38,  37,
+     25,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
+     46,  46,   0,  46,  46,  46,  46,  46,  46,  46,  46,  46,   0,   0,   0,   0,
+     55,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  14,
-     41,  45,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     47,  51,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     34,  27,   0,   0,  35,  30,   0,  10,   0,   8,   1,   0,   0,  55,  54,  54,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     40,  30,   0,   0,  41,  36,   0,  10,   0,   8,   1,   0,   0,  61,  60,  60,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
      10,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   3,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
-     73,  73,  73,  73,  73,  73,  73,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  74,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
+     79,  79,  79,  79,  79,  79,  79,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  83,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-    161, 161, 161, 161, 161, 161,   0, 161,   0,   0,   0,   0,   0, 161,   0,   0,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+    174, 174, 174, 174, 174, 174,   0, 174,   0,   0,   0,   0,   0, 174,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-    105, 106, 107, 108, 109, 110, 111, 112, 178,   0,   0,   0,   0,   0,   0,   0,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,   0,   0, 103, 103, 103,
+    118, 119, 120, 121, 122, 123, 124, 125, 191,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0, 116, 116, 116,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0, 146, 142, 144, 141, 145,  75,   0,   0, 143,   0,
+      1,   0,   1,   0,   1,   0, 159, 155, 157, 154, 158,  88,   0,   0, 156,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-    139,   0, 140,   0, 137,   0, 138,   0,   0,   6,   0,   6,   0,   6,   0,   6,
+    152,   0, 153,   0, 150,   0, 151,   0,   0,   6,   0,   6,   0,   6,   0,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     53,  53,  53,  53,  53,  53,  53,  53,  56,  56,  56,  56,  56,  56,  56,  56,
-     62,  62,  62,  62,  62,  62,  62,  62,  64,  64,  64,  64,  64,  64,  64,  64,
-     67,  67,  67,  67,  67,  67,  67,  67,  69,  69,  69,  69,  69,  69,  69,  69,
-      0,   0,  68, 113, 118,   0, 116, 114,   6,   6,  71,  71, 117,   0, 115,   0,
-      0,   0,  63, 135, 129,   0, 134, 133,  65,  65,  66,  66, 136,   0,   0,   0,
-      0,   0, 130, 128,   0,   0, 132, 131,   6,   6,  60,  60,   0,   0,   0,   0,
-      0,   0, 123, 122, 121,   0, 120, 119,   6,   6,  59,  59,   7,   0,   0,   0,
-      0,   0,  58, 125, 125,   0, 127, 126,  52,  52,  55,  55, 124,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 149,   0,   0,   0, 147, 148,   0,   0,   0,   0,
-      0,   0,  50,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     59,  59,  59,  59,  59,  59,  59,  59,  62,  62,  62,  62,  62,  62,  62,  62,
+     68,  68,  68,  68,  68,  68,  68,  68,  70,  70,  70,  70,  70,  70,  70,  70,
+     73,  73,  73,  73,  73,  73,  73,  73,  75,  75,  75,  75,  75,  75,  75,  75,
+      0,   0,  74, 126, 131,   0, 129, 127,   6,   6,  77,  77, 130,   0, 128,   0,
+      0,   0,  69, 148, 142,   0, 147, 146,  71,  71,  72,  72, 149,   0,   0,   0,
+      0,   0, 143, 141,   0,   0, 145, 144,   6,   6,  66,  66,   0,   0,   0,   0,
+      0,   0, 136, 135, 134,   0, 133, 132,   6,   6,  65,  65,   7,   0,   0,   0,
+      0,   0,  64, 138, 138,   0, 140, 139,  58,  58,  61,  61, 137,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 162,   0,   0,   0, 160, 161,   0,   0,   0,   0,
+      0,   0,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  43,  43,  46,  46,  47,  47,  46,  46,  43,  43,
-     15,  15,  16,  16,  15,  15,  21,  21,  25,  25,  26,  26,  25,  25,  21,  21,
+      0,   0,   0,   0,   0,   0,  49,  49,  52,  52,  53,  53,  52,  52,  49,  49,
+     15,  15,  16,  16,  15,  15,  21,  21,  26,  26,  28,  28,  26,  26,  21,  21,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0, 150, 159, 151,   0,   0,  10,   0,   3,   0,   5,   0, 154, 152, 155,
-    153,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 156, 155,
+      1,   0, 163, 172, 164,   0,   0,  10,   0,   3,   0,   5,   0, 167, 165, 168,
+    166,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 169, 168,
       1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   3,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,
@@ -27444,44 +27997,48 @@ static RE_UINT8 re_full_folding_table_3[] = {
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 176,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 170,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 189,   1,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 183,   0,   0,
       1,   0,   1,   0,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 168, 171, 169, 166, 167,   0,
-    162, 164, 163, 104,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   1,   0,  36, 165, 177,  10,   0,   3,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 181, 184, 182, 179, 180,   0,
+    175, 177, 176, 117,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,  42, 178, 190,  10,   0,   3,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    182, 183, 180, 181, 179, 185, 184,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 189, 186, 187, 190, 188,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,   0,   0,   0,   0,
-     23,  23,  23,  23,  23,  23,  23,  23,  28,  28,  28,  28,  28,  28,  28,  28,
-     23,  23,  23,  23,  23,  23,  23,  23,  38,  38,  38,  38,  38,  38,  38,  38,
-     44,  44,  44,  44,  44,  44,  44,  44,   0,   0,   0,   0,   0,   0,   0,   0,
+    188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+    187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+    186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+    195, 196, 193, 194, 192, 198, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 202, 199, 200, 203, 201,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,   0,   0,   0,   0,   0,
+     23,  23,  23,  23,  23,  23,  23,  23,  31,  31,  31,  31,  31,  31,  31,  31,
+     23,  23,  23,  23,  23,  23,  23,  23,  44,  44,  44,  44,  44,  44,  44,  44,
+     50,  50,  50,  50,  50,  50,  50,  50,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     44,  44,  44,  44,  44,  44,  44,  44,  38,  38,  38,  38,  38,  38,  38,  38,
-     23,  23,  23,  23,  23,  23,  23,  23,  28,  28,  28,  28,  28,  28,  28,  28,
+     50,  50,  50,  50,  50,  50,  50,  50,  44,  44,  44,  44,  44,  44,  44,  44,
+     23,  23,  23,  23,  23,  23,  23,  23,  31,  31,  31,  31,  31,  31,  31,  31,
      23,  23,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     84,  85,  86,  85,  87,  85,  86,  85,  84,  80,  81,   0,  82,  80,  81,  80,
+     22,  24,  27,  24,  29,  24,  27,  24,  22,  32,  33,   0,  35,  32,  33,  32,
+     22,  24,  27,   0,  29,  24,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     19,  19,  21,  21,  19,  19,  26,  26,  19,  19,  21,  21,  19,  19,  29,  29,
-     19,  19,  21,  21,  19,  19,  26,  26,  19,  19,  21,  21,  19,  19,  39,  39,
-     41,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     19,  19,  21,  21,  19,  19,  28,  28,  19,  19,  21,  21,  19,  19,  34,  34,
+     19,  19,  21,  21,  19,  19,  28,  28,  19,  19,  21,  21,  19,  19,  45,  45,
+     47,  47,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -27510,12 +28067,18 @@ static RE_FullCaseFolding re_full_folding_table_4[] = {
     {{   38,     0,     0}},
     {{   39,     0,     0}},
     {{   40,     0,     0}},
+    {{   41,     0,     0}},
     {{   41,   776,   769}},
     {{   42,     0,     0}},
+    {{   43,     0,     0}},
     {{   46,     0,     0}},
+    {{   47,     0,     0}},
     {{   48,     0,     0}},
     {{   56,     0,     0}},
+    {{   57,     0,     0}},
+    {{   59,     0,     0}},
     {{   62,     0,     0}},
+    {{   63,     0,     0}},
     {{   64,     0,     0}},
     {{   65,     0,     0}},
     {{   67,     0,     0}},
@@ -27560,7 +28123,14 @@ static RE_FullCaseFolding re_full_folding_table_4[] = {
     {{  202,     0,     0}},
     {{  205,     0,     0}},
     {{  208,     0,     0}},
+    {{  217,     0,     0}},
+    {{  219,     0,     0}},
+    {{  223,     0,     0}},
     {{  226,  1410,     0}},
+    {{  231,     0,     0}},
+    {{  233,     0,     0}},
+    {{  235,     0,     0}},
+    {{  239,     0,     0}},
     {{  250,     0,     0}},
     {{  252,     0,     0}},
     {{  268,     0,     0}},
diff --git a/regex_2/_regex_unicode.h b/regex_2/_regex_unicode.h
index ea8e48ccc049a96f4ca28609fc9ec386fcf22e9d..87847c84b94a27d636668c26ab0c864430a33e48 100644
--- a/regex_2/_regex_unicode.h
+++ b/regex_2/_regex_unicode.h
@@ -193,9 +193,9 @@ typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 codepoint);
 #define RE_LBREAK_REGIONALINDICATOR 41
 #define RE_LBREAK_EMODIFIER 42
 
-extern char* re_strings[1447];
+extern char* re_strings[1472];
 extern RE_Property re_properties[173];
-extern RE_PropertyValue re_property_values[1589];
+extern RE_PropertyValue re_property_values[1619];
 extern RE_UINT16 re_expand_on_folding[104];
 extern RE_GetPropertyFunc re_get_property[94];
 
diff --git a/regex_2/regex.py b/regex_2/regex.py
index 19faff7aa51ad73bbfd714e79475f8c237b18d97..f27ed183319c246b9ef13feed060bf4b9bf83038 100644
--- a/regex_2/regex.py
+++ b/regex_2/regex.py
@@ -241,7 +241,7 @@ __all__ = ["cache_all", "compile", "DEFAULT_VERSION", "escape", "findall",
   "VERSION1", "X", "VERBOSE", "W", "WORD", "error", "Regex", "__version__",
   "__doc__"]
 
-__version__ = "2.5.91"
+__version__ = "2.5.103"
 
 # --------------------------------------------------------------------
 # Public interface.
diff --git a/regex_2/test_regex.py b/regex_2/test_regex.py
index fc41704c71f23e0809f8532da384f5d71127e63f..dc0f0ff0fcd9f3efe8a49bcfdfa0665bef607dba 100644
--- a/regex_2/test_regex.py
+++ b/regex_2/test_regex.py
@@ -4078,6 +4078,42 @@ thing
         self.assertEqual(regex.findall(r'(?i)(\d+){i<=2:[ab]}', '123X4Y5'),
           ['123', '4', '5'])
 
+        # Git issue 403: Fuzzy matching with wrong distance (unnecessary substitutions)
+        self.assertEqual(regex.match(r'^(test){e<=5}$', 'terstin',
+          flags=regex.B).fuzzy_counts, (0, 3, 0))
+
+        # Git issue 408: regex fails with a quantified backreference but succeeds with repeated backref
+        self.assertEqual(bool(regex.match(r"(?:(x*)\1\1\1)*x$", "x" * 5)), True)
+        self.assertEqual(bool(regex.match(r"(?:(x*)\1{3})*x$", "x" * 5)), True)
+
+        # Git issue 415: Fuzzy character restrictions don't apply to insertions at "right edge"
+        self.assertEqual(regex.match(r't(?:es){s<=1:\d}t', 'te5t').group(),
+          'te5t')
+        self.assertEqual(regex.match(r't(?:es){s<=1:\d}t', 'tezt'), None)
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t', 'tes5t').group(),
+          'tes5t')
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t', 'teszt'), None)
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t',
+          'tes5t').fuzzy_changes, ([], [3], []))
+        self.assertEqual(regex.match(r't(es){i<=1,0<e<=1}t', 'tes5t').group(),
+          'tes5t')
+        self.assertEqual(regex.match(r't(?:es){i<=1,0<e<=1:\d}t',
+          'tes5t').fuzzy_changes, ([], [3], []))
+
+        # Git issue 421: Fatal Python error: Segmentation fault
+        self.assertEqual(regex.compile("(\d+ week|\d+ days)").split("7 days"), ['', '7 days', ''])
+        self.assertEqual(regex.compile("(\d+ week|\d+ days)").split("10 days"), ['', '10 days', ''])
+
+        self.assertEqual(regex.compile("[ ]* Name[ ]*\* ").search("  Name *"), None)
+
+        self.assertEqual(regex.compile('a|\\.*pb\\.py').search('.geojs'), None)
+
+        p = regex.compile('(?<=(?:\\A|\\W|_))(\\d+ decades? ago|\\d+ minutes ago|\\d+ seconds ago|in \\d+ decades?|\\d+ months ago|in \\d+ minutes|\\d+ minute ago|in \\d+ seconds|\\d+ second ago|\\d+ years ago|in \\d+ months|\\d+ month ago|\\d+ weeks ago|\\d+ hours ago|in \\d+ minute|in \\d+ second|in \\d+ years|\\d+ year ago|in \\d+ month|in \\d+ weeks|\\d+ week ago|\\d+ days ago|in \\d+ hours|\\d+ hour ago|in \\d+ year|in \\d+ week|in \\d+ days|\\d+ day ago|in \\d+ hour|\\d+ min ago|\\d+ sec ago|\\d+ yr ago|\\d+ mo ago|\\d+ wk ago|in \\d+ day|\\d+ hr ago|in \\d+ min|in \\d+ sec|in \\d+ yr|in \\d+ mo|in \\d+ wk|in \\d+ hr)(?=(?:\\Z|\\W|_))', flags=regex.I | regex.V0)
+        self.assertEqual(p.search('1 month ago').group(), '1 month ago')
+        self.assertEqual(p.search('9 hours 1 minute ago').group(), '1 minute ago')
+        self.assertEqual(p.search('10 months 1 hour ago').group(), '1 hour ago')
+        self.assertEqual(p.search('1 month 10 hours ago').group(), '10 hours ago')
+
     def test_fuzzy_ext(self):
         self.assertEqual(bool(regex.fullmatch(r'(?r)(?:a){e<=1:[a-z]}', 'e')),
           True)
diff --git a/regex_3/_regex.c b/regex_3/_regex.c
index 63fdaab849c6a02a5447a54380ea399d96ec30d1..ef7cbf16ade42f2b70290bfa81e44edbf1892ef5 100644
--- a/regex_3/_regex.c
+++ b/regex_3/_regex.c
@@ -6434,13 +6434,13 @@ Py_LOCAL_INLINE(BOOL) build_fast_tables_rev(RE_State* state, RE_Node* node,
 
 /* Performs a string search. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6455,7 +6455,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6622,13 +6622,13 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_fld_rev(RE_State* state, RE_Node*
 
 /* Performs a string search, ignoring case. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6643,7 +6643,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6663,13 +6663,14 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign(RE_State* state, RE_Node* node,
 
 /* Performs a string search, backwards, ignoring case. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
-  node, Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  node, Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial)
+  {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6684,7 +6685,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -6704,13 +6705,13 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_ign_rev(RE_State* state, RE_Node*
 
 /* Performs a string search, backwards. */
 Py_LOCAL_INLINE(Py_ssize_t) string_search_rev(RE_State* state, RE_Node* node,
-  Py_ssize_t text_pos, Py_ssize_t limit, BOOL* is_partial) {
+  Py_ssize_t text_pos, Py_ssize_t limit, BOOL try_fast, BOOL* is_partial) {
     Py_ssize_t found_pos;
 
     *is_partial = FALSE;
 
     /* Has the node been initialised for fast searching, if necessary? */
-    if (!(node->status & RE_STATUS_FAST_INIT)) {
+    if (try_fast && !(node->status & RE_STATUS_FAST_INIT)) {
         /* Ideally the pattern should immutable and shareable across threads.
          * Internally, however, it isn't. For safety we need to hold the GIL.
          */
@@ -6725,7 +6726,7 @@ Py_LOCAL_INLINE(Py_ssize_t) string_search_rev(RE_State* state, RE_Node* node,
         release_GIL(state);
     }
 
-    if (node->string.bad_character_offset) {
+    if (try_fast && node->string.bad_character_offset) {
         /* Start with a fast search. This will find the string if it's complete
          * (i.e. not truncated).
          */
@@ -8123,7 +8124,8 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING(RE_State* state, RE_Node* node,
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search(state, node, text_pos, state->slice_end, is_partial);
+    return string_search(state, node, text_pos, state->slice_end, TRUE,
+      is_partial);
 }
 
 /* Searches for a string, ignoring case. */
@@ -8162,7 +8164,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_IGN(RE_State* state, RE_Node*
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search_ign(state, node, text_pos, state->slice_end,
+    return string_search_ign(state, node, text_pos, state->slice_end, TRUE,
       is_partial);
 }
 
@@ -8175,7 +8177,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_IGN_REV(RE_State* state,
         return text_pos;
 
     return string_search_ign_rev(state, node, text_pos, state->slice_start,
-      is_partial);
+      TRUE, is_partial);
 }
 
 /* Searches for a string, backwards. */
@@ -8186,7 +8188,7 @@ Py_LOCAL_INLINE(Py_ssize_t) search_start_STRING_REV(RE_State* state, RE_Node*
     if ((node->status & RE_STATUS_REQUIRED) && text_pos == state->req_pos)
         return text_pos;
 
-    return string_search_rev(state, node, text_pos, state->slice_start,
+    return string_search_rev(state, node, text_pos, state->slice_start, TRUE,
       is_partial);
 }
 
@@ -9528,11 +9530,13 @@ too_wide:
     return NULL;
 }
 
+/* Calculates the total number of errors. */
 Py_LOCAL_INLINE(size_t) total_errors(size_t* fuzzy_counts) {
     return fuzzy_counts[RE_FUZZY_DEL] + fuzzy_counts[RE_FUZZY_INS] +
       fuzzy_counts[RE_FUZZY_SUB];
 }
 
+/* Calculates the total cost of the errors. */
 Py_LOCAL_INLINE(size_t) total_cost(size_t* fuzzy_counts, RE_Node* fuzzy_node) {
     RE_CODE* values;
 
@@ -9826,6 +9830,9 @@ Py_LOCAL_INLINE(BOOL) fuzzy_ext_match(RE_State* state, RE_Node* fuzzy_node,
   Py_ssize_t pos) {
     RE_Node* test_node;
 
+    if (!fuzzy_node)
+        return TRUE;
+
     test_node = fuzzy_node->nonstring.next_2.node;
     if (!test_node)
         return TRUE;
@@ -10004,6 +10011,8 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
     if (!this_error_permitted(state, data->fuzzy_type))
         return RE_ERROR_FAILURE;
 
+    data->new_text_pos = state->text_pos;
+
     switch (data->fuzzy_type) {
     case RE_FUZZY_DEL:
         /* Could a character at text_pos have been deleted? */
@@ -10014,6 +10023,7 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
             data->new_string_pos += step;
         else
             data->new_node = data->new_node->next_1.node;
+
         return RE_ERROR_SUCCESS;
     case RE_FUZZY_INS:
         /* Could the character at text_pos have been inserted? */
@@ -10030,16 +10040,18 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
                 return RE_ERROR_FAILURE;
 
             data->new_text_pos = new_pos;
+
             return RE_ERROR_SUCCESS;
         }
 
-        return check_fuzzy_partial(state, new_pos);
+        return check_fuzzy_partial(state, data->new_text_pos);
     case RE_FUZZY_SUB:
         /* Could the character at text_pos have been substituted? */
         if (step == 0)
             return RE_ERROR_FAILURE;
 
         new_pos = data->new_text_pos + step;
+
         if (state->slice_start <= new_pos && new_pos <= state->slice_end) {
             if (!fuzzy_ext_match(state, state->fuzzy_node, data->new_text_pos))
                 return RE_ERROR_FAILURE;
@@ -10061,8 +10073,8 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_item(RE_State* state, RE_FuzzyData* data,
 }
 
 /* Tries a fuzzy match of an item of width 0 or 1. */
-Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
-  text_pos, RE_Node** node, RE_INT8 step) {
+Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, RE_Node**
+  node, RE_INT8 step) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
     TRACE(("<<fuzzy_match_item>>\n"))
@@ -10074,7 +10086,6 @@ Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
         return RE_ERROR_FAILURE;
     }
 
-    data.new_text_pos = *text_pos;
     data.new_node = *node;
 
     if (step == 0) {
@@ -10091,8 +10102,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_item(RE_State* state, BOOL search, Py_ssize_t*
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (data.fuzzy_type = 0; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10114,7 +10124,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, *text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10130,7 +10140,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = data.new_node;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10141,9 +10151,8 @@ found:
 
 /* Retries a fuzzy match of a item of width 0 or 1. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
-  search, Py_ssize_t* text_pos, RE_Node** node, BOOL advance) {
+  search, RE_Node** node, BOOL advance) {
     size_t* fuzzy_counts;
-    Py_ssize_t curr_text_pos;
     RE_FuzzyData data;
     RE_INT8 step;
     RE_Node* curr_node;
@@ -10157,14 +10166,13 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&curr_node))
         return RE_ERROR_MEMORY;
 
-    data.new_text_pos = curr_text_pos;
     data.new_node = curr_node;
     data.step = step;
 
@@ -10176,8 +10184,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_item(RE_State* state, RE_UINT8 op, BOOL
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     step = advance ? data.step : 0;
 
@@ -10201,7 +10208,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10217,7 +10224,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = data.new_node;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10227,19 +10234,18 @@ found:
 }
 
 /* Tries a fuzzy insertion of characters, initially 0, after a string. */
-Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, Py_ssize_t text_pos, int
-  step, RE_Node* node) {
+Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, int step, RE_Node* node) {
     Py_ssize_t limit;
 
     limit = step > 0 ? state->slice_end : state->slice_start;
 
-    if (text_pos == limit || !insertion_permitted(state, state->fuzzy_node,
-      state->fuzzy_counts))
+    if (state->text_pos == limit || !insertion_permitted(state,
+      state->fuzzy_node, state->fuzzy_counts))
         return RE_ERROR_SUCCESS;
 
     if (!push_int8(state, &state->bstack, (RE_INT8)step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, 0))
         return RE_ERROR_MEMORY;
@@ -10254,11 +10260,9 @@ Py_LOCAL_INLINE(int) fuzzy_insert(RE_State* state, Py_ssize_t text_pos, int
 }
 
 /* Retries a fuzzy insertion of characters after a string. */
-Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
-  RE_Node** node) {
+Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, RE_Node** node) {
     RE_Node* curr_node;
     Py_ssize_t count;
-    Py_ssize_t curr_text_pos;
     RE_INT8 step;
     Py_ssize_t limit;
 
@@ -10268,15 +10272,16 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
         return RE_ERROR_MEMORY;
     if (!pop_ssize(state, &state->bstack, &count))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &step))
         return RE_ERROR_MEMORY;
 
     limit = step > 0 ? state->slice_end : state->slice_start;
 
-    if (curr_text_pos == limit || !insertion_permitted(state,
-      state->fuzzy_node, state->fuzzy_counts)) {
+    if (state->text_pos == limit || !insertion_permitted(state,
+      state->fuzzy_node, state->fuzzy_counts) || !fuzzy_ext_match(state,
+      curr_node->nonstring.next_2.node, state->text_pos)) {
         while (count > 0) {
             unrecord_fuzzy(state);
             --state->fuzzy_counts[RE_FUZZY_INS];
@@ -10286,12 +10291,12 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
         return RE_ERROR_FAILURE;
     }
 
-    curr_text_pos += step;
+    state->text_pos += step;
     ++count;
 
     if (!push_int8(state, &state->bstack, step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, count))
         return RE_ERROR_MEMORY;
@@ -10302,21 +10307,20 @@ Py_LOCAL_INLINE(int) retry_fuzzy_insert(RE_State* state, Py_ssize_t *text_pos,
 
     /* bstack: step text_pos count node FUZZY_INSERT */
 
-    if (!record_fuzzy(state, RE_FUZZY_INS, curr_text_pos - step))
+    if (!record_fuzzy(state, RE_FUZZY_INS, state->text_pos - step))
         return RE_ERROR_MEMORY;
 
     ++state->fuzzy_counts[RE_FUZZY_INS];
     ++state->capture_change;
 
-    *text_pos = curr_text_pos;
     *node = curr_node;
 
     return RE_ERROR_SUCCESS;
 }
 
 /* Tries a fuzzy match of a string. */
-Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, Py_ssize_t* string_pos, RE_INT8 step) {
+Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search, RE_Node*
+  node, Py_ssize_t* string_pos, RE_INT8 step) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
     TRACE(("<<fuzzy_match_string>>\n"))
@@ -10328,15 +10332,13 @@ Py_LOCAL_INLINE(int) fuzzy_match_string(RE_State* state, BOOL search,
         return RE_ERROR_FAILURE;
     }
 
-    data.new_text_pos = *text_pos;
     data.new_string_pos = *string_pos;
     data.step = step;
 
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (data.fuzzy_type = 0; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10360,7 +10362,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, *text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10369,14 +10371,13 @@ found:
 
     /* bstack: node step string_pos text_pos fuzzy_type op */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      data.new_text_pos : data.new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *string_pos = data.new_string_pos;
 
     TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
@@ -10387,11 +10388,9 @@ found:
 
 /* Retries a fuzzy match of a string. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_string(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, Py_ssize_t* string_pos) {
+  BOOL search, RE_Node** node, Py_ssize_t* string_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t curr_text_pos;
-    Py_ssize_t curr_string_pos;
     RE_Node* new_node;
     TRACE(("<<retry_fuzzy_match_string>>\n"))
 
@@ -10403,25 +10402,23 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_string_pos))
+    if (!pop_ssize(state, &state->bstack, string_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &data.step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&new_node))
         return RE_ERROR_MEMORY;
 
-    data.new_text_pos = curr_text_pos;
-    data.new_string_pos = curr_string_pos;
+    data.new_string_pos = *string_pos;
 
     --fuzzy_counts[data.fuzzy_type];
 
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || data.new_text_pos !=
-      state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
 
     for (++data.fuzzy_type; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10443,17 +10440,16 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, data.step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_string_pos))
+    if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      data.new_text_pos : data.new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     /* bstack: node step string_pos text_pos fuzzy_type op */
@@ -10461,7 +10457,7 @@ found:
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = data.new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *string_pos = data.new_string_pos;
 
@@ -10476,43 +10472,51 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_string_fld(RE_State* state, RE_FuzzyData*
   data) {
     int new_pos;
 
-    if (this_error_permitted(state, data->fuzzy_type)) {
-        switch (data->fuzzy_type) {
-        case RE_FUZZY_DEL:
-            /* Could a character at text_pos have been deleted? */
-            data->new_string_pos += data->step;
-            return RE_ERROR_SUCCESS;
-        case RE_FUZZY_INS:
-            /* Could the character at text_pos have been inserted? */
-            if (!data->permit_insertion)
+    if (!this_error_permitted(state, data->fuzzy_type))
+        return RE_ERROR_FAILURE;
+
+    data->new_text_pos = state->text_pos;
+
+    switch (data->fuzzy_type) {
+    case RE_FUZZY_DEL:
+        /* Could a character at text_pos have been deleted? */
+        data->new_string_pos += data->step;
+
+        return RE_ERROR_SUCCESS;
+    case RE_FUZZY_INS:
+        /* Could the character at text_pos have been inserted? */
+        if (!data->permit_insertion)
+            return RE_ERROR_FAILURE;
+
+        new_pos = data->new_folded_pos + data->step;
+
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match(state, state->fuzzy_node,
+              data->new_string_pos))
                 return RE_ERROR_FAILURE;
 
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match(state, state->fuzzy_node,
-                  data->new_string_pos))
-                    return RE_ERROR_FAILURE;
+            data->new_folded_pos = new_pos;
 
-                data->new_folded_pos = new_pos;
-                return RE_ERROR_SUCCESS;
-            }
+            return RE_ERROR_SUCCESS;
+        }
 
-            return check_fuzzy_partial(state, new_pos);
-        case RE_FUZZY_SUB:
-            /* Could the character at text_pos have been substituted? */
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match(state, state->fuzzy_node,
-                  data->new_string_pos))
-                    return RE_ERROR_FAILURE;
+        return check_fuzzy_partial(state, new_pos);
+    case RE_FUZZY_SUB:
+        /* Could the character at text_pos have been substituted? */
+        new_pos = data->new_folded_pos + data->step;
 
-                data->new_folded_pos = new_pos;
-                data->new_string_pos += data->step;
-                return RE_ERROR_SUCCESS;
-            }
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match(state, state->fuzzy_node,
+              data->new_string_pos))
+                return RE_ERROR_FAILURE;
+
+            data->new_folded_pos = new_pos;
+            data->new_string_pos += data->step;
 
-            return check_fuzzy_partial(state, new_pos);
+            return RE_ERROR_SUCCESS;
         }
+
+        return check_fuzzy_partial(state, new_pos);
     }
 
     return RE_ERROR_FAILURE;
@@ -10520,18 +10524,19 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_string_fld(RE_State* state, RE_FuzzyData*
 
 /* Tries a fuzzy match of a string, ignoring case. */
 Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, Py_ssize_t* string_pos, int* folded_pos,
-  int folded_len, RE_INT8 step) {
+  RE_Node* node, Py_ssize_t* string_pos, int* folded_pos, int folded_len,
+  RE_INT8 step) {
     size_t* fuzzy_counts;
-    Py_ssize_t new_text_pos;
     RE_FuzzyData data;
+    TRACE(("<<fuzzy_match_string_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
-    if (!any_error_permitted(state))
+    if (!any_error_permitted(state)) {
+        TRACE(("    return RE_ERROR_FAILURE\n"))
         return RE_ERROR_FAILURE;
+    }
 
-    new_text_pos = *text_pos;
     data.new_string_pos = *string_pos;
     data.new_folded_pos = *folded_pos;
     data.folded_len = folded_len;
@@ -10540,7 +10545,8 @@ Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10561,6 +10567,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_string_fld(RE_State* state, BOOL search,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10574,7 +10581,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10585,30 +10592,30 @@ found:
      * op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *string_pos = data.new_string_pos;
     *folded_pos = data.new_folded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
 /* Retries a fuzzy match of a string, ignoring case. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, Py_ssize_t* string_pos,
-  int* folded_pos) {
+  BOOL search, RE_Node** node, Py_ssize_t* string_pos, int* folded_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t new_text_pos;
     int curr_folded_pos;
-    Py_ssize_t curr_string_pos;
     RE_Node* new_node;
+    TRACE(("<<retry_fuzzy_match_string_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
@@ -10619,20 +10626,20 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &new_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &data.folded_len))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &curr_folded_pos))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &curr_string_pos))
+    if (!pop_ssize(state, &state->bstack, string_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int8(state, &state->bstack, &data.step))
         return RE_ERROR_MEMORY;
     if (!pop_pointer(state, &state->bstack, (void*)&new_node))
         return RE_ERROR_MEMORY;
 
-    data.new_string_pos = curr_string_pos;
+    data.new_string_pos = *string_pos;
     data.new_folded_pos = curr_folded_pos;
 
     --fuzzy_counts[data.fuzzy_type];
@@ -10640,7 +10647,8 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (data.step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10661,6 +10669,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_string_fld(RE_State* state, RE_UINT8 op,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10668,35 +10677,37 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int8(state, &state->bstack, data.step))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, curr_string_pos))
+    if (!push_ssize(state, &state->bstack, *string_pos))
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, curr_folded_pos))
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, data.folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
+        return RE_ERROR_MEMORY;
+
     /* bstack: node step string_pos folded_pos folded_len text_pos fuzzy_type
      * op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
-        return RE_ERROR_MEMORY;
-
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *string_pos = data.new_string_pos;
     *folded_pos = data.new_folded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
@@ -10705,43 +10716,51 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_group_fld(RE_State* state, RE_FuzzyData*
   data) {
     int new_pos;
 
-    if (this_error_permitted(state, data->fuzzy_type)) {
-        switch (data->fuzzy_type) {
-        case RE_FUZZY_DEL:
-            /* Could a character at text_pos have been deleted? */
-            data->new_gfolded_pos += data->step;
-            return RE_ERROR_SUCCESS;
-        case RE_FUZZY_INS:
-            /* Could the character at text_pos have been inserted? */
-            if (!data->permit_insertion)
+    if (!this_error_permitted(state, data->fuzzy_type))
+        return RE_ERROR_FAILURE;
+
+    data->new_text_pos = state->text_pos;
+
+    switch (data->fuzzy_type) {
+    case RE_FUZZY_DEL:
+        /* Could a character at text_pos have been deleted? */
+        data->new_gfolded_pos += data->step;
+
+        return RE_ERROR_SUCCESS;
+    case RE_FUZZY_INS:
+        /* Could the character at text_pos have been inserted? */
+        if (!data->permit_insertion)
+            return RE_ERROR_FAILURE;
+
+        new_pos = data->new_folded_pos + data->step;
+
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
+              data->new_folded_pos))
                 return RE_ERROR_FAILURE;
 
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
-                  data->new_folded_pos))
-                    return RE_ERROR_FAILURE;
+            data->new_folded_pos = new_pos;
 
-                data->new_folded_pos = new_pos;
-                return RE_ERROR_SUCCESS;
-            }
+            return RE_ERROR_SUCCESS;
+        }
 
-            return check_fuzzy_partial(state, new_pos);
-        case RE_FUZZY_SUB:
-            /* Could the character at text_pos have been substituted? */
-            new_pos = data->new_folded_pos + data->step;
-            if (0 <= new_pos && new_pos <= data->folded_len) {
-                if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
-                  data->new_folded_pos))
-                    return RE_ERROR_FAILURE;
+        return check_fuzzy_partial(state, new_pos);
+    case RE_FUZZY_SUB:
+        /* Could the character at text_pos have been substituted? */
+        new_pos = data->new_folded_pos + data->step;
 
-                data->new_folded_pos = new_pos;
-                data->new_gfolded_pos += data->step;
-                return RE_ERROR_SUCCESS;
-            }
+        if (0 <= new_pos && new_pos <= data->folded_len) {
+            if (!fuzzy_ext_match_group_fld(state, state->fuzzy_node,
+              data->new_folded_pos))
+                return RE_ERROR_FAILURE;
 
-            return check_fuzzy_partial(state, new_pos);
+            data->new_folded_pos = new_pos;
+            data->new_gfolded_pos += data->step;
+
+            return RE_ERROR_SUCCESS;
         }
+
+        return check_fuzzy_partial(state, new_pos);
     }
 
     return RE_ERROR_FAILURE;
@@ -10749,19 +10768,20 @@ Py_LOCAL_INLINE(int) next_fuzzy_match_group_fld(RE_State* state, RE_FuzzyData*
 
 /* Tries a fuzzy match of a group reference, ignoring case. */
 Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
-  Py_ssize_t* text_pos, RE_Node* node, int* folded_pos, int folded_len,
-  Py_ssize_t* group_pos, int* gfolded_pos, int gfolded_len, RE_INT8 step) {
+  RE_Node* node, int* folded_pos, int folded_len, Py_ssize_t* group_pos, int*
+  gfolded_pos, int gfolded_len, RE_INT8 step) {
     size_t* fuzzy_counts;
-    Py_ssize_t new_text_pos;
     RE_FuzzyData data;
     Py_ssize_t new_group_pos;
+    TRACE(("<<fuzzy_match_group_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
-    if (!any_error_permitted(state))
+    if (!any_error_permitted(state)) {
+        TRACE(("    return RE_ERROR_FAILURE\n"))
         return RE_ERROR_FAILURE;
+    }
 
-    new_text_pos = *text_pos;
     data.new_folded_pos = *folded_pos;
     data.folded_len = folded_len;
     new_group_pos = *group_pos;
@@ -10771,7 +10791,8 @@ Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor;
+
     if (data.step > 0) {
         if (data.new_folded_pos != 0)
             data.permit_insertion = RE_ERROR_SUCCESS;
@@ -10792,6 +10813,7 @@ Py_LOCAL_INLINE(int) fuzzy_match_group_fld(RE_State* state, BOOL search,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10809,7 +10831,7 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
@@ -10820,33 +10842,35 @@ found:
      * folded_len text_pos fuzzy_type op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
         return RE_ERROR_MEMORY;
 
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *group_pos = new_group_pos;
     *folded_pos = data.new_folded_pos;
     *gfolded_pos = data.new_gfolded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
 /* Retries a fuzzy match of a group reference, ignoring case. */
 Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
-  BOOL search, Py_ssize_t* text_pos, RE_Node** node, int* folded_pos,
-  Py_ssize_t* group_pos, int* gfolded_pos) {
+  BOOL search, RE_Node** node, int* folded_pos, Py_ssize_t* group_pos, int*
+  gfolded_pos) {
     size_t* fuzzy_counts;
     RE_FuzzyData data;
-    Py_ssize_t new_text_pos;
     int new_folded_pos;
     Py_ssize_t new_group_pos;
     int gfolded_len;
     int new_gfolded_pos;
     RE_Node* new_node;
+    TRACE(("<<retry_fuzzy_match_group_fld>>\n"))
 
     fuzzy_counts = state->fuzzy_counts;
 
@@ -10858,7 +10882,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
 
     if (!pop_uint8(state, &state->bstack, &data.fuzzy_type))
         return RE_ERROR_MEMORY;
-    if (!pop_ssize(state, &state->bstack, &new_text_pos))
+    if (!pop_ssize(state, &state->bstack, &state->text_pos))
         return RE_ERROR_MEMORY;
     if (!pop_int(state, &state->bstack, &data.folded_len))
         return RE_ERROR_MEMORY;
@@ -10883,8 +10907,8 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
     /* Permit insertion except initially when searching (it's better just to
      * start searching one character later).
      */
-    data.permit_insertion = !search || new_text_pos != state->search_anchor ||
-      data.new_folded_pos != data.folded_len;
+    data.permit_insertion = !search || state->text_pos != state->search_anchor
+      || data.new_folded_pos != data.folded_len;
 
     for (++data.fuzzy_type; data.fuzzy_type < RE_FUZZY_COUNT;
       data.fuzzy_type++) {
@@ -10898,6 +10922,7 @@ Py_LOCAL_INLINE(int) retry_fuzzy_match_group_fld(RE_State* state, RE_UINT8 op,
             goto found;
     }
 
+    TRACE(("    return RE_ERROR_FAILURE\n"))
     return RE_ERROR_FAILURE;
 
 found:
@@ -10915,30 +10940,32 @@ found:
         return RE_ERROR_MEMORY;
     if (!push_int(state, &state->bstack, data.folded_len))
         return RE_ERROR_MEMORY;
-    if (!push_ssize(state, &state->bstack, new_text_pos))
+    if (!push_ssize(state, &state->bstack, state->text_pos))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, data.fuzzy_type))
         return RE_ERROR_MEMORY;
     if (!push_uint8(state, &state->bstack, op))
         return RE_ERROR_MEMORY;
 
+    if (!record_fuzzy(state, data.fuzzy_type, state->text_pos))
+        return RE_ERROR_MEMORY;
+
     /* bstack: node step gfolded_pos gfolded_len group_pos folded_pos
      * folded_len text_pos fuzzy_type op
      */
 
-    if (!record_fuzzy(state, data.fuzzy_type, data.fuzzy_type == RE_FUZZY_DEL ?
-      new_text_pos : new_text_pos - data.step))
-        return RE_ERROR_MEMORY;
-
     ++fuzzy_counts[data.fuzzy_type];
     ++state->capture_change;
 
-    *text_pos = new_text_pos;
+    state->text_pos = data.new_text_pos;
     *node = new_node;
     *group_pos = new_group_pos;
     *folded_pos = data.new_folded_pos;
     *gfolded_pos = data.new_gfolded_pos;
 
+    TRACE(("    fuzzy_counts is (%zd, %zd, %zd)\n", fuzzy_counts[0],
+      fuzzy_counts[1], fuzzy_counts[2]))
+    TRACE(("    return RE_ERROR_SUCCESS\n"))
     return RE_ERROR_SUCCESS;
 }
 
@@ -10976,7 +11003,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos > state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11109,7 +11136,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos > state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_ign(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11154,7 +11181,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos < state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_ign_rev(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11199,7 +11226,7 @@ Py_LOCAL_INLINE(Py_ssize_t) locate_required_string(RE_State* state, BOOL
         if (state->req_pos < 0 || state->text_pos < state->req_pos)
             /* First time or already passed it. */
             found_pos = string_search_rev(state, pattern->req_string,
-              state->text_pos, limit, &is_partial);
+              state->text_pos, limit, TRUE, &is_partial);
         else {
             found_pos = state->req_pos;
             end_pos = state->req_end;
@@ -11730,8 +11757,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11751,8 +11777,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11772,8 +11797,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11793,8 +11817,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11814,8 +11837,7 @@ advance:
                 ++state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11835,8 +11857,7 @@ advance:
                 --state->text_pos;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -11878,8 +11899,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -11946,8 +11966,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11970,8 +11989,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -11993,8 +12011,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -12016,8 +12033,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -12078,8 +12094,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12099,8 +12114,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12120,8 +12134,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12318,6 +12331,8 @@ advance:
             /* Save the inner fuzzy info. */
             if (!push_fuzzy_counts(state, &state->bstack, state->fuzzy_counts))
                 return RE_ERROR_MEMORY;
+            if (!push_ssize(state, &state->bstack, 0))
+                return RE_ERROR_MEMORY;
             if (!push_pointer(state, &state->bstack, state->fuzzy_node))
                 return RE_ERROR_MEMORY;
             if (!push_ssize(state, &state->bstack, state->text_pos))
@@ -12838,8 +12853,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12858,8 +12872,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12878,8 +12891,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12899,8 +12911,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12920,8 +12931,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12940,8 +12950,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -12987,8 +12996,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -13635,8 +13643,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13659,8 +13666,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13682,8 +13688,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13705,8 +13710,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13749,8 +13753,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13773,8 +13776,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -13796,8 +13798,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13819,8 +13820,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -13864,8 +13864,8 @@ advance:
                     ++string_pos;
                     ++state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, 1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, 1);
                     if (status < 0)
                         return status;
 
@@ -13955,9 +13955,9 @@ advance:
                     ++folded_pos;
                     ++gfolded_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_group_fld(state, search,
-                      &state->text_pos, node, &folded_pos, folded_len,
-                      &string_pos, &gfolded_pos, gfolded_len, 1);
+                    status = fuzzy_match_group_fld(state, search, node,
+                      &folded_pos, folded_len, &string_pos, &gfolded_pos,
+                      gfolded_len, 1);
                     if (status < 0)
                         return status;
 
@@ -14056,9 +14056,9 @@ advance:
                     --folded_pos;
                     --gfolded_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_group_fld(state, search,
-                      &state->text_pos, node, &folded_pos, folded_len,
-                      &string_pos, &gfolded_pos, gfolded_len, -1);
+                    status = fuzzy_match_group_fld(state, search, node,
+                      &folded_pos, folded_len, &string_pos, &gfolded_pos,
+                      gfolded_len, -1);
                     if (status < 0)
                         return status;
 
@@ -14122,8 +14122,8 @@ advance:
                     ++string_pos;
                     ++state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, 1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, 1);
                     if (status < 0)
                         return status;
 
@@ -14179,8 +14179,8 @@ advance:
                     --string_pos;
                     --state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, -1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, -1);
                     if (status < 0)
                         return status;
 
@@ -14235,8 +14235,8 @@ advance:
                     --string_pos;
                     --state->text_pos;
                 } else if (node->status & RE_STATUS_FUZZY) {
-                    status = fuzzy_match_string(state, search,
-                      &state->text_pos, node, &string_pos, -1);
+                    status = fuzzy_match_string(state, search, node,
+                      &string_pos, -1);
                     if (status < 0)
                         return status;
 
@@ -14262,8 +14262,7 @@ advance:
             if (state->text_pos == state->search_anchor)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14288,8 +14287,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -14314,8 +14312,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 1);
+                status = fuzzy_match_item(state, search, &node, 1);
                 if (status < 0)
                     return status;
 
@@ -14339,8 +14336,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -14364,8 +14360,7 @@ advance:
                 state->text_pos += node->step;
                 node = node->next_1.node;
             } else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, -1);
+                status = fuzzy_match_item(state, search, &node, -1);
                 if (status < 0)
                     return status;
 
@@ -14483,8 +14478,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14503,8 +14497,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14523,8 +14516,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14543,8 +14535,7 @@ advance:
             if (status == RE_ERROR_SUCCESS)
                 node = node->next_1.node;
             else if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_match_item(state, search, &state->text_pos,
-                  &node, 0);
+                status = fuzzy_match_item(state, search, &node, 0);
                 if (status < 0)
                     return status;
 
@@ -14582,8 +14573,8 @@ advance:
                         ++string_pos;
                         ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, 1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, 1);
                         if (status < 0)
                             return status;
 
@@ -14599,8 +14590,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, 1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, 1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14672,9 +14662,8 @@ advance:
                         if (folded_pos >= folded_len)
                             ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, 1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, 1);
                         if (status < 0)
                             return status;
 
@@ -14693,9 +14682,8 @@ advance:
 
                 if (node->status & RE_STATUS_FUZZY) {
                     while (folded_pos < folded_len) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, 1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, 1);
                         if (status < 0)
                             return status;
 
@@ -14781,9 +14769,8 @@ advance:
                         if (folded_pos <= 0)
                             --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, -1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, -1);
                         if (status < 0)
                             return status;
 
@@ -14802,9 +14789,8 @@ advance:
 
                 if (node->status & RE_STATUS_FUZZY) {
                     while (folded_pos > 0) {
-                        status = fuzzy_match_string_fld(state, search,
-                          &state->text_pos, node, &string_pos, &folded_pos,
-                          folded_len, -1);
+                        status = fuzzy_match_string_fld(state, search, node,
+                          &string_pos, &folded_pos, folded_len, -1);
                         if (status < 0)
                             return status;
 
@@ -14857,8 +14843,8 @@ advance:
                         ++string_pos;
                         ++state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, 1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, 1);
                         if (status < 0)
                             return status;
 
@@ -14874,8 +14860,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, 1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, 1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14915,8 +14900,8 @@ advance:
                         --string_pos;
                         --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, -1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, -1);
                         if (status < 0)
                             return status;
 
@@ -14932,8 +14917,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, -1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, -1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -14973,8 +14957,8 @@ advance:
                         --string_pos;
                         --state->text_pos;
                     } else if (node->status & RE_STATUS_FUZZY) {
-                        status = fuzzy_match_string(state, search,
-                          &state->text_pos, node, &string_pos, -1);
+                        status = fuzzy_match_string(state, search, node,
+                          &string_pos, -1);
                         if (status < 0)
                             return status;
 
@@ -14990,8 +14974,7 @@ advance:
             }
 
             if (node->status & RE_STATUS_FUZZY) {
-                status = fuzzy_insert(state, state->text_pos, -1,
-                  node->next_1.node);
+                status = fuzzy_insert(state, -1, node->next_1.node);
                 if (status < 0)
                     return status;
             }
@@ -15088,8 +15071,7 @@ backtrack:
         case RE_OP_SET_UNION_REV: /* Set union, backwards. */
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_item(state, op, search,
-              &state->text_pos, &node, TRUE);
+            status = retry_fuzzy_match_item(state, op, search, &node, TRUE);
             if (status < 0)
                 return status;
 
@@ -15190,8 +15172,7 @@ backtrack:
         case RE_OP_START_OF_WORD: /* At the start of a word. */
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_item(state, op, search,
-              &state->text_pos, &node, FALSE);
+            status = retry_fuzzy_match_item(state, op, search, &node, FALSE);
             if (status < 0)
                 return status;
 
@@ -15336,6 +15317,7 @@ backtrack:
         {
             RE_Node* inner_node;
             size_t inner_counts[RE_FUZZY_COUNT];
+            size_t insertions;
             TRACE(("%s\n", re_op_text[op]))
 
             /* sstack: -
@@ -15349,6 +15331,8 @@ backtrack:
                 return RE_ERROR_MEMORY;
             if (!pop_pointer(state, &state->bstack, (void*)&inner_node))
                 return RE_ERROR_MEMORY;
+            if (!pop_size(state, &state->bstack, &insertions))
+                return RE_ERROR_MEMORY;
             if (!pop_fuzzy_counts(state, &state->bstack, inner_counts))
                 return RE_ERROR_MEMORY;
 
@@ -15357,8 +15341,10 @@ backtrack:
              * bstack: -
              */
 
-            if (insertion_permitted(state, inner_node, inner_counts) &&
-              fuzzy_ext_match(state, inner_node, state->text_pos)) {
+            if (insertion_permitted(state, inner_node, inner_counts) && 
+              total_errors(state->fuzzy_counts) + total_errors(inner_counts) < 
+              state->max_errors && fuzzy_ext_match(state, inner_node, 
+              state->text_pos)) {
                 RE_INT8 step;
                 Py_ssize_t limit;
 
@@ -15382,6 +15368,8 @@ backtrack:
                     if (!push_fuzzy_counts(state, &state->bstack,
                       inner_counts))
                         return RE_ERROR_MEMORY;
+                    if (!push_size(state, &state->bstack, insertions + 1))
+                        return RE_ERROR_MEMORY;
                     if (!push_pointer(state, &state->bstack, inner_node))
                         return RE_ERROR_MEMORY;
                     if (!push_ssize(state, &state->bstack, state->text_pos))
@@ -15421,6 +15409,8 @@ backtrack:
              * bstack: -
              */
 
+            inner_counts[RE_FUZZY_INS] -= insertions;
+
             /* Restore the inner fuzzy info. */
             Py_MEMCPY(state->fuzzy_counts, inner_counts,
               sizeof(state->fuzzy_counts));
@@ -15600,7 +15590,7 @@ backtrack:
         case RE_OP_FUZZY_INSERT:
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_insert(state, &state->text_pos, &node);
+            status = retry_fuzzy_insert(state, &node);
             if (status < 0)
                 return status;
 
@@ -15843,7 +15833,7 @@ backtrack:
                             break;
 
                         found = string_search_rev(state, test, pos + length,
-                          limit, &is_partial);
+                          limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -15979,7 +15969,7 @@ backtrack:
                             break;
 
                         found = string_search_ign_rev(state, test, pos +
-                          length, limit, &is_partial);
+                          length, limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16017,7 +16007,7 @@ backtrack:
                             break;
 
                         found = string_search_ign(state, test, pos - length,
-                          limit, &is_partial);
+                          limit, FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16055,7 +16045,7 @@ backtrack:
                             break;
 
                         found = string_search(state, test, pos - length, limit,
-                          &is_partial);
+                          FALSE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16510,7 +16500,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search(state, test, pos + 1, limit +
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16688,7 +16678,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_ign(state, test, pos + 1, limit +
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16748,7 +16738,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_ign_rev(state, test, pos - 1,
-                          limit - length, &is_partial);
+                          limit - length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -16808,7 +16798,7 @@ backtrack:
 
                         /* Look for the tail string. */
                         found = string_search_rev(state, test, pos - 1, limit -
-                          length, &is_partial);
+                          length, TRUE, &is_partial);
                         if (is_partial)
                             return RE_ERROR_PARTIAL;
 
@@ -17102,8 +17092,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_string(state, op, search,
-              &state->text_pos, &node, &string_pos);
+            status = retry_fuzzy_match_string(state, op, search, &node,
+              &string_pos);
             if (status < 0)
                 return status;
 
@@ -17118,8 +17108,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_group_fld(state, op, search,
-              &state->text_pos, &node, &folded_pos, &string_pos, &gfolded_pos);
+            status = retry_fuzzy_match_group_fld(state, op, search, &node,
+              &folded_pos, &string_pos, &gfolded_pos);
             if (status < 0)
                 return status;
 
@@ -17188,8 +17178,8 @@ backtrack:
         {
             TRACE(("%s\n", re_op_text[op]))
 
-            status = retry_fuzzy_match_string_fld(state, op, search,
-              &state->text_pos, &node, &string_pos, &folded_pos);
+            status = retry_fuzzy_match_string_fld(state, op, search, &node,
+              &string_pos, &folded_pos);
             if (status < 0)
                 return status;
 
@@ -17361,8 +17351,7 @@ Py_LOCAL_INLINE(void) init_best_list(RE_BestList* best_list) {
 }
 
 /* Finalises the list of best matches found so far. */
-Py_LOCAL_INLINE(void) fini_best_list(RE_State* state, RE_BestList*
-  best_list) {
+Py_LOCAL_INLINE(void) fini_best_list(RE_State* state, RE_BestList* best_list) {
     safe_dealloc(state, best_list->entries);
     best_list->capacity = 0;
     best_list->count = 0;
@@ -17498,11 +17487,6 @@ Py_LOCAL_INLINE(int) do_best_fuzzy_match(RE_State* state, BOOL search) {
         }
 
         start_pos = state->match_pos;
-
-        /* Should we keep searching? */
-        if (!search)
-            break;
-
         state->max_errors = fewest_errors - 1;
     }
 
@@ -19775,7 +19759,7 @@ static PyObject* match_deepcopy(MatchObject* self, PyObject* memo) {
 }
 
 /* MatchObject's 'regs' attribute. */
-static PyObject* match_regs(MatchObject* self) {
+static PyObject* match_regs(MatchObject* self, void* unused) {
     PyObject* regs;
     PyObject* item;
     size_t g;
@@ -20054,13 +20038,17 @@ static PyMethodDef match_methods[] = {
     {"__copy__", (PyCFunction)match_copy, METH_NOARGS},
     {"__deepcopy__", (PyCFunction)match_deepcopy, METH_O},
     {"__getitem__", (PyCFunction)match_getitem, METH_O|METH_COEXIST},
+#if PY_VERSION_HEX >= 0x03090000
+    {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS,
+      PyDoc_STR("See PEP 585")},
+#endif
     {NULL, NULL}
 };
 
 PyDoc_STRVAR(match_doc, "Match object");
 
 /* MatchObject's 'lastindex' attribute. */
-static PyObject* match_lastindex(PyObject* self_) {
+static PyObject* match_lastindex(PyObject* self_, void* unused) {
     MatchObject* self;
 
     self = (MatchObject*)self_;
@@ -20072,7 +20060,7 @@ static PyObject* match_lastindex(PyObject* self_) {
 }
 
 /* MatchObject's 'lastgroup' attribute. */
-static PyObject* match_lastgroup(PyObject* self_) {
+static PyObject* match_lastgroup(PyObject* self_, void* unused) {
     MatchObject* self;
 
     self = (MatchObject*)self_;
@@ -20099,7 +20087,7 @@ static PyObject* match_lastgroup(PyObject* self_) {
 }
 
 /* MatchObject's 'string' attribute. */
-static PyObject* match_string(PyObject* self_) {
+static PyObject* match_string(PyObject* self_, void* unused) {
     MatchObject* self;
 
     self = (MatchObject*)self_;
@@ -20112,7 +20100,7 @@ static PyObject* match_string(PyObject* self_) {
 }
 
 /* MatchObject's 'fuzzy_counts' attribute. */
-static PyObject* match_fuzzy_counts(PyObject* self_) {
+static PyObject* match_fuzzy_counts(PyObject* self_, void* unused) {
     MatchObject* self;
 
     self = (MatchObject*)self_;
@@ -20122,7 +20110,7 @@ static PyObject* match_fuzzy_counts(PyObject* self_) {
 }
 
 /* MatchObject's 'fuzzy_changes' attribute. */
-static PyObject* match_fuzzy_changes(PyObject* self_) {
+static PyObject* match_fuzzy_changes(PyObject* self_, void* unused) {
     MatchObject* self;
     PyObject* sub_changes;
     PyObject* ins_changes;
@@ -22278,6 +22266,40 @@ static PyObject* pattern_deepcopy(PatternObject* self, PyObject* memo) {
     return make_pattern_copy(self);
 }
 
+/* PatternObject's '__sizeof__' method. */
+static PyObject* pattern_sizeof(PatternObject* self, PyObject* args) {
+    Py_ssize_t size;
+    size_t i;
+    PyObject* result;
+
+    size = sizeof(PatternObject);
+    size += self->node_count * sizeof(RE_Node);
+
+    for (i = 0; i < self->node_count; i++) {
+        RE_Node* node;
+
+        node = self->node_list[i];
+        size += node->value_count * sizeof(RE_CODE);
+    }
+
+    size += self->true_group_count * sizeof(RE_GroupInfo);
+    size += self->repeat_count * sizeof(RE_RepeatInfo);
+
+    result = PyObject_CallMethod(self->packed_code_list, "__sizeof__", NULL);
+    if (!result)
+        return NULL;
+
+    size += PyLong_AsSize_t(result);
+    Py_DECREF(result);
+
+    size += self->call_ref_info_count * sizeof(RE_CallRefInfo);
+
+    if (self->locale_info)
+        size += sizeof(RE_LocaleInfo);
+
+    return PyLong_FromSsize_t(size);
+}
+
 /* The documentation of a PatternObject. */
 PyDoc_STRVAR(pattern_match_doc,
     "match(string, pos=None, endpos=None, concurrent=None, timeout=None) --> MatchObject or None.\n\
@@ -22317,7 +22339,7 @@ PyDoc_STRVAR(pattern_subfn_doc,
     of pattern with the replacement format.");
 
 PyDoc_STRVAR(pattern_split_doc,
-    "split(string, string, maxsplit=0, concurrent=None, timeout=None) --> list.\n\
+    "split(string, maxsplit=0, concurrent=None, timeout=None) --> list.\n\
     Split string by the occurrences of pattern.");
 
 PyDoc_STRVAR(pattern_splititer_doc,
@@ -22368,6 +22390,11 @@ static PyMethodDef pattern_methods[] = {
       pattern_scanner_doc},
     {"__copy__", (PyCFunction)pattern_copy, METH_NOARGS},
     {"__deepcopy__", (PyCFunction)pattern_deepcopy, METH_O},
+    {"__sizeof__", (PyCFunction)pattern_sizeof, METH_NOARGS|METH_COEXIST},
+#if PY_VERSION_HEX >= 0x03090000
+    {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS,
+      PyDoc_STR("See PEP 585")},
+#endif
     {NULL, NULL}
 };
 
@@ -23402,7 +23429,6 @@ Py_LOCAL_INLINE(BOOL) mark_named_groups(PatternObject* pattern) {
 Py_LOCAL_INLINE(BOOL) can_test_past(RE_Node* node) {
     switch (node->op) {
     case RE_OP_END_GROUP:
-    case RE_OP_END_LAZY_REPEAT:
     case RE_OP_START_GROUP:
         return TRUE;
     case RE_OP_GREEDY_REPEAT:
@@ -23902,7 +23928,8 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) {
     RE_Node* test_node;
     int status;
 
-    /* codes: FUZZY, flags, constraints, ..., end or:    FUZZY_EXT, flags,
+    /* codes: FUZZY, flags, constraints, ..., end
+     * or:    FUZZY_EXT, flags,
      * constraints, ... next ..., end.
      */
     is_ext = args->code[0] == RE_OP_FUZZY_EXT;
@@ -23977,8 +24004,13 @@ Py_LOCAL_INLINE(int) build_FUZZY(RE_CompileArgs* args) {
     /* Append the fuzzy sequence. */
     add_node(args->end, start_node);
     add_node(start_node, subargs.start);
-    if (test_node)
+    if (test_node) {
         add_node(start_node, test_node);
+        /* The END_FUZZY node needs access to the charset, if any, in case of
+           fuzzy insertion at the end.
+        */
+        end_node->nonstring.next_2.node = start_node;
+    }
     add_node(subargs.end, end_node);
     args->end = end_node;
     args->all_atomic = FALSE;
@@ -24953,14 +24985,11 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) {
         /* Extract the minimum number of repeats out of a repeat if it contains
          * a repeat.
          */
-        BOOL extracted_min;
         size_t index;
         RE_Node* repeat_node;
         RE_CompileArgs subargs;
 
-        extracted_min = FALSE;
-
-        if (min_count > 0 && contains_repeat(args->code, args->end_code)) {
+        if (min_count > 0) {
             RE_CODE done_count;
 
             for (done_count = 0; done_count < min_count; done_count++) {
@@ -24991,8 +25020,8 @@ Py_LOCAL_INLINE(int) build_REPEAT(RE_CompileArgs* args) {
                 max_count -= done_count;
         }
 
-        /* We've extract the minimum number of repeats. Are there any left? */
-        if (extracted_min && max_count == 0) {
+        /* We've extracted the minimum number of repeats. Are there any left? */
+        if (min_count > 0 && max_count == 0) {
             /* All done. */
             args->code = subargs.code;
             ++args->code;
diff --git a/regex_3/_regex_unicode.c b/regex_3/_regex_unicode.c
index 4eab00b190b34d76042cafaadfcc66b6b3babbef..80bf721485f114f7a76f2a5f6397905dd553c956 100644
--- a/regex_3/_regex_unicode.c
+++ b/regex_3/_regex_unicode.c
@@ -1,4 +1,4 @@
-/* For Unicode version 13.0.0 */
+/* For Unicode version 14.0.0 */
 
 #include "_regex_unicode.h"
 
@@ -6,6 +6,10 @@
 #define RE_GRAPH_MASK ((1 << RE_PROP_CC) | (1 << RE_PROP_CS) | (1 << RE_PROP_CN))
 #define RE_WORD_MASK (RE_PROP_M_MASK | (1 << RE_PROP_ND) | (1 << RE_PROP_PC))
 
+typedef struct {
+    RE_UINT8 scripts[RE_MAX_SCX];
+} RE_ScriptExt;
+
 typedef struct {
     RE_UINT32 delta;
     RE_UINT16 others[RE_MAX_CASES - 1];
@@ -222,7 +226,9 @@ char* re_strings[] = {
     "ARAB",
     "ARABIC",
     "ARABICEXTA",
+    "ARABICEXTB",
     "ARABICEXTENDEDA",
+    "ARABICEXTENDEDB",
     "ARABICLETTER",
     "ARABICMATH",
     "ARABICMATHEMATICALALPHABETICSYMBOLS",
@@ -468,6 +474,7 @@ char* re_strings[] = {
     "COUNTINGROD",
     "COUNTINGRODNUMERALS",
     "CP",
+    "CPMN",
     "CPRT",
     "CR",
     "CS",
@@ -483,6 +490,7 @@ char* re_strings[] = {
     "CWU",
     "CYPRIOT",
     "CYPRIOTSYLLABARY",
+    "CYPROMINOAN",
     "CYRILLIC",
     "CYRILLICEXTA",
     "CYRILLICEXTB",
@@ -580,8 +588,10 @@ char* re_strings[] = {
     "ETHIOPIC",
     "ETHIOPICEXT",
     "ETHIOPICEXTA",
+    "ETHIOPICEXTB",
     "ETHIOPICEXTENDED",
     "ETHIOPICEXTENDEDA",
+    "ETHIOPICEXTENDEDB",
     "ETHIOPICSUP",
     "ETHIOPICSUPPLEMENT",
     "EUROPEANNUMBER",
@@ -771,7 +781,9 @@ char* re_strings[] = {
     "KALI",
     "KANA",
     "KANAEXTA",
+    "KANAEXTB",
     "KANAEXTENDEDA",
+    "KANAEXTENDEDB",
     "KANASUP",
     "KANASUPPLEMENT",
     "KANAVOICING",
@@ -823,6 +835,10 @@ char* re_strings[] = {
     "LATINEXTENDEDC",
     "LATINEXTENDEDD",
     "LATINEXTENDEDE",
+    "LATINEXTENDEDF",
+    "LATINEXTENDEDG",
+    "LATINEXTF",
+    "LATINEXTG",
     "LATN",
     "LB",
     "LC",
@@ -1081,6 +1097,7 @@ char* re_strings[] = {
     "OLDSOGDIAN",
     "OLDSOUTHARABIAN",
     "OLDTURKIC",
+    "OLDUYGHUR",
     "OLETTER",
     "OLOWER",
     "OMATH",
@@ -1111,6 +1128,7 @@ char* re_strings[] = {
     "OTHERSYMBOL",
     "OTHERUPPERCASE",
     "OTTOMANSIYAQNUMBERS",
+    "OUGR",
     "OUPPER",
     "OV",
     "OVERLAY",
@@ -1336,6 +1354,7 @@ char* re_strings[] = {
     "TAMILSUPPLEMENT",
     "TAML",
     "TANG",
+    "TANGSA",
     "TANGUT",
     "TANGUTCOMPONENTS",
     "TANGUTSUP",
@@ -1354,12 +1373,14 @@ char* re_strings[] = {
     "THAA",
     "THAANA",
     "THAI",
+    "THINYEH",
     "TIBETAN",
     "TIBT",
     "TIFINAGH",
     "TIRH",
     "TIRHUTA",
     "TITLECASELETTER",
+    "TNSA",
     "TONELETTER",
     "TONEMARK",
     "TOP",
@@ -1369,6 +1390,7 @@ char* re_strings[] = {
     "TOPANDLEFT",
     "TOPANDLEFTANDRIGHT",
     "TOPANDRIGHT",
+    "TOTO",
     "TRAILINGJAMO",
     "TRANSPARENT",
     "TRANSPORTANDMAP",
@@ -1377,12 +1399,14 @@ char* re_strings[] = {
     "U",
     "UCAS",
     "UCASEXT",
+    "UCASEXTA",
     "UGAR",
     "UGARITIC",
     "UIDEO",
     "UNASSIGNED",
     "UNIFIEDCANADIANABORIGINALSYLLABICS",
     "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED",
+    "UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA",
     "UNIFIEDIDEOGRAPH",
     "UNKNOWN",
     "UP",
@@ -1400,9 +1424,12 @@ char* re_strings[] = {
     "VERT",
     "VERTICAL",
     "VERTICALFORMS",
+    "VERTICALTAIL",
     "VIRAMA",
     "VISARGA",
     "VISUALORDERLEFT",
+    "VITH",
+    "VITHKUQI",
     "VOWEL",
     "VOWELDEPENDENT",
     "VOWELINDEPENDENT",
@@ -1457,6 +1484,8 @@ char* re_strings[] = {
     "ZHAIN",
     "ZINH",
     "ZL",
+    "ZNAMENNYMUSIC",
+    "ZNAMENNYMUSICALNOTATION",
     "ZP",
     "ZS",
     "ZW",
@@ -1473,1245 +1502,1266 @@ RE_Property re_properties[] = {
     { 192,  1,  0}, /* ALPHANUMERIC */
     { 187,  1,  0}, /* ALNUM */
     { 200,  2,  0}, /* ANY */
-    { 221,  3,  0}, /* ASCIIHEXDIGIT */
+    { 223,  3,  0}, /* ASCIIHEXDIGIT */
     { 177,  3,  0}, /* AHEX */
-    { 262,  4,  1}, /* BIDICLASS */
-    { 251,  4,  1}, /* BC */
-    { 263,  5,  0}, /* BIDICONTROL */
-    { 261,  5,  0}, /* BIDIC */
-    { 265,  6,  0}, /* BIDIMIRRORED */
-    { 264,  6,  0}, /* BIDIM */
-    { 269,  7,  0}, /* BLANK */
-    { 271,  8,  2}, /* BLOCK */
-    { 270,  8,  2}, /* BLK */
-    { 308,  9,  3}, /* CANONICALCOMBININGCLASS */
-    { 320,  9,  3}, /* CCC */
-    { 314, 10,  0}, /* CASED */
-    { 316, 11,  0}, /* CASEIGNORABLE */
-    { 373, 11,  0}, /* CI */
-    { 361, 12,  0}, /* CHANGESWHENCASEFOLDED */
-    { 459, 12,  0}, /* CWCF */
-    { 362, 13,  0}, /* CHANGESWHENCASEMAPPED */
-    { 460, 13,  0}, /* CWCM */
-    { 363, 14,  0}, /* CHANGESWHENLOWERCASED */
-    { 461, 14,  0}, /* CWL */
-    { 364, 15,  0}, /* CHANGESWHENTITLECASED */
-    { 462, 15,  0}, /* CWT */
-    { 365, 16,  0}, /* CHANGESWHENUPPERCASED */
-    { 463, 16,  0}, /* CWU */
-    { 481, 17,  0}, /* DASH */
-    { 487, 18,  4}, /* DECOMPOSITIONTYPE */
-    { 516, 18,  4}, /* DT */
-    { 488, 19,  0}, /* DEFAULTIGNORABLECODEPOINT */
-    { 496, 19,  0}, /* DI */
-    { 490, 20,  0}, /* DEPRECATED */
-    { 489, 20,  0}, /* DEP */
-    { 498, 21,  0}, /* DIACRITIC */
-    { 497, 21,  0}, /* DIA */
-    { 523, 22,  5}, /* EASTASIANWIDTH */
-    { 521, 22,  5}, /* EA */
-    { 539, 23,  0}, /* EMOJI */
-    { 540, 24,  0}, /* EMOJICOMPONENT */
-    { 528, 24,  0}, /* ECOMP */
-    { 541, 25,  0}, /* EMOJIMODIFIER */
-    { 537, 25,  0}, /* EMOD */
-    { 542, 26,  0}, /* EMOJIMODIFIERBASE */
-    { 525, 26,  0}, /* EBASE */
-    { 543, 27,  0}, /* EMOJIPRESENTATION */
-    { 556, 27,  0}, /* EPRES */
-    { 574, 28,  0}, /* EXTENDEDPICTOGRAPHIC */
-    { 577, 28,  0}, /* EXTPICT */
-    { 575, 29,  0}, /* EXTENDER */
-    { 572, 29,  0}, /* EXT */
-    { 601, 30,  6}, /* GENERALCATEGORY */
-    { 598, 30,  6}, /* GC */
-    { 625, 31,  0}, /* GRAPH */
-    { 626, 32,  0}, /* GRAPHEMEBASE */
-    { 630, 32,  0}, /* GRBASE */
-    { 627, 33,  7}, /* GRAPHEMECLUSTERBREAK */
-    { 599, 33,  7}, /* GCB */
-    { 628, 34,  0}, /* GRAPHEMEEXTEND */
-    { 636, 34,  0}, /* GREXT */
-    { 629, 35,  0}, /* GRAPHEMELINK */
-    { 637, 35,  0}, /* GRLINK */
-    { 660, 36,  8}, /* HANGULSYLLABLETYPE */
-    { 690, 36,  8}, /* HST */
-    { 679, 37,  0}, /* HEXDIGIT */
-    { 678, 37,  0}, /* HEX */
-    { 693, 38,  0}, /* HYPHEN */
-    { 696, 39,  0}, /* IDCONTINUE */
-    { 695, 39,  0}, /* IDC */
-    { 698, 40,  0}, /* IDEOGRAPHIC */
-    { 697, 40,  0}, /* IDEO */
-    { 704, 41,  0}, /* IDSBINARYOPERATOR */
-    { 703, 41,  0}, /* IDSB */
-    { 706, 42,  0}, /* IDSTART */
-    { 702, 42,  0}, /* IDS */
-    { 707, 43,  0}, /* IDSTRINARYOPERATOR */
-    { 705, 43,  0}, /* IDST */
-    { 711, 44,  9}, /* INDICPOSITIONALCATEGORY */
-    { 719, 44,  9}, /* INPC */
-    { 713, 45, 10}, /* INDICSYLLABICCATEGORY */
-    { 720, 45, 10}, /* INSC */
-    { 742, 46,  0}, /* JOINCONTROL */
-    { 740, 46,  0}, /* JOINC */
-    { 744, 47, 11}, /* JOININGGROUP */
-    { 738, 47, 11}, /* JG */
-    { 745, 48, 12}, /* JOININGTYPE */
-    { 746, 48, 12}, /* JT */
-    { 832, 49, 13}, /* LINEBREAK */
-    { 807, 49, 13}, /* LB */
-    { 842, 50,  0}, /* LOGICALORDEREXCEPTION */
-    { 841, 50,  0}, /* LOE */
-    { 844, 51,  0}, /* LOWERCASE */
-    { 843, 51,  0}, /* LOWER */
-    { 916, 52,  0}, /* MATH */
-    {1004, 53, 14}, /* NFCQUICKCHECK */
-    {1003, 53, 14}, /* NFCQC */
-    {1006, 54, 15}, /* NFDQUICKCHECK */
-    {1005, 54, 15}, /* NFDQC */
-    {1008, 55, 14}, /* NFKCQUICKCHECK */
-    {1007, 55, 14}, /* NFKCQC */
-    {1010, 56, 15}, /* NFKDQUICKCHECK */
-    {1009, 56, 15}, /* NFKDQC */
-    {1019, 57,  0}, /* NONCHARACTERCODEPOINT */
-    { 996, 57,  0}, /* NCHAR */
-    {1039, 58, 16}, /* NUMERICTYPE */
-    {1032, 58, 16}, /* NT */
-    {1040, 59, 17}, /* NUMERICVALUE */
-    {1043, 59, 17}, /* NV */
-    {1080, 60,  0}, /* OTHERALPHABETIC */
-    {1046, 60,  0}, /* OALPHA */
-    {1081, 61,  0}, /* OTHERDEFAULTIGNORABLECODEPOINT */
-    {1048, 61,  0}, /* ODI */
-    {1082, 62,  0}, /* OTHERGRAPHEMEEXTEND */
-    {1051, 62,  0}, /* OGREXT */
-    {1083, 63,  0}, /* OTHERIDCONTINUE */
-    {1052, 63,  0}, /* OIDC */
-    {1084, 64,  0}, /* OTHERIDSTART */
-    {1053, 64,  0}, /* OIDS */
-    {1086, 65,  0}, /* OTHERLOWERCASE */
-    {1065, 65,  0}, /* OLOWER */
-    {1087, 66,  0}, /* OTHERMATH */
-    {1066, 66,  0}, /* OMATH */
-    {1092, 67,  0}, /* OTHERUPPERCASE */
-    {1094, 67,  0}, /* OUPPER */
-    {1105, 68,  0}, /* PATTERNSYNTAX */
-    {1104, 68,  0}, /* PATSYN */
-    {1106, 69,  0}, /* PATTERNWHITESPACE */
-    {1107, 69,  0}, /* PATWS */
-    {1136, 70,  0}, /* POSIXALNUM */
-    {1137, 71,  0}, /* POSIXDIGIT */
-    {1138, 72,  0}, /* POSIXPUNCT */
-    {1139, 73,  0}, /* POSIXXDIGIT */
-    {1145, 74,  0}, /* PREPENDEDCONCATENATIONMARK */
-    {1111, 74,  0}, /* PCM */
-    {1146, 75,  0}, /* PRINT */
-    {1163, 76,  0}, /* QUOTATIONMARK */
-    {1160, 76,  0}, /* QMARK */
-    {1165, 77,  0}, /* RADICAL */
-    {1166, 78,  0}, /* REGIONALINDICATOR */
-    {1171, 78,  0}, /* RI */
-    {1201, 79, 18}, /* SCRIPT */
-    {1199, 79, 18}, /* SC */
-    {1202, 80, 18}, /* SCRIPTEXTENSIONS */
-    {1203, 80, 18}, /* SCX */
-    {1209, 81, 19}, /* SENTENCEBREAK */
-    {1198, 81, 19}, /* SB */
-    {1210, 82,  0}, /* SENTENCETERMINAL */
-    {1256, 82,  0}, /* STERM */
-    {1238, 83,  0}, /* SOFTDOTTED */
-    {1204, 83,  0}, /* SD */
-    {1330, 84,  0}, /* TERMINALPUNCTUATION */
-    {1329, 84,  0}, /* TERM */
-    {1366, 85,  0}, /* UNIFIEDIDEOGRAPH */
-    {1362, 85,  0}, /* UIDEO */
-    {1370, 86,  0}, /* UPPERCASE */
-    {1369, 86,  0}, /* UPPER */
-    {1375, 87,  0}, /* VARIATIONSELECTOR */
-    {1391, 87,  0}, /* VS */
-    {1400, 88,  0}, /* WHITESPACE */
-    {1408, 88,  0}, /* WSPACE */
-    {1247, 88,  0}, /* SPACE */
-    {1403, 89,  0}, /* WORD */
-    {1404, 90, 20}, /* WORDBREAK */
-    {1398, 90, 20}, /* WB */
-    {1409, 91,  0}, /* XDIGIT */
-    {1411, 92,  0}, /* XIDCONTINUE */
-    {1410, 92,  0}, /* XIDC */
-    {1413, 93,  0}, /* XIDSTART */
-    {1412, 93,  0}, /* XIDS */
+    { 264,  4,  1}, /* BIDICLASS */
+    { 253,  4,  1}, /* BC */
+    { 265,  5,  0}, /* BIDICONTROL */
+    { 263,  5,  0}, /* BIDIC */
+    { 267,  6,  0}, /* BIDIMIRRORED */
+    { 266,  6,  0}, /* BIDIM */
+    { 271,  7,  0}, /* BLANK */
+    { 273,  8,  2}, /* BLOCK */
+    { 272,  8,  2}, /* BLK */
+    { 310,  9,  3}, /* CANONICALCOMBININGCLASS */
+    { 322,  9,  3}, /* CCC */
+    { 316, 10,  0}, /* CASED */
+    { 318, 11,  0}, /* CASEIGNORABLE */
+    { 375, 11,  0}, /* CI */
+    { 363, 12,  0}, /* CHANGESWHENCASEFOLDED */
+    { 462, 12,  0}, /* CWCF */
+    { 364, 13,  0}, /* CHANGESWHENCASEMAPPED */
+    { 463, 13,  0}, /* CWCM */
+    { 365, 14,  0}, /* CHANGESWHENLOWERCASED */
+    { 464, 14,  0}, /* CWL */
+    { 366, 15,  0}, /* CHANGESWHENTITLECASED */
+    { 465, 15,  0}, /* CWT */
+    { 367, 16,  0}, /* CHANGESWHENUPPERCASED */
+    { 466, 16,  0}, /* CWU */
+    { 485, 17,  0}, /* DASH */
+    { 491, 18,  4}, /* DECOMPOSITIONTYPE */
+    { 520, 18,  4}, /* DT */
+    { 492, 19,  0}, /* DEFAULTIGNORABLECODEPOINT */
+    { 500, 19,  0}, /* DI */
+    { 494, 20,  0}, /* DEPRECATED */
+    { 493, 20,  0}, /* DEP */
+    { 502, 21,  0}, /* DIACRITIC */
+    { 501, 21,  0}, /* DIA */
+    { 527, 22,  5}, /* EASTASIANWIDTH */
+    { 525, 22,  5}, /* EA */
+    { 543, 23,  0}, /* EMOJI */
+    { 544, 24,  0}, /* EMOJICOMPONENT */
+    { 532, 24,  0}, /* ECOMP */
+    { 545, 25,  0}, /* EMOJIMODIFIER */
+    { 541, 25,  0}, /* EMOD */
+    { 546, 26,  0}, /* EMOJIMODIFIERBASE */
+    { 529, 26,  0}, /* EBASE */
+    { 547, 27,  0}, /* EMOJIPRESENTATION */
+    { 560, 27,  0}, /* EPRES */
+    { 580, 28,  0}, /* EXTENDEDPICTOGRAPHIC */
+    { 583, 28,  0}, /* EXTPICT */
+    { 581, 29,  0}, /* EXTENDER */
+    { 578, 29,  0}, /* EXT */
+    { 607, 30,  6}, /* GENERALCATEGORY */
+    { 604, 30,  6}, /* GC */
+    { 631, 31,  0}, /* GRAPH */
+    { 632, 32,  0}, /* GRAPHEMEBASE */
+    { 636, 32,  0}, /* GRBASE */
+    { 633, 33,  7}, /* GRAPHEMECLUSTERBREAK */
+    { 605, 33,  7}, /* GCB */
+    { 634, 34,  0}, /* GRAPHEMEEXTEND */
+    { 642, 34,  0}, /* GREXT */
+    { 635, 35,  0}, /* GRAPHEMELINK */
+    { 643, 35,  0}, /* GRLINK */
+    { 666, 36,  8}, /* HANGULSYLLABLETYPE */
+    { 696, 36,  8}, /* HST */
+    { 685, 37,  0}, /* HEXDIGIT */
+    { 684, 37,  0}, /* HEX */
+    { 699, 38,  0}, /* HYPHEN */
+    { 702, 39,  0}, /* IDCONTINUE */
+    { 701, 39,  0}, /* IDC */
+    { 704, 40,  0}, /* IDEOGRAPHIC */
+    { 703, 40,  0}, /* IDEO */
+    { 710, 41,  0}, /* IDSBINARYOPERATOR */
+    { 709, 41,  0}, /* IDSB */
+    { 712, 42,  0}, /* IDSTART */
+    { 708, 42,  0}, /* IDS */
+    { 713, 43,  0}, /* IDSTRINARYOPERATOR */
+    { 711, 43,  0}, /* IDST */
+    { 717, 44,  9}, /* INDICPOSITIONALCATEGORY */
+    { 725, 44,  9}, /* INPC */
+    { 719, 45, 10}, /* INDICSYLLABICCATEGORY */
+    { 726, 45, 10}, /* INSC */
+    { 748, 46,  0}, /* JOINCONTROL */
+    { 746, 46,  0}, /* JOINC */
+    { 750, 47, 11}, /* JOININGGROUP */
+    { 744, 47, 11}, /* JG */
+    { 751, 48, 12}, /* JOININGTYPE */
+    { 752, 48, 12}, /* JT */
+    { 844, 49, 13}, /* LINEBREAK */
+    { 819, 49, 13}, /* LB */
+    { 854, 50,  0}, /* LOGICALORDEREXCEPTION */
+    { 853, 50,  0}, /* LOE */
+    { 856, 51,  0}, /* LOWERCASE */
+    { 855, 51,  0}, /* LOWER */
+    { 928, 52,  0}, /* MATH */
+    {1016, 53, 14}, /* NFCQUICKCHECK */
+    {1015, 53, 14}, /* NFCQC */
+    {1018, 54, 15}, /* NFDQUICKCHECK */
+    {1017, 54, 15}, /* NFDQC */
+    {1020, 55, 14}, /* NFKCQUICKCHECK */
+    {1019, 55, 14}, /* NFKCQC */
+    {1022, 56, 15}, /* NFKDQUICKCHECK */
+    {1021, 56, 15}, /* NFKDQC */
+    {1031, 57,  0}, /* NONCHARACTERCODEPOINT */
+    {1008, 57,  0}, /* NCHAR */
+    {1051, 58, 16}, /* NUMERICTYPE */
+    {1044, 58, 16}, /* NT */
+    {1052, 59, 17}, /* NUMERICVALUE */
+    {1055, 59, 17}, /* NV */
+    {1093, 60,  0}, /* OTHERALPHABETIC */
+    {1058, 60,  0}, /* OALPHA */
+    {1094, 61,  0}, /* OTHERDEFAULTIGNORABLECODEPOINT */
+    {1060, 61,  0}, /* ODI */
+    {1095, 62,  0}, /* OTHERGRAPHEMEEXTEND */
+    {1063, 62,  0}, /* OGREXT */
+    {1096, 63,  0}, /* OTHERIDCONTINUE */
+    {1064, 63,  0}, /* OIDC */
+    {1097, 64,  0}, /* OTHERIDSTART */
+    {1065, 64,  0}, /* OIDS */
+    {1099, 65,  0}, /* OTHERLOWERCASE */
+    {1078, 65,  0}, /* OLOWER */
+    {1100, 66,  0}, /* OTHERMATH */
+    {1079, 66,  0}, /* OMATH */
+    {1105, 67,  0}, /* OTHERUPPERCASE */
+    {1108, 67,  0}, /* OUPPER */
+    {1119, 68,  0}, /* PATTERNSYNTAX */
+    {1118, 68,  0}, /* PATSYN */
+    {1120, 69,  0}, /* PATTERNWHITESPACE */
+    {1121, 69,  0}, /* PATWS */
+    {1150, 70,  0}, /* POSIXALNUM */
+    {1151, 71,  0}, /* POSIXDIGIT */
+    {1152, 72,  0}, /* POSIXPUNCT */
+    {1153, 73,  0}, /* POSIXXDIGIT */
+    {1159, 74,  0}, /* PREPENDEDCONCATENATIONMARK */
+    {1125, 74,  0}, /* PCM */
+    {1160, 75,  0}, /* PRINT */
+    {1177, 76,  0}, /* QUOTATIONMARK */
+    {1174, 76,  0}, /* QMARK */
+    {1179, 77,  0}, /* RADICAL */
+    {1180, 78,  0}, /* REGIONALINDICATOR */
+    {1185, 78,  0}, /* RI */
+    {1215, 79, 18}, /* SCRIPT */
+    {1213, 79, 18}, /* SC */
+    {1216, 80, 18}, /* SCRIPTEXTENSIONS */
+    {1217, 80, 18}, /* SCX */
+    {1223, 81, 19}, /* SENTENCEBREAK */
+    {1212, 81, 19}, /* SB */
+    {1224, 82,  0}, /* SENTENCETERMINAL */
+    {1270, 82,  0}, /* STERM */
+    {1252, 83,  0}, /* SOFTDOTTED */
+    {1218, 83,  0}, /* SD */
+    {1345, 84,  0}, /* TERMINALPUNCTUATION */
+    {1344, 84,  0}, /* TERM */
+    {1386, 85,  0}, /* UNIFIEDIDEOGRAPH */
+    {1381, 85,  0}, /* UIDEO */
+    {1390, 86,  0}, /* UPPERCASE */
+    {1389, 86,  0}, /* UPPER */
+    {1395, 87,  0}, /* VARIATIONSELECTOR */
+    {1414, 87,  0}, /* VS */
+    {1423, 88,  0}, /* WHITESPACE */
+    {1431, 88,  0}, /* WSPACE */
+    {1261, 88,  0}, /* SPACE */
+    {1426, 89,  0}, /* WORD */
+    {1427, 90, 20}, /* WORDBREAK */
+    {1421, 90, 20}, /* WB */
+    {1432, 91,  0}, /* XDIGIT */
+    {1434, 92,  0}, /* XIDCONTINUE */
+    {1433, 92,  0}, /* XIDC */
+    {1436, 93,  0}, /* XIDSTART */
+    {1435, 93,  0}, /* XIDS */
 };
 
 /* Property values. */
 RE_PropertyValue re_property_values[] = {
-    {1015,  0,   0}, /* NO */
-    { 984,  0,   0}, /* N */
-    { 578,  0,   0}, /* F */
-    { 579,  0,   0}, /* FALSE */
-    {1421,  0,   1}, /* YES */
-    {1417,  0,   1}, /* Y */
-    {1299,  0,   1}, /* T */
-    {1356,  0,   1}, /* TRUE */
-    { 814,  1,   0}, /* LEFTTORIGHT */
-    { 783,  1,   0}, /* L */
-    { 281,  1,   1}, /* BOUNDARYNEUTRAL */
-    { 273,  1,   1}, /* BN */
-    {1207,  1,   2}, /* SEGMENTSEPARATOR */
-    {1188,  1,   2}, /* S */
-    {1103,  1,   3}, /* PARAGRAPHSEPARATOR */
-    { 236,  1,   3}, /* B */
-    {1400,  1,   4}, /* WHITESPACE */
-    {1406,  1,   4}, /* WS */
-    {1088,  1,   5}, /* OTHERNEUTRAL */
-    {1067,  1,   5}, /* ON */
-    { 569,  1,   6}, /* EUROPEANTERMINATOR */
-    { 558,  1,   6}, /* ET */
-    { 568,  1,   7}, /* EUROPEANSEPARATOR */
-    { 557,  1,   7}, /* ES */
-    { 423,  1,   8}, /* COMMONSEPARATOR */
-    { 453,  1,   8}, /* CS */
-    { 567,  1,   9}, /* EUROPEANNUMBER */
-    { 545,  1,   9}, /* EN */
-    {1023,  1,  10}, /* NONSPACINGMARK */
-    {1031,  1,  10}, /* NSM */
-    {1174,  1,  11}, /* RIGHTTOLEFT */
-    {1164,  1,  11}, /* R */
-    { 209,  1,  12}, /* ARABICNUMBER */
+    {1027,  0,   0}, /* NO */
+    { 996,  0,   0}, /* N */
+    { 584,  0,   0}, /* F */
+    { 585,  0,   0}, /* FALSE */
+    {1444,  0,   1}, /* YES */
+    {1440,  0,   1}, /* Y */
+    {1313,  0,   1}, /* T */
+    {1374,  0,   1}, /* TRUE */
+    { 826,  1,   0}, /* LEFTTORIGHT */
+    { 791,  1,   0}, /* L */
+    { 283,  1,   1}, /* BOUNDARYNEUTRAL */
+    { 275,  1,   1}, /* BN */
+    {1221,  1,   2}, /* SEGMENTSEPARATOR */
+    {1202,  1,   2}, /* S */
+    {1117,  1,   3}, /* PARAGRAPHSEPARATOR */
+    { 238,  1,   3}, /* B */
+    {1423,  1,   4}, /* WHITESPACE */
+    {1429,  1,   4}, /* WS */
+    {1101,  1,   5}, /* OTHERNEUTRAL */
+    {1080,  1,   5}, /* ON */
+    { 575,  1,   6}, /* EUROPEANTERMINATOR */
+    { 562,  1,   6}, /* ET */
+    { 574,  1,   7}, /* EUROPEANSEPARATOR */
+    { 561,  1,   7}, /* ES */
+    { 425,  1,   8}, /* COMMONSEPARATOR */
+    { 456,  1,   8}, /* CS */
+    { 573,  1,   9}, /* EUROPEANNUMBER */
+    { 549,  1,   9}, /* EN */
+    {1035,  1,  10}, /* NONSPACINGMARK */
+    {1043,  1,  10}, /* NSM */
+    {1188,  1,  11}, /* RIGHTTOLEFT */
+    {1178,  1,  11}, /* R */
+    { 211,  1,  12}, /* ARABICNUMBER */
     { 194,  1,  12}, /* AN */
-    { 206,  1,  13}, /* ARABICLETTER */
+    { 208,  1,  13}, /* ARABICLETTER */
     { 181,  1,  13}, /* AL */
-    { 815,  1,  14}, /* LEFTTORIGHTEMBEDDING */
-    { 847,  1,  14}, /* LRE */
-    {1175,  1,  15}, /* RIGHTTOLEFTEMBEDDING */
-    {1179,  1,  15}, /* RLE */
-    {1134,  1,  16}, /* POPDIRECTIONALFORMAT */
-    {1113,  1,  16}, /* PDF */
-    { 817,  1,  17}, /* LEFTTORIGHTOVERRIDE */
-    { 849,  1,  17}, /* LRO */
-    {1177,  1,  18}, /* RIGHTTOLEFTOVERRIDE */
-    {1181,  1,  18}, /* RLO */
-    { 816,  1,  19}, /* LEFTTORIGHTISOLATE */
-    { 848,  1,  19}, /* LRI */
-    {1176,  1,  20}, /* RIGHTTOLEFTISOLATE */
-    {1180,  1,  20}, /* RLI */
-    { 587,  1,  21}, /* FIRSTSTRONGISOLATE */
-    { 593,  1,  21}, /* FSI */
-    {1135,  1,  22}, /* POPDIRECTIONALISOLATE */
-    {1114,  1,  22}, /* PDI */
-    {1016,  2,   0}, /* NOBLOCK */
-    { 994,  2,   0}, /* NB */
-    { 245,  2,   1}, /* BASICLATIN */
-    { 220,  2,   1}, /* ASCII */
-    { 793,  2,   2}, /* LATIN1SUPPLEMENT */
-    { 792,  2,   2}, /* LATIN1SUP */
-    { 791,  2,   2}, /* LATIN1 */
-    { 800,  2,   3}, /* LATINEXTENDEDA */
-    { 794,  2,   3}, /* LATINEXTA */
-    { 802,  2,   4}, /* LATINEXTENDEDB */
-    { 796,  2,   4}, /* LATINEXTB */
-    { 728,  2,   5}, /* IPAEXTENSIONS */
-    { 727,  2,   5}, /* IPAEXT */
-    {1250,  2,   6}, /* SPACINGMODIFIERLETTERS */
-    { 963,  2,   6}, /* MODIFIERLETTERS */
-    { 414,  2,   7}, /* COMBININGDIACRITICALMARKS */
-    { 499,  2,   7}, /* DIACRITICALS */
-    { 632,  2,   8}, /* GREEKANDCOPTIC */
-    { 631,  2,   8}, /* GREEK */
-    { 466,  2,   9}, /* CYRILLIC */
-    { 474,  2,  10}, /* CYRILLICSUPPLEMENT */
-    { 473,  2,  10}, /* CYRILLICSUP */
-    { 475,  2,  10}, /* CYRILLICSUPPLEMENTARY */
-    { 216,  2,  11}, /* ARMENIAN */
-    { 673,  2,  12}, /* HEBREW */
+    { 827,  1,  14}, /* LEFTTORIGHTEMBEDDING */
+    { 859,  1,  14}, /* LRE */
+    {1189,  1,  15}, /* RIGHTTOLEFTEMBEDDING */
+    {1193,  1,  15}, /* RLE */
+    {1148,  1,  16}, /* POPDIRECTIONALFORMAT */
+    {1127,  1,  16}, /* PDF */
+    { 829,  1,  17}, /* LEFTTORIGHTOVERRIDE */
+    { 861,  1,  17}, /* LRO */
+    {1191,  1,  18}, /* RIGHTTOLEFTOVERRIDE */
+    {1195,  1,  18}, /* RLO */
+    { 828,  1,  19}, /* LEFTTORIGHTISOLATE */
+    { 860,  1,  19}, /* LRI */
+    {1190,  1,  20}, /* RIGHTTOLEFTISOLATE */
+    {1194,  1,  20}, /* RLI */
+    { 593,  1,  21}, /* FIRSTSTRONGISOLATE */
+    { 599,  1,  21}, /* FSI */
+    {1149,  1,  22}, /* POPDIRECTIONALISOLATE */
+    {1128,  1,  22}, /* PDI */
+    {1028,  2,   0}, /* NOBLOCK */
+    {1006,  2,   0}, /* NB */
+    { 247,  2,   1}, /* BASICLATIN */
+    { 222,  2,   1}, /* ASCII */
+    { 801,  2,   2}, /* LATIN1SUPPLEMENT */
+    { 800,  2,   2}, /* LATIN1SUP */
+    { 799,  2,   2}, /* LATIN1 */
+    { 808,  2,   3}, /* LATINEXTENDEDA */
+    { 802,  2,   3}, /* LATINEXTA */
+    { 810,  2,   4}, /* LATINEXTENDEDB */
+    { 804,  2,   4}, /* LATINEXTB */
+    { 734,  2,   5}, /* IPAEXTENSIONS */
+    { 733,  2,   5}, /* IPAEXT */
+    {1264,  2,   6}, /* SPACINGMODIFIERLETTERS */
+    { 975,  2,   6}, /* MODIFIERLETTERS */
+    { 416,  2,   7}, /* COMBININGDIACRITICALMARKS */
+    { 503,  2,   7}, /* DIACRITICALS */
+    { 638,  2,   8}, /* GREEKANDCOPTIC */
+    { 637,  2,   8}, /* GREEK */
+    { 470,  2,   9}, /* CYRILLIC */
+    { 478,  2,  10}, /* CYRILLICSUPPLEMENT */
+    { 477,  2,  10}, /* CYRILLICSUP */
+    { 479,  2,  10}, /* CYRILLICSUPPLEMENTARY */
+    { 218,  2,  11}, /* ARMENIAN */
+    { 679,  2,  12}, /* HEBREW */
     { 203,  2,  13}, /* ARABIC */
-    {1295,  2,  14}, /* SYRIAC */
-    { 215,  2,  15}, /* ARABICSUPPLEMENT */
-    { 214,  2,  15}, /* ARABICSUP */
-    {1335,  2,  16}, /* THAANA */
-    {1012,  2,  17}, /* NKO */
-    {1193,  2,  18}, /* SAMARITAN */
-    { 881,  2,  19}, /* MANDAIC */
-    {1297,  2,  20}, /* SYRIACSUPPLEMENT */
-    {1296,  2,  20}, /* SYRIACSUP */
-    { 205,  2,  21}, /* ARABICEXTENDEDA */
-    { 204,  2,  21}, /* ARABICEXTA */
-    { 493,  2,  22}, /* DEVANAGARI */
-    { 257,  2,  23}, /* BENGALI */
-    { 641,  2,  24}, /* GURMUKHI */
-    { 638,  2,  25}, /* GUJARATI */
-    {1071,  2,  26}, /* ORIYA */
-    {1314,  2,  27}, /* TAMIL */
-    {1328,  2,  28}, /* TELUGU */
-    { 761,  2,  29}, /* KANNADA */
-    { 868,  2,  30}, /* MALAYALAM */
-    {1227,  2,  31}, /* SINHALA */
-    {1336,  2,  32}, /* THAI */
-    { 788,  2,  33}, /* LAO */
-    {1337,  2,  34}, /* TIBETAN */
-    { 978,  2,  35}, /* MYANMAR */
-    { 607,  2,  36}, /* GEORGIAN */
-    { 656,  2,  37}, /* HANGULJAMO */
-    { 733,  2,  37}, /* JAMO */
-    { 560,  2,  38}, /* ETHIOPIC */
-    { 566,  2,  39}, /* ETHIOPICSUPPLEMENT */
-    { 565,  2,  39}, /* ETHIOPICSUP */
-    { 367,  2,  40}, /* CHEROKEE */
-    {1364,  2,  41}, /* UNIFIEDCANADIANABORIGINALSYLLABICS */
-    {1358,  2,  41}, /* UCAS */
-    { 306,  2,  41}, /* CANADIANSYLLABICS */
-    {1050,  2,  42}, /* OGHAM */
-    {1186,  2,  43}, /* RUNIC */
-    {1300,  2,  44}, /* TAGALOG */
-    { 668,  2,  45}, /* HANUNOO */
-    { 297,  2,  46}, /* BUHID */
-    {1302,  2,  47}, /* TAGBANWA */
-    { 772,  2,  48}, /* KHMER */
-    { 968,  2,  49}, /* MONGOLIAN */
-    {1365,  2,  50}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED */
-    {1359,  2,  50}, /* UCASEXT */
-    { 825,  2,  51}, /* LIMBU */
-    {1305,  2,  52}, /* TAILE */
-    {1001,  2,  53}, /* NEWTAILUE */
-    { 773,  2,  54}, /* KHMERSYMBOLS */
-    { 295,  2,  55}, /* BUGINESE */
-    {1306,  2,  56}, /* TAITHAM */
-    { 415,  2,  57}, /* COMBININGDIACRITICALMARKSEXTENDED */
-    { 500,  2,  57}, /* DIACRITICALSEXT */
-    { 240,  2,  58}, /* BALINESE */
-    {1260,  2,  59}, /* SUNDANESE */
-    { 248,  2,  60}, /* BATAK */
-    { 819,  2,  61}, /* LEPCHA */
-    {1054,  2,  62}, /* OLCHIKI */
-    { 472,  2,  63}, /* CYRILLICEXTENDEDC */
-    { 469,  2,  63}, /* CYRILLICEXTC */
-    { 609,  2,  64}, /* GEORGIANEXTENDED */
-    { 608,  2,  64}, /* GEORGIANEXT */
-    {1262,  2,  65}, /* SUNDANESESUPPLEMENT */
-    {1261,  2,  65}, /* SUNDANESESUP */
-    {1379,  2,  66}, /* VEDICEXTENSIONS */
-    {1378,  2,  66}, /* VEDICEXT */
-    {1127,  2,  67}, /* PHONETICEXTENSIONS */
-    {1126,  2,  67}, /* PHONETICEXT */
-    {1128,  2,  68}, /* PHONETICEXTENSIONSSUPPLEMENT */
-    {1129,  2,  68}, /* PHONETICEXTSUP */
-    { 417,  2,  69}, /* COMBININGDIACRITICALMARKSSUPPLEMENT */
-    { 502,  2,  69}, /* DIACRITICALSSUP */
-    { 801,  2,  70}, /* LATINEXTENDEDADDITIONAL */
-    { 795,  2,  70}, /* LATINEXTADDITIONAL */
-    { 634,  2,  71}, /* GREEKEXTENDED */
-    { 633,  2,  71}, /* GREEKEXT */
-    { 602,  2,  72}, /* GENERALPUNCTUATION */
-    {1154,  2,  72}, /* PUNCTUATION */
-    {1269,  2,  73}, /* SUPERSCRIPTSANDSUBSCRIPTS */
-    {1268,  2,  73}, /* SUPERANDSUB */
-    { 458,  2,  74}, /* CURRENCYSYMBOLS */
-    { 416,  2,  75}, /* COMBININGDIACRITICALMARKSFORSYMBOLS */
-    { 501,  2,  75}, /* DIACRITICALSFORSYMBOLS */
-    { 420,  2,  75}, /* COMBININGMARKSFORSYMBOLS */
-    { 821,  2,  76}, /* LETTERLIKESYMBOLS */
-    {1036,  2,  77}, /* NUMBERFORMS */
-    { 219,  2,  78}, /* ARROWS */
-    { 919,  2,  79}, /* MATHEMATICALOPERATORS */
-    { 920,  2,  79}, /* MATHOPERATORS */
-    { 952,  2,  80}, /* MISCELLANEOUSTECHNICAL */
-    { 957,  2,  80}, /* MISCTECHNICAL */
-    { 444,  2,  81}, /* CONTROLPICTURES */
-    {1070,  2,  82}, /* OPTICALCHARACTERRECOGNITION */
-    {1047,  2,  82}, /* OCR */
-    { 548,  2,  83}, /* ENCLOSEDALPHANUMERICS */
-    { 547,  2,  83}, /* ENCLOSEDALPHANUM */
-    { 282,  2,  84}, /* BOXDRAWING */
-    { 272,  2,  85}, /* BLOCKELEMENTS */
-    { 603,  2,  86}, /* GEOMETRICSHAPES */
-    { 949,  2,  87}, /* MISCELLANEOUSSYMBOLS */
-    { 956,  2,  87}, /* MISCSYMBOLS */
-    { 505,  2,  88}, /* DINGBATS */
-    { 947,  2,  89}, /* MISCELLANEOUSMATHEMATICALSYMBOLSA */
-    { 953,  2,  89}, /* MISCMATHSYMBOLSA */
-    {1271,  2,  90}, /* SUPPLEMENTALARROWSA */
-    {1264,  2,  90}, /* SUPARROWSA */
-    { 289,  2,  91}, /* BRAILLEPATTERNS */
-    { 288,  2,  91}, /* BRAILLE */
-    {1272,  2,  92}, /* SUPPLEMENTALARROWSB */
-    {1265,  2,  92}, /* SUPARROWSB */
-    { 948,  2,  93}, /* MISCELLANEOUSMATHEMATICALSYMBOLSB */
-    { 954,  2,  93}, /* MISCMATHSYMBOLSB */
-    {1274,  2,  94}, /* SUPPLEMENTALMATHEMATICALOPERATORS */
-    {1270,  2,  94}, /* SUPMATHOPERATORS */
-    { 950,  2,  95}, /* MISCELLANEOUSSYMBOLSANDARROWS */
-    { 946,  2,  95}, /* MISCARROWS */
-    { 614,  2,  96}, /* GLAGOLITIC */
-    { 803,  2,  97}, /* LATINEXTENDEDC */
-    { 797,  2,  97}, /* LATINEXTC */
-    { 446,  2,  98}, /* COPTIC */
-    { 611,  2,  99}, /* GEORGIANSUPPLEMENT */
-    { 610,  2,  99}, /* GEORGIANSUP */
-    {1339,  2, 100}, /* TIFINAGH */
-    { 563,  2, 101}, /* ETHIOPICEXTENDED */
-    { 561,  2, 101}, /* ETHIOPICEXT */
-    { 470,  2, 102}, /* CYRILLICEXTENDEDA */
-    { 467,  2, 102}, /* CYRILLICEXTA */
-    {1275,  2, 103}, /* SUPPLEMENTALPUNCTUATION */
-    {1281,  2, 103}, /* SUPPUNCTUATION */
-    { 393,  2, 104}, /* CJKRADICALSSUPPLEMENT */
-    { 392,  2, 104}, /* CJKRADICALSSUP */
-    { 760,  2, 105}, /* KANGXIRADICALS */
-    { 759,  2, 105}, /* KANGXI */
-    { 699,  2, 106}, /* IDEOGRAPHICDESCRIPTIONCHARACTERS */
-    { 695,  2, 106}, /* IDC */
-    { 396,  2, 107}, /* CJKSYMBOLSANDPUNCTUATION */
-    { 395,  2, 107}, /* CJKSYMBOLS */
-    { 684,  2, 108}, /* HIRAGANA */
-    { 763,  2, 109}, /* KATAKANA */
-    { 275,  2, 110}, /* BOPOMOFO */
-    { 655,  2, 111}, /* HANGULCOMPATIBILITYJAMO */
-    { 425,  2, 111}, /* COMPATJAMO */
-    { 758,  2, 112}, /* KANBUN */
-    { 277,  2, 113}, /* BOPOMOFOEXTENDED */
-    { 276,  2, 113}, /* BOPOMOFOEXT */
-    { 394,  2, 114}, /* CJKSTROKES */
-    { 766,  2, 115}, /* KATAKANAPHONETICEXTENSIONS */
-    { 764,  2, 115}, /* KATAKANAEXT */
-    { 552,  2, 116}, /* ENCLOSEDCJKLETTERSANDMONTHS */
-    { 551,  2, 116}, /* ENCLOSEDCJK */
-    { 379,  2, 117}, /* CJKCOMPATIBILITY */
-    { 377,  2, 117}, /* CJKCOMPAT */
-    { 398,  2, 118}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONA */
-    { 385,  2, 118}, /* CJKEXTA */
-    {1427,  2, 119}, /* YIJINGHEXAGRAMSYMBOLS */
-    {1426,  2, 119}, /* YIJING */
-    { 397,  2, 120}, /* CJKUNIFIEDIDEOGRAPHS */
-    { 376,  2, 120}, /* CJK */
-    {1429,  2, 121}, /* YISYLLABLES */
-    {1428,  2, 122}, /* YIRADICALS */
-    { 835,  2, 123}, /* LISU */
-    {1373,  2, 124}, /* VAI */
-    { 471,  2, 125}, /* CYRILLICEXTENDEDB */
-    { 468,  2, 125}, /* CYRILLICEXTB */
-    { 242,  2, 126}, /* BAMUM */
-    { 965,  2, 127}, /* MODIFIERTONELETTERS */
-    { 804,  2, 128}, /* LATINEXTENDEDD */
-    { 798,  2, 128}, /* LATINEXTD */
-    {1289,  2, 129}, /* SYLOTINAGRI */
-    { 422,  2, 130}, /* COMMONINDICNUMBERFORMS */
-    { 710,  2, 130}, /* INDICNUMBERFORMS */
-    {1119,  2, 131}, /* PHAGSPA */
-    {1197,  2, 132}, /* SAURASHTRA */
-    { 495,  2, 133}, /* DEVANAGARIEXTENDED */
-    { 494,  2, 133}, /* DEVANAGARIEXT */
-    { 767,  2, 134}, /* KAYAHLI */
-    {1169,  2, 135}, /* REJANG */
-    { 657,  2, 136}, /* HANGULJAMOEXTENDEDA */
-    { 734,  2, 136}, /* JAMOEXTA */
-    { 737,  2, 137}, /* JAVANESE */
-    { 982,  2, 138}, /* MYANMAREXTENDEDB */
-    { 980,  2, 138}, /* MYANMAREXTB */
-    { 360,  2, 139}, /* CHAM */
-    { 981,  2, 140}, /* MYANMAREXTENDEDA */
-    { 979,  2, 140}, /* MYANMAREXTA */
-    {1307,  2, 141}, /* TAIVIET */
-    { 934,  2, 142}, /* MEETEIMAYEKEXTENSIONS */
-    { 933,  2, 142}, /* MEETEIMAYEKEXT */
-    { 564,  2, 143}, /* ETHIOPICEXTENDEDA */
-    { 562,  2, 143}, /* ETHIOPICEXTA */
-    { 805,  2, 144}, /* LATINEXTENDEDE */
-    { 799,  2, 144}, /* LATINEXTE */
-    { 369,  2, 145}, /* CHEROKEESUPPLEMENT */
-    { 368,  2, 145}, /* CHEROKEESUP */
-    { 932,  2, 146}, /* MEETEIMAYEK */
-    { 659,  2, 147}, /* HANGULSYLLABLES */
-    { 654,  2, 147}, /* HANGUL */
-    { 658,  2, 148}, /* HANGULJAMOEXTENDEDB */
-    { 735,  2, 148}, /* JAMOEXTB */
-    { 682,  2, 149}, /* HIGHSURROGATES */
-    { 680,  2, 150}, /* HIGHPRIVATEUSESURROGATES */
-    { 681,  2, 150}, /* HIGHPUSURROGATES */
-    { 846,  2, 151}, /* LOWSURROGATES */
-    {1148,  2, 152}, /* PRIVATEUSEAREA */
-    {1152,  2, 152}, /* PUA */
-    {1147,  2, 152}, /* PRIVATEUSE */
-    { 381,  2, 153}, /* CJKCOMPATIBILITYIDEOGRAPHS */
-    { 383,  2, 153}, /* CJKCOMPATIDEOGRAPHS */
-    { 191,  2, 154}, /* ALPHABETICPRESENTATIONFORMS */
-    { 190,  2, 154}, /* ALPHABETICPF */
-    { 212,  2, 155}, /* ARABICPRESENTATIONFORMSA */
-    { 210,  2, 155}, /* ARABICPFA */
-    {1376,  2, 156}, /* VARIATIONSELECTORS */
-    {1391,  2, 156}, /* VS */
-    {1382,  2, 157}, /* VERTICALFORMS */
-    { 418,  2, 158}, /* COMBININGHALFMARKS */
-    { 648,  2, 158}, /* HALFMARKS */
-    { 380,  2, 159}, /* CJKCOMPATIBILITYFORMS */
-    { 378,  2, 159}, /* CJKCOMPATFORMS */
-    {1233,  2, 160}, /* SMALLFORMVARIANTS */
-    {1232,  2, 160}, /* SMALLFORMS */
-    { 213,  2, 161}, /* ARABICPRESENTATIONFORMSB */
-    { 211,  2, 161}, /* ARABICPFB */
-    { 650,  2, 162}, /* HALFWIDTHANDFULLWIDTHFORMS */
-    { 647,  2, 162}, /* HALFANDFULLFORMS */
-    {1251,  2, 163}, /* SPECIALS */
-    { 831,  2, 164}, /* LINEARBSYLLABARY */
-    { 830,  2, 165}, /* LINEARBIDEOGRAMS */
-    { 172,  2, 166}, /* AEGEANNUMBERS */
-    { 198,  2, 167}, /* ANCIENTGREEKNUMBERS */
-    { 199,  2, 168}, /* ANCIENTSYMBOLS */
-    {1121,  2, 169}, /* PHAISTOSDISC */
-    {1120,  2, 169}, /* PHAISTOS */
-    { 857,  2, 170}, /* LYCIAN */
-    { 312,  2, 171}, /* CARIAN */
-    { 447,  2, 172}, /* COPTICEPACTNUMBERS */
-    {1057,  2, 173}, /* OLDITALIC */
-    { 622,  2, 174}, /* GOTHIC */
-    {1059,  2, 175}, /* OLDPERMIC */
-    {1361,  2, 176}, /* UGARITIC */
-    {1060,  2, 177}, /* OLDPERSIAN */
-    { 491,  2, 178}, /* DESERET */
-    {1216,  2, 179}, /* SHAVIAN */
-    {1078,  2, 180}, /* OSMANYA */
-    {1075,  2, 181}, /* OSAGE */
-    { 533,  2, 182}, /* ELBASAN */
-    { 317,  2, 183}, /* CAUCASIANALBANIAN */
-    { 828,  2, 184}, /* LINEARA */
-    { 465,  2, 185}, /* CYPRIOTSYLLABARY */
-    { 708,  2, 186}, /* IMPERIALARAMAIC */
-    {1102,  2, 187}, /* PALMYRENE */
-    { 987,  2, 188}, /* NABATAEAN */
-    { 670,  2, 189}, /* HATRAN */
-    {1125,  2, 190}, /* PHOENICIAN */
-    { 859,  2, 191}, /* LYDIAN */
-    { 940,  2, 192}, /* MEROITICHIEROGLYPHS */
-    { 939,  2, 193}, /* MEROITICCURSIVE */
-    { 770,  2, 194}, /* KHAROSHTHI */
-    {1062,  2, 195}, /* OLDSOUTHARABIAN */
-    {1058,  2, 196}, /* OLDNORTHARABIAN */
-    { 884,  2, 197}, /* MANICHAEAN */
-    { 234,  2, 198}, /* AVESTAN */
-    { 722,  2, 199}, /* INSCRIPTIONALPARTHIAN */
-    { 721,  2, 200}, /* INSCRIPTIONALPAHLAVI */
-    {1151,  2, 201}, /* PSALTERPAHLAVI */
-    {1063,  2, 202}, /* OLDTURKIC */
-    {1056,  2, 203}, /* OLDHUNGARIAN */
-    { 662,  2, 204}, /* HANIFIROHINGYA */
-    {1185,  2, 205}, /* RUMINUMERALSYMBOLS */
-    {1184,  2, 205}, /* RUMI */
-    {1423,  2, 206}, /* YEZIDI */
-    {1061,  2, 207}, /* OLDSOGDIAN */
-    {1240,  2, 208}, /* SOGDIAN */
-    { 371,  2, 209}, /* CHORASMIAN */
-    { 535,  2, 210}, /* ELYMAIC */
-    { 285,  2, 211}, /* BRAHMI */
-    { 750,  2, 212}, /* KAITHI */
-    {1243,  2, 213}, /* SORASOMPENG */
-    { 359,  2, 214}, /* CHAKMA */
-    { 862,  2, 215}, /* MAHAJANI */
-    {1215,  2, 216}, /* SHARADA */
-    {1228,  2, 217}, /* SINHALAARCHAICNUMBERS */
-    { 776,  2, 218}, /* KHOJKI */
-    { 975,  2, 219}, /* MULTANI */
-    { 777,  2, 220}, /* KHUDAWADI */
-    { 624,  2, 221}, /* GRANTHA */
-    { 999,  2, 222}, /* NEWA */
-    {1341,  2, 223}, /* TIRHUTA */
-    {1222,  2, 224}, /* SIDDHAM */
-    { 961,  2, 225}, /* MODI */
-    { 970,  2, 226}, /* MONGOLIANSUPPLEMENT */
-    { 969,  2, 226}, /* MONGOLIANSUP */
-    {1311,  2, 227}, /* TAKRI */
-    { 178,  2, 228}, /* AHOM */
-    { 508,  2, 229}, /* DOGRA */
-    {1396,  2, 230}, /* WARANGCITI */
-    { 506,  2, 231}, /* DIVESAKURU */
-    { 990,  2, 232}, /* NANDINAGARI */
-    {1435,  2, 233}, /* ZANABAZARSQUARE */
-    {1245,  2, 234}, /* SOYOMBO */
-    {1109,  2, 235}, /* PAUCINHAU */
-    { 259,  2, 236}, /* BHAIKSUKI */
-    { 913,  2, 237}, /* MARCHEN */
-    { 915,  2, 238}, /* MASARAMGONDI */
-    { 640,  2, 239}, /* GUNJALAGONDI */
-    { 867,  2, 240}, /* MAKASAR */
-    { 837,  2, 241}, /* LISUSUPPLEMENT */
-    { 836,  2, 241}, /* LISUSUP */
-    {1316,  2, 242}, /* TAMILSUPPLEMENT */
-    {1315,  2, 242}, /* TAMILSUP */
-    { 454,  2, 243}, /* CUNEIFORM */
-    { 456,  2, 244}, /* CUNEIFORMNUMBERSANDPUNCTUATION */
-    { 455,  2, 244}, /* CUNEIFORMNUMBERS */
-    { 522,  2, 245}, /* EARLYDYNASTICCUNEIFORM */
-    { 531,  2, 246}, /* EGYPTIANHIEROGLYPHS */
-    { 530,  2, 247}, /* EGYPTIANHIEROGLYPHFORMATCONTROLS */
-    { 195,  2, 248}, /* ANATOLIANHIEROGLYPHS */
-    { 244,  2, 249}, /* BAMUMSUPPLEMENT */
-    { 243,  2, 249}, /* BAMUMSUP */
-    { 971,  2, 250}, /* MRO */
-    { 247,  2, 251}, /* BASSAVAH */
-    {1100,  2, 252}, /* PAHAWHHMONG */
-    { 928,  2, 253}, /* MEDEFAIDRIN */
-    { 941,  2, 254}, /* MIAO */
-    { 701,  2, 255}, /* IDEOGRAPHICSYMBOLSANDPUNCTUATION */
-    { 700,  2, 255}, /* IDEOGRAPHICSYMBOLS */
-    {1319,  2, 256}, /* TANGUT */
-    {1320,  2, 257}, /* TANGUTCOMPONENTS */
-    { 771,  2, 258}, /* KHITANSMALLSCRIPT */
-    {1322,  2, 259}, /* TANGUTSUPPLEMENT */
-    {1321,  2, 259}, /* TANGUTSUP */
-    { 756,  2, 260}, /* KANASUPPLEMENT */
-    { 755,  2, 260}, /* KANASUP */
-    { 754,  2, 261}, /* KANAEXTENDEDA */
-    { 753,  2, 261}, /* KANAEXTA */
-    {1235,  2, 262}, /* SMALLKANAEXTENSION */
-    {1234,  2, 262}, /* SMALLKANAEXT */
-    {1042,  2, 263}, /* NUSHU */
-    { 519,  2, 264}, /* DUPLOYAN */
-    {1219,  2, 265}, /* SHORTHANDFORMATCONTROLS */
-    { 300,  2, 266}, /* BYZANTINEMUSICALSYMBOLS */
-    { 299,  2, 266}, /* BYZANTINEMUSIC */
-    { 977,  2, 267}, /* MUSICALSYMBOLS */
-    { 976,  2, 267}, /* MUSIC */
-    { 197,  2, 268}, /* ANCIENTGREEKMUSICALNOTATION */
-    { 196,  2, 268}, /* ANCIENTGREEKMUSIC */
-    { 922,  2, 269}, /* MAYANNUMERALS */
-    {1309,  2, 270}, /* TAIXUANJINGSYMBOLS */
-    {1308,  2, 270}, /* TAIXUANJING */
-    { 449,  2, 271}, /* COUNTINGRODNUMERALS */
-    { 448,  2, 271}, /* COUNTINGROD */
-    { 918,  2, 272}, /* MATHEMATICALALPHANUMERICSYMBOLS */
-    { 917,  2, 272}, /* MATHALPHANUM */
-    {1284,  2, 273}, /* SUTTONSIGNWRITING */
-    { 616,  2, 274}, /* GLAGOLITICSUPPLEMENT */
-    { 615,  2, 274}, /* GLAGOLITICSUP */
-    {1045,  2, 275}, /* NYIAKENGPUACHUEHMONG */
-    {1394,  2, 276}, /* WANCHO */
-    { 936,  2, 277}, /* MENDEKIKAKUI */
-    { 170,  2, 278}, /* ADLAM */
-    { 712,  2, 279}, /* INDICSIYAQNUMBERS */
-    {1093,  2, 280}, /* OTTOMANSIYAQNUMBERS */
-    { 208,  2, 281}, /* ARABICMATHEMATICALALPHABETICSYMBOLS */
-    { 207,  2, 281}, /* ARABICMATH */
-    { 865,  2, 282}, /* MAHJONGTILES */
-    { 864,  2, 282}, /* MAHJONG */
-    { 510,  2, 283}, /* DOMINOTILES */
-    { 509,  2, 283}, /* DOMINO */
-    {1131,  2, 284}, /* PLAYINGCARDS */
-    { 549,  2, 285}, /* ENCLOSEDALPHANUMERICSUPPLEMENT */
-    { 550,  2, 285}, /* ENCLOSEDALPHANUMSUP */
-    { 554,  2, 286}, /* ENCLOSEDIDEOGRAPHICSUPPLEMENT */
-    { 553,  2, 286}, /* ENCLOSEDIDEOGRAPHICSUP */
-    { 951,  2, 287}, /* MISCELLANEOUSSYMBOLSANDPICTOGRAPHS */
-    { 955,  2, 287}, /* MISCPICTOGRAPHS */
-    { 544,  2, 288}, /* EMOTICONS */
-    {1073,  2, 289}, /* ORNAMENTALDINGBATS */
-    {1355,  2, 290}, /* TRANSPORTANDMAPSYMBOLS */
-    {1354,  2, 290}, /* TRANSPORTANDMAP */
-    { 184,  2, 291}, /* ALCHEMICALSYMBOLS */
-    { 183,  2, 291}, /* ALCHEMICAL */
-    { 605,  2, 292}, /* GEOMETRICSHAPESEXTENDED */
-    { 604,  2, 292}, /* GEOMETRICSHAPESEXT */
-    {1273,  2, 293}, /* SUPPLEMENTALARROWSC */
-    {1266,  2, 293}, /* SUPARROWSC */
-    {1276,  2, 294}, /* SUPPLEMENTALSYMBOLSANDPICTOGRAPHS */
-    {1282,  2, 294}, /* SUPSYMBOLSANDPICTOGRAPHS */
-    { 370,  2, 295}, /* CHESSSYMBOLS */
-    {1292,  2, 296}, /* SYMBOLSANDPICTOGRAPHSEXTENDEDA */
-    {1291,  2, 296}, /* SYMBOLSANDPICTOGRAPHSEXTA */
-    {1293,  2, 297}, /* SYMBOLSFORLEGACYCOMPUTING */
-    { 399,  2, 298}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONB */
-    { 386,  2, 298}, /* CJKEXTB */
-    { 400,  2, 299}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONC */
-    { 387,  2, 299}, /* CJKEXTC */
-    { 401,  2, 300}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIOND */
-    { 388,  2, 300}, /* CJKEXTD */
-    { 402,  2, 301}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONE */
-    { 389,  2, 301}, /* CJKEXTE */
-    { 403,  2, 302}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONF */
-    { 390,  2, 302}, /* CJKEXTF */
-    { 382,  2, 303}, /* CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT */
-    { 384,  2, 303}, /* CJKCOMPATIDEOGRAPHSSUP */
-    { 404,  2, 304}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONG */
-    { 391,  2, 304}, /* CJKEXTG */
-    {1303,  2, 305}, /* TAGS */
-    {1377,  2, 306}, /* VARIATIONSELECTORSSUPPLEMENT */
-    {1392,  2, 306}, /* VSSUP */
-    {1277,  2, 307}, /* SUPPLEMENTARYPRIVATEUSEAREAA */
-    {1279,  2, 307}, /* SUPPUAA */
-    {1278,  2, 308}, /* SUPPLEMENTARYPRIVATEUSEAREAB */
-    {1280,  2, 308}, /* SUPPUAB */
-    {1027,  3,   0}, /* NOTREORDERED */
+    {1309,  2,  14}, /* SYRIAC */
+    { 217,  2,  15}, /* ARABICSUPPLEMENT */
+    { 216,  2,  15}, /* ARABICSUP */
+    {1350,  2,  16}, /* THAANA */
+    {1024,  2,  17}, /* NKO */
+    {1207,  2,  18}, /* SAMARITAN */
+    { 893,  2,  19}, /* MANDAIC */
+    {1311,  2,  20}, /* SYRIACSUPPLEMENT */
+    {1310,  2,  20}, /* SYRIACSUP */
+    { 207,  2,  21}, /* ARABICEXTENDEDB */
+    { 205,  2,  21}, /* ARABICEXTB */
+    { 206,  2,  22}, /* ARABICEXTENDEDA */
+    { 204,  2,  22}, /* ARABICEXTA */
+    { 497,  2,  23}, /* DEVANAGARI */
+    { 259,  2,  24}, /* BENGALI */
+    { 647,  2,  25}, /* GURMUKHI */
+    { 644,  2,  26}, /* GUJARATI */
+    {1084,  2,  27}, /* ORIYA */
+    {1328,  2,  28}, /* TAMIL */
+    {1343,  2,  29}, /* TELUGU */
+    { 769,  2,  30}, /* KANNADA */
+    { 880,  2,  31}, /* MALAYALAM */
+    {1241,  2,  32}, /* SINHALA */
+    {1351,  2,  33}, /* THAI */
+    { 796,  2,  34}, /* LAO */
+    {1353,  2,  35}, /* TIBETAN */
+    { 990,  2,  36}, /* MYANMAR */
+    { 613,  2,  37}, /* GEORGIAN */
+    { 662,  2,  38}, /* HANGULJAMO */
+    { 739,  2,  38}, /* JAMO */
+    { 564,  2,  39}, /* ETHIOPIC */
+    { 572,  2,  40}, /* ETHIOPICSUPPLEMENT */
+    { 571,  2,  40}, /* ETHIOPICSUP */
+    { 369,  2,  41}, /* CHEROKEE */
+    {1383,  2,  42}, /* UNIFIEDCANADIANABORIGINALSYLLABICS */
+    {1376,  2,  42}, /* UCAS */
+    { 308,  2,  42}, /* CANADIANSYLLABICS */
+    {1062,  2,  43}, /* OGHAM */
+    {1200,  2,  44}, /* RUNIC */
+    {1314,  2,  45}, /* TAGALOG */
+    { 674,  2,  46}, /* HANUNOO */
+    { 299,  2,  47}, /* BUHID */
+    {1316,  2,  48}, /* TAGBANWA */
+    { 780,  2,  49}, /* KHMER */
+    { 980,  2,  50}, /* MONGOLIAN */
+    {1384,  2,  51}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED */
+    {1377,  2,  51}, /* UCASEXT */
+    { 837,  2,  52}, /* LIMBU */
+    {1319,  2,  53}, /* TAILE */
+    {1013,  2,  54}, /* NEWTAILUE */
+    { 781,  2,  55}, /* KHMERSYMBOLS */
+    { 297,  2,  56}, /* BUGINESE */
+    {1320,  2,  57}, /* TAITHAM */
+    { 417,  2,  58}, /* COMBININGDIACRITICALMARKSEXTENDED */
+    { 504,  2,  58}, /* DIACRITICALSEXT */
+    { 242,  2,  59}, /* BALINESE */
+    {1274,  2,  60}, /* SUNDANESE */
+    { 250,  2,  61}, /* BATAK */
+    { 831,  2,  62}, /* LEPCHA */
+    {1066,  2,  63}, /* OLCHIKI */
+    { 476,  2,  64}, /* CYRILLICEXTENDEDC */
+    { 473,  2,  64}, /* CYRILLICEXTC */
+    { 615,  2,  65}, /* GEORGIANEXTENDED */
+    { 614,  2,  65}, /* GEORGIANEXT */
+    {1276,  2,  66}, /* SUNDANESESUPPLEMENT */
+    {1275,  2,  66}, /* SUNDANESESUP */
+    {1399,  2,  67}, /* VEDICEXTENSIONS */
+    {1398,  2,  67}, /* VEDICEXT */
+    {1141,  2,  68}, /* PHONETICEXTENSIONS */
+    {1140,  2,  68}, /* PHONETICEXT */
+    {1142,  2,  69}, /* PHONETICEXTENSIONSSUPPLEMENT */
+    {1143,  2,  69}, /* PHONETICEXTSUP */
+    { 419,  2,  70}, /* COMBININGDIACRITICALMARKSSUPPLEMENT */
+    { 506,  2,  70}, /* DIACRITICALSSUP */
+    { 809,  2,  71}, /* LATINEXTENDEDADDITIONAL */
+    { 803,  2,  71}, /* LATINEXTADDITIONAL */
+    { 640,  2,  72}, /* GREEKEXTENDED */
+    { 639,  2,  72}, /* GREEKEXT */
+    { 608,  2,  73}, /* GENERALPUNCTUATION */
+    {1168,  2,  73}, /* PUNCTUATION */
+    {1283,  2,  74}, /* SUPERSCRIPTSANDSUBSCRIPTS */
+    {1282,  2,  74}, /* SUPERANDSUB */
+    { 461,  2,  75}, /* CURRENCYSYMBOLS */
+    { 418,  2,  76}, /* COMBININGDIACRITICALMARKSFORSYMBOLS */
+    { 505,  2,  76}, /* DIACRITICALSFORSYMBOLS */
+    { 422,  2,  76}, /* COMBININGMARKSFORSYMBOLS */
+    { 833,  2,  77}, /* LETTERLIKESYMBOLS */
+    {1048,  2,  78}, /* NUMBERFORMS */
+    { 221,  2,  79}, /* ARROWS */
+    { 931,  2,  80}, /* MATHEMATICALOPERATORS */
+    { 932,  2,  80}, /* MATHOPERATORS */
+    { 964,  2,  81}, /* MISCELLANEOUSTECHNICAL */
+    { 969,  2,  81}, /* MISCTECHNICAL */
+    { 446,  2,  82}, /* CONTROLPICTURES */
+    {1083,  2,  83}, /* OPTICALCHARACTERRECOGNITION */
+    {1059,  2,  83}, /* OCR */
+    { 552,  2,  84}, /* ENCLOSEDALPHANUMERICS */
+    { 551,  2,  84}, /* ENCLOSEDALPHANUM */
+    { 284,  2,  85}, /* BOXDRAWING */
+    { 274,  2,  86}, /* BLOCKELEMENTS */
+    { 609,  2,  87}, /* GEOMETRICSHAPES */
+    { 961,  2,  88}, /* MISCELLANEOUSSYMBOLS */
+    { 968,  2,  88}, /* MISCSYMBOLS */
+    { 509,  2,  89}, /* DINGBATS */
+    { 959,  2,  90}, /* MISCELLANEOUSMATHEMATICALSYMBOLSA */
+    { 965,  2,  90}, /* MISCMATHSYMBOLSA */
+    {1285,  2,  91}, /* SUPPLEMENTALARROWSA */
+    {1278,  2,  91}, /* SUPARROWSA */
+    { 291,  2,  92}, /* BRAILLEPATTERNS */
+    { 290,  2,  92}, /* BRAILLE */
+    {1286,  2,  93}, /* SUPPLEMENTALARROWSB */
+    {1279,  2,  93}, /* SUPARROWSB */
+    { 960,  2,  94}, /* MISCELLANEOUSMATHEMATICALSYMBOLSB */
+    { 966,  2,  94}, /* MISCMATHSYMBOLSB */
+    {1288,  2,  95}, /* SUPPLEMENTALMATHEMATICALOPERATORS */
+    {1284,  2,  95}, /* SUPMATHOPERATORS */
+    { 962,  2,  96}, /* MISCELLANEOUSSYMBOLSANDARROWS */
+    { 958,  2,  96}, /* MISCARROWS */
+    { 620,  2,  97}, /* GLAGOLITIC */
+    { 811,  2,  98}, /* LATINEXTENDEDC */
+    { 805,  2,  98}, /* LATINEXTC */
+    { 448,  2,  99}, /* COPTIC */
+    { 617,  2, 100}, /* GEORGIANSUPPLEMENT */
+    { 616,  2, 100}, /* GEORGIANSUP */
+    {1355,  2, 101}, /* TIFINAGH */
+    { 568,  2, 102}, /* ETHIOPICEXTENDED */
+    { 565,  2, 102}, /* ETHIOPICEXT */
+    { 474,  2, 103}, /* CYRILLICEXTENDEDA */
+    { 471,  2, 103}, /* CYRILLICEXTA */
+    {1289,  2, 104}, /* SUPPLEMENTALPUNCTUATION */
+    {1295,  2, 104}, /* SUPPUNCTUATION */
+    { 395,  2, 105}, /* CJKRADICALSSUPPLEMENT */
+    { 394,  2, 105}, /* CJKRADICALSSUP */
+    { 768,  2, 106}, /* KANGXIRADICALS */
+    { 767,  2, 106}, /* KANGXI */
+    { 705,  2, 107}, /* IDEOGRAPHICDESCRIPTIONCHARACTERS */
+    { 701,  2, 107}, /* IDC */
+    { 398,  2, 108}, /* CJKSYMBOLSANDPUNCTUATION */
+    { 397,  2, 108}, /* CJKSYMBOLS */
+    { 690,  2, 109}, /* HIRAGANA */
+    { 771,  2, 110}, /* KATAKANA */
+    { 277,  2, 111}, /* BOPOMOFO */
+    { 661,  2, 112}, /* HANGULCOMPATIBILITYJAMO */
+    { 427,  2, 112}, /* COMPATJAMO */
+    { 766,  2, 113}, /* KANBUN */
+    { 279,  2, 114}, /* BOPOMOFOEXTENDED */
+    { 278,  2, 114}, /* BOPOMOFOEXT */
+    { 396,  2, 115}, /* CJKSTROKES */
+    { 774,  2, 116}, /* KATAKANAPHONETICEXTENSIONS */
+    { 772,  2, 116}, /* KATAKANAEXT */
+    { 556,  2, 117}, /* ENCLOSEDCJKLETTERSANDMONTHS */
+    { 555,  2, 117}, /* ENCLOSEDCJK */
+    { 381,  2, 118}, /* CJKCOMPATIBILITY */
+    { 379,  2, 118}, /* CJKCOMPAT */
+    { 400,  2, 119}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONA */
+    { 387,  2, 119}, /* CJKEXTA */
+    {1450,  2, 120}, /* YIJINGHEXAGRAMSYMBOLS */
+    {1449,  2, 120}, /* YIJING */
+    { 399,  2, 121}, /* CJKUNIFIEDIDEOGRAPHS */
+    { 378,  2, 121}, /* CJK */
+    {1452,  2, 122}, /* YISYLLABLES */
+    {1451,  2, 123}, /* YIRADICALS */
+    { 847,  2, 124}, /* LISU */
+    {1393,  2, 125}, /* VAI */
+    { 475,  2, 126}, /* CYRILLICEXTENDEDB */
+    { 472,  2, 126}, /* CYRILLICEXTB */
+    { 244,  2, 127}, /* BAMUM */
+    { 977,  2, 128}, /* MODIFIERTONELETTERS */
+    { 812,  2, 129}, /* LATINEXTENDEDD */
+    { 806,  2, 129}, /* LATINEXTD */
+    {1303,  2, 130}, /* SYLOTINAGRI */
+    { 424,  2, 131}, /* COMMONINDICNUMBERFORMS */
+    { 716,  2, 131}, /* INDICNUMBERFORMS */
+    {1133,  2, 132}, /* PHAGSPA */
+    {1211,  2, 133}, /* SAURASHTRA */
+    { 499,  2, 134}, /* DEVANAGARIEXTENDED */
+    { 498,  2, 134}, /* DEVANAGARIEXT */
+    { 775,  2, 135}, /* KAYAHLI */
+    {1183,  2, 136}, /* REJANG */
+    { 663,  2, 137}, /* HANGULJAMOEXTENDEDA */
+    { 740,  2, 137}, /* JAMOEXTA */
+    { 743,  2, 138}, /* JAVANESE */
+    { 994,  2, 139}, /* MYANMAREXTENDEDB */
+    { 992,  2, 139}, /* MYANMAREXTB */
+    { 362,  2, 140}, /* CHAM */
+    { 993,  2, 141}, /* MYANMAREXTENDEDA */
+    { 991,  2, 141}, /* MYANMAREXTA */
+    {1321,  2, 142}, /* TAIVIET */
+    { 946,  2, 143}, /* MEETEIMAYEKEXTENSIONS */
+    { 945,  2, 143}, /* MEETEIMAYEKEXT */
+    { 569,  2, 144}, /* ETHIOPICEXTENDEDA */
+    { 566,  2, 144}, /* ETHIOPICEXTA */
+    { 813,  2, 145}, /* LATINEXTENDEDE */
+    { 807,  2, 145}, /* LATINEXTE */
+    { 371,  2, 146}, /* CHEROKEESUPPLEMENT */
+    { 370,  2, 146}, /* CHEROKEESUP */
+    { 944,  2, 147}, /* MEETEIMAYEK */
+    { 665,  2, 148}, /* HANGULSYLLABLES */
+    { 660,  2, 148}, /* HANGUL */
+    { 664,  2, 149}, /* HANGULJAMOEXTENDEDB */
+    { 741,  2, 149}, /* JAMOEXTB */
+    { 688,  2, 150}, /* HIGHSURROGATES */
+    { 686,  2, 151}, /* HIGHPRIVATEUSESURROGATES */
+    { 687,  2, 151}, /* HIGHPUSURROGATES */
+    { 858,  2, 152}, /* LOWSURROGATES */
+    {1162,  2, 153}, /* PRIVATEUSEAREA */
+    {1166,  2, 153}, /* PUA */
+    {1161,  2, 153}, /* PRIVATEUSE */
+    { 383,  2, 154}, /* CJKCOMPATIBILITYIDEOGRAPHS */
+    { 385,  2, 154}, /* CJKCOMPATIDEOGRAPHS */
+    { 191,  2, 155}, /* ALPHABETICPRESENTATIONFORMS */
+    { 190,  2, 155}, /* ALPHABETICPF */
+    { 214,  2, 156}, /* ARABICPRESENTATIONFORMSA */
+    { 212,  2, 156}, /* ARABICPFA */
+    {1396,  2, 157}, /* VARIATIONSELECTORS */
+    {1414,  2, 157}, /* VS */
+    {1402,  2, 158}, /* VERTICALFORMS */
+    { 420,  2, 159}, /* COMBININGHALFMARKS */
+    { 654,  2, 159}, /* HALFMARKS */
+    { 382,  2, 160}, /* CJKCOMPATIBILITYFORMS */
+    { 380,  2, 160}, /* CJKCOMPATFORMS */
+    {1247,  2, 161}, /* SMALLFORMVARIANTS */
+    {1246,  2, 161}, /* SMALLFORMS */
+    { 215,  2, 162}, /* ARABICPRESENTATIONFORMSB */
+    { 213,  2, 162}, /* ARABICPFB */
+    { 656,  2, 163}, /* HALFWIDTHANDFULLWIDTHFORMS */
+    { 653,  2, 163}, /* HALFANDFULLFORMS */
+    {1265,  2, 164}, /* SPECIALS */
+    { 843,  2, 165}, /* LINEARBSYLLABARY */
+    { 842,  2, 166}, /* LINEARBIDEOGRAMS */
+    { 172,  2, 167}, /* AEGEANNUMBERS */
+    { 198,  2, 168}, /* ANCIENTGREEKNUMBERS */
+    { 199,  2, 169}, /* ANCIENTSYMBOLS */
+    {1135,  2, 170}, /* PHAISTOSDISC */
+    {1134,  2, 170}, /* PHAISTOS */
+    { 869,  2, 171}, /* LYCIAN */
+    { 314,  2, 172}, /* CARIAN */
+    { 449,  2, 173}, /* COPTICEPACTNUMBERS */
+    {1069,  2, 174}, /* OLDITALIC */
+    { 628,  2, 175}, /* GOTHIC */
+    {1071,  2, 176}, /* OLDPERMIC */
+    {1380,  2, 177}, /* UGARITIC */
+    {1072,  2, 178}, /* OLDPERSIAN */
+    { 495,  2, 179}, /* DESERET */
+    {1230,  2, 180}, /* SHAVIAN */
+    {1091,  2, 181}, /* OSMANYA */
+    {1088,  2, 182}, /* OSAGE */
+    { 537,  2, 183}, /* ELBASAN */
+    { 319,  2, 184}, /* CAUCASIANALBANIAN */
+    {1408,  2, 185}, /* VITHKUQI */
+    { 840,  2, 186}, /* LINEARA */
+    { 814,  2, 187}, /* LATINEXTENDEDF */
+    { 816,  2, 187}, /* LATINEXTF */
+    { 468,  2, 188}, /* CYPRIOTSYLLABARY */
+    { 714,  2, 189}, /* IMPERIALARAMAIC */
+    {1116,  2, 190}, /* PALMYRENE */
+    { 999,  2, 191}, /* NABATAEAN */
+    { 676,  2, 192}, /* HATRAN */
+    {1139,  2, 193}, /* PHOENICIAN */
+    { 871,  2, 194}, /* LYDIAN */
+    { 952,  2, 195}, /* MEROITICHIEROGLYPHS */
+    { 951,  2, 196}, /* MEROITICCURSIVE */
+    { 778,  2, 197}, /* KHAROSHTHI */
+    {1074,  2, 198}, /* OLDSOUTHARABIAN */
+    {1070,  2, 199}, /* OLDNORTHARABIAN */
+    { 896,  2, 200}, /* MANICHAEAN */
+    { 236,  2, 201}, /* AVESTAN */
+    { 728,  2, 202}, /* INSCRIPTIONALPARTHIAN */
+    { 727,  2, 203}, /* INSCRIPTIONALPAHLAVI */
+    {1165,  2, 204}, /* PSALTERPAHLAVI */
+    {1075,  2, 205}, /* OLDTURKIC */
+    {1068,  2, 206}, /* OLDHUNGARIAN */
+    { 668,  2, 207}, /* HANIFIROHINGYA */
+    {1199,  2, 208}, /* RUMINUMERALSYMBOLS */
+    {1198,  2, 208}, /* RUMI */
+    {1446,  2, 209}, /* YEZIDI */
+    {1073,  2, 210}, /* OLDSOGDIAN */
+    {1254,  2, 211}, /* SOGDIAN */
+    {1076,  2, 212}, /* OLDUYGHUR */
+    { 373,  2, 213}, /* CHORASMIAN */
+    { 539,  2, 214}, /* ELYMAIC */
+    { 287,  2, 215}, /* BRAHMI */
+    { 756,  2, 216}, /* KAITHI */
+    {1257,  2, 217}, /* SORASOMPENG */
+    { 361,  2, 218}, /* CHAKMA */
+    { 874,  2, 219}, /* MAHAJANI */
+    {1229,  2, 220}, /* SHARADA */
+    {1242,  2, 221}, /* SINHALAARCHAICNUMBERS */
+    { 784,  2, 222}, /* KHOJKI */
+    { 987,  2, 223}, /* MULTANI */
+    { 785,  2, 224}, /* KHUDAWADI */
+    { 630,  2, 225}, /* GRANTHA */
+    {1011,  2, 226}, /* NEWA */
+    {1357,  2, 227}, /* TIRHUTA */
+    {1236,  2, 228}, /* SIDDHAM */
+    { 973,  2, 229}, /* MODI */
+    { 982,  2, 230}, /* MONGOLIANSUPPLEMENT */
+    { 981,  2, 230}, /* MONGOLIANSUP */
+    {1325,  2, 231}, /* TAKRI */
+    { 178,  2, 232}, /* AHOM */
+    { 512,  2, 233}, /* DOGRA */
+    {1419,  2, 234}, /* WARANGCITI */
+    { 510,  2, 235}, /* DIVESAKURU */
+    {1002,  2, 236}, /* NANDINAGARI */
+    {1458,  2, 237}, /* ZANABAZARSQUARE */
+    {1259,  2, 238}, /* SOYOMBO */
+    {1385,  2, 239}, /* UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDEDA */
+    {1378,  2, 239}, /* UCASEXTA */
+    {1123,  2, 240}, /* PAUCINHAU */
+    { 261,  2, 241}, /* BHAIKSUKI */
+    { 925,  2, 242}, /* MARCHEN */
+    { 927,  2, 243}, /* MASARAMGONDI */
+    { 646,  2, 244}, /* GUNJALAGONDI */
+    { 879,  2, 245}, /* MAKASAR */
+    { 849,  2, 246}, /* LISUSUPPLEMENT */
+    { 848,  2, 246}, /* LISUSUP */
+    {1330,  2, 247}, /* TAMILSUPPLEMENT */
+    {1329,  2, 247}, /* TAMILSUP */
+    { 457,  2, 248}, /* CUNEIFORM */
+    { 459,  2, 249}, /* CUNEIFORMNUMBERSANDPUNCTUATION */
+    { 458,  2, 249}, /* CUNEIFORMNUMBERS */
+    { 526,  2, 250}, /* EARLYDYNASTICCUNEIFORM */
+    { 469,  2, 251}, /* CYPROMINOAN */
+    { 535,  2, 252}, /* EGYPTIANHIEROGLYPHS */
+    { 534,  2, 253}, /* EGYPTIANHIEROGLYPHFORMATCONTROLS */
+    { 195,  2, 254}, /* ANATOLIANHIEROGLYPHS */
+    { 246,  2, 255}, /* BAMUMSUPPLEMENT */
+    { 245,  2, 255}, /* BAMUMSUP */
+    { 983,  2, 256}, /* MRO */
+    {1333,  2, 257}, /* TANGSA */
+    { 249,  2, 258}, /* BASSAVAH */
+    {1114,  2, 259}, /* PAHAWHHMONG */
+    { 940,  2, 260}, /* MEDEFAIDRIN */
+    { 953,  2, 261}, /* MIAO */
+    { 707,  2, 262}, /* IDEOGRAPHICSYMBOLSANDPUNCTUATION */
+    { 706,  2, 262}, /* IDEOGRAPHICSYMBOLS */
+    {1334,  2, 263}, /* TANGUT */
+    {1335,  2, 264}, /* TANGUTCOMPONENTS */
+    { 779,  2, 265}, /* KHITANSMALLSCRIPT */
+    {1337,  2, 266}, /* TANGUTSUPPLEMENT */
+    {1336,  2, 266}, /* TANGUTSUP */
+    { 762,  2, 267}, /* KANAEXTENDEDB */
+    { 760,  2, 267}, /* KANAEXTB */
+    { 764,  2, 268}, /* KANASUPPLEMENT */
+    { 763,  2, 268}, /* KANASUP */
+    { 761,  2, 269}, /* KANAEXTENDEDA */
+    { 759,  2, 269}, /* KANAEXTA */
+    {1249,  2, 270}, /* SMALLKANAEXTENSION */
+    {1248,  2, 270}, /* SMALLKANAEXT */
+    {1054,  2, 271}, /* NUSHU */
+    { 523,  2, 272}, /* DUPLOYAN */
+    {1233,  2, 273}, /* SHORTHANDFORMATCONTROLS */
+    {1464,  2, 274}, /* ZNAMENNYMUSICALNOTATION */
+    {1463,  2, 274}, /* ZNAMENNYMUSIC */
+    { 302,  2, 275}, /* BYZANTINEMUSICALSYMBOLS */
+    { 301,  2, 275}, /* BYZANTINEMUSIC */
+    { 989,  2, 276}, /* MUSICALSYMBOLS */
+    { 988,  2, 276}, /* MUSIC */
+    { 197,  2, 277}, /* ANCIENTGREEKMUSICALNOTATION */
+    { 196,  2, 277}, /* ANCIENTGREEKMUSIC */
+    { 934,  2, 278}, /* MAYANNUMERALS */
+    {1323,  2, 279}, /* TAIXUANJINGSYMBOLS */
+    {1322,  2, 279}, /* TAIXUANJING */
+    { 451,  2, 280}, /* COUNTINGRODNUMERALS */
+    { 450,  2, 280}, /* COUNTINGROD */
+    { 930,  2, 281}, /* MATHEMATICALALPHANUMERICSYMBOLS */
+    { 929,  2, 281}, /* MATHALPHANUM */
+    {1298,  2, 282}, /* SUTTONSIGNWRITING */
+    { 815,  2, 283}, /* LATINEXTENDEDG */
+    { 817,  2, 283}, /* LATINEXTG */
+    { 622,  2, 284}, /* GLAGOLITICSUPPLEMENT */
+    { 621,  2, 284}, /* GLAGOLITICSUP */
+    {1057,  2, 285}, /* NYIAKENGPUACHUEHMONG */
+    {1369,  2, 286}, /* TOTO */
+    {1417,  2, 287}, /* WANCHO */
+    { 570,  2, 288}, /* ETHIOPICEXTENDEDB */
+    { 567,  2, 288}, /* ETHIOPICEXTB */
+    { 948,  2, 289}, /* MENDEKIKAKUI */
+    { 170,  2, 290}, /* ADLAM */
+    { 718,  2, 291}, /* INDICSIYAQNUMBERS */
+    {1106,  2, 292}, /* OTTOMANSIYAQNUMBERS */
+    { 210,  2, 293}, /* ARABICMATHEMATICALALPHABETICSYMBOLS */
+    { 209,  2, 293}, /* ARABICMATH */
+    { 877,  2, 294}, /* MAHJONGTILES */
+    { 876,  2, 294}, /* MAHJONG */
+    { 514,  2, 295}, /* DOMINOTILES */
+    { 513,  2, 295}, /* DOMINO */
+    {1145,  2, 296}, /* PLAYINGCARDS */
+    { 553,  2, 297}, /* ENCLOSEDALPHANUMERICSUPPLEMENT */
+    { 554,  2, 297}, /* ENCLOSEDALPHANUMSUP */
+    { 558,  2, 298}, /* ENCLOSEDIDEOGRAPHICSUPPLEMENT */
+    { 557,  2, 298}, /* ENCLOSEDIDEOGRAPHICSUP */
+    { 963,  2, 299}, /* MISCELLANEOUSSYMBOLSANDPICTOGRAPHS */
+    { 967,  2, 299}, /* MISCPICTOGRAPHS */
+    { 548,  2, 300}, /* EMOTICONS */
+    {1086,  2, 301}, /* ORNAMENTALDINGBATS */
+    {1373,  2, 302}, /* TRANSPORTANDMAPSYMBOLS */
+    {1372,  2, 302}, /* TRANSPORTANDMAP */
+    { 184,  2, 303}, /* ALCHEMICALSYMBOLS */
+    { 183,  2, 303}, /* ALCHEMICAL */
+    { 611,  2, 304}, /* GEOMETRICSHAPESEXTENDED */
+    { 610,  2, 304}, /* GEOMETRICSHAPESEXT */
+    {1287,  2, 305}, /* SUPPLEMENTALARROWSC */
+    {1280,  2, 305}, /* SUPARROWSC */
+    {1290,  2, 306}, /* SUPPLEMENTALSYMBOLSANDPICTOGRAPHS */
+    {1296,  2, 306}, /* SUPSYMBOLSANDPICTOGRAPHS */
+    { 372,  2, 307}, /* CHESSSYMBOLS */
+    {1306,  2, 308}, /* SYMBOLSANDPICTOGRAPHSEXTENDEDA */
+    {1305,  2, 308}, /* SYMBOLSANDPICTOGRAPHSEXTA */
+    {1307,  2, 309}, /* SYMBOLSFORLEGACYCOMPUTING */
+    { 401,  2, 310}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONB */
+    { 388,  2, 310}, /* CJKEXTB */
+    { 402,  2, 311}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONC */
+    { 389,  2, 311}, /* CJKEXTC */
+    { 403,  2, 312}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIOND */
+    { 390,  2, 312}, /* CJKEXTD */
+    { 404,  2, 313}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONE */
+    { 391,  2, 313}, /* CJKEXTE */
+    { 405,  2, 314}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONF */
+    { 392,  2, 314}, /* CJKEXTF */
+    { 384,  2, 315}, /* CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT */
+    { 386,  2, 315}, /* CJKCOMPATIDEOGRAPHSSUP */
+    { 406,  2, 316}, /* CJKUNIFIEDIDEOGRAPHSEXTENSIONG */
+    { 393,  2, 316}, /* CJKEXTG */
+    {1317,  2, 317}, /* TAGS */
+    {1397,  2, 318}, /* VARIATIONSELECTORSSUPPLEMENT */
+    {1415,  2, 318}, /* VSSUP */
+    {1291,  2, 319}, /* SUPPLEMENTARYPRIVATEUSEAREAA */
+    {1293,  2, 319}, /* SUPPUAA */
+    {1292,  2, 320}, /* SUPPLEMENTARYPRIVATEUSEAREAB */
+    {1294,  2, 320}, /* SUPPUAB */
+    {1039,  3,   0}, /* NOTREORDERED */
     {   1,  3,   0}, /* 0 */
-    {1028,  3,   0}, /* NR */
+    {1040,  3,   0}, /* NR */
     { 167,  3,   1}, /* ABOVE */
     {  75,  3,   1}, /* 230 */
     { 166,  3,   1}, /* A */
     { 169,  3,   2}, /* ABOVERIGHT */
     {  76,  3,   2}, /* 232 */
     { 201,  3,   2}, /* AR */
-    { 253,  3,   3}, /* BELOW */
+    { 255,  3,   3}, /* BELOW */
     {  69,  3,   3}, /* 220 */
-    { 236,  3,   3}, /* B */
-    { 230,  3,   4}, /* ATTACHEDABOVERIGHT */
+    { 238,  3,   3}, /* B */
+    { 232,  3,   4}, /* ATTACHEDABOVERIGHT */
     {  65,  3,   4}, /* 216 */
-    { 225,  3,   4}, /* ATAR */
-    { 231,  3,   5}, /* ATTACHEDBELOW */
+    { 227,  3,   4}, /* ATAR */
+    { 233,  3,   5}, /* ATTACHEDBELOW */
     {  62,  3,   5}, /* 202 */
-    { 226,  3,   5}, /* ATB */
-    {1096,  3,   6}, /* OVERLAY */
+    { 228,  3,   5}, /* ATB */
+    {1110,  3,   6}, /* OVERLAY */
     {   2,  3,   6}, /* 1 */
-    {1095,  3,   6}, /* OV */
-    { 726,  3,   7}, /* IOTASUBSCRIPT */
+    {1109,  3,   6}, /* OV */
+    { 732,  3,   7}, /* IOTASUBSCRIPT */
     {  80,  3,   7}, /* 240 */
-    { 729,  3,   7}, /* IS */
-    { 512,  3,   8}, /* DOUBLEBELOW */
+    { 735,  3,   7}, /* IS */
+    { 516,  3,   8}, /* DOUBLEBELOW */
     {  77,  3,   8}, /* 233 */
-    { 483,  3,   8}, /* DB */
-    { 511,  3,   9}, /* DOUBLEABOVE */
+    { 487,  3,   8}, /* DB */
+    { 515,  3,   9}, /* DOUBLEABOVE */
     {  78,  3,   9}, /* 234 */
-    { 478,  3,   9}, /* DA */
-    { 255,  3,  10}, /* BELOWRIGHT */
+    { 482,  3,   9}, /* DA */
+    { 257,  3,  10}, /* BELOWRIGHT */
     {  70,  3,  10}, /* 222 */
-    { 283,  3,  10}, /* BR */
+    { 285,  3,  10}, /* BR */
     { 168,  3,  11}, /* ABOVELEFT */
     {  73,  3,  11}, /* 228 */
     { 181,  3,  11}, /* AL */
-    { 321,  3,  12}, /* CCC10 */
+    { 323,  3,  12}, /* CCC10 */
     {  21,  3,  12}, /* 10 */
-    { 324,  3,  13}, /* CCC11 */
+    { 326,  3,  13}, /* CCC11 */
     {  33,  3,  13}, /* 11 */
-    { 326,  3,  14}, /* CCC12 */
+    { 328,  3,  14}, /* CCC12 */
     {  37,  3,  14}, /* 12 */
-    { 329,  3,  15}, /* CCC13 */
+    { 331,  3,  15}, /* CCC13 */
     {  40,  3,  15}, /* 13 */
-    { 333,  3,  16}, /* CCC14 */
+    { 335,  3,  16}, /* CCC14 */
     {  45,  3,  16}, /* 14 */
-    { 334,  3,  17}, /* CCC15 */
+    { 336,  3,  17}, /* CCC15 */
     {  46,  3,  17}, /* 15 */
-    { 335,  3,  18}, /* CCC16 */
+    { 337,  3,  18}, /* CCC16 */
     {  48,  3,  18}, /* 16 */
-    { 336,  3,  19}, /* CCC17 */
+    { 338,  3,  19}, /* CCC17 */
     {  49,  3,  19}, /* 17 */
-    { 337,  3,  20}, /* CCC18 */
+    { 339,  3,  20}, /* CCC18 */
     {  51,  3,  20}, /* 18 */
-    { 338,  3,  21}, /* CCC19 */
+    { 340,  3,  21}, /* CCC19 */
     {  52,  3,  21}, /* 19 */
-    { 339,  3,  22}, /* CCC20 */
+    { 341,  3,  22}, /* CCC20 */
     {  56,  3,  22}, /* 20 */
-    { 340,  3,  23}, /* CCC21 */
+    { 342,  3,  23}, /* CCC21 */
     {  63,  3,  23}, /* 21 */
-    { 341,  3,  24}, /* CCC22 */
+    { 343,  3,  24}, /* CCC22 */
     {  68,  3,  24}, /* 22 */
-    { 342,  3,  25}, /* CCC23 */
+    { 344,  3,  25}, /* CCC23 */
     {  74,  3,  25}, /* 23 */
-    { 343,  3,  26}, /* CCC24 */
+    { 345,  3,  26}, /* CCC24 */
     {  79,  3,  26}, /* 24 */
-    { 344,  3,  27}, /* CCC25 */
+    { 346,  3,  27}, /* CCC25 */
     {  81,  3,  27}, /* 25 */
-    { 349,  3,  28}, /* CCC30 */
+    { 351,  3,  28}, /* CCC30 */
     {  95,  3,  28}, /* 30 */
-    { 350,  3,  29}, /* CCC31 */
+    { 352,  3,  29}, /* CCC31 */
     { 100,  3,  29}, /* 31 */
-    { 351,  3,  30}, /* CCC32 */
+    { 353,  3,  30}, /* CCC32 */
     { 101,  3,  30}, /* 32 */
-    { 346,  3,  31}, /* CCC27 */
+    { 348,  3,  31}, /* CCC27 */
     {  83,  3,  31}, /* 27 */
-    { 347,  3,  32}, /* CCC28 */
+    { 349,  3,  32}, /* CCC28 */
     {  84,  3,  32}, /* 28 */
-    { 348,  3,  33}, /* CCC29 */
+    { 350,  3,  33}, /* CCC29 */
     {  85,  3,  33}, /* 29 */
-    { 352,  3,  34}, /* CCC33 */
+    { 354,  3,  34}, /* CCC33 */
     { 102,  3,  34}, /* 33 */
-    { 353,  3,  35}, /* CCC34 */
+    { 355,  3,  35}, /* CCC34 */
     { 103,  3,  35}, /* 34 */
-    { 354,  3,  36}, /* CCC35 */
+    { 356,  3,  36}, /* CCC35 */
     { 104,  3,  36}, /* 35 */
-    { 355,  3,  37}, /* CCC36 */
+    { 357,  3,  37}, /* CCC36 */
     { 105,  3,  37}, /* 36 */
-    {1034,  3,  38}, /* NUKTA */
+    {1046,  3,  38}, /* NUKTA */
     { 142,  3,  38}, /* 7 */
-    {1011,  3,  38}, /* NK */
-    {1383,  3,  39}, /* VIRAMA */
+    {1023,  3,  38}, /* NK */
+    {1404,  3,  39}, /* VIRAMA */
     { 158,  3,  39}, /* 9 */
-    {1390,  3,  39}, /* VR */
-    { 356,  3,  40}, /* CCC84 */
+    {1413,  3,  39}, /* VR */
+    { 358,  3,  40}, /* CCC84 */
     { 157,  3,  40}, /* 84 */
-    { 357,  3,  41}, /* CCC91 */
+    { 359,  3,  41}, /* CCC91 */
     { 165,  3,  41}, /* 91 */
-    { 322,  3,  42}, /* CCC103 */
+    { 324,  3,  42}, /* CCC103 */
     {  31,  3,  42}, /* 103 */
-    { 323,  3,  43}, /* CCC107 */
+    { 325,  3,  43}, /* CCC107 */
     {  32,  3,  43}, /* 107 */
-    { 325,  3,  44}, /* CCC118 */
+    { 327,  3,  44}, /* CCC118 */
     {  36,  3,  44}, /* 118 */
-    { 327,  3,  45}, /* CCC122 */
+    { 329,  3,  45}, /* CCC122 */
     {  38,  3,  45}, /* 122 */
-    { 328,  3,  46}, /* CCC129 */
+    { 330,  3,  46}, /* CCC129 */
     {  39,  3,  46}, /* 129 */
-    { 330,  3,  47}, /* CCC130 */
+    { 332,  3,  47}, /* CCC130 */
     {  42,  3,  47}, /* 130 */
-    { 331,  3,  48}, /* CCC132 */
+    { 333,  3,  48}, /* CCC132 */
     {  43,  3,  48}, /* 132 */
-    { 229,  3,  49}, /* ATTACHEDABOVE */
+    { 231,  3,  49}, /* ATTACHEDABOVE */
     {  64,  3,  49}, /* 214 */
-    { 224,  3,  49}, /* ATA */
-    { 254,  3,  50}, /* BELOWLEFT */
+    { 226,  3,  49}, /* ATA */
+    { 256,  3,  50}, /* BELOWLEFT */
     {  67,  3,  50}, /* 218 */
-    { 268,  3,  50}, /* BL */
-    { 811,  3,  51}, /* LEFT */
+    { 270,  3,  50}, /* BL */
+    { 823,  3,  51}, /* LEFT */
     {  71,  3,  51}, /* 224 */
-    { 783,  3,  51}, /* L */
-    { 757,  3,  52}, /* KANAVOICING */
+    { 791,  3,  51}, /* L */
+    { 765,  3,  52}, /* KANAVOICING */
     { 151,  3,  52}, /* 8 */
-    { 782,  3,  52}, /* KV */
-    { 345,  3,  53}, /* CCC26 */
+    { 790,  3,  52}, /* KV */
+    { 347,  3,  53}, /* CCC26 */
     {  82,  3,  53}, /* 26 */
-    { 667,  3,  54}, /* HANREADING */
+    { 673,  3,  54}, /* HANREADING */
     { 136,  3,  54}, /* 6 */
-    { 666,  3,  54}, /* HANR */
-    {1172,  3,  55}, /* RIGHT */
+    { 672,  3,  54}, /* HANR */
+    {1186,  3,  55}, /* RIGHT */
     {  72,  3,  55}, /* 226 */
-    {1164,  3,  55}, /* R */
-    { 332,  3,  56}, /* CCC133 */
+    {1178,  3,  55}, /* R */
+    { 334,  3,  56}, /* CCC133 */
     {  44,  3,  56}, /* 133 */
-    { 232,  3,  57}, /* ATTACHEDBELOWLEFT */
+    { 234,  3,  57}, /* ATTACHEDBELOWLEFT */
     {  57,  3,  57}, /* 200 */
-    { 227,  3,  57}, /* ATBL */
-    {1020,  4,   0}, /* NONE */
-    {1017,  4,   1}, /* NOBREAK */
-    { 994,  4,   1}, /* NB */
-    { 424,  4,   2}, /* COMPAT */
-    { 413,  4,   2}, /* COM */
-    {1267,  4,   3}, /* SUPER */
-    {1263,  4,   3}, /* SUP */
-    { 592,  4,   4}, /* FRACTION */
-    { 591,  4,   4}, /* FRA */
-    { 307,  4,   5}, /* CANONICAL */
-    { 304,  4,   5}, /* CAN */
-    {1258,  4,   6}, /* SUB */
-    { 589,  4,   7}, /* FONT */
-    { 374,  4,   8}, /* CIRCLE */
-    { 546,  4,   8}, /* ENC */
-    {1401,  4,   9}, /* WIDE */
-    {1381,  4,  10}, /* VERTICAL */
-    {1380,  4,  10}, /* VERT */
-    {1254,  4,  11}, /* SQUARE */
-    {1253,  4,  11}, /* SQR */
-    { 731,  4,  12}, /* ISOLATED */
-    { 730,  4,  12}, /* ISO */
-    { 584,  4,  13}, /* FINAL */
-    { 583,  4,  13}, /* FIN */
-    { 717,  4,  14}, /* INITIAL */
-    { 716,  4,  14}, /* INIT */
-    { 930,  4,  15}, /* MEDIAL */
-    { 927,  4,  15}, /* MED */
-    {1231,  4,  16}, /* SMALL */
-    {1236,  4,  16}, /* SML */
-    { 993,  4,  17}, /* NARROW */
-    { 991,  4,  17}, /* NAR */
-    { 998,  5,   0}, /* NEUTRAL */
-    { 984,  5,   0}, /* N */
-    { 993,  5,   1}, /* NARROW */
-    { 986,  5,   1}, /* NA */
+    { 229,  3,  57}, /* ATBL */
+    {1032,  4,   0}, /* NONE */
+    {1029,  4,   1}, /* NOBREAK */
+    {1006,  4,   1}, /* NB */
+    { 426,  4,   2}, /* COMPAT */
+    { 415,  4,   2}, /* COM */
+    {1281,  4,   3}, /* SUPER */
+    {1277,  4,   3}, /* SUP */
+    { 598,  4,   4}, /* FRACTION */
+    { 597,  4,   4}, /* FRA */
+    { 309,  4,   5}, /* CANONICAL */
+    { 306,  4,   5}, /* CAN */
+    {1272,  4,   6}, /* SUB */
+    { 595,  4,   7}, /* FONT */
+    { 376,  4,   8}, /* CIRCLE */
+    { 550,  4,   8}, /* ENC */
+    {1424,  4,   9}, /* WIDE */
+    {1401,  4,  10}, /* VERTICAL */
+    {1400,  4,  10}, /* VERT */
+    {1268,  4,  11}, /* SQUARE */
+    {1267,  4,  11}, /* SQR */
+    { 737,  4,  12}, /* ISOLATED */
+    { 736,  4,  12}, /* ISO */
+    { 590,  4,  13}, /* FINAL */
+    { 589,  4,  13}, /* FIN */
+    { 723,  4,  14}, /* INITIAL */
+    { 722,  4,  14}, /* INIT */
+    { 942,  4,  15}, /* MEDIAL */
+    { 939,  4,  15}, /* MED */
+    {1245,  4,  16}, /* SMALL */
+    {1250,  4,  16}, /* SML */
+    {1005,  4,  17}, /* NARROW */
+    {1003,  4,  17}, /* NAR */
+    {1010,  5,   0}, /* NEUTRAL */
+    { 996,  5,   0}, /* N */
+    {1005,  5,   1}, /* NARROW */
+    { 998,  5,   1}, /* NA */
     { 193,  5,   2}, /* AMBIGUOUS */
     { 166,  5,   2}, /* A */
-    {1401,  5,   3}, /* WIDE */
-    {1393,  5,   3}, /* W */
-    { 649,  5,   4}, /* HALFWIDTH */
-    { 643,  5,   4}, /* H */
-    { 594,  5,   5}, /* FULLWIDTH */
-    { 578,  5,   5}, /* F */
-    {1363,  6,   0}, /* UNASSIGNED */
-    { 410,  6,   0}, /* CN */
-    { 443,  6,   1}, /* CONTROL */
-    { 319,  6,   1}, /* CC */
-    { 411,  6,   1}, /* CNTRL */
-    {1248,  6,   2}, /* SPACESEPARATOR */
-    {1441,  6,   2}, /* ZS */
-    {1090,  6,   3}, /* OTHERPUNCTUATION */
-    {1133,  6,   3}, /* PO */
-    { 457,  6,   4}, /* CURRENCYSYMBOL */
-    {1199,  6,   4}, /* SC */
-    {1069,  6,   5}, /* OPENPUNCTUATION */
-    {1150,  6,   5}, /* PS */
-    { 408,  6,   6}, /* CLOSEPUNCTUATION */
-    {1115,  6,   6}, /* PE */
-    { 921,  6,   7}, /* MATHSYMBOL */
-    {1230,  6,   7}, /* SM */
-    { 482,  6,   8}, /* DASHPUNCTUATION */
-    {1112,  6,   8}, /* PD */
-    { 486,  6,   9}, /* DECIMALNUMBER */
-    { 997,  6,   9}, /* ND */
-    { 504,  6,   9}, /* DIGIT */
-    {1371,  6,  10}, /* UPPERCASELETTER */
-    { 851,  6,  10}, /* LU */
-    { 964,  6,  11}, /* MODIFIERSYMBOL */
-    {1229,  6,  11}, /* SK */
-    { 428,  6,  12}, /* CONNECTORPUNCTUATION */
-    {1110,  6,  12}, /* PC */
-    { 845,  6,  13}, /* LOWERCASELETTER */
-    { 838,  6,  13}, /* LL */
-    {1091,  6,  14}, /* OTHERSYMBOL */
-    {1237,  6,  14}, /* SO */
-    {1085,  6,  15}, /* OTHERLETTER */
-    { 840,  6,  15}, /* LO */
-    { 718,  6,  16}, /* INITIALPUNCTUATION */
-    {1130,  6,  16}, /* PI */
-    { 590,  6,  17}, /* FORMAT */
-    { 358,  6,  17}, /* CF */
-    {1089,  6,  18}, /* OTHERNUMBER */
-    {1015,  6,  18}, /* NO */
-    { 585,  6,  19}, /* FINALPUNCTUATION */
-    {1117,  6,  19}, /* PF */
-    {1342,  6,  20}, /* TITLECASELETTER */
-    { 850,  6,  20}, /* LT */
-    { 962,  6,  21}, /* MODIFIERLETTER */
-    { 839,  6,  21}, /* LM */
-    {1023,  6,  22}, /* NONSPACINGMARK */
-    { 960,  6,  22}, /* MN */
-    { 555,  6,  23}, /* ENCLOSINGMARK */
-    { 926,  6,  23}, /* ME */
-    {1249,  6,  24}, /* SPACINGMARK */
-    { 925,  6,  24}, /* MC */
-    { 822,  6,  25}, /* LETTERNUMBER */
-    {1014,  6,  25}, /* NL */
-    { 834,  6,  26}, /* LINESEPARATOR */
-    {1439,  6,  26}, /* ZL */
-    {1103,  6,  27}, /* PARAGRAPHSEPARATOR */
-    {1440,  6,  27}, /* ZP */
-    {1283,  6,  28}, /* SURROGATE */
-    { 453,  6,  28}, /* CS */
-    {1147,  6,  29}, /* PRIVATEUSE */
-    { 412,  6,  29}, /* CO */
-    {1079,  6,  30}, /* OTHER */
-    { 301,  6,  30}, /* C */
-    { 302,  6,  30}, /* C& */
-    { 820,  6,  31}, /* LETTER */
-    { 783,  6,  31}, /* L */
-    { 784,  6,  31}, /* L& */
-    { 914,  6,  32}, /* MARK */
-    { 860,  6,  32}, /* M */
-    { 419,  6,  32}, /* COMBININGMARK */
-    { 861,  6,  32}, /* M& */
-    {1035,  6,  33}, /* NUMBER */
-    { 984,  6,  33}, /* N */
-    { 985,  6,  33}, /* N& */
-    {1154,  6,  34}, /* PUNCTUATION */
-    {1098,  6,  34}, /* P */
-    {1153,  6,  34}, /* PUNCT */
-    {1099,  6,  34}, /* P& */
-    {1290,  6,  35}, /* SYMBOL */
-    {1188,  6,  35}, /* S */
-    {1189,  6,  35}, /* S& */
-    {1212,  6,  36}, /* SEPARATOR */
-    {1432,  6,  36}, /* Z */
-    {1433,  6,  36}, /* Z& */
-    { 315,  6,  37}, /* CASEDLETTER */
-    { 808,  6,  37}, /* LC */
-    { 222,  6,  38}, /* ASSIGNED */
-    {1079,  7,   0}, /* OTHER */
-    {1416,  7,   0}, /* XX */
-    { 443,  7,   1}, /* CONTROL */
-    { 410,  7,   1}, /* CN */
-    { 823,  7,   2}, /* LF */
-    { 452,  7,   3}, /* CR */
-    { 573,  7,   4}, /* EXTEND */
-    { 570,  7,   4}, /* EX */
-    {1144,  7,   5}, /* PREPEND */
-    {1141,  7,   5}, /* PP */
-    {1249,  7,   6}, /* SPACINGMARK */
-    {1230,  7,   6}, /* SM */
-    { 783,  7,   7}, /* L */
-    {1372,  7,   8}, /* V */
-    {1299,  7,   9}, /* T */
-    {1443,  7,  10}, /* ZWJ */
-    { 852,  7,  11}, /* LV */
-    { 854,  7,  12}, /* LVT */
-    {1166,  7,  13}, /* REGIONALINDICATOR */
-    {1171,  7,  13}, /* RI */
-    { 525,  7,  14}, /* EBASE */
-    { 524,  7,  14}, /* EB */
-    { 526,  7,  15}, /* EBASEGAZ */
-    { 527,  7,  15}, /* EBG */
-    { 538,  7,  16}, /* EMODIFIER */
-    { 536,  7,  16}, /* EM */
-    { 618,  7,  17}, /* GLUEAFTERZWJ */
-    { 597,  7,  17}, /* GAZ */
-    {1026,  8,   0}, /* NOTAPPLICABLE */
-    { 986,  8,   0}, /* NA */
-    { 810,  8,   1}, /* LEADINGJAMO */
-    { 783,  8,   1}, /* L */
-    {1389,  8,   2}, /* VOWELJAMO */
-    {1372,  8,   2}, /* V */
-    {1352,  8,   3}, /* TRAILINGJAMO */
-    {1299,  8,   3}, /* T */
-    { 853,  8,   4}, /* LVSYLLABLE */
-    { 852,  8,   4}, /* LV */
-    { 855,  8,   5}, /* LVTSYLLABLE */
-    { 854,  8,   5}, /* LVT */
-    { 986,  9,   0}, /* NA */
-    {1345,  9,   1}, /* TOP */
-    {1172,  9,   2}, /* RIGHT */
-    { 278,  9,   3}, /* BOTTOM */
-    { 811,  9,   4}, /* LEFT */
-    { 812,  9,   5}, /* LEFTANDRIGHT */
-    {1351,  9,   6}, /* TOPANDRIGHT */
-    {1349,  9,   7}, /* TOPANDLEFT */
-    {1350,  9,   8}, /* TOPANDLEFTANDRIGHT */
-    {1346,  9,   9}, /* TOPANDBOTTOM */
-    {1385,  9,  10}, /* VISUALORDERLEFT */
-    {1347,  9,  11}, /* TOPANDBOTTOMANDLEFT */
-    { 280,  9,  12}, /* BOTTOMANDRIGHT */
-    {1348,  9,  13}, /* TOPANDBOTTOMANDRIGHT */
-    {1097,  9,  14}, /* OVERSTRUCK */
-    { 279,  9,  15}, /* BOTTOMANDLEFT */
-    {1079, 10,   0}, /* OTHER */
-    { 436, 10,   1}, /* CONSONANTPLACEHOLDER */
-    {1035, 10,   2}, /* NUMBER */
-    {1287, 10,   3}, /* SYLLABLEMODIFIER */
-    { 266, 10,   4}, /* BINDU */
-    {1384, 10,   5}, /* VISARGA */
-    {1388, 10,   6}, /* VOWELINDEPENDENT */
-    { 429, 10,   7}, /* CONSONANT */
-    {1387, 10,   8}, /* VOWELDEPENDENT */
-    {1034, 10,   9}, /* NUKTA */
-    { 233, 10,  10}, /* AVAGRAHA */
-    {1383, 10,  11}, /* VIRAMA */
-    { 310, 10,  12}, /* CANTILLATIONMARK */
-    { 430, 10,  13}, /* CONSONANTDEAD */
-    { 600, 10,  14}, /* GEMINATIONMARK */
-    { 435, 10,  15}, /* CONSONANTMEDIAL */
-    { 966, 10,  16}, /* MODIFYINGLETTER */
-    { 441, 10,  17}, /* CONSONANTWITHSTACKER */
-    {1155, 10,  18}, /* PUREKILLER */
-    { 437, 10,  19}, /* CONSONANTPRECEDINGREPHA */
-    {1344, 10,  20}, /* TONEMARK */
-    { 434, 10,  21}, /* CONSONANTKILLER */
-    { 432, 10,  22}, /* CONSONANTHEADLETTER */
-    { 439, 10,  23}, /* CONSONANTSUBJOINED */
-    { 725, 10,  24}, /* INVISIBLESTACKER */
-    {1167, 10,  25}, /* REGISTERSHIFTER */
-    { 440, 10,  26}, /* CONSONANTSUCCEEDINGREPHA */
-    { 431, 10,  27}, /* CONSONANTFINAL */
-    {1386, 10,  28}, /* VOWEL */
-    {1343, 10,  29}, /* TONELETTER */
-    { 433, 10,  30}, /* CONSONANTINITIALPOSTFIXED */
-    {1021, 10,  31}, /* NONJOINER */
-    { 743, 10,  32}, /* JOINER */
-    { 286, 10,  33}, /* BRAHMIJOININGNUMBER */
-    {1037, 10,  34}, /* NUMBERJOINER */
-    { 438, 10,  35}, /* CONSONANTPREFIXED */
-    {1018, 11,   0}, /* NOJOININGGROUP */
-    {1418, 11,   1}, /* YEH */
+    {1424,  5,   3}, /* WIDE */
+    {1416,  5,   3}, /* W */
+    { 655,  5,   4}, /* HALFWIDTH */
+    { 649,  5,   4}, /* H */
+    { 600,  5,   5}, /* FULLWIDTH */
+    { 584,  5,   5}, /* F */
+    {1382,  6,   0}, /* UNASSIGNED */
+    { 412,  6,   0}, /* CN */
+    { 445,  6,   1}, /* CONTROL */
+    { 321,  6,   1}, /* CC */
+    { 413,  6,   1}, /* CNTRL */
+    {1262,  6,   2}, /* SPACESEPARATOR */
+    {1466,  6,   2}, /* ZS */
+    {1103,  6,   3}, /* OTHERPUNCTUATION */
+    {1147,  6,   3}, /* PO */
+    { 460,  6,   4}, /* CURRENCYSYMBOL */
+    {1213,  6,   4}, /* SC */
+    {1082,  6,   5}, /* OPENPUNCTUATION */
+    {1164,  6,   5}, /* PS */
+    { 410,  6,   6}, /* CLOSEPUNCTUATION */
+    {1129,  6,   6}, /* PE */
+    { 933,  6,   7}, /* MATHSYMBOL */
+    {1244,  6,   7}, /* SM */
+    { 486,  6,   8}, /* DASHPUNCTUATION */
+    {1126,  6,   8}, /* PD */
+    { 490,  6,   9}, /* DECIMALNUMBER */
+    {1009,  6,   9}, /* ND */
+    { 508,  6,   9}, /* DIGIT */
+    {1391,  6,  10}, /* UPPERCASELETTER */
+    { 863,  6,  10}, /* LU */
+    { 976,  6,  11}, /* MODIFIERSYMBOL */
+    {1243,  6,  11}, /* SK */
+    { 430,  6,  12}, /* CONNECTORPUNCTUATION */
+    {1124,  6,  12}, /* PC */
+    { 857,  6,  13}, /* LOWERCASELETTER */
+    { 850,  6,  13}, /* LL */
+    {1104,  6,  14}, /* OTHERSYMBOL */
+    {1251,  6,  14}, /* SO */
+    {1098,  6,  15}, /* OTHERLETTER */
+    { 852,  6,  15}, /* LO */
+    { 724,  6,  16}, /* INITIALPUNCTUATION */
+    {1144,  6,  16}, /* PI */
+    { 596,  6,  17}, /* FORMAT */
+    { 360,  6,  17}, /* CF */
+    {1102,  6,  18}, /* OTHERNUMBER */
+    {1027,  6,  18}, /* NO */
+    { 591,  6,  19}, /* FINALPUNCTUATION */
+    {1131,  6,  19}, /* PF */
+    {1358,  6,  20}, /* TITLECASELETTER */
+    { 862,  6,  20}, /* LT */
+    { 974,  6,  21}, /* MODIFIERLETTER */
+    { 851,  6,  21}, /* LM */
+    {1035,  6,  22}, /* NONSPACINGMARK */
+    { 972,  6,  22}, /* MN */
+    { 559,  6,  23}, /* ENCLOSINGMARK */
+    { 938,  6,  23}, /* ME */
+    {1263,  6,  24}, /* SPACINGMARK */
+    { 937,  6,  24}, /* MC */
+    { 834,  6,  25}, /* LETTERNUMBER */
+    {1026,  6,  25}, /* NL */
+    { 846,  6,  26}, /* LINESEPARATOR */
+    {1462,  6,  26}, /* ZL */
+    {1117,  6,  27}, /* PARAGRAPHSEPARATOR */
+    {1465,  6,  27}, /* ZP */
+    {1297,  6,  28}, /* SURROGATE */
+    { 456,  6,  28}, /* CS */
+    {1161,  6,  29}, /* PRIVATEUSE */
+    { 414,  6,  29}, /* CO */
+    {1092,  6,  30}, /* OTHER */
+    { 303,  6,  30}, /* C */
+    { 304,  6,  30}, /* C& */
+    { 832,  6,  31}, /* LETTER */
+    { 791,  6,  31}, /* L */
+    { 792,  6,  31}, /* L& */
+    { 926,  6,  32}, /* MARK */
+    { 872,  6,  32}, /* M */
+    { 421,  6,  32}, /* COMBININGMARK */
+    { 873,  6,  32}, /* M& */
+    {1047,  6,  33}, /* NUMBER */
+    { 996,  6,  33}, /* N */
+    { 997,  6,  33}, /* N& */
+    {1168,  6,  34}, /* PUNCTUATION */
+    {1112,  6,  34}, /* P */
+    {1167,  6,  34}, /* PUNCT */
+    {1113,  6,  34}, /* P& */
+    {1304,  6,  35}, /* SYMBOL */
+    {1202,  6,  35}, /* S */
+    {1203,  6,  35}, /* S& */
+    {1226,  6,  36}, /* SEPARATOR */
+    {1455,  6,  36}, /* Z */
+    {1456,  6,  36}, /* Z& */
+    { 317,  6,  37}, /* CASEDLETTER */
+    { 820,  6,  37}, /* LC */
+    { 224,  6,  38}, /* ASSIGNED */
+    {1092,  7,   0}, /* OTHER */
+    {1439,  7,   0}, /* XX */
+    { 445,  7,   1}, /* CONTROL */
+    { 412,  7,   1}, /* CN */
+    { 835,  7,   2}, /* LF */
+    { 455,  7,   3}, /* CR */
+    { 579,  7,   4}, /* EXTEND */
+    { 576,  7,   4}, /* EX */
+    {1158,  7,   5}, /* PREPEND */
+    {1155,  7,   5}, /* PP */
+    {1263,  7,   6}, /* SPACINGMARK */
+    {1244,  7,   6}, /* SM */
+    { 791,  7,   7}, /* L */
+    {1392,  7,   8}, /* V */
+    {1313,  7,   9}, /* T */
+    {1468,  7,  10}, /* ZWJ */
+    { 864,  7,  11}, /* LV */
+    { 866,  7,  12}, /* LVT */
+    {1180,  7,  13}, /* REGIONALINDICATOR */
+    {1185,  7,  13}, /* RI */
+    { 529,  7,  14}, /* EBASE */
+    { 528,  7,  14}, /* EB */
+    { 530,  7,  15}, /* EBASEGAZ */
+    { 531,  7,  15}, /* EBG */
+    { 542,  7,  16}, /* EMODIFIER */
+    { 540,  7,  16}, /* EM */
+    { 624,  7,  17}, /* GLUEAFTERZWJ */
+    { 603,  7,  17}, /* GAZ */
+    {1038,  8,   0}, /* NOTAPPLICABLE */
+    { 998,  8,   0}, /* NA */
+    { 822,  8,   1}, /* LEADINGJAMO */
+    { 791,  8,   1}, /* L */
+    {1412,  8,   2}, /* VOWELJAMO */
+    {1392,  8,   2}, /* V */
+    {1370,  8,   3}, /* TRAILINGJAMO */
+    {1313,  8,   3}, /* T */
+    { 865,  8,   4}, /* LVSYLLABLE */
+    { 864,  8,   4}, /* LV */
+    { 867,  8,   5}, /* LVTSYLLABLE */
+    { 866,  8,   5}, /* LVT */
+    { 998,  9,   0}, /* NA */
+    {1362,  9,   1}, /* TOP */
+    {1186,  9,   2}, /* RIGHT */
+    { 280,  9,   3}, /* BOTTOM */
+    { 823,  9,   4}, /* LEFT */
+    { 824,  9,   5}, /* LEFTANDRIGHT */
+    {1368,  9,   6}, /* TOPANDRIGHT */
+    {1366,  9,   7}, /* TOPANDLEFT */
+    {1367,  9,   8}, /* TOPANDLEFTANDRIGHT */
+    {1363,  9,   9}, /* TOPANDBOTTOM */
+    {1406,  9,  10}, /* VISUALORDERLEFT */
+    {1364,  9,  11}, /* TOPANDBOTTOMANDLEFT */
+    { 282,  9,  12}, /* BOTTOMANDRIGHT */
+    {1365,  9,  13}, /* TOPANDBOTTOMANDRIGHT */
+    {1111,  9,  14}, /* OVERSTRUCK */
+    { 281,  9,  15}, /* BOTTOMANDLEFT */
+    {1092, 10,   0}, /* OTHER */
+    { 438, 10,   1}, /* CONSONANTPLACEHOLDER */
+    {1047, 10,   2}, /* NUMBER */
+    {1301, 10,   3}, /* SYLLABLEMODIFIER */
+    { 268, 10,   4}, /* BINDU */
+    {1405, 10,   5}, /* VISARGA */
+    {1411, 10,   6}, /* VOWELINDEPENDENT */
+    { 431, 10,   7}, /* CONSONANT */
+    {1410, 10,   8}, /* VOWELDEPENDENT */
+    {1046, 10,   9}, /* NUKTA */
+    { 235, 10,  10}, /* AVAGRAHA */
+    {1404, 10,  11}, /* VIRAMA */
+    { 312, 10,  12}, /* CANTILLATIONMARK */
+    { 432, 10,  13}, /* CONSONANTDEAD */
+    { 606, 10,  14}, /* GEMINATIONMARK */
+    { 437, 10,  15}, /* CONSONANTMEDIAL */
+    { 978, 10,  16}, /* MODIFYINGLETTER */
+    { 443, 10,  17}, /* CONSONANTWITHSTACKER */
+    {1169, 10,  18}, /* PUREKILLER */
+    { 439, 10,  19}, /* CONSONANTPRECEDINGREPHA */
+    {1361, 10,  20}, /* TONEMARK */
+    { 436, 10,  21}, /* CONSONANTKILLER */
+    { 434, 10,  22}, /* CONSONANTHEADLETTER */
+    { 441, 10,  23}, /* CONSONANTSUBJOINED */
+    { 731, 10,  24}, /* INVISIBLESTACKER */
+    {1181, 10,  25}, /* REGISTERSHIFTER */
+    { 442, 10,  26}, /* CONSONANTSUCCEEDINGREPHA */
+    { 433, 10,  27}, /* CONSONANTFINAL */
+    {1409, 10,  28}, /* VOWEL */
+    {1360, 10,  29}, /* TONELETTER */
+    { 435, 10,  30}, /* CONSONANTINITIALPOSTFIXED */
+    {1033, 10,  31}, /* NONJOINER */
+    { 749, 10,  32}, /* JOINER */
+    { 288, 10,  33}, /* BRAHMIJOININGNUMBER */
+    {1049, 10,  34}, /* NUMBERJOINER */
+    { 440, 10,  35}, /* CONSONANTPREFIXED */
+    {1030, 11,   0}, /* NOJOININGGROUP */
+    {1441, 11,   1}, /* YEH */
     { 185, 11,   2}, /* ALEF */
-    {1397, 11,   3}, /* WAW */
-    { 252, 11,   4}, /* BEH */
-    {1325, 11,   5}, /* TEHMARBUTA */
-    { 646, 11,   6}, /* HAH */
-    { 479, 11,   7}, /* DAL */
-    {1168, 11,   8}, /* REH */
-    {1206, 11,   9}, /* SEEN */
-    {1191, 11,  10}, /* SAD */
-    {1304, 11,  11}, /* TAH */
+    {1420, 11,   3}, /* WAW */
+    { 254, 11,   4}, /* BEH */
+    {1340, 11,   5}, /* TEHMARBUTA */
+    { 652, 11,   6}, /* HAH */
+    { 483, 11,   7}, /* DAL */
+    {1182, 11,   8}, /* REH */
+    {1220, 11,   9}, /* SEEN */
+    {1205, 11,  10}, /* SAD */
+    {1318, 11,  11}, /* TAH */
     { 180, 11,  12}, /* AIN */
-    { 595, 11,  13}, /* GAF */
-    { 580, 11,  14}, /* FARSIYEH */
-    { 582, 11,  15}, /* FEH */
-    {1158, 11,  16}, /* QAF */
-    { 749, 11,  17}, /* KAF */
-    { 785, 11,  18}, /* LAM */
-    { 931, 11,  19}, /* MEEM */
-    {1025, 11,  20}, /* NOON */
-    { 675, 11,  21}, /* HEH */
-    {1285, 11,  22}, /* SWASHKAF */
-    {1044, 11,  23}, /* NYA */
-    { 780, 11,  24}, /* KNOTTEDHEH */
-    { 676, 11,  25}, /* HEHGOAL */
-    { 651, 11,  26}, /* HAMZAONHEHGOAL */
-    {1326, 11,  26}, /* TEHMARBUTAGOAL */
-    {1420, 11,  27}, /* YEHWITHTAIL */
-    {1419, 11,  28}, /* YEHBARREE */
+    { 601, 11,  13}, /* GAF */
+    { 586, 11,  14}, /* FARSIYEH */
+    { 588, 11,  15}, /* FEH */
+    {1172, 11,  16}, /* QAF */
+    { 755, 11,  17}, /* KAF */
+    { 793, 11,  18}, /* LAM */
+    { 943, 11,  19}, /* MEEM */
+    {1037, 11,  20}, /* NOON */
+    { 681, 11,  21}, /* HEH */
+    {1299, 11,  22}, /* SWASHKAF */
+    {1056, 11,  23}, /* NYA */
+    { 788, 11,  24}, /* KNOTTEDHEH */
+    { 682, 11,  25}, /* HEHGOAL */
+    { 657, 11,  26}, /* HAMZAONHEHGOAL */
+    {1341, 11,  26}, /* TEHMARBUTAGOAL */
+    {1443, 11,  27}, /* YEHWITHTAIL */
+    {1442, 11,  28}, /* YEHBARREE */
     { 182, 11,  29}, /* ALAPH */
-    { 258, 11,  30}, /* BETH */
-    { 596, 11,  31}, /* GAMAL */
-    { 480, 11,  32}, /* DALATHRISH */
-    { 671, 11,  33}, /* HE */
-    {1298, 11,  34}, /* SYRIACWAW */
-    {1434, 11,  35}, /* ZAIN */
-    { 677, 11,  36}, /* HETH */
-    {1331, 11,  37}, /* TETH */
-    {1430, 11,  38}, /* YUDH */
-    {1431, 11,  39}, /* YUDHHE */
-    { 762, 11,  40}, /* KAPH */
-    { 786, 11,  41}, /* LAMADH */
-    { 945, 11,  42}, /* MIM */
-    {1041, 11,  43}, /* NUN */
-    {1208, 11,  44}, /* SEMKATH */
-    { 586, 11,  45}, /* FINALSEMKATH */
-    { 520, 11,  46}, /* E */
-    {1115, 11,  47}, /* PE */
-    {1170, 11,  48}, /* REVERSEDPE */
-    {1192, 11,  49}, /* SADHE */
-    {1159, 11,  50}, /* QAPH */
-    {1218, 11,  51}, /* SHIN */
-    {1324, 11,  52}, /* TAW */
-    {1437, 11,  53}, /* ZHAIN */
-    { 768, 11,  54}, /* KHAPH */
-    { 581, 11,  55}, /* FE */
-    { 298, 11,  56}, /* BURUSHASKIYEHBARREE */
-    { 873, 11,  57}, /* MALAYALAMNGA */
-    { 870, 11,  58}, /* MALAYALAMJA */
-    { 876, 11,  59}, /* MALAYALAMNYA */
-    { 879, 11,  60}, /* MALAYALAMTTA */
-    { 874, 11,  61}, /* MALAYALAMNNA */
-    { 875, 11,  62}, /* MALAYALAMNNNA */
-    { 869, 11,  63}, /* MALAYALAMBHA */
-    { 877, 11,  64}, /* MALAYALAMRA */
-    { 871, 11,  65}, /* MALAYALAMLLA */
-    { 872, 11,  66}, /* MALAYALAMLLLA */
-    { 878, 11,  67}, /* MALAYALAMSSA */
-    {1183, 11,  68}, /* ROHINGYAYEH */
-    {1257, 11,  69}, /* STRAIGHTWAW */
-    { 173, 11,  70}, /* AFRICANFEH */
-    { 175, 11,  71}, /* AFRICANQAF */
-    { 174, 11,  72}, /* AFRICANNOON */
-    { 885, 11,  73}, /* MANICHAEANALEPH */
-    { 887, 11,  74}, /* MANICHAEANBETH */
-    { 891, 11,  75}, /* MANICHAEANGIMEL */
-    { 888, 11,  76}, /* MANICHAEANDALETH */
-    { 909, 11,  77}, /* MANICHAEANWAW */
-    { 911, 11,  78}, /* MANICHAEANZAYIN */
-    { 892, 11,  79}, /* MANICHAEANHETH */
-    { 906, 11,  80}, /* MANICHAEANTETH */
-    { 910, 11,  81}, /* MANICHAEANYODH */
-    { 894, 11,  82}, /* MANICHAEANKAPH */
-    { 895, 11,  83}, /* MANICHAEANLAMEDH */
-    { 889, 11,  84}, /* MANICHAEANDHAMEDH */
-    { 907, 11,  85}, /* MANICHAEANTHAMEDH */
-    { 896, 11,  86}, /* MANICHAEANMEM */
-    { 897, 11,  87}, /* MANICHAEANNUN */
-    { 903, 11,  88}, /* MANICHAEANSAMEKH */
-    { 886, 11,  89}, /* MANICHAEANAYIN */
-    { 899, 11,  90}, /* MANICHAEANPE */
-    { 902, 11,  91}, /* MANICHAEANSADHE */
-    { 900, 11,  92}, /* MANICHAEANQOPH */
-    { 901, 11,  93}, /* MANICHAEANRESH */
-    { 904, 11,  94}, /* MANICHAEANTAW */
-    { 898, 11,  95}, /* MANICHAEANONE */
-    { 890, 11,  96}, /* MANICHAEANFIVE */
-    { 905, 11,  97}, /* MANICHAEANTEN */
-    { 908, 11,  98}, /* MANICHAEANTWENTY */
-    { 893, 11,  99}, /* MANICHAEANHUNDRED */
-    { 664, 11, 100}, /* HANIFIROHINGYAPA */
-    { 663, 11, 101}, /* HANIFIROHINGYAKINNAYA */
-    {1022, 12,   0}, /* NONJOINING */
-    {1357, 12,   0}, /* U */
-    {1353, 12,   1}, /* TRANSPARENT */
-    {1299, 12,   1}, /* T */
-    { 517, 12,   2}, /* DUALJOINING */
-    { 477, 12,   2}, /* D */
-    {1173, 12,   3}, /* RIGHTJOINING */
-    {1164, 12,   3}, /* R */
-    { 741, 12,   4}, /* JOINCAUSING */
-    { 301, 12,   4}, /* C */
-    { 813, 12,   5}, /* LEFTJOINING */
-    { 783, 12,   5}, /* L */
-    {1367, 13,   0}, /* UNKNOWN */
-    {1416, 13,   0}, /* XX */
-    { 419, 13,   1}, /* COMBININGMARK */
-    { 409, 13,   1}, /* CM */
-    { 290, 13,   2}, /* BREAKAFTER */
-    { 238, 13,   2}, /* BA */
-    { 833, 13,   3}, /* LINEFEED */
-    { 823, 13,   3}, /* LF */
-    { 882, 13,   4}, /* MANDATORYBREAK */
-    { 267, 13,   4}, /* BK */
-    { 313, 13,   5}, /* CARRIAGERETURN */
-    { 452, 13,   5}, /* CR */
-    {1247, 13,   6}, /* SPACE */
-    {1246, 13,   6}, /* SP */
-    { 571, 13,   7}, /* EXCLAMATION */
-    { 570, 13,   7}, /* EX */
-    {1162, 13,   8}, /* QUOTATION */
-    {1161, 13,   8}, /* QU */
+    { 260, 11,  30}, /* BETH */
+    { 602, 11,  31}, /* GAMAL */
+    { 484, 11,  32}, /* DALATHRISH */
+    { 677, 11,  33}, /* HE */
+    {1312, 11,  34}, /* SYRIACWAW */
+    {1457, 11,  35}, /* ZAIN */
+    { 683, 11,  36}, /* HETH */
+    {1346, 11,  37}, /* TETH */
+    {1453, 11,  38}, /* YUDH */
+    {1454, 11,  39}, /* YUDHHE */
+    { 770, 11,  40}, /* KAPH */
+    { 794, 11,  41}, /* LAMADH */
+    { 957, 11,  42}, /* MIM */
+    {1053, 11,  43}, /* NUN */
+    {1222, 11,  44}, /* SEMKATH */
+    { 592, 11,  45}, /* FINALSEMKATH */
+    { 524, 11,  46}, /* E */
+    {1129, 11,  47}, /* PE */
+    {1184, 11,  48}, /* REVERSEDPE */
+    {1206, 11,  49}, /* SADHE */
+    {1173, 11,  50}, /* QAPH */
+    {1232, 11,  51}, /* SHIN */
+    {1339, 11,  52}, /* TAW */
+    {1460, 11,  53}, /* ZHAIN */
+    { 776, 11,  54}, /* KHAPH */
+    { 587, 11,  55}, /* FE */
+    { 300, 11,  56}, /* BURUSHASKIYEHBARREE */
+    { 885, 11,  57}, /* MALAYALAMNGA */
+    { 882, 11,  58}, /* MALAYALAMJA */
+    { 888, 11,  59}, /* MALAYALAMNYA */
+    { 891, 11,  60}, /* MALAYALAMTTA */
+    { 886, 11,  61}, /* MALAYALAMNNA */
+    { 887, 11,  62}, /* MALAYALAMNNNA */
+    { 881, 11,  63}, /* MALAYALAMBHA */
+    { 889, 11,  64}, /* MALAYALAMRA */
+    { 883, 11,  65}, /* MALAYALAMLLA */
+    { 884, 11,  66}, /* MALAYALAMLLLA */
+    { 890, 11,  67}, /* MALAYALAMSSA */
+    {1352, 11,  68}, /* THINYEH */
+    {1403, 11,  69}, /* VERTICALTAIL */
+    {1197, 11,  70}, /* ROHINGYAYEH */
+    {1271, 11,  71}, /* STRAIGHTWAW */
+    { 173, 11,  72}, /* AFRICANFEH */
+    { 175, 11,  73}, /* AFRICANQAF */
+    { 174, 11,  74}, /* AFRICANNOON */
+    { 897, 11,  75}, /* MANICHAEANALEPH */
+    { 899, 11,  76}, /* MANICHAEANBETH */
+    { 903, 11,  77}, /* MANICHAEANGIMEL */
+    { 900, 11,  78}, /* MANICHAEANDALETH */
+    { 921, 11,  79}, /* MANICHAEANWAW */
+    { 923, 11,  80}, /* MANICHAEANZAYIN */
+    { 904, 11,  81}, /* MANICHAEANHETH */
+    { 918, 11,  82}, /* MANICHAEANTETH */
+    { 922, 11,  83}, /* MANICHAEANYODH */
+    { 906, 11,  84}, /* MANICHAEANKAPH */
+    { 907, 11,  85}, /* MANICHAEANLAMEDH */
+    { 901, 11,  86}, /* MANICHAEANDHAMEDH */
+    { 919, 11,  87}, /* MANICHAEANTHAMEDH */
+    { 908, 11,  88}, /* MANICHAEANMEM */
+    { 909, 11,  89}, /* MANICHAEANNUN */
+    { 915, 11,  90}, /* MANICHAEANSAMEKH */
+    { 898, 11,  91}, /* MANICHAEANAYIN */
+    { 911, 11,  92}, /* MANICHAEANPE */
+    { 914, 11,  93}, /* MANICHAEANSADHE */
+    { 912, 11,  94}, /* MANICHAEANQOPH */
+    { 913, 11,  95}, /* MANICHAEANRESH */
+    { 916, 11,  96}, /* MANICHAEANTAW */
+    { 910, 11,  97}, /* MANICHAEANONE */
+    { 902, 11,  98}, /* MANICHAEANFIVE */
+    { 917, 11,  99}, /* MANICHAEANTEN */
+    { 920, 11, 100}, /* MANICHAEANTWENTY */
+    { 905, 11, 101}, /* MANICHAEANHUNDRED */
+    { 670, 11, 102}, /* HANIFIROHINGYAPA */
+    { 669, 11, 103}, /* HANIFIROHINGYAKINNAYA */
+    {1034, 12,   0}, /* NONJOINING */
+    {1375, 12,   0}, /* U */
+    {1371, 12,   1}, /* TRANSPARENT */
+    {1313, 12,   1}, /* T */
+    { 521, 12,   2}, /* DUALJOINING */
+    { 481, 12,   2}, /* D */
+    {1187, 12,   3}, /* RIGHTJOINING */
+    {1178, 12,   3}, /* R */
+    { 747, 12,   4}, /* JOINCAUSING */
+    { 303, 12,   4}, /* C */
+    { 825, 12,   5}, /* LEFTJOINING */
+    { 791, 12,   5}, /* L */
+    {1387, 13,   0}, /* UNKNOWN */
+    {1439, 13,   0}, /* XX */
+    { 421, 13,   1}, /* COMBININGMARK */
+    { 411, 13,   1}, /* CM */
+    { 292, 13,   2}, /* BREAKAFTER */
+    { 240, 13,   2}, /* BA */
+    { 845, 13,   3}, /* LINEFEED */
+    { 835, 13,   3}, /* LF */
+    { 894, 13,   4}, /* MANDATORYBREAK */
+    { 269, 13,   4}, /* BK */
+    { 315, 13,   5}, /* CARRIAGERETURN */
+    { 455, 13,   5}, /* CR */
+    {1261, 13,   6}, /* SPACE */
+    {1260, 13,   6}, /* SP */
+    { 577, 13,   7}, /* EXCLAMATION */
+    { 576, 13,   7}, /* EX */
+    {1176, 13,   8}, /* QUOTATION */
+    {1175, 13,   8}, /* QU */
     { 189, 13,   9}, /* ALPHABETIC */
     { 181, 13,   9}, /* AL */
-    {1143, 13,  10}, /* PREFIXNUMERIC */
-    {1142, 13,  10}, /* PR */
-    {1140, 13,  11}, /* POSTFIXNUMERIC */
-    {1133, 13,  11}, /* PO */
-    {1069, 13,  12}, /* OPENPUNCTUATION */
-    {1068, 13,  12}, /* OP */
-    { 407, 13,  13}, /* CLOSEPARENTHESIS */
-    { 450, 13,  13}, /* CP */
-    { 714, 13,  14}, /* INFIXNUMERIC */
-    { 729, 13,  14}, /* IS */
-    { 693, 13,  15}, /* HYPHEN */
-    { 692, 13,  15}, /* HY */
-    { 293, 13,  16}, /* BREAKSYMBOLS */
-    {1286, 13,  16}, /* SY */
-    {1038, 13,  17}, /* NUMERIC */
-    {1033, 13,  17}, /* NU */
-    { 408, 13,  18}, /* CLOSEPUNCTUATION */
-    { 405, 13,  18}, /* CL */
-    {1002, 13,  19}, /* NEXTLINE */
-    {1014, 13,  19}, /* NL */
-    { 617, 13,  20}, /* GLUE */
-    { 612, 13,  20}, /* GL */
+    {1157, 13,  10}, /* PREFIXNUMERIC */
+    {1156, 13,  10}, /* PR */
+    {1154, 13,  11}, /* POSTFIXNUMERIC */
+    {1147, 13,  11}, /* PO */
+    {1082, 13,  12}, /* OPENPUNCTUATION */
+    {1081, 13,  12}, /* OP */
+    { 409, 13,  13}, /* CLOSEPARENTHESIS */
+    { 452, 13,  13}, /* CP */
+    { 720, 13,  14}, /* INFIXNUMERIC */
+    { 735, 13,  14}, /* IS */
+    { 699, 13,  15}, /* HYPHEN */
+    { 698, 13,  15}, /* HY */
+    { 295, 13,  16}, /* BREAKSYMBOLS */
+    {1300, 13,  16}, /* SY */
+    {1050, 13,  17}, /* NUMERIC */
+    {1045, 13,  17}, /* NU */
+    { 410, 13,  18}, /* CLOSEPUNCTUATION */
+    { 407, 13,  18}, /* CL */
+    {1014, 13,  19}, /* NEXTLINE */
+    {1026, 13,  19}, /* NL */
+    { 623, 13,  20}, /* GLUE */
+    { 618, 13,  20}, /* GL */
     { 193, 13,  21}, /* AMBIGUOUS */
     { 179, 13,  21}, /* AI */
-    { 291, 13,  22}, /* BREAKBEFORE */
-    { 250, 13,  22}, /* BB */
-    { 674, 13,  23}, /* HEBREWLETTER */
-    { 685, 13,  23}, /* HL */
-    { 426, 13,  24}, /* COMPLEXCONTEXT */
-    {1190, 13,  24}, /* SA */
-    { 739, 13,  25}, /* JL */
-    { 747, 13,  26}, /* JV */
-    { 746, 13,  27}, /* JT */
-    {1024, 13,  28}, /* NONSTARTER */
-    {1029, 13,  28}, /* NS */
-    {1444, 13,  29}, /* ZWSPACE */
-    {1442, 13,  29}, /* ZW */
-    {1443, 13,  30}, /* ZWJ */
-    { 292, 13,  31}, /* BREAKBOTH */
-    { 237, 13,  31}, /* B2 */
-    { 723, 13,  32}, /* INSEPARABLE */
-    { 709, 13,  32}, /* IN */
-    { 724, 13,  32}, /* INSEPERABLE */
-    {1405, 13,  33}, /* WORDJOINER */
-    {1402, 13,  33}, /* WJ */
-    { 698, 13,  34}, /* IDEOGRAPHIC */
-    { 694, 13,  34}, /* ID */
-    { 525, 13,  35}, /* EBASE */
-    { 524, 13,  35}, /* EB */
-    { 427, 13,  36}, /* CONDITIONALJAPANESESTARTER */
-    { 375, 13,  36}, /* CJ */
-    { 644, 13,  37}, /* H2 */
-    { 645, 13,  38}, /* H3 */
-    {1283, 13,  39}, /* SURROGATE */
-    {1213, 13,  39}, /* SG */
-    { 442, 13,  40}, /* CONTINGENTBREAK */
-    { 318, 13,  40}, /* CB */
-    {1166, 13,  41}, /* REGIONALINDICATOR */
-    {1171, 13,  41}, /* RI */
-    { 538, 13,  42}, /* EMODIFIER */
-    { 536, 13,  42}, /* EM */
-    {1015, 14,   0}, /* NO */
-    { 984, 14,   0}, /* N */
-    {1421, 14,   1}, /* YES */
-    {1417, 14,   1}, /* Y */
-    { 923, 14,   2}, /* MAYBE */
-    { 860, 14,   2}, /* M */
-    {1015, 15,   0}, /* NO */
-    { 984, 15,   0}, /* N */
-    {1421, 15,   1}, /* YES */
-    {1417, 15,   1}, /* Y */
-    {1020, 16,   0}, /* NONE */
-    { 485, 16,   1}, /* DECIMAL */
-    { 484, 16,   1}, /* DE */
-    { 504, 16,   2}, /* DIGIT */
-    { 496, 16,   2}, /* DI */
-    {1038, 16,   3}, /* NUMERIC */
-    {1033, 16,   3}, /* NU */
-    { 988, 17,   0}, /* NAN */
+    { 293, 13,  22}, /* BREAKBEFORE */
+    { 252, 13,  22}, /* BB */
+    { 680, 13,  23}, /* HEBREWLETTER */
+    { 691, 13,  23}, /* HL */
+    { 428, 13,  24}, /* COMPLEXCONTEXT */
+    {1204, 13,  24}, /* SA */
+    { 745, 13,  25}, /* JL */
+    { 753, 13,  26}, /* JV */
+    { 752, 13,  27}, /* JT */
+    {1036, 13,  28}, /* NONSTARTER */
+    {1041, 13,  28}, /* NS */
+    {1469, 13,  29}, /* ZWSPACE */
+    {1467, 13,  29}, /* ZW */
+    {1468, 13,  30}, /* ZWJ */
+    { 294, 13,  31}, /* BREAKBOTH */
+    { 239, 13,  31}, /* B2 */
+    { 729, 13,  32}, /* INSEPARABLE */
+    { 715, 13,  32}, /* IN */
+    { 730, 13,  32}, /* INSEPERABLE */
+    {1428, 13,  33}, /* WORDJOINER */
+    {1425, 13,  33}, /* WJ */
+    { 704, 13,  34}, /* IDEOGRAPHIC */
+    { 700, 13,  34}, /* ID */
+    { 529, 13,  35}, /* EBASE */
+    { 528, 13,  35}, /* EB */
+    { 429, 13,  36}, /* CONDITIONALJAPANESESTARTER */
+    { 377, 13,  36}, /* CJ */
+    { 650, 13,  37}, /* H2 */
+    { 651, 13,  38}, /* H3 */
+    {1297, 13,  39}, /* SURROGATE */
+    {1227, 13,  39}, /* SG */
+    { 444, 13,  40}, /* CONTINGENTBREAK */
+    { 320, 13,  40}, /* CB */
+    {1180, 13,  41}, /* REGIONALINDICATOR */
+    {1185, 13,  41}, /* RI */
+    { 542, 13,  42}, /* EMODIFIER */
+    { 540, 13,  42}, /* EM */
+    {1027, 14,   0}, /* NO */
+    { 996, 14,   0}, /* N */
+    {1444, 14,   1}, /* YES */
+    {1440, 14,   1}, /* Y */
+    { 935, 14,   2}, /* MAYBE */
+    { 872, 14,   2}, /* M */
+    {1027, 15,   0}, /* NO */
+    { 996, 15,   0}, /* N */
+    {1444, 15,   1}, /* YES */
+    {1440, 15,   1}, /* Y */
+    {1032, 16,   0}, /* NONE */
+    { 489, 16,   1}, /* DECIMAL */
+    { 488, 16,   1}, /* DE */
+    { 508, 16,   2}, /* DIGIT */
+    { 500, 16,   2}, /* DI */
+    {1050, 16,   3}, /* NUMERIC */
+    {1045, 16,   3}, /* NU */
+    {1000, 17,   0}, /* NAN */
     {   1, 17,   1}, /* 0 */
     {   2, 17,   2}, /* 1 */
     {  53, 17,   3}, /* 2 */
@@ -2854,386 +2904,395 @@ RE_PropertyValue re_property_values[] = {
     {  29, 17, 140}, /* 10000000000 */
     {  27, 17, 141}, /* 10000000 */
     {  61, 17, 142}, /* 20000000 */
-    {1367, 18,   0}, /* UNKNOWN */
-    {1446, 18,   0}, /* ZZZZ */
-    { 421, 18,   1}, /* COMMON */
-    {1445, 18,   1}, /* ZYYY */
-    { 790, 18,   2}, /* LATIN */
-    { 806, 18,   2}, /* LATN */
-    { 275, 18,   3}, /* BOPOMOFO */
-    { 274, 18,   3}, /* BOPO */
-    { 715, 18,   4}, /* INHERITED */
-    {1438, 18,   4}, /* ZINH */
-    {1157, 18,   4}, /* QAAI */
-    { 631, 18,   5}, /* GREEK */
-    { 635, 18,   5}, /* GREK */
-    { 446, 18,   6}, /* COPTIC */
-    { 445, 18,   6}, /* COPT */
-    {1156, 18,   6}, /* QAAC */
-    { 466, 18,   7}, /* CYRILLIC */
-    { 476, 18,   7}, /* CYRL */
-    { 216, 18,   8}, /* ARMENIAN */
-    { 218, 18,   8}, /* ARMN */
-    { 673, 18,   9}, /* HEBREW */
-    { 672, 18,   9}, /* HEBR */
+    {1387, 18,   0}, /* UNKNOWN */
+    {1471, 18,   0}, /* ZZZZ */
+    { 423, 18,   1}, /* COMMON */
+    {1470, 18,   1}, /* ZYYY */
+    { 798, 18,   2}, /* LATIN */
+    { 818, 18,   2}, /* LATN */
+    { 277, 18,   3}, /* BOPOMOFO */
+    { 276, 18,   3}, /* BOPO */
+    { 721, 18,   4}, /* INHERITED */
+    {1461, 18,   4}, /* ZINH */
+    {1171, 18,   4}, /* QAAI */
+    { 637, 18,   5}, /* GREEK */
+    { 641, 18,   5}, /* GREK */
+    { 448, 18,   6}, /* COPTIC */
+    { 447, 18,   6}, /* COPT */
+    {1170, 18,   6}, /* QAAC */
+    { 470, 18,   7}, /* CYRILLIC */
+    { 480, 18,   7}, /* CYRL */
+    { 218, 18,   8}, /* ARMENIAN */
+    { 220, 18,   8}, /* ARMN */
+    { 679, 18,   9}, /* HEBREW */
+    { 678, 18,   9}, /* HEBR */
     { 203, 18,  10}, /* ARABIC */
     { 202, 18,  10}, /* ARAB */
-    {1295, 18,  11}, /* SYRIAC */
-    {1294, 18,  11}, /* SYRC */
-    {1335, 18,  12}, /* THAANA */
-    {1334, 18,  12}, /* THAA */
-    {1012, 18,  13}, /* NKO */
-    {1013, 18,  13}, /* NKOO */
-    {1193, 18,  14}, /* SAMARITAN */
-    {1194, 18,  14}, /* SAMR */
-    { 881, 18,  15}, /* MANDAIC */
-    { 880, 18,  15}, /* MAND */
-    { 493, 18,  16}, /* DEVANAGARI */
-    { 492, 18,  16}, /* DEVA */
-    { 257, 18,  17}, /* BENGALI */
-    { 256, 18,  17}, /* BENG */
-    { 641, 18,  18}, /* GURMUKHI */
-    { 642, 18,  18}, /* GURU */
-    { 638, 18,  19}, /* GUJARATI */
-    { 639, 18,  19}, /* GUJR */
-    {1071, 18,  20}, /* ORIYA */
-    {1074, 18,  20}, /* ORYA */
-    {1314, 18,  21}, /* TAMIL */
-    {1317, 18,  21}, /* TAML */
-    {1328, 18,  22}, /* TELUGU */
-    {1327, 18,  22}, /* TELU */
-    { 761, 18,  23}, /* KANNADA */
-    { 779, 18,  23}, /* KNDA */
-    { 868, 18,  24}, /* MALAYALAM */
-    { 959, 18,  24}, /* MLYM */
-    {1227, 18,  25}, /* SINHALA */
-    {1226, 18,  25}, /* SINH */
-    {1336, 18,  26}, /* THAI */
-    { 788, 18,  27}, /* LAO */
-    { 789, 18,  27}, /* LAOO */
-    {1337, 18,  28}, /* TIBETAN */
-    {1338, 18,  28}, /* TIBT */
-    { 978, 18,  29}, /* MYANMAR */
-    { 983, 18,  29}, /* MYMR */
-    { 607, 18,  30}, /* GEORGIAN */
-    { 606, 18,  30}, /* GEOR */
-    { 654, 18,  31}, /* HANGUL */
-    { 653, 18,  31}, /* HANG */
-    { 560, 18,  32}, /* ETHIOPIC */
-    { 559, 18,  32}, /* ETHI */
-    { 367, 18,  33}, /* CHEROKEE */
-    { 366, 18,  33}, /* CHER */
-    { 305, 18,  34}, /* CANADIANABORIGINAL */
-    { 309, 18,  34}, /* CANS */
-    {1050, 18,  35}, /* OGHAM */
-    {1049, 18,  35}, /* OGAM */
-    {1186, 18,  36}, /* RUNIC */
-    {1187, 18,  36}, /* RUNR */
-    {1300, 18,  37}, /* TAGALOG */
-    {1333, 18,  37}, /* TGLG */
-    { 668, 18,  38}, /* HANUNOO */
-    { 665, 18,  38}, /* HANO */
-    { 297, 18,  39}, /* BUHID */
-    { 296, 18,  39}, /* BUHD */
-    {1302, 18,  40}, /* TAGBANWA */
-    {1301, 18,  40}, /* TAGB */
-    { 772, 18,  41}, /* KHMER */
-    { 774, 18,  41}, /* KHMR */
-    { 968, 18,  42}, /* MONGOLIAN */
-    { 967, 18,  42}, /* MONG */
-    { 825, 18,  43}, /* LIMBU */
-    { 824, 18,  43}, /* LIMB */
-    {1305, 18,  44}, /* TAILE */
-    {1312, 18,  44}, /* TALE */
-    {1001, 18,  45}, /* NEWTAILUE */
-    {1313, 18,  45}, /* TALU */
-    { 295, 18,  46}, /* BUGINESE */
-    { 294, 18,  46}, /* BUGI */
-    {1306, 18,  47}, /* TAITHAM */
-    { 787, 18,  47}, /* LANA */
-    { 240, 18,  48}, /* BALINESE */
-    { 239, 18,  48}, /* BALI */
-    {1260, 18,  49}, /* SUNDANESE */
-    {1259, 18,  49}, /* SUND */
-    { 248, 18,  50}, /* BATAK */
-    { 249, 18,  50}, /* BATK */
-    { 819, 18,  51}, /* LEPCHA */
-    { 818, 18,  51}, /* LEPC */
-    {1054, 18,  52}, /* OLCHIKI */
-    {1055, 18,  52}, /* OLCK */
-    { 288, 18,  53}, /* BRAILLE */
-    { 287, 18,  53}, /* BRAI */
-    { 614, 18,  54}, /* GLAGOLITIC */
-    { 613, 18,  54}, /* GLAG */
-    {1339, 18,  55}, /* TIFINAGH */
-    {1332, 18,  55}, /* TFNG */
-    { 652, 18,  56}, /* HAN */
-    { 661, 18,  56}, /* HANI */
-    { 684, 18,  57}, /* HIRAGANA */
-    { 683, 18,  57}, /* HIRA */
-    { 763, 18,  58}, /* KATAKANA */
-    { 752, 18,  58}, /* KANA */
-    {1424, 18,  59}, /* YI */
-    {1425, 18,  59}, /* YIII */
-    { 835, 18,  60}, /* LISU */
-    {1373, 18,  61}, /* VAI */
-    {1374, 18,  61}, /* VAII */
-    { 242, 18,  62}, /* BAMUM */
-    { 241, 18,  62}, /* BAMU */
-    {1289, 18,  63}, /* SYLOTINAGRI */
-    {1288, 18,  63}, /* SYLO */
-    {1119, 18,  64}, /* PHAGSPA */
-    {1118, 18,  64}, /* PHAG */
-    {1197, 18,  65}, /* SAURASHTRA */
-    {1196, 18,  65}, /* SAUR */
-    { 767, 18,  66}, /* KAYAHLI */
-    { 751, 18,  66}, /* KALI */
-    {1169, 18,  67}, /* REJANG */
-    {1178, 18,  67}, /* RJNG */
-    { 737, 18,  68}, /* JAVANESE */
-    { 736, 18,  68}, /* JAVA */
-    { 360, 18,  69}, /* CHAM */
-    {1307, 18,  70}, /* TAIVIET */
-    {1323, 18,  70}, /* TAVT */
-    { 932, 18,  71}, /* MEETEIMAYEK */
-    { 973, 18,  71}, /* MTEI */
-    { 829, 18,  72}, /* LINEARB */
-    { 827, 18,  72}, /* LINB */
-    { 857, 18,  73}, /* LYCIAN */
-    { 856, 18,  73}, /* LYCI */
-    { 312, 18,  74}, /* CARIAN */
-    { 311, 18,  74}, /* CARI */
-    {1057, 18,  75}, /* OLDITALIC */
-    { 732, 18,  75}, /* ITAL */
-    { 622, 18,  76}, /* GOTHIC */
-    { 621, 18,  76}, /* GOTH */
-    {1059, 18,  77}, /* OLDPERMIC */
-    {1116, 18,  77}, /* PERM */
-    {1361, 18,  78}, /* UGARITIC */
-    {1360, 18,  78}, /* UGAR */
-    {1060, 18,  79}, /* OLDPERSIAN */
-    {1414, 18,  79}, /* XPEO */
-    { 491, 18,  80}, /* DESERET */
-    { 515, 18,  80}, /* DSRT */
-    {1216, 18,  81}, /* SHAVIAN */
-    {1217, 18,  81}, /* SHAW */
-    {1078, 18,  82}, /* OSMANYA */
-    {1077, 18,  82}, /* OSMA */
-    {1075, 18,  83}, /* OSAGE */
-    {1076, 18,  83}, /* OSGE */
-    { 533, 18,  84}, /* ELBASAN */
-    { 532, 18,  84}, /* ELBA */
-    { 317, 18,  85}, /* CAUCASIANALBANIAN */
+    {1309, 18,  11}, /* SYRIAC */
+    {1308, 18,  11}, /* SYRC */
+    {1350, 18,  12}, /* THAANA */
+    {1349, 18,  12}, /* THAA */
+    {1024, 18,  13}, /* NKO */
+    {1025, 18,  13}, /* NKOO */
+    {1207, 18,  14}, /* SAMARITAN */
+    {1208, 18,  14}, /* SAMR */
+    { 893, 18,  15}, /* MANDAIC */
+    { 892, 18,  15}, /* MAND */
+    { 497, 18,  16}, /* DEVANAGARI */
+    { 496, 18,  16}, /* DEVA */
+    { 259, 18,  17}, /* BENGALI */
+    { 258, 18,  17}, /* BENG */
+    { 647, 18,  18}, /* GURMUKHI */
+    { 648, 18,  18}, /* GURU */
+    { 644, 18,  19}, /* GUJARATI */
+    { 645, 18,  19}, /* GUJR */
+    {1084, 18,  20}, /* ORIYA */
+    {1087, 18,  20}, /* ORYA */
+    {1328, 18,  21}, /* TAMIL */
+    {1331, 18,  21}, /* TAML */
+    {1343, 18,  22}, /* TELUGU */
+    {1342, 18,  22}, /* TELU */
+    { 769, 18,  23}, /* KANNADA */
+    { 787, 18,  23}, /* KNDA */
+    { 880, 18,  24}, /* MALAYALAM */
+    { 971, 18,  24}, /* MLYM */
+    {1241, 18,  25}, /* SINHALA */
+    {1240, 18,  25}, /* SINH */
+    {1351, 18,  26}, /* THAI */
+    { 796, 18,  27}, /* LAO */
+    { 797, 18,  27}, /* LAOO */
+    {1353, 18,  28}, /* TIBETAN */
+    {1354, 18,  28}, /* TIBT */
+    { 990, 18,  29}, /* MYANMAR */
+    { 995, 18,  29}, /* MYMR */
+    { 613, 18,  30}, /* GEORGIAN */
+    { 612, 18,  30}, /* GEOR */
+    { 660, 18,  31}, /* HANGUL */
+    { 659, 18,  31}, /* HANG */
+    { 564, 18,  32}, /* ETHIOPIC */
+    { 563, 18,  32}, /* ETHI */
+    { 369, 18,  33}, /* CHEROKEE */
+    { 368, 18,  33}, /* CHER */
+    { 307, 18,  34}, /* CANADIANABORIGINAL */
+    { 311, 18,  34}, /* CANS */
+    {1062, 18,  35}, /* OGHAM */
+    {1061, 18,  35}, /* OGAM */
+    {1200, 18,  36}, /* RUNIC */
+    {1201, 18,  36}, /* RUNR */
+    {1314, 18,  37}, /* TAGALOG */
+    {1348, 18,  37}, /* TGLG */
+    { 674, 18,  38}, /* HANUNOO */
+    { 671, 18,  38}, /* HANO */
+    { 299, 18,  39}, /* BUHID */
+    { 298, 18,  39}, /* BUHD */
+    {1316, 18,  40}, /* TAGBANWA */
+    {1315, 18,  40}, /* TAGB */
+    { 780, 18,  41}, /* KHMER */
+    { 782, 18,  41}, /* KHMR */
+    { 980, 18,  42}, /* MONGOLIAN */
+    { 979, 18,  42}, /* MONG */
+    { 837, 18,  43}, /* LIMBU */
+    { 836, 18,  43}, /* LIMB */
+    {1319, 18,  44}, /* TAILE */
+    {1326, 18,  44}, /* TALE */
+    {1013, 18,  45}, /* NEWTAILUE */
+    {1327, 18,  45}, /* TALU */
+    { 297, 18,  46}, /* BUGINESE */
+    { 296, 18,  46}, /* BUGI */
+    {1320, 18,  47}, /* TAITHAM */
+    { 795, 18,  47}, /* LANA */
+    { 242, 18,  48}, /* BALINESE */
+    { 241, 18,  48}, /* BALI */
+    {1274, 18,  49}, /* SUNDANESE */
+    {1273, 18,  49}, /* SUND */
+    { 250, 18,  50}, /* BATAK */
+    { 251, 18,  50}, /* BATK */
+    { 831, 18,  51}, /* LEPCHA */
+    { 830, 18,  51}, /* LEPC */
+    {1066, 18,  52}, /* OLCHIKI */
+    {1067, 18,  52}, /* OLCK */
+    { 290, 18,  53}, /* BRAILLE */
+    { 289, 18,  53}, /* BRAI */
+    { 620, 18,  54}, /* GLAGOLITIC */
+    { 619, 18,  54}, /* GLAG */
+    {1355, 18,  55}, /* TIFINAGH */
+    {1347, 18,  55}, /* TFNG */
+    { 658, 18,  56}, /* HAN */
+    { 667, 18,  56}, /* HANI */
+    { 690, 18,  57}, /* HIRAGANA */
+    { 689, 18,  57}, /* HIRA */
+    { 771, 18,  58}, /* KATAKANA */
+    { 758, 18,  58}, /* KANA */
+    {1447, 18,  59}, /* YI */
+    {1448, 18,  59}, /* YIII */
+    { 847, 18,  60}, /* LISU */
+    {1393, 18,  61}, /* VAI */
+    {1394, 18,  61}, /* VAII */
+    { 244, 18,  62}, /* BAMUM */
+    { 243, 18,  62}, /* BAMU */
+    {1303, 18,  63}, /* SYLOTINAGRI */
+    {1302, 18,  63}, /* SYLO */
+    {1133, 18,  64}, /* PHAGSPA */
+    {1132, 18,  64}, /* PHAG */
+    {1211, 18,  65}, /* SAURASHTRA */
+    {1210, 18,  65}, /* SAUR */
+    { 775, 18,  66}, /* KAYAHLI */
+    { 757, 18,  66}, /* KALI */
+    {1183, 18,  67}, /* REJANG */
+    {1192, 18,  67}, /* RJNG */
+    { 743, 18,  68}, /* JAVANESE */
+    { 742, 18,  68}, /* JAVA */
+    { 362, 18,  69}, /* CHAM */
+    {1321, 18,  70}, /* TAIVIET */
+    {1338, 18,  70}, /* TAVT */
+    { 944, 18,  71}, /* MEETEIMAYEK */
+    { 985, 18,  71}, /* MTEI */
+    { 841, 18,  72}, /* LINEARB */
+    { 839, 18,  72}, /* LINB */
+    { 869, 18,  73}, /* LYCIAN */
+    { 868, 18,  73}, /* LYCI */
+    { 314, 18,  74}, /* CARIAN */
+    { 313, 18,  74}, /* CARI */
+    {1069, 18,  75}, /* OLDITALIC */
+    { 738, 18,  75}, /* ITAL */
+    { 628, 18,  76}, /* GOTHIC */
+    { 627, 18,  76}, /* GOTH */
+    {1071, 18,  77}, /* OLDPERMIC */
+    {1130, 18,  77}, /* PERM */
+    {1380, 18,  78}, /* UGARITIC */
+    {1379, 18,  78}, /* UGAR */
+    {1072, 18,  79}, /* OLDPERSIAN */
+    {1437, 18,  79}, /* XPEO */
+    { 495, 18,  80}, /* DESERET */
+    { 519, 18,  80}, /* DSRT */
+    {1230, 18,  81}, /* SHAVIAN */
+    {1231, 18,  81}, /* SHAW */
+    {1091, 18,  82}, /* OSMANYA */
+    {1090, 18,  82}, /* OSMA */
+    {1088, 18,  83}, /* OSAGE */
+    {1089, 18,  83}, /* OSGE */
+    { 537, 18,  84}, /* ELBASAN */
+    { 536, 18,  84}, /* ELBA */
+    { 319, 18,  85}, /* CAUCASIANALBANIAN */
     { 176, 18,  85}, /* AGHB */
-    { 828, 18,  86}, /* LINEARA */
-    { 826, 18,  86}, /* LINA */
-    { 464, 18,  87}, /* CYPRIOT */
-    { 451, 18,  87}, /* CPRT */
-    { 708, 18,  88}, /* IMPERIALARAMAIC */
-    { 217, 18,  88}, /* ARMI */
-    {1102, 18,  89}, /* PALMYRENE */
-    {1101, 18,  89}, /* PALM */
-    { 987, 18,  90}, /* NABATAEAN */
-    { 995, 18,  90}, /* NBAT */
-    { 670, 18,  91}, /* HATRAN */
-    { 669, 18,  91}, /* HATR */
-    {1125, 18,  92}, /* PHOENICIAN */
-    {1124, 18,  92}, /* PHNX */
-    { 859, 18,  93}, /* LYDIAN */
-    { 858, 18,  93}, /* LYDI */
-    { 940, 18,  94}, /* MEROITICHIEROGLYPHS */
-    { 938, 18,  94}, /* MERO */
-    { 939, 18,  95}, /* MEROITICCURSIVE */
-    { 937, 18,  95}, /* MERC */
-    { 770, 18,  96}, /* KHAROSHTHI */
-    { 769, 18,  96}, /* KHAR */
-    {1062, 18,  97}, /* OLDSOUTHARABIAN */
-    {1195, 18,  97}, /* SARB */
-    {1058, 18,  98}, /* OLDNORTHARABIAN */
-    { 992, 18,  98}, /* NARB */
-    { 884, 18,  99}, /* MANICHAEAN */
-    { 883, 18,  99}, /* MANI */
-    { 234, 18, 100}, /* AVESTAN */
-    { 235, 18, 100}, /* AVST */
-    { 722, 18, 101}, /* INSCRIPTIONALPARTHIAN */
-    {1149, 18, 101}, /* PRTI */
-    { 721, 18, 102}, /* INSCRIPTIONALPAHLAVI */
-    {1122, 18, 102}, /* PHLI */
-    {1151, 18, 103}, /* PSALTERPAHLAVI */
-    {1123, 18, 103}, /* PHLP */
-    {1063, 18, 104}, /* OLDTURKIC */
-    {1072, 18, 104}, /* ORKH */
-    {1056, 18, 105}, /* OLDHUNGARIAN */
-    { 691, 18, 105}, /* HUNG */
-    { 662, 18, 106}, /* HANIFIROHINGYA */
-    {1182, 18, 106}, /* ROHG */
-    {1423, 18, 107}, /* YEZIDI */
-    {1422, 18, 107}, /* YEZI */
-    {1061, 18, 108}, /* OLDSOGDIAN */
-    {1241, 18, 108}, /* SOGO */
-    {1240, 18, 109}, /* SOGDIAN */
-    {1239, 18, 109}, /* SOGD */
-    { 371, 18, 110}, /* CHORASMIAN */
-    { 372, 18, 110}, /* CHRS */
-    { 535, 18, 111}, /* ELYMAIC */
-    { 534, 18, 111}, /* ELYM */
-    { 285, 18, 112}, /* BRAHMI */
-    { 284, 18, 112}, /* BRAH */
-    { 750, 18, 113}, /* KAITHI */
-    { 781, 18, 113}, /* KTHI */
-    {1243, 18, 114}, /* SORASOMPENG */
-    {1242, 18, 114}, /* SORA */
-    { 359, 18, 115}, /* CHAKMA */
-    { 303, 18, 115}, /* CAKM */
-    { 862, 18, 116}, /* MAHAJANI */
-    { 863, 18, 116}, /* MAHJ */
-    {1215, 18, 117}, /* SHARADA */
-    {1220, 18, 117}, /* SHRD */
-    { 776, 18, 118}, /* KHOJKI */
-    { 775, 18, 118}, /* KHOJ */
-    { 975, 18, 119}, /* MULTANI */
-    { 974, 18, 119}, /* MULT */
-    { 777, 18, 120}, /* KHUDAWADI */
-    {1224, 18, 120}, /* SIND */
-    { 624, 18, 121}, /* GRANTHA */
-    { 623, 18, 121}, /* GRAN */
-    { 999, 18, 122}, /* NEWA */
-    {1341, 18, 123}, /* TIRHUTA */
-    {1340, 18, 123}, /* TIRH */
-    {1222, 18, 124}, /* SIDDHAM */
-    {1221, 18, 124}, /* SIDD */
-    { 961, 18, 125}, /* MODI */
-    {1311, 18, 126}, /* TAKRI */
-    {1310, 18, 126}, /* TAKR */
-    { 178, 18, 127}, /* AHOM */
-    { 508, 18, 128}, /* DOGRA */
-    { 507, 18, 128}, /* DOGR */
-    {1396, 18, 129}, /* WARANGCITI */
-    {1395, 18, 129}, /* WARA */
-    { 506, 18, 130}, /* DIVESAKURU */
-    { 503, 18, 130}, /* DIAK */
-    { 990, 18, 131}, /* NANDINAGARI */
-    { 989, 18, 131}, /* NAND */
-    {1435, 18, 132}, /* ZANABAZARSQUARE */
-    {1436, 18, 132}, /* ZANB */
-    {1245, 18, 133}, /* SOYOMBO */
-    {1244, 18, 133}, /* SOYO */
-    {1109, 18, 134}, /* PAUCINHAU */
-    {1108, 18, 134}, /* PAUC */
-    { 259, 18, 135}, /* BHAIKSUKI */
-    { 260, 18, 135}, /* BHKS */
-    { 913, 18, 136}, /* MARCHEN */
-    { 912, 18, 136}, /* MARC */
-    { 915, 18, 137}, /* MASARAMGONDI */
-    { 620, 18, 137}, /* GONM */
-    { 640, 18, 138}, /* GUNJALAGONDI */
-    { 619, 18, 138}, /* GONG */
-    { 867, 18, 139}, /* MAKASAR */
-    { 866, 18, 139}, /* MAKA */
-    { 454, 18, 140}, /* CUNEIFORM */
-    {1415, 18, 140}, /* XSUX */
-    { 531, 18, 141}, /* EGYPTIANHIEROGLYPHS */
-    { 529, 18, 141}, /* EGYP */
-    { 195, 18, 142}, /* ANATOLIANHIEROGLYPHS */
-    { 686, 18, 142}, /* HLUW */
-    { 971, 18, 143}, /* MRO */
-    { 972, 18, 143}, /* MROO */
-    { 247, 18, 144}, /* BASSAVAH */
-    { 246, 18, 144}, /* BASS */
-    {1100, 18, 145}, /* PAHAWHHMONG */
-    { 687, 18, 145}, /* HMNG */
-    { 928, 18, 146}, /* MEDEFAIDRIN */
-    { 929, 18, 146}, /* MEDF */
-    { 941, 18, 147}, /* MIAO */
-    {1132, 18, 147}, /* PLRD */
-    {1319, 18, 148}, /* TANGUT */
-    {1318, 18, 148}, /* TANG */
-    {1042, 18, 149}, /* NUSHU */
-    {1030, 18, 149}, /* NSHU */
-    { 771, 18, 150}, /* KHITANSMALLSCRIPT */
-    { 778, 18, 150}, /* KITS */
-    { 519, 18, 151}, /* DUPLOYAN */
-    { 518, 18, 151}, /* DUPL */
-    {1223, 18, 152}, /* SIGNWRITING */
-    {1214, 18, 152}, /* SGNW */
-    {1045, 18, 153}, /* NYIAKENGPUACHUEHMONG */
-    { 688, 18, 153}, /* HMNP */
-    {1394, 18, 154}, /* WANCHO */
-    {1399, 18, 154}, /* WCHO */
-    { 936, 18, 155}, /* MENDEKIKAKUI */
-    { 935, 18, 155}, /* MEND */
-    { 170, 18, 156}, /* ADLAM */
-    { 171, 18, 156}, /* ADLM */
-    { 765, 18, 157}, /* KATAKANAORHIRAGANA */
-    { 689, 18, 157}, /* HRKT */
-    {1079, 19,   0}, /* OTHER */
-    {1416, 19,   0}, /* XX */
-    {1246, 19,   1}, /* SP */
-    { 823, 19,   2}, /* LF */
-    { 452, 19,   3}, /* CR */
-    {1256, 19,   4}, /* STERM */
-    {1255, 19,   4}, /* ST */
-    { 406, 19,   5}, /* CLOSE */
-    { 405, 19,   5}, /* CL */
-    {1200, 19,   6}, /* SCONTINUE */
-    {1199, 19,   6}, /* SC */
-    { 228, 19,   7}, /* ATERM */
-    { 223, 19,   7}, /* AT */
-    {1038, 19,   8}, /* NUMERIC */
-    {1033, 19,   8}, /* NU */
-    {1369, 19,   9}, /* UPPER */
-    {1368, 19,   9}, /* UP */
-    { 843, 19,  10}, /* LOWER */
-    { 840, 19,  10}, /* LO */
-    {1211, 19,  11}, /* SEP */
-    {1205, 19,  11}, /* SE */
-    { 590, 19,  12}, /* FORMAT */
-    { 588, 19,  12}, /* FO */
-    {1064, 19,  13}, /* OLETTER */
-    { 809, 19,  13}, /* LE */
-    { 573, 19,  14}, /* EXTEND */
-    { 570, 19,  14}, /* EX */
-    {1079, 20,   0}, /* OTHER */
-    {1416, 20,   0}, /* XX */
-    { 823, 20,   1}, /* LF */
-    {1000, 20,   2}, /* NEWLINE */
-    {1014, 20,   2}, /* NL */
-    { 452, 20,   3}, /* CR */
-    {1407, 20,   4}, /* WSEGSPACE */
-    { 513, 20,   5}, /* DOUBLEQUOTE */
-    { 514, 20,   5}, /* DQ */
-    {1225, 20,   6}, /* SINGLEQUOTE */
-    {1252, 20,   6}, /* SQ */
-    { 943, 20,   7}, /* MIDNUM */
-    { 960, 20,   7}, /* MN */
-    { 944, 20,   8}, /* MIDNUMLET */
-    { 924, 20,   8}, /* MB */
-    {1038, 20,   9}, /* NUMERIC */
-    {1033, 20,   9}, /* NU */
-    { 942, 20,  10}, /* MIDLETTER */
-    { 958, 20,  10}, /* ML */
+    {1408, 18,  86}, /* VITHKUQI */
+    {1407, 18,  86}, /* VITH */
+    { 840, 18,  87}, /* LINEARA */
+    { 838, 18,  87}, /* LINA */
+    { 467, 18,  88}, /* CYPRIOT */
+    { 454, 18,  88}, /* CPRT */
+    { 714, 18,  89}, /* IMPERIALARAMAIC */
+    { 219, 18,  89}, /* ARMI */
+    {1116, 18,  90}, /* PALMYRENE */
+    {1115, 18,  90}, /* PALM */
+    { 999, 18,  91}, /* NABATAEAN */
+    {1007, 18,  91}, /* NBAT */
+    { 676, 18,  92}, /* HATRAN */
+    { 675, 18,  92}, /* HATR */
+    {1139, 18,  93}, /* PHOENICIAN */
+    {1138, 18,  93}, /* PHNX */
+    { 871, 18,  94}, /* LYDIAN */
+    { 870, 18,  94}, /* LYDI */
+    { 952, 18,  95}, /* MEROITICHIEROGLYPHS */
+    { 950, 18,  95}, /* MERO */
+    { 951, 18,  96}, /* MEROITICCURSIVE */
+    { 949, 18,  96}, /* MERC */
+    { 778, 18,  97}, /* KHAROSHTHI */
+    { 777, 18,  97}, /* KHAR */
+    {1074, 18,  98}, /* OLDSOUTHARABIAN */
+    {1209, 18,  98}, /* SARB */
+    {1070, 18,  99}, /* OLDNORTHARABIAN */
+    {1004, 18,  99}, /* NARB */
+    { 896, 18, 100}, /* MANICHAEAN */
+    { 895, 18, 100}, /* MANI */
+    { 236, 18, 101}, /* AVESTAN */
+    { 237, 18, 101}, /* AVST */
+    { 728, 18, 102}, /* INSCRIPTIONALPARTHIAN */
+    {1163, 18, 102}, /* PRTI */
+    { 727, 18, 103}, /* INSCRIPTIONALPAHLAVI */
+    {1136, 18, 103}, /* PHLI */
+    {1165, 18, 104}, /* PSALTERPAHLAVI */
+    {1137, 18, 104}, /* PHLP */
+    {1075, 18, 105}, /* OLDTURKIC */
+    {1085, 18, 105}, /* ORKH */
+    {1068, 18, 106}, /* OLDHUNGARIAN */
+    { 697, 18, 106}, /* HUNG */
+    { 668, 18, 107}, /* HANIFIROHINGYA */
+    {1196, 18, 107}, /* ROHG */
+    {1446, 18, 108}, /* YEZIDI */
+    {1445, 18, 108}, /* YEZI */
+    {1073, 18, 109}, /* OLDSOGDIAN */
+    {1255, 18, 109}, /* SOGO */
+    {1254, 18, 110}, /* SOGDIAN */
+    {1253, 18, 110}, /* SOGD */
+    {1076, 18, 111}, /* OLDUYGHUR */
+    {1107, 18, 111}, /* OUGR */
+    { 373, 18, 112}, /* CHORASMIAN */
+    { 374, 18, 112}, /* CHRS */
+    { 539, 18, 113}, /* ELYMAIC */
+    { 538, 18, 113}, /* ELYM */
+    { 287, 18, 114}, /* BRAHMI */
+    { 286, 18, 114}, /* BRAH */
+    { 756, 18, 115}, /* KAITHI */
+    { 789, 18, 115}, /* KTHI */
+    {1257, 18, 116}, /* SORASOMPENG */
+    {1256, 18, 116}, /* SORA */
+    { 361, 18, 117}, /* CHAKMA */
+    { 305, 18, 117}, /* CAKM */
+    { 874, 18, 118}, /* MAHAJANI */
+    { 875, 18, 118}, /* MAHJ */
+    {1229, 18, 119}, /* SHARADA */
+    {1234, 18, 119}, /* SHRD */
+    { 784, 18, 120}, /* KHOJKI */
+    { 783, 18, 120}, /* KHOJ */
+    { 987, 18, 121}, /* MULTANI */
+    { 986, 18, 121}, /* MULT */
+    { 785, 18, 122}, /* KHUDAWADI */
+    {1238, 18, 122}, /* SIND */
+    { 630, 18, 123}, /* GRANTHA */
+    { 629, 18, 123}, /* GRAN */
+    {1011, 18, 124}, /* NEWA */
+    {1357, 18, 125}, /* TIRHUTA */
+    {1356, 18, 125}, /* TIRH */
+    {1236, 18, 126}, /* SIDDHAM */
+    {1235, 18, 126}, /* SIDD */
+    { 973, 18, 127}, /* MODI */
+    {1325, 18, 128}, /* TAKRI */
+    {1324, 18, 128}, /* TAKR */
+    { 178, 18, 129}, /* AHOM */
+    { 512, 18, 130}, /* DOGRA */
+    { 511, 18, 130}, /* DOGR */
+    {1419, 18, 131}, /* WARANGCITI */
+    {1418, 18, 131}, /* WARA */
+    { 510, 18, 132}, /* DIVESAKURU */
+    { 507, 18, 132}, /* DIAK */
+    {1002, 18, 133}, /* NANDINAGARI */
+    {1001, 18, 133}, /* NAND */
+    {1458, 18, 134}, /* ZANABAZARSQUARE */
+    {1459, 18, 134}, /* ZANB */
+    {1259, 18, 135}, /* SOYOMBO */
+    {1258, 18, 135}, /* SOYO */
+    {1123, 18, 136}, /* PAUCINHAU */
+    {1122, 18, 136}, /* PAUC */
+    { 261, 18, 137}, /* BHAIKSUKI */
+    { 262, 18, 137}, /* BHKS */
+    { 925, 18, 138}, /* MARCHEN */
+    { 924, 18, 138}, /* MARC */
+    { 927, 18, 139}, /* MASARAMGONDI */
+    { 626, 18, 139}, /* GONM */
+    { 646, 18, 140}, /* GUNJALAGONDI */
+    { 625, 18, 140}, /* GONG */
+    { 879, 18, 141}, /* MAKASAR */
+    { 878, 18, 141}, /* MAKA */
+    { 457, 18, 142}, /* CUNEIFORM */
+    {1438, 18, 142}, /* XSUX */
+    { 469, 18, 143}, /* CYPROMINOAN */
+    { 453, 18, 143}, /* CPMN */
+    { 535, 18, 144}, /* EGYPTIANHIEROGLYPHS */
+    { 533, 18, 144}, /* EGYP */
+    { 195, 18, 145}, /* ANATOLIANHIEROGLYPHS */
+    { 692, 18, 145}, /* HLUW */
+    { 983, 18, 146}, /* MRO */
+    { 984, 18, 146}, /* MROO */
+    {1333, 18, 147}, /* TANGSA */
+    {1359, 18, 147}, /* TNSA */
+    { 249, 18, 148}, /* BASSAVAH */
+    { 248, 18, 148}, /* BASS */
+    {1114, 18, 149}, /* PAHAWHHMONG */
+    { 693, 18, 149}, /* HMNG */
+    { 940, 18, 150}, /* MEDEFAIDRIN */
+    { 941, 18, 150}, /* MEDF */
+    { 953, 18, 151}, /* MIAO */
+    {1146, 18, 151}, /* PLRD */
+    {1334, 18, 152}, /* TANGUT */
+    {1332, 18, 152}, /* TANG */
+    {1054, 18, 153}, /* NUSHU */
+    {1042, 18, 153}, /* NSHU */
+    { 779, 18, 154}, /* KHITANSMALLSCRIPT */
+    { 786, 18, 154}, /* KITS */
+    { 523, 18, 155}, /* DUPLOYAN */
+    { 522, 18, 155}, /* DUPL */
+    {1237, 18, 156}, /* SIGNWRITING */
+    {1228, 18, 156}, /* SGNW */
+    {1057, 18, 157}, /* NYIAKENGPUACHUEHMONG */
+    { 694, 18, 157}, /* HMNP */
+    {1369, 18, 158}, /* TOTO */
+    {1417, 18, 159}, /* WANCHO */
+    {1422, 18, 159}, /* WCHO */
+    { 948, 18, 160}, /* MENDEKIKAKUI */
+    { 947, 18, 160}, /* MEND */
+    { 170, 18, 161}, /* ADLAM */
+    { 171, 18, 161}, /* ADLM */
+    { 773, 18, 162}, /* KATAKANAORHIRAGANA */
+    { 695, 18, 162}, /* HRKT */
+    {1092, 19,   0}, /* OTHER */
+    {1439, 19,   0}, /* XX */
+    {1260, 19,   1}, /* SP */
+    { 835, 19,   2}, /* LF */
+    { 455, 19,   3}, /* CR */
+    {1270, 19,   4}, /* STERM */
+    {1269, 19,   4}, /* ST */
+    { 408, 19,   5}, /* CLOSE */
+    { 407, 19,   5}, /* CL */
+    {1214, 19,   6}, /* SCONTINUE */
+    {1213, 19,   6}, /* SC */
+    { 230, 19,   7}, /* ATERM */
+    { 225, 19,   7}, /* AT */
+    {1050, 19,   8}, /* NUMERIC */
+    {1045, 19,   8}, /* NU */
+    {1389, 19,   9}, /* UPPER */
+    {1388, 19,   9}, /* UP */
+    { 855, 19,  10}, /* LOWER */
+    { 852, 19,  10}, /* LO */
+    {1225, 19,  11}, /* SEP */
+    {1219, 19,  11}, /* SE */
+    { 596, 19,  12}, /* FORMAT */
+    { 594, 19,  12}, /* FO */
+    {1077, 19,  13}, /* OLETTER */
+    { 821, 19,  13}, /* LE */
+    { 579, 19,  14}, /* EXTEND */
+    { 576, 19,  14}, /* EX */
+    {1092, 20,   0}, /* OTHER */
+    {1439, 20,   0}, /* XX */
+    { 835, 20,   1}, /* LF */
+    {1012, 20,   2}, /* NEWLINE */
+    {1026, 20,   2}, /* NL */
+    { 455, 20,   3}, /* CR */
+    {1430, 20,   4}, /* WSEGSPACE */
+    { 517, 20,   5}, /* DOUBLEQUOTE */
+    { 518, 20,   5}, /* DQ */
+    {1239, 20,   6}, /* SINGLEQUOTE */
+    {1266, 20,   6}, /* SQ */
+    { 955, 20,   7}, /* MIDNUM */
+    { 972, 20,   7}, /* MN */
+    { 956, 20,   8}, /* MIDNUMLET */
+    { 936, 20,   8}, /* MB */
+    {1050, 20,   9}, /* NUMERIC */
+    {1045, 20,   9}, /* NU */
+    { 954, 20,  10}, /* MIDLETTER */
+    { 970, 20,  10}, /* ML */
     { 186, 20,  11}, /* ALETTER */
-    { 809, 20,  11}, /* LE */
-    { 576, 20,  12}, /* EXTENDNUMLET */
-    { 570, 20,  12}, /* EX */
-    { 590, 20,  13}, /* FORMAT */
-    { 588, 20,  13}, /* FO */
-    { 573, 20,  14}, /* EXTEND */
-    { 674, 20,  15}, /* HEBREWLETTER */
-    { 685, 20,  15}, /* HL */
-    {1443, 20,  16}, /* ZWJ */
-    { 763, 20,  17}, /* KATAKANA */
-    { 748, 20,  17}, /* KA */
-    {1166, 20,  18}, /* REGIONALINDICATOR */
-    {1171, 20,  18}, /* RI */
-    { 525, 20,  19}, /* EBASE */
-    { 524, 20,  19}, /* EB */
-    { 526, 20,  20}, /* EBASEGAZ */
-    { 527, 20,  20}, /* EBG */
-    { 538, 20,  21}, /* EMODIFIER */
-    { 536, 20,  21}, /* EM */
-    { 618, 20,  22}, /* GLUEAFTERZWJ */
-    { 597, 20,  22}, /* GAZ */
+    { 821, 20,  11}, /* LE */
+    { 582, 20,  12}, /* EXTENDNUMLET */
+    { 576, 20,  12}, /* EX */
+    { 596, 20,  13}, /* FORMAT */
+    { 594, 20,  13}, /* FO */
+    { 579, 20,  14}, /* EXTEND */
+    { 680, 20,  15}, /* HEBREWLETTER */
+    { 691, 20,  15}, /* HL */
+    {1468, 20,  16}, /* ZWJ */
+    { 771, 20,  17}, /* KATAKANA */
+    { 754, 20,  17}, /* KA */
+    {1180, 20,  18}, /* REGIONALINDICATOR */
+    {1185, 20,  18}, /* RI */
+    { 529, 20,  19}, /* EBASE */
+    { 528, 20,  19}, /* EB */
+    { 530, 20,  20}, /* EBASEGAZ */
+    { 531, 20,  20}, /* EBG */
+    { 542, 20,  21}, /* EMODIFIER */
+    { 540, 20,  21}, /* EM */
+    { 624, 20,  22}, /* GLUEAFTERZWJ */
+    { 603, 20,  22}, /* GAZ */
 };
 
 /* Codepoints which expand on full case-folding. */
@@ -3257,17 +3316,17 @@ RE_UINT16 re_expand_on_folding[] = {
 static RE_UINT8 re_alphabetic_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 10, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 10, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 44, 13, 13, 13, 45, 46, 13,
-    13, 13, 13, 47, 13, 13, 13, 13, 13, 13, 48, 10, 10, 10, 49, 10,
-    13, 13, 13, 13, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
+    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
+    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -3325,12 +3384,12 @@ static RE_UINT8 re_alphabetic_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
 };
 
-static RE_UINT8 re_alphabetic_table_2[] = {
+static RE_UINT16 re_alphabetic_table_2[] = {
       0,   0,   1,   1,   0,   2,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   7,   8,   9,  10,   4,  11,
       4,   4,   4,   4,  12,   4,   4,   4,   4,  13,  14,   4,  15,  16,  17,  18,
      19,   4,  20,  21,   4,   4,  22,  23,  24,   4,  25,   4,   4,  26,  27,  28,
-     29,  30,  31,  32,   0,  33,  34,  35,   4,  36,  37,  38,  39,  40,  41,  42,
+     29,  30,  31,  32,  33,   4,  34,  35,   4,  36,  37,  38,  39,  40,  41,  42,
      43,  44,  45,  46,  47,  48,  49,  50,  51,  48,  52,  53,  54,  55,  56,   0,
      57,  58,  59,  60,  57,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
      72,  73,  74,   0,  75,  76,  77,   0,  78,   0,  79,  80,  81,  82,   0,   0,
@@ -3338,96 +3397,102 @@ static RE_UINT8 re_alphabetic_table_2[] = {
       4,   4,  87,   4,  88,  89,  90,   4,  91,   4,  73,   0,  92,   4,   4,  93,
      72,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,  94,   1,   4,   4,  95,  96,  97,  97,  98,   4,  99, 100,   0,
-      0,   4,   4,  31,   4, 101,   4, 102, 103, 104,  24, 105,   4, 106, 107,   0,
-    108,   4, 103, 109,   0, 110,  78,   0,   4, 111, 112,   0,   4, 113,   4, 114,
+      0,   4,   4,  31,   4,  32,   4, 101, 102, 103,  24, 104,   4, 105, 106,   0,
+    107,   4, 102, 108,   0, 109, 110,   0,   4, 111, 112,   0,   4, 113,   4, 114,
       4, 115, 116, 117, 118,  65,   0, 119,   4,   4,   4,   4,   4,   4,   0, 120,
       4,   4,   4,   4,   4,   4,   4,   4,  93,   4, 121, 117,   4, 122, 123, 124,
       0,   0,   0, 125, 126,   0,   0,   0, 127, 128, 129,   4,  15,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 130,   4, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   4, 106,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 131, 103,   4,   4,   4,   4, 132,   4,  85,   4, 133, 115, 134, 134,   4,
-      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    136, 137,  72,   4, 138,  72,   4,  86, 139,  13,   4,   4, 140,   4,   0,  24,
+      4,   4,   4,   4,   4,   4,   4, 131,   4,  85,   4, 132, 115, 133, 133,   4,
+      0, 134,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    135, 136,  72,   4, 137,  72,   4,  86, 138,  13,   4,   4, 139,   4,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  82,
       4,   4,   4,   4,  30,   0,  24, 117,   4,   4,   4,   4,   4,   4,   4,   4,
-    141, 142,   4, 143,   4,   4,   4,  92, 144, 145,   4,   4, 146,   4, 147, 148,
-    149, 150,   4,  97,   4,   4, 151, 152,  27, 101, 153,  82,   4, 154, 135, 155,
-      4, 115, 156, 157,   4, 103, 158, 159, 160, 161,  86, 162,   4,   4,   4,  32,
+    140, 141,   4, 142,   4,   4,   4,  92, 143, 144,   4,   4, 145,   4, 146, 147,
+    148, 149,   4,  97,   4,   4, 150, 151,  27,  32, 152,  82,   4, 153, 134, 154,
+      4, 115, 155, 156,   4, 102, 157, 158, 159, 160,  86, 161,   4,   4,   4, 162,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 163, 164, 108,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 163, 164, 107,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4, 165,   4,   4, 166,   0, 167, 168, 169,   4,   4,  26, 170,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 117,  24,   4, 171,   4, 150, 172,
-      0,   0,   0, 173,   4,   4,   4,  82,   0,   1,   1, 174,   4, 103, 175,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 117,  24,   4, 171,   4, 149, 172,
+      0,   0,   0, 173,   4,   4,   4,  82,   0,   1,   1, 174,   4, 102, 175,   0,
     176, 177, 178,   0,   4,   4,   4,  73,   0,   0,   4, 179,   0,   0,   0,   0,
-      0,   0,   0,   0,  82,   4, 180,   0,   4,  25, 101,  73, 117,   4, 181,   0,
-      4,   4,   4,   4, 117,  24, 182, 108,   4, 183,   4,  60,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 115, 102, 150,   0,   0,   0,   0,
-    184, 185, 102, 115, 103,   0,   0, 186, 102, 166,   0,   0,   4, 187,   0,   0,
-    188, 102,   0,  82,  82,   0,  79, 189,   4, 102, 102, 153,  26,   0,   0,   0,
-      4,   4,  15,   0,   4, 153,   4, 153,   4, 150,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 190,   0,   0,  82, 191, 192,   0,   0,  24, 189, 115,
-      4,   4, 192,   0, 145,  31,  24,  15,   4, 153, 193, 194,   4,   4, 195,   0,
-    196, 197,   0,   0, 198, 118,   4,  15,  39,  48, 199,  60,   0,   0,   0,   0,
-      4,   4, 200, 201,   4,   4, 202,   0,   0,   0,   0,   0,   4, 203, 204,   0,
-      4, 103, 205,   0,   4, 206,   0,   0,  65,  32,   0,   0,   0,   0,   0,   0,
-      4,  31,   0,   0,   0,   4,   4, 207, 208, 209, 210,   0,   0, 211,  29, 212,
-      4, 213,  24,   4, 214,   0,   4,  31,   0,   0,   0,   0,   0,   0,   0,   0,
-    215, 216,  78, 217, 171, 218,   0,   0, 219, 220, 221, 222, 223,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0, 224,   0,   0,
+      0,   0,   0,   0,  82,   4, 180,   0,   4,  25,  32,  73, 117,   4, 181,   0,
+      4,   4,   4,   4, 117,  24, 182, 107,   4, 183,   4, 184, 185, 186,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 115, 101, 149, 148, 187,   0,   0,
+    188, 189, 101, 115, 102,   0,   0, 190, 101, 166,   0,   0,   4, 191,   0,   0,
+    192, 101,   0,  82,  82,   0,  79, 193,   4, 101, 101, 152,  26,   0,   0,   0,
+      4,   4,  15,   0,   4, 152,   4, 152,   4, 149,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 194,   0,   0,  82, 195, 196,  24, 197,  24, 193, 115,
+      4,   4, 196, 198, 144,  31, 199,  15,   4, 152, 200, 201,   4,   4, 202,   0,
+    203, 204,   0,   0, 205, 118,   4,  15,  39,  48, 206,  60,   0,   0,   0,   0,
+      4,   4, 207, 197,   4,   4, 208,   0,   0,   0,   0,   0,   4, 209, 210,   0,
+      4, 102, 211,   0,   4, 212,   0,   0,  65, 162, 213,   0,   0,   0,   0,   0,
+      4,  31,   0,   0,   0,   4,   4, 214, 215, 216, 217,   0,   0, 218,  29, 219,
+      4, 220,  24,   4, 221,  24,   4,  31,   0,   0,   0,   0,   0,   0,   0,   0,
+    222, 223,  78, 147, 171, 224,   0,   0, 225, 226, 227, 228, 229,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0, 230,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 166,   0,   0,   0,
-      4,   4,   4, 140,   4,   4,   4,   4,   4,   4,  60,   0,   0,   0,   0,   0,
+      4,   4,   4, 139,   4,   4,   4,   4,   4,   4,  60,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   4,   4, 180,
+      4, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4, 225,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 213,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  31, 103,   0,   0,   0,  24, 156,   4,  92,  60, 226,  92,   0,   0,   0,
+      4,  31, 102,  24,   4, 102,  24, 155,   4,  92,  60, 231,  92,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 227,   4, 228,   0,   0, 229,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 232,   4, 233,   0,   0, 234,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 230,
-      4,   4,   4,   4,   4,   4, 102,   0,  15,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 235,
+      4,   4,   4,   4,   4,   4, 101,   0,  15,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 236,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 217, 237, 200,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 238, 239,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 240,   4, 241, 242, 243,   4, 244, 245, 246,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 247, 248,  86, 240, 240, 249, 249, 222, 222, 250,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4, 103,   0, 231, 193,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 108,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 232, 233,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,   0,
+    251, 252,   0,   0,   0,   0,   0,   0,   4, 253, 254,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 155,   4, 255,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  33,   4, 234, 235, 236,   4, 237, 238, 239,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 240, 241,  86,  33,  33, 131, 131, 215, 215, 242,   0,
-    243, 244,   0,   0,   0,   0,   0,   0,   4, 245, 246,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 247,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 248,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 256,
+      4,   4,   4,   4,   4,   4, 193,   0,   4,   4, 257,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    236, 249, 250, 251, 252, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 162, 162, 107,   0,   0,   0,
+    243, 258, 259, 260, 261, 262,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 161, 161, 106,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 117,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 179,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  31,   4,   4,   4,   4,   4,   4,
     117,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 254,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 263,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  78,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     117,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  32,   0,   0,   0,   0,   0
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_alphabetic_table_3[] = {
@@ -3439,14 +3504,14 @@ static RE_UINT8 re_alphabetic_table_3[] = {
     255, 255, 255, 254,   0, 192, 255, 255, 255, 255, 239,  31, 254, 225,   0, 156,
       0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,   0, 252, 255, 255,
     255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0, 255, 255, 255,   1,
-    255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255, 248,   3, 255, 255,
+    255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255, 248,   3, 255, 255,
     255, 255, 255, 239, 255, 223, 225, 255,  15,   0, 254, 255, 239, 159, 249, 255,
     255, 253, 197, 227, 159,  89, 128, 176,  15,   0,   3,  16, 238, 135, 249, 255,
     255, 253, 109, 195, 135,  25,   2,  94,   0,   0,  63,   0, 238, 191, 251, 255,
     255, 253, 237, 227, 191,  27,   1,   0,  15,   0,   0,  30, 238, 159, 249, 255,
     159,  25, 192, 176,  15,   0,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195,
-    199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227, 223,  29,  96,   7,
-     15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,  15,   0,   6,   0,
+    199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227, 223,  29,  96,  39,
+     15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,  15,   0,   6,   0,
     255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,  15,   0,   0, 252,
     238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,   0,   0,  12,   0,
     254, 255, 255, 255, 255, 255, 255,   7, 127,  32,   0,   0, 214, 247, 255, 255,
@@ -3455,46 +3520,48 @@ static RE_UINT8 re_alphabetic_table_3[] = {
     255, 255,   0,  60, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
     255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
     255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,  15,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255,
-    255,   1, 128,  16, 255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0,
-    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128, 255, 255, 239, 255,
-    239,  15,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0, 255, 255, 127,   0,
+    255, 255,  15, 128, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255,
+    255,   1, 128,  16, 255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 255,  15,
+    254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0, 255, 255, 239, 255,
+    239,  31,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0, 255, 255, 127,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255,   0, 222, 111,   4,
     128, 255,  31,   0,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,
-     80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,
-     31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0,
-    224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,
-      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 252,   7,   0,   0,
-      0,   0, 224, 255, 191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,
-      0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124,
-    255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0,
-    126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255,
+     80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255,  31, 120,  12,   0,
+    255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0,
+    254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0,
+    255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255,
+    252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,   0,   0, 252, 255,
+    191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,   0,   0, 252, 232,
+    255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124, 255,  63,   0,   0,
+    255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0,
+    127, 127, 255, 255, 255,   3, 255, 255, 255,   7,   0,   0,  15,   0, 255, 255,
     127, 248, 255, 255, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 224,
     255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
       0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,  31,   0,
     255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
     111, 240, 239, 254,  31,   0,   0,   0, 255,  27,   3,   0, 128,   0, 255, 255,
-     63,   0,   0,   0, 240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20,
-    255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,
-    187,   7,   0, 128,   3,   0,   0,   0, 179,   0,   0,   0, 255, 255,  63, 127,
-      0,   0,   0,  63,  17,   0,   0,   0, 255, 255,  63,   1,   0,   0,   0, 128,
-    127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,
-     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
-    255, 255, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255,
-    255, 255, 127, 180, 203,   0,   0,   0, 191, 253, 255, 255, 255, 127, 123,   1,
-      0,   0,   1,   0, 127,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255,
-    255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,   0,   0,   7,   0,
-    255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 253, 255, 255, 247, 247,  15,   0,   0, 127, 255, 255, 249,
+     63,   0,   0,   0,   3,   0,   0,   0,   0,   0,  62,   0,   4,   0, 255, 255,
+    240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20, 255, 255, 251, 255,
+    255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224, 187,   7,   0, 128,
+    179,   0,   0,   0, 255, 255,  63, 127,   0,   0,   0,  63,  17,   0,   0,   0,
+    255, 255,  63,   1, 127,   0,   0,   0,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,  26,   0,   0,   0,
+    255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255, 255, 255, 127, 127,
+    255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180, 203,   0,   0,   0,
+    191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0, 248, 255, 255, 224,
+    255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
+      0,   0, 239, 111,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67,
+    255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
+    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
+    253, 255, 255, 247, 255, 127, 255, 255, 247,  15,   0,   0, 127, 255, 255, 249,
     219,   7,   0,   0, 255,  31, 128,  63,   0,  64,   0,   0, 255,  15,   0,   0,
-    143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94,
-    255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    127, 111, 255, 127, 143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
 };
 
 RE_UINT32 re_get_alphabetic(RE_UINT32 codepoint) {
@@ -3520,17 +3587,17 @@ RE_UINT32 re_get_alphabetic(RE_UINT32 codepoint) {
 static RE_UINT8 re_alphanumeric_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 44, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 47, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 13, 13, 13, 46, 47, 13,
-    13, 13, 13, 48, 13, 13, 13, 13, 13, 13, 49, 10, 10, 10, 50, 10,
-    13, 13, 13, 13, 51, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
+    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 10, 10, 10, 53, 10,
+    13, 13, 13, 13, 54, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -3593,7 +3660,7 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       5,   5,   5,   5,   5,   5,   6,   7,   0,   0,   8,   9,  10,  11,   5,  12,
       5,   5,   5,   5,  13,   5,   5,   5,   5,  14,  15,   5,  16,  17,  18,  19,
      20,   5,  21,  22,   5,   5,  23,  24,  25,   5,  26,   5,   5,  27,   5,  28,
-     29,  30,  31,  32,   0,  33,  34,  35,   5,  36,  37,  38,  39,  40,  41,  42,
+     29,  30,  31,  32,  33,   5,  34,  35,   5,  36,  37,  38,  39,  40,  41,  42,
      43,  44,  45,  46,  47,  48,  49,  50,  51,  48,  52,  53,  54,  55,  56,  57,
      58,  59,  60,  61,  58,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,
      73,  74,  75,   0,  76,  77,  78,   0,  79,  80,  81,  82,  83,  84,   0,   0,
@@ -3601,8 +3668,8 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       5,   5,  90,   5,  91,  92,  93,   5,  94,   5,  74,   0,  95,   5,   5,  96,
      73,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,  97,   2,   5,   5,  98,  99, 100, 100, 101,   5, 102, 103,  80,
-      1,   5,   5,  31,   5, 104,   5, 105, 106, 107, 108, 109,   5, 110, 111,   0,
-    112,   5, 106, 113, 111, 114,  79,   0,   5, 115, 116,   0,   5, 117,   5, 118,
+      1,   5,   5,  31,   5,  32,   5, 104, 105, 106, 107, 108,   5, 109, 110,   0,
+    111,   5, 105, 112, 110, 113, 114,   0,   5, 115, 116,   0,   5, 117,   5, 118,
       5, 119, 120,  87, 121,  66,   0, 122,   5,   5,   5,   5,   5,   5,   0, 123,
       5,   5,   5,   5,   5,   5,   5,   5,  96,   5, 124,  87,   5, 125, 126, 127,
       0,   0,   0, 128, 129,   0,   0,   0, 130, 131, 132,   5,  16,   0,   0,   0,
@@ -3611,88 +3678,94 @@ static RE_UINT16 re_alphanumeric_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 134, 106,   5,   5,   5,   5, 135,   5,  88,   5, 136, 119, 137, 137,   5,
-      0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    139, 140,  73,   5, 141,  73,   5,  89, 142,  14,   5,   5, 143,   5,   0,  25,
+      5,   5,   5,   5,   5,   5,   5, 134,   5,  88,   5, 135, 119, 136, 136,   5,
+      0, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 139,  73,   5, 140,  73,   5,  89, 141,  14,   5,   5, 142,   5,   0,  25,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  84,
       5,   5,   5,   5,  30,   0,  25,  87,   5,   5,   5,   5,   5,   5,   5,   5,
-    144, 145,   5, 146,   5,   5,   5,  95, 147, 148,   5,   5, 149,   5, 150, 151,
-    152, 153,   5, 100,   5,   5, 154, 155,   5, 104, 156,  84,   5, 157, 158, 106,
-      5, 119, 159, 160,   5, 106, 161, 162, 163, 164,  89,  86,   5,   5,   5, 165,
+    143, 144,   5, 145,   5,   5,   5,  95, 146, 147,   5,   5, 148,   5, 149, 150,
+    151, 152,   5, 100,   5,   5, 153, 154,   5,  32, 155,  84,   5, 156, 157, 105,
+      5, 119, 158, 159,   5, 105, 160, 161, 162, 163,  89,  86,   5,   5,   5, 164,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 166, 167, 112,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 165, 166, 111,
       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5, 168,   5,   5, 169,   0, 170, 171, 172,   5,   5,  27, 173,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,  87,  25,   5, 174,   5, 153, 175,
-      0,   0,   0, 176,   5,   5,   5,  84,   1,   2,   2, 108,   5, 106, 177,   0,
-    178, 179, 180,   0,   5,   5,   5,  74,   0,   0,   5, 181,   0,   0,   0,   0,
-      0,   0,   0,   0,  84,   5, 182,   0,   5,  26, 104,  74,  87,   5, 183,   0,
-      5,   5,   5,   5,  87,  86, 184, 112,   5, 185,   5, 186,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 119, 105, 153,   0,   0,   0,   0,
-    187, 188, 105, 119, 106,   0,   0, 189, 105, 169,   0,   0,   5, 190,   0,   0,
-    191, 105,   0,  84,  84,   0,  81, 192,   5, 105, 105, 156,  27,   0,   0,   0,
-      5,   5,  16,   0,   5, 156,   5, 156,   5, 193,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   5, 194,   0,   0,  84, 195, 196,   0,   0,  25, 192, 119,
-      5,   5, 196,  57, 148,  31,  25, 197,   5, 198, 199, 200,   5,   5, 201,   0,
-    202, 203,   0,   0, 204, 121,   5, 197,  39,  48, 205, 186,   0,   0,   0,   0,
-      5,   5, 206, 207,   5,   5, 208,   0,   0,   0,   0,   0,   5, 209, 210,   0,
-      5, 106, 211,   0,   5, 212,  80,   0,  66, 165,   0,   0,   0,   0,   0,   0,
-      5,  31,   0,   0,   0,   5,   5, 213, 214, 215, 216,   0,   0, 217,  29, 218,
-      5, 219,  25,   5, 220,   0,   5,  31,   0,   0,   0,   0,   0,   0,   0,   0,
-    221, 222, 223, 224, 174, 225,   0,   0, 226, 227, 228, 229, 230,  80,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0, 231,   0,   0,
+      5,   5,   5, 167,   5,   5, 168,   0, 169, 170, 171,   5,   5,  27, 172,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  87,  25,   5, 173,   5, 152, 174,
+      0,   0,   0, 175,   5,   5,   5,  84,   1,   2,   2, 107,   5, 105, 176,   0,
+    177, 178, 179,   0,   5,   5,   5,  74,   0,   0,   5, 180,   0,   0,   0,   0,
+      0,   0,   0,   0,  84,   5, 181,   0,   5,  26,  32,  74,  87,   5, 182,   0,
+      5,   5,   5,   5,  87,  86, 183, 111,   5, 184,   5, 185, 186, 187,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 119, 104, 152, 151, 188,   0,   0,
+    189, 190, 104, 119, 105,   0,   0, 191, 104, 168,   0,   0,   5, 192,   0,   0,
+    193, 104,   0,  84,  84,   0,  81, 194,   5, 104, 104, 155,  27,   0,   0,   0,
+      5,   5,  16,   0,   5, 155,   5, 155,   5, 195,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   5, 196,   0,   0,  84, 197, 198,  25, 199,  25, 194, 119,
+      5,   5, 198, 200, 147,  31, 201, 202,   5, 203, 204, 205,   5,   5, 206,   0,
+    207, 208,   0,   0, 209, 121,   5, 202,  39,  48, 210, 211,   0,   0,   0,   0,
+      5,   5, 212, 199,   5,   5, 213,   0,   0,   0,   0,   0,   5, 214, 215,   0,
+      5, 105, 216,   0,   5, 217,  80,   0,  66, 164, 218,   0,   0,   0,   0,   0,
+      5,  31,   0,   0,   0,   5,   5, 219, 220, 221, 222,   0,   0, 223,  29, 224,
+      5, 225,  25,   5, 226,  25,   5,  31,   0,   0,   0,   0,   0,   0,   0,   0,
+    227, 228, 229, 150, 173, 230,   0,   0, 231, 232, 233, 234, 235,  80,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0, 236,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 169,   0,   0,   0,
-      5,   5,   5, 143,   5,   5,   5,   5,   5,   5, 186,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 168,   0,   0,   0,
+      5,   5,   5, 142,   5,   5,   5,   5,   5,   5, 211,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  25,   5,   5, 181,
+      5, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5, 232,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 218,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,  31, 106,  80,   0,   0,  25, 233,   5,  95, 234, 235,  95,   0,   0,   0,
+      5,  31, 105,  86,   5, 105,  86, 237,   5,  95, 238, 239,  95,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 236,   5, 237,   0,   0, 238,
+      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 240,   5, 241,   0,   0, 242,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 239,
-      5,   5,   5,   5,   5,   5, 105,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 243,
+      5,   5,   5,   5,   5,   5, 104,   0,  16,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5, 106,   0, 240, 199,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5, 112,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5, 241, 242,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,  33,   5, 243, 244, 245,   5, 246, 247, 248,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 249, 250,  89,  33,  33, 134, 134, 221, 221, 251,   5,
-    252, 253,   0,   0,   0,   0,   0,   0,   5, 254, 255,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   5, 256,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5, 192,   0,   5,   5, 257,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 245, 246, 204,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 249,   5, 250, 251, 252,   5, 253, 254, 255,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 256, 257,  89, 249, 249, 258, 258, 227, 227, 259,   5,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,   0,
+    260, 261,   0,   0,   0,   0,   0,   0,   5, 262, 263,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  25, 237,   5, 264,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    245, 258, 259, 260, 261, 262,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 265,
+      5,   5,   5,   5,   5,   5, 194,   0,   5,   5, 266,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    252, 267, 268, 269, 270, 271,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  25,  86,  86,  80,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,  87,   0,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 181,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  31,   5,   5,   5,   5,   5,   5,
      87,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 263,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 272,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  79,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
      87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  32,   0,   0,   0,   0,   0
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 273,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_alphanumeric_table_3[] = {
@@ -3704,14 +3777,14 @@ static RE_UINT8 re_alphanumeric_table_3[] = {
       0,   0, 255,   7, 255, 255, 255, 254, 255, 195, 255, 255, 255, 255, 239,  31,
     254, 225, 255, 159,   0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,
     255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0, 255, 255, 255,   1,
-    255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255, 248,   3, 255, 255,
+    255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255, 248,   3, 255, 255,
     255, 255, 255, 239, 255, 223, 225, 255, 207, 255, 254, 255, 239, 159, 249, 255,
     255, 253, 197, 227, 159,  89, 128, 176, 207, 255,   3,  16, 238, 135, 249, 255,
     255, 253, 109, 195, 135,  25,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255,
     255, 253, 237, 227, 191,  27,   1,   0, 207, 255,   0,  30, 238, 159, 249, 255,
     159,  25, 192, 176, 207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195,
     199,  29, 129,   0, 192, 255,   0,   0, 239, 223, 253, 255, 255, 253, 255, 227,
-    223,  29,  96,   7, 207, 255,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,
+    223,  29,  96,  39, 207, 255,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,
     207, 255,   6,   0, 255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,
     207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,
     192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 127,  32, 255,   3,
@@ -3720,48 +3793,51 @@ static RE_UINT8 re_alphanumeric_table_3[] = {
     255, 255, 255,  31, 255, 255, 127, 249, 255,   3, 255, 255, 255, 255, 255,  63,
     191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61, 255,  61, 255, 255,
     255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  15,   0,
+    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  15, 128,
     255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 207, 255, 255,   1, 128,  16,
-    255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1,
-    192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3,
-    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128, 255, 255, 239, 255,
-    239,  15, 255,   3, 255, 243, 255, 255, 191, 255,   3,   0, 255, 255, 127,   0,
+    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,   1, 192, 255, 255, 255,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3, 255, 255, 255,  15,
+    254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0, 255, 255, 239, 255,
+    239,  31, 255,   3, 255, 243, 255, 255, 191, 255,   3,   0, 255, 255, 127,   0,
     255, 227, 255, 255, 255,   1, 255, 255,   0, 222, 111,   4, 128, 255,  31,   0,
      63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
       0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,  80, 189, 255, 243,
-    224,  67,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0,
-    254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0,
-    255,  31, 255, 255, 255,  15,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255,
-    252, 255, 255, 255, 255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255,
-    191, 255, 255, 255, 255,   0,   0,   0,  47,   0, 255,   3,   0,   0, 252, 232,
-    255, 255,   7,   0, 255, 255, 247, 255,   0, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   7, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95,
-    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,   0,   0, 255,  15,
-      0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183,
-    255,  63, 255,  63, 255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0,
-    255, 255,  15, 255, 255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255,
-    255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254,
-     31,   0,   0,   0, 255,   0, 255,   3, 255,  27,   3,   0, 128,   0, 255, 255,
-     63,   0,   0,   0, 255,   1, 255,   3, 255, 255, 199, 255, 240,   0, 255, 255,
-    255, 255,  71,   0,  30, 192, 255,  23, 255, 255, 251, 255, 255, 255, 159,  64,
-    127, 189, 255, 191, 159,  25, 129, 224, 187,   7, 255, 131,   3,   0,   0,   0,
-    179,   0, 255,   3, 255, 255,  63, 127,   0,   0,   0,  63,  17,   0, 255,   3,
-    255, 255,  63,   1, 255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 153,
-      7,   0, 255,   3, 255, 252, 255, 255,  26,   0,   0,   0, 255, 255, 231, 127,
-    255, 255, 255,  32, 255, 253, 255, 255, 255, 255, 127, 127,   1,   0, 255,   3,
-      0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
-    203,   0, 255,   3, 191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0,
-    127,   0,   0,   0, 255,  63,   0,   0,  15,   0, 255,   3, 248, 255, 255, 224,
+    224,  67,   0,   0,   0,   0, 192, 255,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127,   0, 128,   0,   0, 224,   0,   0,   0, 254,   3,  62,  31,
+    255, 255, 127, 224, 224, 255, 255, 255, 255, 127,   0,   0, 255,  31, 255, 255,
+    255,  15,   0,   0, 255, 127, 240, 143,   0,   0, 128, 255, 252, 255, 255, 255,
+    255, 249, 255, 255, 255,   7, 235,   3,   0,   0, 252, 255, 191, 255, 255, 255,
+    255,   0,   0,   0,  47,   0, 255,   3,   0,   0, 252, 232, 255, 255,   7,   0,
+    255, 255, 247, 255,   0, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      5,   0,   0,  56, 255, 255,  60,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   7, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255,  63, 255, 255,
+    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
+      0,   0, 248, 255, 255, 255, 252, 255,   0,   0, 255,  15,   0,   0, 223, 255,
+    252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
+    255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+    255, 255, 255, 192, 111, 240, 239, 254,  31,   0,   0,   0, 255,   0, 255,   3,
+    255,  27,   3,   0, 128,   0, 255, 255,  63,   0,   0,   0,   3,   0,   0,   0,
+    192, 255,  62,   0,   4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 199, 255,
+    240,   0, 255, 255, 255, 255,  71,   0,  30, 192, 255,  23, 255, 255, 251, 255,
+    255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,  15,   0,   0,   0,
+    187,   7, 255, 131, 179,   0, 255,   3, 255, 255,  63, 127,   0,   0,   0,  63,
+     17,   0, 255,   3, 255, 255,  63,   1, 127,   0,   0,   0, 255,   3,   0, 128,
+    127, 242, 111, 255, 255, 255, 191, 153,   7,   0, 255,   3, 255, 252, 255, 255,
+     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
+    255, 255, 127, 127,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 203,   0, 255,   3, 191, 253, 255, 255, 255, 127, 123,   1,
+      0,   0,   1,   0, 255,  63,   0,   0,  15,   0, 255,   3, 248, 255, 255, 224,
     255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
-      0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223,
-    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
-     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 247, 207, 255, 255,
+      0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0, 255,   7, 255,  31,
+    255,   1, 255,  67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
     127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 128,  63, 255,  67,   0,   0,
-    255,  15, 255,   3, 143,   8, 255,   3, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255,  15, 255,   3, 127, 111, 255, 127, 143,   8, 255,   3, 150, 254, 247,  10,
+    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
+      3,   0, 255, 255, 255,   7,   0,   0
 };
 
 RE_UINT32 re_get_alphanumeric(RE_UINT32 codepoint) {
@@ -3809,67 +3885,67 @@ static RE_UINT8 re_bidi_class_table_1[] = {
     19, 13, 20, 21, 22, 23, 24, 25, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 26, 27, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 28,
-    13, 13, 13, 13, 29, 30, 31, 13, 32, 13, 33, 34, 35, 36, 37, 38,
+    13, 13, 13, 29, 30, 31, 32, 13, 33, 13, 34, 35, 36, 37, 38, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
-    39, 40, 40, 40, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
+    40, 41, 41, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 38
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 39
 };
 
 static RE_UINT16 re_bidi_class_table_2[] = {
@@ -3877,84 +3953,86 @@ static RE_UINT16 re_bidi_class_table_2[] = {
       7,   7,   7,   7,   7,   8,   9,  10,  11,  11,  11,  12,  13,   7,   7,  14,
       7,   7,   7,   7,  15,   7,   7,   7,   7,   7,   7,   7,  16,  17,  18,  19,
      20,  21,  22,  23,  21,  21,  24,  25,  26,  27,  28,  21,  21,  29,  19,  30,
-     31,  32,  33,  34,  19,  21,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
+     31,  32,  33,  21,  34,  21,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
      45,  42,  46,  47,  45,  42,  48,  49,  41,  50,  51,  40,  52,   7,  53,  54,
      55,  56,  57,  58,  41,  42,  59,  40,  60,  61,  43,  40,  41,   7,  62,   7,
       7,  63,  64,   7,   7,  65,  66,   7,  67,  68,   7,  69,  70,  71,  72,   7,
       7,  73,  74,  75,  76,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,  77,   7,  78,   7,   7,   7,
      79,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,  80,   7,   7,   7,  81,  81,  82,  82,   7,  83,  84,  78,
+      7,   7,   7,   7,  80,   7,   7,   7,  81,  82,  82,  82,   7,  83,  84,  78,
      85,   7,   7,   7,  86,  87,   7,   7,   7,  88,  89,   7,   7,   7,  90,  91,
      92,   7,  93,  94,   7,  95,  96,   7,  97,  98,  52,  99,  60, 100,   7, 101,
-      7, 102,   7,   7,   7,   7, 103, 104,   7,   7,   7,   7,   7,   7,  11, 105,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 106, 107, 108,
-    109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,   7, 120,  91,  91,  91,
-    121,  91,  91,  91,  91,  91,  91,  91,  91, 122,   7, 123, 124,  91,  91,  91,
-     91, 125, 126,  91, 127,   7,   7, 128,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91, 129,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      7, 102,   7,   7,   7,   7, 103, 104,   7,   7,   7,   7,   7,   7,  11,  11,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 105, 106, 107,
+    108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,   7, 119,  91,  91,  91,
+    120,  91,  91,  91,  91,  91,  91,  91,  91, 121,   7, 122, 123,  91,  91,  91,
+     91, 124, 125,  91, 126,   7,   7, 127,  91,  91,  91,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91, 128,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
       7,   7,   7,   7,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91, 130, 131,  91,  91,  91,
-      7,   7,   7,   7,   7,   7,   7, 132,   7,   7,   7, 133,   7,   7,   7,  11,
-     91,  91, 134,   7, 135,  91,  91, 136,  91,  91,  91,  91,  91,  91, 122, 137,
-    138, 139,   7,   7, 140,  79,   7, 141,   7,   7,   7,   7,   7,   7,  91, 142,
-    143,   7, 144, 145,   7, 146, 147,   7,   7,   7,   7, 148,   7,   7,  90, 149,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91, 129, 130,  91,  91,  91,
+      7,   7,   7,   7,   7,   7,   7, 131,   7,   7,   7, 132,   7,   7,   7,  11,
+     91,  91, 133,   7, 134,  91,  91, 135,  91,  91,  91,  91,  91,  91, 121, 136,
+    137, 138,   7,   7, 139,  79,   7, 140,   7,   7,   7,   7,   7,   7,  91, 141,
+    142,   7, 143, 144,   7, 145, 146,   7,   7,   7,   7, 147,   7,   7,  90, 148,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,  91,  91,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7, 144,  91, 125,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-    150,   7,   7, 151,  56,   7,   7, 152,  91, 153,   7,   7, 154,   7,   7,   7,
+      7,   7,   7,   7, 143,  91, 124,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+    149,   7,   7, 150, 151,   7,   7, 152,  91, 153,   7,   7, 154,   7,   7,   7,
     155, 156,   7, 157,   7,   7, 158, 159,   7, 160, 161,   7,  37, 162,   7, 163,
       7, 164, 165,  42,   7, 166,  41, 167,   7,   7,   7, 168,   7,   7,   7, 169,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7, 170, 171, 172,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21, 173,  21,  21,  21,  21, 174, 175,
-    176, 177, 178, 179,  21,  21,  21, 180, 181,   2,   2, 182,   7,   7,   7, 183,
-      7,   7,   7,   7,   7,   7,   7,   7, 184,   7,  91,  91, 185,  79,   7, 186,
-      7,   7,   7,   7,   7,   7,   7, 187,   7,   7,   7, 188,   7,   7,   7,   7,
-     19,  19,  19,  19,  19,  19,  19,  19, 189,  19,  19,  19,  19,  19,  19,  19,
-    190, 191,  19,  19,  19,  19,  19, 192,  19, 193,  19,  19,  19,  19,  19,  19,
-     19,  19,  19,  19,  19,  19,  19,  19,  21, 194,  19,  19,  19,  19,  19,  19,
-     19,  19,  19, 195,  19, 196,  19,  19,  19, 172,  29,  34,  19,  19,  19,  19,
-     41, 197, 198, 199,  60, 200,   7,   7,  37, 201,   7, 202,  60, 203, 204,   7,
-      7, 205,   7,   7,   7,   7, 133, 206,  60,  61,  96, 207,   7,   7,   7,   7,
-      7, 197, 208,   7,   7, 209, 210,   7,   7,   7,   7,   7,   7, 211, 212,   7,
-      7, 213,  96, 214,   7, 215,   7,   7,  77, 216,   7,   7,   7,   7,   7,   7,
-      7, 217,   7,   7,   7,   7,   7,   7,   7, 218, 219,   7,   7,   7, 220,  96,
-    221, 222, 223,   7, 224,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 225,   7,   7, 226, 227,   7,   7,   7, 228, 229,   7, 230,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 231,   7,   7,   7,   7,   7,   7, 232, 233,
+     21,  21,  21,  21,  21,  21,  21,  21,  21, 173, 174,  21,  21,  21, 175, 176,
+    177, 178, 179, 180,  21,  21,  21, 181, 182,   2,   2, 183,   7,   7,   7, 184,
+      7,   7,   7,   7,   7,   7,   7,   7, 185,   7,  91,  91, 186,  79,   7, 187,
+      7,   7,   7,   7,   7,   7,   7, 188,   7,   7,   7, 189,   7,   7,   7,   7,
+     19,  19,  19,  19,  19,  19,  19,  19, 190,  19,  19,  19,  19,  19,  19,  19,
+    191, 192,  19,  19,  19,  19,  19, 193,  19, 194,  19,  19,  19,  19,  19,  19,
+     19,  19,  19,  19,  19,  19,  19,  19,  21, 195,  19,  19,  19,  19,  19,  19,
+     19,  19,  19, 196,  19, 197,  19,  19,  19, 172,  29, 198, 199,  19,  19,  19,
+     41, 200, 201, 202,  60, 203,  52,   7,  37, 204,   7, 205,  60, 206, 207,   7,
+      7, 208,   7,   7,   7,   7, 132, 209,  60,  61, 210, 211,   7,   7,   7,   7,
+      7, 200, 212,   7,   7, 213, 214,   7,   7,   7,   7,   7,   7, 215, 216,   7,
+      7, 217, 210, 218,   7, 219,   7,   7,  77, 220,   7,   7,   7,   7,   7,   7,
+      7, 221,   7,   7,   7,   7,   7,   7,   7, 222, 223,   7,   7,   7, 224, 210,
+    225, 226, 227,   7, 228,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+      7, 229,   7,   7, 230, 231,   7,   7,   7, 232, 233,   7, 234,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 235,   7,   7,   7,   7,   7,   7, 236, 237,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 238,   7, 239,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 234,   7, 235,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 240,   7, 241,   7,   7, 242,
+      7,   7,   7,   7, 243, 244,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 236,   7, 237,   7,   7, 238,
-      7,   7,   7,   7, 239, 240,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 241, 242, 243,   7,   7,
-     91,  91, 244,   7,   7,   7,   7,   7,  91,  91, 245,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,  11, 245, 246,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 247, 248, 249,   7, 250,
+     91,  91, 251,   7,   7,   7,   7,   7,  91,  91, 252,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7, 141,   7, 246,   7, 247,   7, 248,   7, 249, 250,
+      7,   7,   7,   7,   7,   7, 140,   7, 253,   7, 254,   7, 255,   7, 256, 257,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-     11, 251,  11, 252, 253, 254,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-    255, 256,   7,   7,   7,   7,   7,   7,   7, 235,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7, 257,   7,   7,   7,   7,   7,   7,   7,   7,
-     19,  19,  19,  19,  19,  19, 258,  19,  19,  19, 259,  19,  19,  19,  19,  19,
+     11, 258,  11, 259, 260, 261,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
+    262, 263,   7,   7,   7,   7,   7,   7,   7, 239,   7,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 264,   7, 265,   7,   7,   7,   7,   7,   7,   7,   7,
+     19,  19,  19,  19,  19,  19, 266,  19,  19,  19, 267,  19,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
-     19,  19,  19, 172,  21,  21,  19,  19,  21,  21,  34,  19,  19,  19,  19,  19,
-     21,  21,  21,  21,  21,  21,  21, 260,  19,  19,  19,  19,  19,  19,  19,  19,
-     91, 261,  91,  91, 136, 262, 263, 122, 264, 247,   7, 265,   7, 266,   7,   7,
-      7,   7,   7, 182,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
+     19,  19,  19, 172,  21,  21,  19,  19,  21,  21, 198,  19,  19,  19,  19,  19,
+     21,  21,  21,  21,  21,  21,  21, 268,  19,  19,  19,  19,  19,  19,  19,  19,
+     91, 269,  91,  91, 135, 270, 271, 121, 272, 254,   7, 273,   7, 274,   7,   7,
+      7,   7,   7, 183,   7,   7,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,  91,  91,  91, 267, 185,  91,  91,  91, 136,  91,  91, 268, 269,
-    261,  91, 270,  91, 271, 272,   7,   7,  91,  91,  91, 273,  91,  91, 129,  91,
-     91,  91, 136, 274, 275, 276, 277,   7,  91,  91,  91,  91, 278,  91, 126, 279,
+     91,  91,  91,  91,  91,  91, 275, 186,  91,  91,  91, 135,  91,  91, 276, 277,
+    269,  91, 278,  91, 279, 280,   7,   7,  91,  91,  91,  91,  91,  91,  91,  91,
+     91,  91, 135, 281, 282, 283, 284, 285,  91,  91,  91,  91, 286,  91, 125, 287,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 280,
-    281, 281, 281, 281, 281, 281, 281, 281,  11,  11,  11,  11,  11,  11,  11, 282,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
-    281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 288,
+    289, 289, 289, 289, 289, 289, 289, 289,  11,  11,  11,  11,  11,  11,  11, 290,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
+    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289
 };
 
 static RE_UINT8 re_bidi_class_table_3[] = {
@@ -4027,9 +4105,9 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 11, 11, 11, 11,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    12, 12, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4071,7 +4149,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10,  0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0, 10, 10,
     10,  0,  0,  0,  0,  0, 10, 10, 10,  0, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4128,7 +4206,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0,  0, 10,  0,  0, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  6,  0, 10,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 10, 10, 10,  1,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 10, 10, 10,  1, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4150,7 +4228,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4168,8 +4246,6 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0, 10,  0,  0,
      0,  0,  0,  0, 10,  0,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,
@@ -4227,7 +4303,7 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4263,6 +4339,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
     10, 10, 10,  5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  5,  5,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4306,10 +4384,12 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,  5,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -4351,13 +4431,17 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
+    10,  0,  0, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 10, 10, 10, 10,  0,  0, 10, 10,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10,  0, 10, 10, 10,
@@ -4372,6 +4456,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10,  0,  0, 10,  0, 10, 10,  0,  0,  0,  0,  0,  0, 10,  0,
      0,  0,  0, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,
     10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 10, 10, 10,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -4440,12 +4526,18 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10,  0,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 10, 10, 10,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1, 10, 10, 10, 10, 10,
     10, 10, 10,  0,  0, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5, 10, 10, 10,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4471,6 +4563,8 @@ static RE_UINT8 re_bidi_class_table_3[] = {
     10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0, 10, 10, 10, 10, 10,
     10, 10,  0, 10, 10,  0, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 10, 10, 10,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,
@@ -4493,26 +4587,26 @@ static RE_UINT8 re_bidi_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
      5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,
-     5,  5,  5,  5,  5,  0,  0,  0,  5,  5,  5,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  0,  0,  0,  5,  5,  5,  5,  5,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,
+     5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  0,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -4645,13 +4739,13 @@ static RE_UINT8 re_bidi_mirrored_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24, 25, 26, 27,
     28, 29, 30, 31, 32, 33, 34, 35,  0,  0,  0,  0,  0,  0,  0, 36,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    37, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    37, 38, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    40,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 40, 41,  0,  0,  0,  0,  1,  2, 42, 43,  0,  0,  0,  0,
+     0,  0, 41, 42,  0,  0,  0,  0,  1,  2, 43, 44,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 44,  0, 45,  0, 46,  0, 47,  0, 48,  0
+     0,  0,  0,  0,  0,  0, 45,  0, 46,  0, 47,  0, 48,  0, 49,  0
 };
 
 static RE_UINT8 re_bidi_mirrored_table_3[] = {
@@ -4664,10 +4758,10 @@ static RE_UINT8 re_bidi_mirrored_table_3[] = {
     248, 255, 255, 249, 253, 255,   0,   1,  63, 194,  55,  31,  58,   3, 240,  51,
       0, 252, 255, 223,  83, 122,  48, 112,   0,   0, 128,   1,  48, 188,  25, 254,
     255, 255, 255, 255, 207, 191, 255, 255, 255, 255, 127,  80, 124, 112, 136,  47,
-      0,   0,   0,  64,  60,  54,   0,  48, 255,   3,   0,   0,   0, 255, 243,  15,
-      0,   0,   0, 126,  48,   0,   0,   0,   0,   0,   0, 168,  13,   0,   0,   0,
-      0,   0,   0,   8,   0,   0,  32,   0,   0, 128,   0,   0,   0,   2,   0,   0,
-      8,   0,   0,   0
+      0,   0,   0,  64,  60,  54,   0,  48, 255,   3,   0,   0,   0,   0, 224,  31,
+      0, 255, 243,  15,   0,   0,   0, 126,  48,   0,   0,   0,   0,   0,   0, 168,
+     13,   0,   0,   0,   0,   0,   0,   8,   0,   0,  32,   0,   0, 128,   0,   0,
+      0,   2,   0,   0,   8,   0,   0,   0
 };
 
 RE_UINT32 re_get_bidi_mirrored(RE_UINT32 codepoint) {
@@ -4717,15 +4811,15 @@ static RE_UINT8 re_block_table_1[] = {
     13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 18, 19, 19, 19, 19, 19,
     19, 19, 19, 19, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 24, 25,
-    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 37, 38, 36, 36,
-    36, 39, 36, 36, 36, 36, 36, 36, 36, 36, 40, 41, 42, 42, 42, 42,
-    42, 42, 43, 44, 36, 36, 36, 36, 36, 36, 36, 36, 45, 36, 36, 46,
-    36, 36, 36, 36, 47, 48, 49, 36, 50, 36, 51, 52, 53, 54, 55, 36,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
-    56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 58, 58, 58, 59, 60, 61,
-    61, 61, 61, 62, 63, 63, 63, 63, 63, 63, 64, 36, 36, 36, 65, 36,
-    66, 66, 66, 66, 67, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 36, 36,
+    36, 40, 36, 36, 36, 36, 36, 36, 36, 36, 41, 42, 43, 43, 43, 43,
+    43, 43, 44, 45, 36, 36, 36, 36, 36, 36, 36, 46, 47, 36, 36, 48,
+    36, 36, 36, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 36,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+    61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 63, 63, 63, 64, 65, 66,
+    66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 69, 36, 36, 36, 70, 36,
+    71, 71, 71, 71, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -4769,18 +4863,18 @@ static RE_UINT8 re_block_table_1[] = {
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-    68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+    73, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
     36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+    75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75
 };
 
 static RE_UINT16 re_block_table_2[] = {
@@ -4837,95 +4931,105 @@ static RE_UINT16 re_block_table_2[] = {
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     179, 180, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 185,
     186, 186, 186, 186, 187, 187, 187, 187, 188, 188, 189, 189, 190, 191, 192, 193,
-     26,  26,  26,  26, 194, 195, 195, 196, 197, 198, 199, 200, 201, 202, 202,  26,
-    203, 203, 204, 205, 206, 207, 208, 208, 209, 210, 211, 212,  26,  26,  26,  26,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,  26,  26,  26,  26,
-    214, 214, 215, 216, 217, 218,  26, 219, 220, 221,  26,  26, 222, 223, 223, 223,
-    224, 224, 224, 225, 226,  26, 227, 227, 228, 228, 229, 230, 231, 232,  26,  26,
-    233, 233, 234,  26, 235, 235, 235, 235, 236, 236,  26,  26,  26,  26,  26,  26,
-     26,  26,  26, 237, 238, 238,  26,  26, 239, 240, 241, 242,  26, 243, 244, 245,
-    246, 246, 246, 246, 247, 247, 248, 249, 250, 250, 251, 252, 253, 253, 253, 254,
-    255, 255, 256,  26, 257, 258, 259, 259, 260, 260, 260, 260,  26,  26,  26,  26,
-    261, 261, 261, 261, 262, 262, 262,  26,  26,  26,  26,  26, 263, 263, 263, 263,
-    264, 264, 264, 265, 266, 266, 267,  26, 268, 268,  26,  26,  26,  26,  26,  26,
-    269, 269, 270,  26,  26, 271, 271, 271, 272, 272, 272,  26,  26, 273, 273, 273,
-    274, 274, 275, 276, 276, 277, 278, 278,  26,  26,  26,  26,  26,  26,  26,  26,
-    279, 279, 279, 280, 281, 281,  26,  26, 282, 282, 282, 283, 283, 284,  26,  26,
-     26,  26,  26,  26,  26,  26,  26, 285,  26,  26,  26,  26,  26, 286, 287, 287,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    289, 289, 289, 289, 290, 290, 290, 290, 290, 290, 291,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-    292, 293,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
-    294, 294, 294, 294,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
-    295, 295, 296, 297,  26,  26, 298, 299, 300, 300, 300, 300, 301,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26, 302, 302, 302,  26,  26,  26, 303, 303, 303, 303, 303,  26,  26, 304,
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-    306, 306, 306, 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, 307, 307, 307,
-    307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 309,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    310, 310, 310, 310, 310, 310, 310, 310, 311, 312, 313, 314, 315, 315, 315, 315,
-    315, 315, 315, 315, 315, 315, 315, 315,  26,  26,  26,  26,  26,  26,  26,  26,
-    316, 316, 316, 316, 316, 317,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    318, 318, 318, 318, 318, 318, 318, 318, 319, 319, 319, 319, 319, 319, 319, 319,
-    320, 320, 321,  26,  26,  26,  26, 322, 323, 323, 323, 324,  26,  26,  26,  26,
-    325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
-    325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
-    326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
-    326, 326, 326, 326, 326, 327,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    328, 329,  26,  26,  26,  26,  26,  26, 330, 330, 331,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26, 332, 332,  26,  26,  26,  26,  26,  26,  26,  26,
-    333, 333, 333, 333, 333, 333, 333,  26, 334, 334, 334,  26,  26,  26,  26,  26,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     26,  26,  26, 335, 336, 336,  26,  26, 337, 337, 338,  26,  26,  26,  26,  26,
-    339, 339, 339, 339, 339, 339, 339, 339,  26,  26,  26,  26,  26,  26,  26,  26,
-    340, 341, 342, 342, 342, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344,
-    345, 345, 345, 345, 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, 346, 346,
-    346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
-    347, 347, 348, 349, 350, 350, 350, 350, 351, 351, 351, 351, 352, 352, 352, 352,
-    353, 353, 353, 353, 353, 353, 353, 353, 354, 354, 354, 354, 354, 354, 354, 354,
-    355, 355, 355, 356, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 358, 358,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
-    359, 359, 359, 359, 359, 359, 359,  26, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+    194, 194, 194, 194, 195, 196, 196, 197, 198, 199, 200, 201, 202, 203, 203, 194,
+    204, 204, 205, 206, 207, 208, 209, 209, 210, 211, 212, 213, 214, 214, 194, 194,
+    215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 216, 194, 194,
+    217, 217, 218, 219, 220, 221, 194, 222, 223, 224, 194, 194, 225, 226, 226, 226,
+    227, 227, 227, 228, 229, 194, 230, 230, 231, 231, 232, 233, 234, 235, 194, 194,
+    236, 236, 237, 194, 238, 238, 238, 238, 239, 239, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 240, 241, 241, 194, 194, 242, 243, 244, 245, 246, 247, 248, 249,
+    250, 250, 250, 250, 251, 251, 252, 253, 254, 254, 255, 256, 257, 257, 257, 258,
+    259, 259, 260, 194, 261, 262, 263, 263, 264, 264, 264, 264, 194, 194, 194, 194,
+    265, 265, 265, 265, 266, 266, 266, 194, 194, 194, 194, 194, 267, 267, 267, 267,
+    268, 268, 268, 269, 270, 270, 271, 194, 272, 272, 273, 194, 194, 194, 194, 194,
+    274, 274, 275, 194, 194, 276, 276, 276, 277, 277, 277, 194, 194, 278, 278, 278,
+    279, 279, 280, 281, 281, 282, 283, 283, 194, 194, 194, 194, 194, 194, 194, 194,
+    284, 284, 284, 285, 286, 286, 194, 194, 287, 287, 287, 288, 288, 289, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 290, 194, 194, 194, 194, 194, 291, 292, 292,
+    293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
+    293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
+    294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 296, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 297, 298, 298, 298,
+    299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+    299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+    299, 300, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
+    301, 301, 301, 301, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
+    302, 302, 303, 304, 305, 305, 306, 307, 308, 308, 308, 308, 309, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 310, 310, 310, 194, 194, 194, 311, 311, 311, 311, 311, 194, 194, 312,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 315, 315, 315, 315,
+    315, 315, 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 317,
+    318, 318, 318, 318, 318, 318, 318, 318, 319, 320, 321, 322, 323, 323, 323, 323,
+    323, 323, 323, 323, 323, 323, 323, 323, 194, 194, 194, 194, 194, 194, 194, 194,
+    324, 324, 324, 324, 324, 325, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 326, 326, 326, 326, 326, 326, 327, 194,
+    328, 328, 328, 328, 328, 328, 328, 328, 329, 329, 329, 329, 329, 329, 329, 329,
+    330, 330, 331, 194, 194, 194, 194, 332, 333, 333, 333, 334, 194, 194, 194, 194,
+    335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+    335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+    336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+    336, 336, 336, 336, 336, 337, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 338, 338, 338, 338, 338, 338, 338, 338,
+    339, 340, 194, 194, 194, 194, 194, 194, 341, 341, 342, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 343, 344, 345, 345, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 346,
+    347, 347, 347, 347, 347, 347, 347, 194, 348, 348, 348, 194, 194, 194, 194, 194,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    194, 194, 194, 349, 350, 350, 194, 194, 351, 351, 352, 194, 194, 194, 194, 194,
+    353, 353, 353, 353, 353, 353, 353, 353, 194, 194, 194, 194, 194, 194, 194, 194,
+    354, 355, 356, 356, 356, 357, 357, 357, 358, 358, 358, 358, 358, 358, 358, 358,
+    359, 359, 359, 359, 359, 359, 359, 359, 360, 360, 360, 360, 360, 360, 360, 360,
     360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-    360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 361, 361, 361, 361, 361,
-    361, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
-    362, 362, 362, 362, 362, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-    364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365,
-    366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-    366,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-    367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368,  26,  26,  26,  26,  26,
-    369, 369, 369, 369,  26,  26,  26,  26, 370, 370, 370, 370, 370, 370, 370, 371,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-    372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
-    372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
+    361, 361, 362, 363, 364, 364, 364, 364, 365, 365, 365, 365, 366, 366, 366, 366,
+    367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368,
+    369, 369, 369, 370, 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372,
+    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
+    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
     373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
-    373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373
+    373, 373, 373, 373, 373, 373, 373, 194, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
+    374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 375,
+    375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
+    376, 376, 376, 376, 376, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+    378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379,
+    380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+    380, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
+    381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 194, 194, 194, 194, 194,
+    383, 383, 383, 383, 194, 194, 194, 194, 384, 384, 384, 384, 384, 384, 384, 385,
+    194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
+    386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+    386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+    387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+    387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387
 };
 
 static RE_UINT16 re_block_table_3[] = {
@@ -4980,9 +5084,7 @@ static RE_UINT16 re_block_table_3[] = {
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
      20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
@@ -5041,7 +5143,6 @@ static RE_UINT16 re_block_table_3[] = {
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
-     49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -5053,38 +5154,39 @@ static RE_UINT16 re_block_table_3[] = {
      52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,
      53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
      53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
+     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
      55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
-     61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
-     64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
-     64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
+     63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
+     63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
+     65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
+     65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
+     67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,  69,
@@ -5095,7 +5197,6 @@ static RE_UINT16 re_block_table_3[] = {
      71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
-     72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
@@ -5111,12 +5212,13 @@ static RE_UINT16 re_block_table_3[] = {
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-     77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
      79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
      79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
+     79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
      80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
      80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
@@ -5137,9 +5239,9 @@ static RE_UINT16 re_block_table_3[] = {
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
@@ -5157,12 +5259,12 @@ static RE_UINT16 re_block_table_3[] = {
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
@@ -5171,9 +5273,9 @@ static RE_UINT16 re_block_table_3[] = {
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
@@ -5181,19 +5283,19 @@ static RE_UINT16 re_block_table_3[] = {
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
@@ -5205,14 +5307,14 @@ static RE_UINT16 re_block_table_3[] = {
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
     121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
     123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
@@ -5225,9 +5327,9 @@ static RE_UINT16 re_block_table_3[] = {
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
@@ -5235,12 +5337,12 @@ static RE_UINT16 re_block_table_3[] = {
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
@@ -5255,17 +5357,16 @@ static RE_UINT16 re_block_table_3[] = {
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
@@ -5273,6 +5374,7 @@ static RE_UINT16 re_block_table_3[] = {
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
@@ -5283,25 +5385,25 @@ static RE_UINT16 re_block_table_3[] = {
     153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
     154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
     154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
     157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
     158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
     159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
-    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
     160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
     160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
     161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
     161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
-    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
     163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
-    164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+    163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
+    163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
     164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
     165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
     165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
@@ -5309,35 +5411,36 @@ static RE_UINT16 re_block_table_3[] = {
     166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
-    167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
-    168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
+    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
     170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
     170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+    170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
     171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
     172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
     172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
     173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
     173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
     174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
     174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-    175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+    174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
     175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
     175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
     176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
     176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+    176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
     177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
     177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
-    178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
     179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
@@ -5353,26 +5456,27 @@ static RE_UINT16 re_block_table_3[] = {
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
     183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
-    183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
+    184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
     185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
     185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
     186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
     186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
     188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
     188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-    188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
     189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
     190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
     190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
     191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
     191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+    191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
     192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
     193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
@@ -5393,129 +5497,127 @@ static RE_UINT16 re_block_table_3[] = {
     200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
     201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
     201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
-    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
     202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
     202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
     203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
     204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
     204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
+    204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
     205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
     205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
     206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
     207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
     207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
-    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
     208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
     208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-    208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-    208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
     210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
     210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
+    210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
+    211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
+    211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
+    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
     214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
     214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
-    214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
-    215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
     218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
     220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
     220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
-    220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
     221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
     221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
     222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
     222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
     224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
     224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+    224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
     225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
     225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
     226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
     226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
     227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
     227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
-    227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
     228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
     229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
     229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
-    229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
     231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
     231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
+    231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
     232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
     232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
     233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
     234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
     235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
     236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
     236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
-    236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
     238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
     238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
     239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-    239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-    239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
     240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+    241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
     241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
     242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
     242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
+    242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
     243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
     243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
     244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
     244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
-    245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
+    244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
     245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-    246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-    246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
+    247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
     247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
     248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
     248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
@@ -5532,8 +5634,6 @@ static RE_UINT16 re_block_table_3[] = {
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
     252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
     253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
     254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
     254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
@@ -5541,10 +5641,14 @@ static RE_UINT16 re_block_table_3[] = {
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
     256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
     256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
+    256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
+    257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
+    257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
     258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
     258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
+    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
     259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
@@ -5553,36 +5657,32 @@ static RE_UINT16 re_block_table_3[] = {
     260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
     261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
     261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
-    262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
-    262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
     263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
     263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
-    263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
     264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
     264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
     265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
     266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
     266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
-    268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
     268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
     268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
     270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
     270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
+    271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
     272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
     272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
-    273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
-    273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
@@ -5591,60 +5691,64 @@ static RE_UINT16 re_block_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
     275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
-    275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
     276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
     277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
     277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+    277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
     278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
     279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
-    279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
-    280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
     280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
     280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
     281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
     282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
     283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
-    283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
     284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
     284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+    284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
     285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
     285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
     287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
     287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
     288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
     288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
-    289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
     290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
     290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
     291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+    291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+    292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
     292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
     292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
     293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
     294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
     294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
     296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
     296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
-    296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
     297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
     297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
     298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
@@ -5653,30 +5757,58 @@ static RE_UINT16 re_block_table_3[] = {
     299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
     300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
     300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
+    300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
     302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
     302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-    302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
     303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
     304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
     304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
-    304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
     305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
     306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
     306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
     307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+    307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
+    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
     308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
-    308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308
+    309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
+    309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
+    310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+    310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+    312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
+    312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+    314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+    316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+    317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
+    319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
+    320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
+    320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320
 };
 
 RE_UINT32 re_get_block(RE_UINT32 codepoint) {
@@ -5773,59 +5905,59 @@ static RE_UINT8 re_canonical_combining_class_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   1,   2,   3,   4,   0,   0,   0,   0,
       0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   6,   7,   8,   0,
       9,   0,  10,  11,   0,   0,  12,  13,  14,  15,  16,   0,   0,   0,   0,  17,
-     18,  19,  20,   0,   0,   0,  21,  22,   0,  23,  24,   0,   0,  23,  25,  26,
-      0,  23,  25,   0,   0,  23,  25,   0,   0,  23,  25,   0,   0,   0,  25,   0,
-      0,   0,  27,   0,   0,  23,  25,   0,   0,  28,  25,   0,   0,   0,  29,   0,
-      0,  30,  31,   0,   0,  32,  33,   0,  34,  35,   0,  36,  37,   0,  38,   0,
-      0,  39,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  41,   0,   0,   0,   0,   0,
+     18,  19,  20,   0,  21,   0,  22,  23,   0,  24,  25,   0,   0,  24,  26,  27,
+      0,  24,  26,   0,   0,  24,  26,   0,   0,  24,  26,   0,   0,   0,  26,   0,
+      0,  24,  28,   0,   0,  24,  26,   0,   0,  29,  26,   0,   0,   0,  30,   0,
+      0,  31,  32,   0,   0,  33,  34,   0,  35,  36,   0,  37,  38,   0,  39,   0,
+      0,  40,   0,   0,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  42,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  42,  42,   0,   0,   0,   0,  43,   0,
-      0,   0,   0,   0,   0,  44,   0,   0,   0,  45,   0,   0,   0,   0,   0,   0,
-     46,   0,   0,  47,   0,  48,  49,   0,   0,  50,  51,  52,   0,  53,   0,  54,
-      0,  55,   0,   0,   0,   0,  56,  57,   0,   0,   0,   0,   0,   0,  58,  59,
+      0,   0,   0,   0,   0,   0,   0,   0,  43,  44,   0,   0,   0,   0,  45,   0,
+      0,   0,   0,   0,   0,  46,   0,   0,   0,  47,   0,   0,   0,   0,   0,   0,
+     48,   0,   0,  49,   0,  50,  51,   0,   0,  52,  53,  54,   0,  55,   0,  56,
+      0,  57,   0,   0,   0,   0,  58,  59,   0,   0,   0,   0,   0,   0,  60,  61,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  60,  61,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,  62,  63,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  62,   0,   0,   0,  63,   0,   0,   0,  64,
+      0,   0,   0,   0,   0,   0,   0,  64,   0,   0,   0,  65,   0,   0,   0,  66,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  65,   0,   0,  66,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  67,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  67,  68,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
-     70,  71,   0,   0,   0,   0,  51,  72,   0,  73,  74,   0,   0,  75,  76,   0,
-      0,   0,   0,   0,   0,  77,  78,  79,   0,   0,   0,   0,   0,   0,   0,  25,
+      0,   0,   0,  69,  70,   0,   0,  71,   0,   0,   0,   0,   0,   0,   0,   0,
+     72,  73,   0,   0,   0,   0,  53,  74,   0,  75,  76,   0,   0,  77,  78,   0,
+      0,   0,   0,   0,   0,  79,  80,  81,   0,   0,   0,   0,   0,   0,   0,  26,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  82,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  82,
-      0,   0,   0,   0,   0,   0,   0,  49,   0,   0,   0,  83,   0,   0,   0,   0,
+      0,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  84,
+      0,   0,   0,   0,   0,   0,   0,  85,   0,   0,   0,  86,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     84,  85,   0,   0,   0,   0,   0,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  88,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,
-      0,   0,  70,  63,   0,  90,   0,   0,  91,  92,   0,  75,   0,   0,  93,   0,
-      0,  94,   0,   0,   0,   0,   0,  95,   0,  96,  25,  97,   0,   0,   0,   0,
-      0,   0,  98,   0,   0,   0,  99,   0,   0,   0,   0,   0,   0,  63, 100,   0,
-      0,  63,   0,   0,   0, 101,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
-      0,  90,   0,   0,   0,   0,   0,   0,   0, 103, 104,   0,   0,   0,   0,  76,
-      0,  42, 105,   0, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  63,   0,   0,   0,   0,   0,   0,   0,   0, 107,   0, 108,   0,   0,   0,
+     87,  88,   0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  90,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  91,   0,   0,   0,   0,  92,   0,  93,   0,   0,   0,
+      0,   0,  72,  94,   0,  95,   0,   0,  96,  97,   0,  77,   0,   0,  98,   0,
+      0,  99,   0,   0,   0,   0,   0, 100,   0, 101,  26, 102,   0,   0,   0,   0,
+      0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,  65, 105,   0,
+      0,  65,   0,   0,   0, 106,   0,   0,   0, 107,   0,   0,   0,   0,   0,   0,
+      0,  95,   0,   0,   0,   0,   0,   0,   0, 108, 109,   0,   0,   0,   0,  78,
+      0,  44, 110,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  65,   0,   0,   0,   0,   0,   0,   0,   0, 112,   0, 113,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 109,   0, 110,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 114,   0, 115,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 111,
-      0,   0,   0,   0, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 116,
+      0,   0,   0,   0, 117,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113, 114, 115,   0,   0,
-      0,   0, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    117, 118,   0,   0,   0,   0,   0,   0,   0, 110,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 119,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 120,   0,   0,   0, 121,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118, 119, 120,   0,   0,
+      0,   0, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    122, 123,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 124,   0, 125,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 126,   0,   0,   0, 127,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -5873,7 +6005,9 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  1,  3,  3,  3,  1,  1,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  3,
+     3,  3,  3,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  0,  3,  1,  1,  3,  1,  1,  3,  1,  1,  1,  3,  3,  3,
     31, 32, 33,  1,  1,  1,  3,  1,  1,  3,  3,  1,  1,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -5915,6 +6049,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 39, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,
@@ -5928,7 +6064,7 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  3,  3,  3,  3,  3,  3,  1,  1,  3,  0,  3,
-     3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     3,  1,  1,  3,  3,  1,  1,  1,  1,  1,  3,  1,  1,  1,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -5949,7 +6085,7 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      1,  1,  3,  1,  1,  1,  1,  1,  1,  1,  3,  1,  1,  9, 49,  3,
      5,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  2, 11, 11,  3,  0,  1,  8,  3,  1,  3,
+     1,  1,  1,  1,  1,  1,  2, 11, 11,  3, 50,  1,  8,  3,  1,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  6,  6,  1,  1,  1,  1,  6,  6,  6,  1,  1,  0,  0,  0,
      0,  1,  0,  0,  0,  6,  6,  1,  3,  1,  6,  6,  3,  3,  3,  3,
@@ -5996,6 +6132,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,
+     3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  1,
@@ -6010,6 +6148,10 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  3,  3,  1,  1,  1,  3,  1,  3,  3,  3,
      3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    39,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 39,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 39, 38,  0,  0,  0,  0,  0,
      1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -6068,6 +6210,8 @@ static RE_UINT8 re_canonical_combining_class_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  1,
      1,  1,  0,  1,  1,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -6102,7 +6246,7 @@ static RE_UINT8 re_cased_table_1[] = {
      2, 12,  2, 13,  2,  2, 14,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 15,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2, 16,  2,  2,  2,  2, 17,  2, 18,  2,  2,  2,
+     2,  2,  2,  2,  2, 16,  2, 17,  2,  2, 18,  2, 19,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -6180,29 +6324,31 @@ static RE_UINT8 re_cased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 35,  4, 36,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4, 37, 38,  4,  4,  4,  4, 39,  4, 40,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4, 37,  4, 38,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 41, 25,  0,  0,  0,  0, 42,  4,  4, 43,  4, 44, 45,
+     0,  0,  4, 39, 25,  0,  0,  0,  0, 40,  4,  4, 41,  4, 42, 43,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 46,  5, 23,  4,  4,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 44,  5, 23,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 45,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,
-     4,  4, 48,  0,  0, 46, 49, 50,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  4, 51,  4, 51,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4, 46,  0,  0, 44, 47, 48,  0,  0,  0, 49, 50, 51,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 53,  0,  0,
+     0,  0,  0,  0,  4, 54,  4, 54,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4,  4, 52,  4, 53, 54, 55,  4, 56, 57, 58,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4, 59, 60,  5, 52, 52, 37, 37, 61, 61, 62,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 63,  0,  0,  0,  0,  0,
+     4,  4, 55,  4, 56, 57, 58,  4, 59, 60, 61,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4, 62, 63,  5, 55, 55, 64, 64, 65, 65, 66,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 67,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 68,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 46, 64, 64, 36,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 44, 69, 69, 36,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6216,14 +6362,15 @@ static RE_UINT8 re_cased_table_3[] = {
      63,  63, 255, 170, 255, 255, 255,  63, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  62,
      80, 189,  31, 242, 224,  67,   0,   0,  24,   0,   0,   0,   0,   0, 192, 255,
-    255,   3,   0,   0, 255, 127, 255, 255, 255, 255, 255, 127,  31, 120,  12,   0,
-    191,  32,   0,   0, 255,  63,   0,   0, 252, 255, 255, 255, 255, 120, 255, 255,
-    252,   7,   0,   0,   0,   0,  96,   7,   0,   0, 255, 255, 127,   0, 248,   0,
-    255, 255,   0,   0, 255, 255,  15, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-    255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255, 253, 255, 255, 247,  15,   0,   0,  15,   0,   0,   0,
-    255,   3, 255, 255
+    255,   3,   0,   0,  31, 120,  12,   0, 191,  32,   0,   0, 255,  63,   0,   0,
+    252, 255, 255, 255, 255, 120, 255, 255, 255,   7, 235,   3,   0,   0,  96,   7,
+      0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0, 255, 255,  15, 255,
+    255, 255, 255,  15,   0,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    185, 255, 255, 255, 255, 255, 253,   7, 255, 255,   7,   0, 255, 255, 223, 255,
+    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
+    255, 127, 255, 255, 255, 253, 255, 255, 247,  15,   0,   0, 255, 251, 255, 127,
+     15,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_cased(RE_UINT32 codepoint) {
@@ -6251,10 +6398,10 @@ static RE_UINT8 re_case_ignorable_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9, 12, 13, 14,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 15, 16,
-    17,  9, 18, 19, 20, 21, 22, 23,  9,  9,  9,  9,  9, 24,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25, 26,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 27,
-     9,  9,  9,  9, 28,  9, 29,  9, 30,  9, 31,  9, 32,  9,  9,  9,
+    17, 18, 19, 20, 21, 22, 23, 24,  9,  9,  9,  9,  9, 25,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 26, 27,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 28,  9,  9,  9, 29,
+     9,  9,  9, 30, 31,  9, 32,  9, 33,  9, 34,  9, 35,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -6303,7 +6450,7 @@ static RE_UINT8 re_case_ignorable_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    33,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    36,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -6322,69 +6469,75 @@ static RE_UINT8 re_case_ignorable_table_2[] = {
       0,   0,   0,   0,   0,   5,   6,   6,   6,   6,   6,   7,   8,   0,   0,   0,
       0,   0,   0,   0,   9,   0,   0,   0,   0,   0,  10,   0,  11,  12,  13,  14,
      15,   0,  16,  17,   0,   0,  18,  19,  20,   5,  21,   0,   0,  22,   0,  23,
-     24,  25,  26,   0,   0,   0,  27,   6,  28,  29,  30,  31,  32,  33,  34,  35,
-     36,  33,  37,  38,  36,  33,  39,  40,  32,  41,  42,  43,  44,   0,  45,   0,
-     46,  47,  48,  43,  32,  41,  49,  43,  50,  51,  34,  43,  32,   0,  52,   0,
-      0,  53,  54,   0,   0,  55,  56,   0,  57,  58,   0,  59,  60,  61,  62,   0,
-      0,  63,  64,  65,  66,   0,   0,  33,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0,   0,
+     24,  25,  26,   0,  27,   0,  28,   6,  29,  30,  31,  32,  33,  34,  35,  36,
+     37,  34,  38,  39,  37,  34,  40,  41,  33,  42,  43,  44,  45,   0,  46,   0,
+     47,  48,  49,  44,  33,  42,  50,  44,  51,  52,  35,  44,  33,   0,  53,   0,
+      0,  54,  55,   0,   0,  56,  57,   0,  58,  59,   0,  60,  61,  62,  63,   0,
+      0,  64,  65,  66,  67,   0,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  69,  70,  70,  70,   0,  71,  72,   0,
+     73,   0,  74,   0,  75,  76,   0,   0,   0,  77,   0,   0,   0,   0,   0,   0,
+     78,   0,  79,  80,   0,  81,  82,   0,  83,  84,  45,  85,  51,  86,   0,  87,
+      0,  88,   0,  89,   0,   0,  90,  91,   0,  92,   6,  93,  94,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  95,  96,  97,
+     98,  99,   0, 100, 101,   0,   5, 102,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  68,  68,  69,  69,   0,  70,  71,   0,
-     72,   0,  73,   0,  74,  75,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,
-     77,   0,  78,  79,   0,  80,   3,   0,  81,  82,  44,  83,  50,  84,   0,  85,
-      0,  86,   0,  87,   0,   0,  88,  89,   0,  90,   6,  91,  92,   6,   6,  93,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,  95,  96,
-     97,  98,   0,  99, 100,   0,   5, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0, 105,   0,   0,   0,   6,
+      0, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 108,   0,   0, 109,   0,   0, 110,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    111,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,
+    112,   0,   0, 113, 114,   0,   0, 115,   6,  51,   0,  17, 116,   0,   0, 117,
+    118, 119,   0,   0,   0,   0, 120, 121,   0, 122, 123,   0,  29, 124, 106,  75,
+      0, 125, 126, 127,   0, 128, 129, 130,   0,   0,  94, 131,   0,   0,   0, 132,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 102,   0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   6,
-      0, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 107,   0,   0, 108,   0,   0, 109,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0, 133,  29,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    110,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    134, 135, 136,   0,   0,   0,   0, 137,   1,   2,   3,  17, 138,   0,   0, 139,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 140,
+      0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0, 141,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,   0,   0,   0,   0,   0,
-    111,   0,   0, 112, 113,   0,   0, 114,   6,  50,   0,  17, 115,   0,   0,  57,
-    116, 117,   0,   0,   0,   0, 118, 119,   0, 120, 121,   0,  28, 122, 105,  74,
-      0, 123, 124, 125,   0, 126, 127, 128,   0,   0,  92, 129,   0,   0,   0, 130,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 142, 143,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0, 131,  50,   0,
+    144, 145,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 147,   0,   0,   0,   0,  22,   0, 148,   0,   0,   0,
+     33, 149, 150, 151,  51, 152, 153,   0,  29, 154,   0, 155,  51, 156, 157,   0,
+      0, 158,   0,   0,   0,   0, 137, 159,  51,  52,   3, 160,   0,   0,   0,   0,
+      0, 149, 161,   0,   0, 162, 163,   0,   0,   0,   0,   0,   0, 164, 165,   0,
+      0, 166,   3,   0,   0, 167,   0,   0,  68, 168,   0,   0,   0,   0,   0,   0,
+      0, 169,   0,   0,   0,   0,   0,   0,   0, 170,  74,   0,   0,   0, 171,   3,
+    172, 173, 174,   0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 176,   0,   0, 133, 177,   0,   0,   0, 178, 179,   0, 180,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 181,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 182,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 133, 134,   0,   0,   0,   0, 135,   1,   2,   3,  17,  47,   0,   0, 136,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 137,
-      0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0, 138,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    139, 140,   0,   0,   0,   0,   0,  74,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 141,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 142,   0,   0,   0,   0,  22,   0,   0,   0,   0,   0,
-     32, 143, 144, 135,  50, 145, 146,   0,  28, 147,   0, 148,  50, 149, 150,   0,
-      0, 151,   0,   0,   0,   0, 135, 152,  50,  51,   3, 153,   0,   0,   0,   0,
-      0, 143, 154,   0,   0, 155, 156,   0,   0,   0,   0,   0,   0, 157, 158,   0,
-      0, 159,   3,   0,   0, 160,   0,   0,  67, 161,   0,   0,   0,   0,   0,   0,
-      0, 162,   0,   0,   0,   0,   0,   0,   0, 163,  73,   0,   0,   0, 164,   3,
-    165, 166, 167,   0, 168,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 169,   0,   0, 131, 170,   0,   0,   0, 171, 172,   0, 173,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 174,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 183,   0, 184,  83,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,   0, 185,   0,   0, 186,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 176,   0, 177,  81,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 187,
+      0,   0,   0,   0, 188,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 105,   0, 178,   0,   0, 179,
-      0,   0,   0,   0, 180,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 181, 182, 183,   0,   0,
-      0,   0, 184,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 189, 150,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 190, 191, 192,   0,   0,
+      0,   0, 193,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 185,   6, 186, 187, 188,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    189, 190,   0,   0,   0,   0,   0,   0,   0, 191,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 192,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 177,   0,   0,   0, 193,   0,   0,   0,   0,   0,
+      6, 194,   6, 195, 196, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    198, 199,   0,   0,   0,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 201,   0, 202,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 184,   0,   0,   0, 203,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  92,
-     32,   6,   6,   6,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6, 133,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,
+     33,   6,   6,   6,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6, 135,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -6395,49 +6548,51 @@ static RE_UINT8 re_case_ignorable_table_3[] = {
     255, 255, 255, 191, 182,   0,   0,   0,   0,   0,  16,   0,  63,   0, 255,  23,
       1, 248, 255, 255,   0,   0,   1,   0,   0,   0, 192, 191, 255,  61,   0,   0,
       0, 128,   2,   0, 255,   7,   0,   0, 192, 255,   1,   0,   0, 248,  63,  36,
-      0,   0, 192, 255, 255,  63,   0,   0,   0,   0,   0,  14,   0,   0, 248, 255,
-      7,   0,   0,   0,   0,   0,   0,  20, 254,  33, 254,   0,  12,   0,   2,   0,
-      2,   0,   0,   0,   0,   0,   0,  16,  30,  32,   0,   0,  12,   0,   0,  64,
-      6,   0,   0,   0, 134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,
-     12,   0,   0, 252,   0,   0,   0, 144,  30,  32,  96,   0,  12,   0,   0,   0,
-      4,   0,   0,   0,   1,  32,   0,   0,  17,   0,   0,   0,   0,   0,   0, 192,
-    193,  61,  96,   0,  64,  48,   0,   0,   3,   0,   0,   0,   0,   0,   0,  24,
-      0,   4,  92,   0,   0,   0, 242,   7, 192, 127,   0,   0,   0,   0, 242,  31,
-     64,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,   0,   0, 254, 127,
-    223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,   0, 224, 253, 102,
-      0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,   0,   0,   0, 224,
-      0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,  64, 254, 143,  32,
-      0, 120,   0,   0,   8,   0,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0,
-    135,   1,   4,  14,   0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159,
-    128,   0, 255, 255,  15,   0,   0,   0,   0,   0, 208,  23,   0, 248,  15,   0,
-     60,  59,   0,   0,  64, 163,   3,   0,   0, 240, 207,   0,   0,   0,   0,  63,
-      0,   0, 247, 255, 253,  33,  16,   3,   0, 240, 255, 255, 255,   7,   0,   1,
-      0,   0,   0, 248, 255, 255, 255, 251,   0,   0,   0, 160,   3, 224,   0, 224,
-      0, 224,   0,  96,   0, 248,   0,   3, 144, 124,   0,   0, 223, 255,   2, 128,
-      0,   0, 255,  31, 255, 255,   1,   0,   0,   0,   0,  48,   0, 128,   3,   0,
-      0, 128,   0, 128,   0, 128,   0,   0,  32,   0,   0,   0,   0,  60,  62,   8,
-      0,   0,   0, 126,   0,   0,   0, 112,   0,   0,  32,   0,   0,  16,   0,   0,
-      0, 128, 247, 191,   0,   0,   0, 240,   0,   0,   3,   0,   0,   7,   0,   0,
-     68,   8,   0,   0,  96,  16,   0,   0,  48,   0,   0,   0, 255, 255,   3, 128,
-    192,  63,   0,   0, 128, 255,   3,   0,   0,   0, 200,  51,   0, 126, 102,   0,
-      8,  16,   0,   0,   0,   0,   1,  16,   0,   0, 157, 193,   2,   0,   0,  32,
-      0,  48,  88,   0,   0,  14,   0,   0,  32,  33,   0,   0,   0,   0, 252, 255,
-    255, 255,   8,   0, 255, 255,   0,   0,   0,   0,  36,   0,   0,   0,   0, 128,
-      8,   0,   0,  14,   0,   0,   0,  32,   0,   0, 192,   7, 110, 240,   0,   0,
-      0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,   0,   0,   0, 255,
-    127,   0,   0,   0,   0,   0, 120,  38,   0,  32,   0,   0, 128, 239,  31,   0,
-      0,   0,   8,   0,   0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64,
-    248,   7,   0,   0, 192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 248, 133,
-     13,   0,   0,   0,   0,   0,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,
-      0,  40, 191,   0, 188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   0,  88,
-      0,   0, 240,  12, 254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,
-      0, 252, 127,   3,   0,   0, 127, 191, 255, 252, 109,   0,   0,   0, 126, 180,
-    191,   0,   0,   0,   0,   0, 163,   0,   0,   0,  24,   0,   0,   0, 255,   1,
-      0,   0,  31,   0,   0,   0, 127,   0,   0, 128, 255, 255,  27,   0,   0,   0,
-      0,   0,   0,  96, 128,   3, 248, 255, 231,  15,   0,   0,   0,  60,   0,   0,
-     28,   0,   0,   0, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,   0,   0, 255,  63,
-      0, 240,   0,   0, 240,  15,   0,   0
+      0,   0, 192, 255, 255,  63,   0,   0,   0,   0,   0,  14,   0,   1,   3, 255,
+      0, 254, 255, 255,   7,   0,   0,   0,   0,   0,   0,  20, 254,  33, 254,   0,
+     12,   0,   2,   0,   2,   0,   0,   0,   0,   0,   0,  16,  30,  32,   0,   0,
+     12,   0,   0,  64,   6,   0,   0,   0, 134,  57,   2,   0,   0,   0,  35,   0,
+    190,  33,   0,   0,  12,   0,   0, 252,   0,   0,   0, 144,  30,  32,  96,   0,
+     12,   0,   0,   0,   4,   0,   0,   0,   1,  32,   0,   0,  17,   0,   0,   0,
+      0,   0,   0, 208, 193,  61,  96,   0,  64,  48,   0,   0,   3,   0,   0,   0,
+      0,   0,   0,  24,   0,   4,  92,   0,   0,   0, 242,   7, 192, 127,   0,   0,
+      0,   0, 242,  31,  64,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,
+      0,   0, 254, 127, 223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
+      0, 224, 253, 102,   0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,
+      0,   0,   0, 224,   0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,
+     64, 254, 143,  32,   0, 248,   0,   0,   8,   0,   0,   0,  96,   0,   0,   0,
+      0,   2,   0,   0, 135,   1,   4,  14,   0,   0, 128,   9,   0,   0,  64, 127,
+    229,  31, 248, 159, 128,   0, 255, 255, 255, 127,   0,   0,  15,   0,   0,   0,
+      0,   0, 208,  23,   0, 248,  15,   0,  60,  59,   0,   0,  64, 163,   3,   0,
+      0, 240, 207,   0,   0,   0,   0,  63,   0,   0, 247, 255, 253,  33,  16,   3,
+      0, 240, 255, 255, 255,   7,   0,   1,   0,   0,   0, 248,   0,   0,   0, 160,
+      3, 224,   0, 224,   0, 224,   0,  96,   0, 248,   0,   3, 144, 124,   0,   0,
+    223, 255,   2, 128,   0,   0, 255,  31, 255, 255,   1,   0,   0,   0,   0,  48,
+      0, 128,   3,   0,   0, 128,   0, 128,   0, 128,   0,   0,  32,   0,   0,   0,
+      0,  60,  62,   8,   0,   0,   0, 126,   0,   0,   0, 112,   0,   0,  32,   0,
+      0,  16,   0,   0,   0, 128, 247, 191,   0,   0,   0, 240,   0,   0,   3,   0,
+      0,   7,   0,   0,   0,   0,  28,   3,  68,   8,   0,   0,  96,  16,   0,   0,
+     48,   0,   0,   0, 255, 255,   3, 128, 192,  63,   0,   0, 128, 255,   3,   0,
+      0,   0, 200,  51,   0, 126, 102,   0,   8,  16,   0,   0,   0,   0,   1,  16,
+      0,   0, 157, 193,   2,   0,   0,  32,   0,  48,  88,   0,   0,  14,   0,   0,
+     32,  33,   0,   0,   0,   0, 252, 255, 255, 255,   8,   0, 255, 255,   0,   0,
+      0,   0,  36,   0,   0,   0,   0, 128,   0,   0,   0, 192,   8,   0,   0,  14,
+      0,   0,   0,  32,   0,   0, 192,   7, 191, 255, 255, 255, 255, 255, 253,   7,
+    110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,
+     60,   0,   0,   0,   0,   0,   0, 255, 127,   0,   0,   0,   0,   0,  25, 128,
+      0,   0, 120,  38,   4,  32,   0,   0, 128, 239,  31,   0,   0,   0,   8,   0,
+      0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64, 248,   7,   0,   0,
+    192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 248, 133,  13,   0,   0,   0,
+      0,   0,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,   0,  40, 191,   0,
+    188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   0,  88,   0,   0, 240,  12,
+    254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,   0, 252, 127,   3,
+      0,   0, 127, 191, 255, 252, 109,   0,   0,   0, 126, 180, 191,   0,   0,   0,
+      0,   0, 163,   0,   0,   0,  24,   0,   0,   0, 255,   1,   0,   0,  31,   0,
+      0,   0, 127,   0,   0, 128, 255, 255,  27,   0,   0,   0,   0,   0, 239, 111,
+      0,   0,   0,  96, 255,  63, 255, 255, 128,   3, 248, 255, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 127, 248, 255,  31,  32,   0,
+     16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+      0,   0, 255,  63,   0,  64,   0,   0,   0, 240,   0,   0, 240,  15,   0,   0
 };
 
 RE_UINT32 re_get_case_ignorable(RE_UINT32 codepoint) {
@@ -6546,25 +6701,25 @@ static RE_UINT8 re_changes_when_casefolded_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 41, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    20, 42,  0, 43,  4,  4,  4, 44,  0,  0,  0,  0,  0,  0,  0,  0,
+    20, 21,  0, 42,  4,  4,  4, 43,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 45, 46,  0,  0,  0,  0, 47,  4, 48, 49, 50, 51,  2,
+     0,  0,  4, 44, 45,  0,  0,  0,  0, 46,  4, 47, 48, 49, 50,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 20, 20,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 51, 20, 20,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 53,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 52,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    20, 54,  0,  0,  0, 52, 55,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    20, 53,  0,  0,  0, 51, 54,  0,  0,  0,  0, 55, 56,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 20, 56,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 20, 57,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 20, 57,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 20, 58,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6579,11 +6734,11 @@ static RE_UINT8 re_changes_when_casefolded_table_3[] = {
       0,   0,   0,  63, 255,   1, 255, 255, 255, 255, 255, 231,  85,  85,  21,  76,
       0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,   0, 255,   0,   0,
     255, 255, 156,  31, 156,  31,   0,  15,   0,  31, 156,  31,  64,  12,   4,   0,
-      8,   0,   0,   0,   0,   0, 192, 255, 255, 127,   0,   0, 157, 234,  37, 192,
-      5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,
-     85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85, 244,   2,   0,   0,
-      0,   0, 255, 255, 127,   0, 248,   0, 255,   0,   0,   0, 255, 255,  15,   0,
-    255, 255,   7,   0,   3,   0,   0,   0
+      8,   0,   0,   0,   0,   0, 192, 255, 157, 234,  37, 192,   5,  40,   4,   0,
+     85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,
+     85,  40,  69,  85,  85, 125,  95,  85, 245,   2,  65,   1,   0,   0, 255, 255,
+    127,   0, 248,   0, 255,   0,   0,   0, 255, 255,  15,   0,   0,   0, 255, 247,
+    255, 247,  55,   0, 255, 255,   7,   0,   3,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_casefolded(RE_UINT32 codepoint) {
@@ -6692,25 +6847,25 @@ static RE_UINT8 re_changes_when_casemapped_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 38,  4, 39,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4, 40, 41, 42,  4,  4,  4, 43,  4, 44,  0,  0,  0,  0,  0,  0,
+     4,  4,  4, 40,  4,  4,  4, 41,  4, 42,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4, 45, 46,  0,  0,  0,  0, 47,  4, 48, 49, 40, 50, 51,
+     0,  0,  4, 43, 44,  0,  0,  0,  0, 45,  4, 46, 47, 48, 49, 50,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52, 53,  4,  4,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 51, 52,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 54,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 53,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,
-     4,  4, 55,  0,  0, 53, 56, 46,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4, 54,  0,  0, 52, 55, 44,  0,  0,  0, 56, 57, 58,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  4, 57,  4, 57,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  4, 59,  4, 59,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 58,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  4,  4, 60,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6725,11 +6880,12 @@ static RE_UINT8 re_changes_when_casemapped_table_3[] = {
       0,   0,   0,  34,   0,  64,   0,   0, 255, 255, 255,  79,  63,  63, 255, 170,
     255, 255, 255,  63, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
      64,  12,   4,   0,  24,   0,   0,   0,   0,   0, 192, 255, 255,   3,   0,   0,
-    255, 127, 255, 255, 255, 255, 255, 127, 255, 255, 109, 192,  15, 120,  12,   0,
-    191,  32,   0,   0, 255,  63,   0,   0, 255, 255, 255,  15, 252, 255, 252, 255,
-    255, 255,   0, 254, 255,  56, 223, 255, 252,   7,   0,   0,   0,   0,  96,   0,
-      0,   0,   8,   0,   0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0,
-    255, 255,  15, 255, 255, 255,   7,   0,  15,   0,   0,   0
+    255, 255, 109, 192,  15, 120,  12,   0, 191,  32,   0,   0, 255,  63,   0,   0,
+    255, 255, 255,  15, 252, 255, 252, 255, 255, 255,   0, 254, 255,  56, 223, 255,
+    255, 127, 255, 255, 255,   7, 195,   3,   0,   0,  96,   0,   0,   0,   8,   0,
+      0,   0, 255, 255, 127,   0, 248,   0, 255, 255,   0,   0, 255, 255,  15, 255,
+      0,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255, 255,   7,   0,
+     15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_casemapped(RE_UINT32 codepoint) {
@@ -6838,21 +6994,21 @@ static RE_UINT8 re_changes_when_lowercased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 38, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    18, 39,  0, 40,  3,  3,  3, 41,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 19,  0, 39,  3,  3,  3, 40,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  3, 42, 43,  0,  0,  0,  0, 44,  3, 45, 46, 47, 48, 49,
+     0,  0,  3, 41, 42,  0,  0,  0,  0, 43,  3, 44, 45, 46, 47, 48,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    18, 50,  0,  0,  0, 26, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 49,  0,  0,  0, 26, 50,  0,  0,  0,  0, 51, 52,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 18, 52,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 18, 53,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 18, 53,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 54,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -6866,11 +7022,11 @@ static RE_UINT8 re_changes_when_lowercased_table_3[] = {
     191,  32,   0,   0, 255, 255,  63,   0,   0,   0, 255, 255, 255, 255, 255, 231,
      85,  85,  21,  64,   0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,
       0, 255,   0,   0,   0, 255,   0,  31,   0,  31,   0,  15,   0,  31,   0,  31,
-     64,  12,   4,   0,   8,   0,   0,   0,   0,   0, 192, 255, 255, 127,   0,   0,
-    157, 234,  37, 192,   5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,
-     84,  85,  84,  85,  85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85,
-    244,   2,   0,   0,   0,   0,  32,   0, 255,   0,   0,   0, 255, 255,  15,   0,
-    255, 255,   7,   0,   3,   0,   0,   0
+     64,  12,   4,   0,   8,   0,   0,   0,   0,   0, 192, 255, 157, 234,  37, 192,
+      5,  40,   4,   0,  85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,
+     85,  85,   0, 106,  85,  40,  69,  85,  85, 125,  95,  85, 245,   2,  65,   1,
+      0,   0,  32,   0, 255,   0,   0,   0, 255, 255,  15,   0,   0,   0, 255, 247,
+    255, 247,  55,   0, 255, 255,   7,   0,   3,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_lowercased(RE_UINT32 codepoint) {
@@ -6979,25 +7135,25 @@ static RE_UINT8 re_changes_when_titlecased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 23, 43,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 23, 44, 45,  5,  5,  5, 46, 24, 47,  0,  0,  0,  0,  0,  0,
+     0, 23, 24, 44,  5,  5,  5, 45, 24, 46,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 48, 49,  0,  0,  0,  0, 50,  5, 51, 52, 53, 54, 55,
+     0,  0,  5, 47, 48,  0,  0,  0,  0, 49,  5, 50, 51, 52, 53, 54,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 23, 24, 24,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55, 23, 24, 24,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 56,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 58, 59,  0,  0,  0, 60, 61,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 57, 58,  0,  0,  0, 59, 60,  0,  0,  0,  0, 61, 62,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 24, 62,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 24, 63,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 64,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -7013,12 +7169,12 @@ static RE_UINT8 re_changes_when_titlecased_table_3[] = {
       0,   0,   0,  34,   0,  64,   0,   0, 170, 170, 234,  15, 255,   0,  63,   0,
     255,   0, 255,   0,  63,   0, 255,   0, 255,   0, 255,  63, 255,   0, 223,  64,
     220,   0, 207,   0, 255,   0, 220,   0,  16,   0,   0,   0, 255,   3,   0,   0,
-    255, 255, 255, 127,  98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0,
-    170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148,
-    170,  16, 154, 170, 170,   2, 160, 170,   8,   5,   0,   0,   0,   0,  64,   0,
-      0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
-      0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0, 252, 255, 255, 255,
-     15,   0,   0,   0
+     98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0, 170,  42,   0,   0,
+    170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148, 170,  16, 154, 170,
+    170,   2, 160, 170,  10,   5, 130,   2,   0,   0,  64,   0,   0,   0,   8,   0,
+    127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,   0,   0,   0, 255,
+    255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27, 255, 255,   7,   0,
+    252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_titlecased(RE_UINT32 codepoint) {
@@ -7127,25 +7283,25 @@ static RE_UINT8 re_changes_when_uppercased_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 23, 44,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 23, 45, 46,  5,  5,  5, 47, 24, 48,  0,  0,  0,  0,  0,  0,
+     0, 23, 24, 45,  5,  5,  5, 46, 24, 47,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 49, 50,  0,  0,  0,  0, 51,  5, 52, 53, 54, 55, 56,
+     0,  0,  5, 48, 49,  0,  0,  0,  0, 50,  5, 51, 52, 53, 54, 55,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 57, 23, 24, 24,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 23, 24, 24,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 58,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 59, 60,  0,  0,  0, 61, 62,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 58, 59,  0,  0,  0, 60, 61,  0,  0,  0,  0, 62, 63,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 24, 63,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 24, 64,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -7161,12 +7317,12 @@ static RE_UINT8 re_changes_when_uppercased_table_3[] = {
     255,   1,   0,   0,   0,   0,   0,  34,   0,  64,   0,   0, 170, 170, 234,  15,
     255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 255,   0, 255,   0, 255,  63,
     255, 255, 223,  80, 220,  16, 207,   0, 255,   0, 220,  16,  16,   0,   0,   0,
-    255,   3,   0,   0, 255, 255, 255, 127,  98,  21,  72,   0,  10,  80,   8,   0,
-    191,  32,   0,   0, 170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170,
-    170, 170,   0, 148, 170,  16, 154, 170, 170,   2, 160, 170,   8,   5,   0,   0,
-      0,   0,  64,   0,   0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255,
-    255, 255,   0,   0,   0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-    252, 255, 255, 255,  15,   0,   0,   0
+    255,   3,   0,   0,  98,  21,  72,   0,  10,  80,   8,   0, 191,  32,   0,   0,
+    170,  42,   0,   0, 170, 170, 170,  10, 168, 170, 168, 170, 170, 170,   0, 148,
+    170,  16, 154, 170, 170,   2, 160, 170,  10,   5, 130,   2,   0,   0,  64,   0,
+      0,   0,   8,   0, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
+      0,   0,   0, 255, 255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27,
+    255, 255,   7,   0, 252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_changes_when_uppercased(RE_UINT32 codepoint) {
@@ -7274,11 +7430,11 @@ static RE_UINT8 re_dash_table_2[] = {
      6,  0,  7,  8,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    11, 12,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    13, 14,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 12, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 15,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 15, 16, 17,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
+     0, 16, 17, 18,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
@@ -7287,8 +7443,8 @@ static RE_UINT8 re_dash_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0,   4,   0,   0,   0,   0,   0,  64,
       1,   0,   0,   0,  64,   0,   0,   0,   0,   0,  63,   0,   0,   0,   8,   0,
       0,   0,   0,   8,   0,   8,   0,   0,   0,   0,   4,   0,   0,   0, 128,   4,
-      0,   0,   0,  12,   0,   0,   0,  16,   0,   0,   1,   0,   0,   0,   6,   0,
-      0,   0,   0,   1,   8,   0,   0,   0
+      0,   0,   0,  12,   1,   0,   0,  32,   0,   0,   0,  16,   0,   0,   1,   0,
+      0,   0,   6,   0,   0,   0,   0,   1,   8,   0,   0,   0
 };
 
 RE_UINT32 re_get_dash(RE_UINT32 codepoint) {
@@ -7316,14 +7472,14 @@ static RE_UINT8 re_decomposition_type_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 16,  5,  5,  5,  5,  5,  5,  5,  5, 17, 18,
-     5,  5,  5,  5, 19, 20, 21,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 19,  5,  5, 20, 21, 22,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 22, 23,  5,  5,  5,  5,  5, 24, 25,  5, 26,  5,
+     5,  5,  5,  5, 23, 24,  5,  5,  5,  5,  5, 25, 26,  5, 27,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 27,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 28,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -7421,22 +7577,24 @@ static RE_UINT8 re_decomposition_type_table_2[] = {
     124, 125,  60, 126,  60,  60,  62,   0, 127, 128, 129, 130, 131, 132, 133, 134,
     135, 135, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
     149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 158, 159, 160, 161, 162, 163,
-      0,   0,   0,   0, 164, 165,   0,   0,   0, 166,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 167,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,   0, 169,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 164, 165,   0,   0,
+      0,   0,   0,   0, 166, 167,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 169,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,   0, 171,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 171, 172,   0, 173, 174,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 172,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    175, 175, 176, 175, 177, 178, 179, 175, 180, 181, 182, 175, 175, 175, 175, 175,
-    175, 175, 175, 175, 175, 183, 175, 175, 175, 175, 175, 175, 175, 175, 184, 175,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,   0, 175, 176,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    179, 185, 186, 187, 188, 189,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 190, 191, 192, 193, 194,   0,   0,   0,
-    195, 196, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    177, 177, 178, 177, 179, 180, 181, 177, 182, 183, 184, 177, 177, 177, 177, 177,
+    177, 177, 177, 177, 177, 185, 177, 177, 177, 177, 177, 177, 177, 177, 186, 177,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 198,
+    181, 187, 188, 189, 190, 191,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 192, 193, 194, 195, 196,   0,   0,   0,
+    197, 198, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 200,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      65,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
@@ -7683,7 +7841,7 @@ static RE_UINT8 re_decomposition_type_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  3,  3,  3,  0,  0,  0,  3,  3,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  0,  0,  0,  0,  0,
@@ -7770,6 +7928,10 @@ static RE_UINT8 re_decomposition_type_table_3[] = {
      0,  0, 17, 17, 17, 17, 17, 17,  0,  0, 17, 17, 17,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  0, 17, 17, 17, 17, 17, 17, 17,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  3,  3,  3,  3,  3,  0,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  0,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  5,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,  0,  0,
@@ -7944,25 +8106,25 @@ static RE_UINT8 re_default_ignorable_code_point_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,
      7,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     8,  9,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     7,  8,  0,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    10,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  5,  0, 12,
-     0,  0,  0,  0,  0, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  5,  0, 11,
+     0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
 };
 
 static RE_UINT8 re_default_ignorable_code_point_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0, 128,   0,   0,   0,   0,   0,  16,
-      0,   0,   0, 128,   1,   0,   0,   0,   0,   0,  48,   0,   0, 120,   0,   0,
-      0, 248,   0,   0,   0, 124,   0,   0, 255, 255,   0,   0,  16,   0,   0,   0,
-      0,   0, 255,   1,  15,   0,   0,   0,   0,   0, 248,   7, 255, 255, 255, 255
+      0,   0,   0, 128,   1,   0,   0,   0,   0,   0,  48,   0,   0, 248,   0,   0,
+      0, 124,   0,   0, 255, 255,   0,   0,  16,   0,   0,   0,   0,   0, 255,   1,
+     15,   0,   0,   0,   0,   0, 248,   7, 255, 255, 255, 255
 };
 
 RE_UINT32 re_get_default_ignorable_code_point(RE_UINT32 codepoint) {
@@ -8012,10 +8174,10 @@ static RE_UINT8 re_diacritic_table_1[] = {
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8, 11, 12,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 13, 14,
-    15,  8, 16, 17, 18, 19, 20, 21,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 22, 23,  8,  8,  8,  8,
-     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8, 24,  8,  8,  8, 25,  8, 26,  8,  8,  8,  8,  8,
+    15, 16, 17, 18, 19, 20, 21, 22,  8,  8,  8,  8,  8,  8,  8,  8,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 23, 24,  8,  8,  8,  8,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 25,  8,  8,  8,  8,
+     8,  8,  8, 26, 27,  8,  8,  8, 28,  8, 29,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
@@ -8083,55 +8245,61 @@ static RE_UINT8 re_diacritic_table_2[] = {
       0,   0,   0,   0,   0,   4,   5,   5,   5,   5,   6,   7,   8,   0,   0,   0,
       0,   0,   0,   0,   9,   0,   0,   0,   0,   0,  10,   0,  11,  12,  13,   0,
       0,   0,  14,   0,   0,   0,  15,  16,   0,   4,  17,   0,   0,  18,   0,  19,
-     20,   0,   0,   0,   0,   0,   0,  21,   0,  22,  23,  24,   0,  22,  25,   0,
-      0,  22,  25,   0,   0,  22,  25,  26,   0,  22,  27,   0,   0,   0,  25,   0,
-      0,   0,  25,   0,   0,  22,  25,   0,   0,  28,  25,   0,   0,   0,  29,   0,
-      0,   0,  30,   0,   0,  31,  32,   0,  20,  33,   0,   0,  34,   0,  35,   0,
-      0,  36,   0,  37,  38,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  26,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  41,   0,  42,   0,   0,   0,  43,  44,  45,   0,  46,   0,   0,
-      0,  47,   0,  48,   0,   0,   4,  49,   0,  50,   5,  17,   0,   0,  51,  52,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,  54,  55,
+     20,   0,   0,   0,  21,   0,  22,  23,   0,  24,  25,  26,   0,  24,  27,   0,
+      0,  24,  27,   0,   0,  24,  27,  28,   0,  24,  29,   0,   0,   0,  27,   0,
+      0,  24,  27,   0,   0,  24,  27,   0,   0,  30,  27,   0,   0,   0,  31,   0,
+      0,   0,  32,   0,   0,  33,  34,   0,  20,  35,   0,   0,  36,   0,  37,   0,
+      0,  38,   0,  39,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  28,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  41,   0,   0,   0,   0,   0,  42,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  43,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  44,   0,  45,  46,   0,   0,  47,  48,  49,   0,  50,   0,   0,
+      0,  51,   0,  52,   0,   0,   4,  53,   0,  54,   5,  17,   0,   0,  55,  56,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  57,  58,  59,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  56,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  58,   0,   0,  59,   0,   0,  22,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  61,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  62,   0,   0,  63,   0,   0,  24,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  60,  61,   0,   0,  62,   5,  63,   0,   0,  64,   0,   0,  20,
-      0,   0,   0,   0,   0,   0,  44,  65,   0,  66,  67,   0,   0,  67,   2,  68,
-      0,   0,   0,  69,   0,  15,  70,  71,   0,   0,  72,  73,   0,   0,   0,  74,
+      0,   0,   0,  64,  65,   0,   0,  66,   5,  67,   0,   0,  68,   0,   0,  20,
+      0,   0,   0,   0,   0,   0,  48,  69,   0,  70,  71,   0,   0,  71,   2,  72,
+      0,   0,   0,  73,   0,  15,  74,  75,   0,   0,  76,  77,   0,   0,   0,  78,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  75,   0,   0,   0,   0,   0,   0,   0,   1,   2,  76,  77,   0,   0,  78,
+      0,  79,   0,   0,   0,   0,   0,   0,   0,   1,   2,  80,  81,   0,   0,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  79,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  18,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  81,   0,   0,   0,  82,   0,  67,   0,   0,  83,   0,
-      0,  84,   0,   0,   0,   0,   0,  85,   0,  22,  25,  86,   0,   0,   0,   0,
-      0,   0,  87,   0,   0,   0,  88,   0,   0,   0,   0,   0,   0,  15,   2,   0,
-      0,  15,   0,   0,   0,  47,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,
-      0,  81,   0,   0,   0,   0,   0,   0,   0,  90,  78,   0,   0,   0,   0,   2,
-      0,  43,  91,   0,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  15,   0,   0,   0,   0,   0,   0,   0,   0,  92,   0,  93,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  83,  84,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  85,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  86,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  18,   0,  87,   0,   0,   0,
+      0,   0,  37,  80,   0,  88,   0,   0,   0,  89,   0,  71,   0,   0,  90,   0,
+      0,  91,   0,   0,   0,   0,   0,  92,   0,  24,  27,  93,   0,   0,   0,   0,
+      0,   0,  94,   0,   0,   0,  95,   0,   0,   0,   0,   0,   0,  15,   2,   0,
+      0,  15,   0,   0,   0,  51,   0,   0,   0,  96,   0,   0,   0,   0,   0,   0,
+      0,  88,   0,   0,   0,   0,   0,   0,   0,  97,  82,   0,   0,   0,   0,   2,
+      0,  47,  98,   0,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  15,   0,   0,   0,   0,   0,   0,   0,   0,  99,   0, 100,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  94,   0,  95,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 101,   0, 102,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  96,   0,   0,  62,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  97,  98,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,  66,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  95,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  95,   0,   0,   0, 101,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 104,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   5, 105, 106,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 107, 108, 109,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 110,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 102,   0,   0,   0, 112,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -8141,27 +8309,30 @@ static RE_UINT8 re_diacritic_table_3[] = {
      48,   0,   0,   0, 248,   0,   0,   0,   0,   0,   0,   2,   0,   0, 254, 255,
     251, 255, 255, 191,  22,   0,   0,   0,   0, 248, 135,   1,   0,   0,   0, 128,
      97,  28,   0,   0, 255,   7,   0,   0, 192, 255,   1,   0,   0, 248,  63,   0,
-      0,   0,   0,   3, 248, 255, 255, 127,   0,   0,   0,  16,   0,  32,  30,   0,
-      0,   0,   2,   0,   0,  32,   0,   0,   0,   0,   0, 224,   0,  32,  32,   0,
-      0,   0,   0,  24,   0,   4,   0,   0, 128,  95,   0,   0,   0,   0,   0,   4,
-      0,  31,   0,   0,   0,   0, 160, 194, 220,   0,   0,   0,  64,   0,   0,   0,
-      0,   0, 128,   6,  24,  62,   0,   0, 128, 191,   0,  12,   0, 254,  15,  32,
-      0,   0,   0,  14,   0,   0, 224, 159,   0,   0, 255,  63,   0,   0,  16,   0,
+      0,   0,   0,   3,   0,   0,   0, 255,   0, 254,   7,   0, 248, 255, 255, 127,
+      0,   0,   0,  16,   0,  32,  30,   0,   0,   0,   2,   0,   0,  32,   0,   0,
+      0,   0,   0, 224,   0,  32,  32,   0,   0,   0,   0,  24,   0,   4,   0,   0,
+    128,  95,   0,   0,   0,   0,   0,   4,   0,  31,   0,   0,   0,   0, 160, 194,
+    220,   0,   0,   0,  64,   0,   0,   0,   0,   0, 128,   6,  24,  62,   0,   0,
+    128, 191,   0,  12,   0,   0,  48,   0,   0, 254,  15,  32,   0,   0,   0,  14,
+      0,   0, 224, 159,   0,   0, 255, 127, 254,  15,   0,   0,   0,   0,  16,   0,
      16,   0,   0,   0,   0, 248,  15,   0,   0,  12,   0,   0,   0,   0, 192,   0,
       0,   0,   0,  63, 255,  33, 144,   3,   0, 240, 255, 255, 240, 255,   0,   0,
-      0,   0, 224, 227,   0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,
+      0,   0, 224, 255,   0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,
       0, 128,   3,   0,   0, 128,   0,   0,   0, 252,   0,   0,   0,   0,   0,  30,
       0, 128,   0, 176,   0,   0,   0,  48,   0,   0,   3,   0,   3,   0,   0,   0,
       0,   7,   0,   0, 255, 255,   3,   0,   0, 120,   0,   0,   0,   0,   8,   0,
      32,   0,   0,   0,   0,   0,   0,  56,   7,   0,   0,   0,   0,   0,  64,   0,
       0,   0,   0, 248,   0,  14,   0,   0,   0,  48,   0,   0, 255, 255,   0,   0,
-      0,   0,   1,   0,   0,   0,   0, 192,   8,   0,   0,   0,  96,   0,   0,   0,
-    252,   0,   0,   0,   0,   0,   0,   6,   0,   0,  24,   0,   1,  28,   0,   0,
-      0,   0,  96,   0,   0,   6,   0,   0, 192,  31,  31,   0,  68,   0,   0,   0,
-     12,   0,   0,   0,   0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,
-     52,   0,   0,   0,   0,   0, 128,   0,   0,   0,  31,   0,   0,   0, 127,   0,
-      0, 128, 255, 255, 128, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,
-      0, 240,   0,   0, 112,   7,   0,   0
+      0,   0,   1,   0,   0,   0,   0, 192,   8,   0,   0,   0, 191, 255, 255, 255,
+    255, 255, 253,   7,  96,   0,   0,   0, 252,   0,   0,   0,  60,   0,   0,   0,
+      0,   0,   0,   6,   0,   0,  24,   0,   1,  28,   0,   0,   0,   0,  96,   0,
+      0,   6,   0,   0, 192,  31,  31,   0,  68,   0,   0,   0,  12,   0,   0,   0,
+      0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,  52,   0,   0,   0,
+      0,   0, 128,   0,   0,   0,  31,   0,   0,   0, 127,   0,   0, 128, 255, 255,
+      0,   0, 239, 111, 255,  63, 255, 255, 127,   0,   0,   0, 128, 227,   7, 248,
+    231,  15,   0,   0,   0,  60,   0,   0,   0,  64,   0,   0,   0, 240,   0,   0,
+    112,   7,   0,   0
 };
 
 RE_UINT32 re_get_diacritic(RE_UINT32 codepoint) {
@@ -8191,16 +8362,16 @@ static RE_UINT8 re_east_asian_width_table_1[] = {
      9,  9,  9,  9,  9, 13,  2,  2, 14, 14, 14, 14, 14, 14, 15, 16,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 17,  9,  9,  9,  9,
-     9, 18,  9, 19,  2,  2,  2,  2,  2,  2,  2,  2, 20,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 21, 22, 23,  2,
+     9, 18,  9, 19,  2,  2,  2,  2,  2,  2,  2, 20, 21,  2,  2,  2,
+     2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 22, 23, 24,  2,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -8241,18 +8412,18 @@ static RE_UINT8 re_east_asian_width_table_1[] = {
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-    25,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
+    26,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27
 };
 
 static RE_UINT8 re_east_asian_width_table_2[] = {
@@ -8296,20 +8467,22 @@ static RE_UINT8 re_east_asian_width_table_2[] = {
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  97,
      21,  21,  21,  21,  21,  21,  70,   0,  98,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     21,  21,  21,  21,  21,  21,  21,  21,  73,   0,  99, 100,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21, 101,   0,   0,   0,   0,   0,   0,   0,   0,
-    102,   0,   0,   0,   0,   0, 103,   0, 104, 105,  14, 106, 107, 108,   0,   0,
-    109, 101, 110, 111,   0,   0,   0,   0,  21, 112,  21, 113,  69,  21, 114, 115,
-     21,  73, 116,  21,  21,  21,  21, 117,  21, 118, 119, 120, 121, 102,   0, 122,
-     21,  21, 123,   0,  21,  21, 124, 125,   0,   0,   0,   0,   0,   0,   0, 126,
-      0,   0,   0,   0,   0,   0,   0,   0, 127, 128, 129, 130,  21,  21, 131,  21,
-      0,   0,   0, 132, 133, 134, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  99,
+     21,  21,  21,  21,  21,  21,  21,  21,  21, 100, 101, 102,  21,  21,  21,  21,
+     21,  21,  21,  21,  21,  21,  21, 103,   0,   0,   0,   0,   0,   0,   0,   0,
+    104,   0,   0,   0,   0,   0, 105,   0, 106, 107,  14, 108, 109, 110,   0,   0,
+    111, 103, 112, 113,   0,   0,   0,   0,  21, 114,  21, 115,  69,  21, 116, 117,
+     21,  73, 118,  21,  21,  21,  21, 119,  21, 120, 121, 122, 123, 104,   0, 124,
+     21,  21, 125,   0,  21,  21, 126, 127,   0,   0,   0,   0,   0,   0,   0, 128,
+      0,   0,   0,   0,   0,   0,   0,   0, 129, 130, 131,  21,  21,  21,  21,  21,
+      0,   0,   0, 132, 133, 134, 135, 136,   0,   0,   0,   0,   0,   0,   0,   0,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21, 118,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21, 120,
       0,   0,   0,   0,   0,   0,   0,   0,  14,  14,  14,  14,  14,  14,  14,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,
-     14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14, 136
+     14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14,  14, 137
 };
 
 static RE_UINT8 re_east_asian_width_table_3[] = {
@@ -8512,6 +8685,10 @@ static RE_UINT8 re_east_asian_width_table_3[] = {
     3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0,
+    3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -8562,28 +8739,26 @@ static RE_UINT8 re_east_asian_width_table_3[] = {
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
-    3, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0,
     0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
     3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0
@@ -8695,8 +8870,8 @@ static RE_UINT8 re_emoji_table_2[] = {
     39, 40, 41,  0,  0,  0,  0,  0, 42, 43, 42, 42, 44, 42, 42, 45,
     42, 42, 42, 42, 42, 42, 42, 46, 42, 47, 48, 49, 50, 51, 52, 53,
     42, 42, 54,  0, 42, 42, 55, 56,  0,  0,  0,  0,  0,  0,  0, 57,
-     0,  0,  0,  0,  0,  0,  0,  0, 58, 59, 60, 61, 42, 42, 62, 42,
-     0,  0,  0, 63, 64, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0, 58, 59, 60, 42, 42, 42, 42, 42,
+     0,  0,  0, 61, 62, 63, 64, 65,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_table_3[] = {
@@ -8713,10 +8888,10 @@ static RE_UINT8 re_emoji_table_3[] = {
       0, 128, 252,   7,   0,   0,   3,   0, 255, 255, 255, 255, 243, 255, 255, 255,
     255, 255, 207, 206, 255, 255, 185, 255, 255, 255, 255, 191, 255, 255, 255,  63,
       0, 126, 255, 255, 255, 128, 249,   7, 128,  60,  97,   0,  48,   1,   6,  16,
-     28,   0,  14, 112,  10, 129,   8, 252, 255, 255,   0,   0,  63, 248, 231,   0,
-     63,  26, 249,  31, 255,  15,   0,   0,   0, 240, 255, 255, 255, 255, 255, 247,
-    191, 255, 255, 255, 255, 255, 255, 253, 255, 239, 255, 255,   0,   0,  31,   7,
-    127,   0, 255, 255, 255,   1, 127,   0,   7,   0, 127,   0
+     28,   0,  14, 112,  10, 129,   8, 252, 255, 255,   0,   0,  63, 248, 231, 224,
+     63,  26, 249,  31, 255,  15,   1,   0,   0, 240, 255, 255, 255, 255, 255, 247,
+    191, 255, 255, 255,   0,   0,  31,  31, 127,   0, 255, 255, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji(RE_UINT32 codepoint) {
@@ -8942,7 +9117,7 @@ static RE_UINT8 re_emoji_modifier_base_table_2[] = {
      0,  0,  6,  7,  8,  9,  0,  0,  0,  0,  0, 10, 11,  0,  0,  0,
      0,  0, 12,  0,  0, 13, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 15, 16,  0, 17,  0, 18, 19,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0, 20, 21,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_modifier_base_table_3[] = {
@@ -8950,7 +9125,8 @@ static RE_UINT8 re_emoji_modifier_base_table_3[] = {
      32,   0,   0,   0, 156,  28,   0,   0, 204, 255,   1,   0, 192, 255, 255,  17,
     238, 128,   2,   0,   0,   4,   0,   0,   0,   0,  48,   4,   0,   0,  97,   0,
     224, 248,   0,   0,   8,   0, 112,   0,   1,  16,   0,   0,   0, 144,   0, 255,
-     64,   0, 255, 115,   0,   0, 128,   0,   0,   0,  96,  11,   0, 224, 254,  63
+     64,   0, 255, 115,   0,   0, 128,   0,   0,   0,  96,  11,   0, 224, 254,  63,
+     56,   0,   0,   0,   0,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji_modifier_base(RE_UINT32 codepoint) {
@@ -9057,8 +9233,8 @@ static RE_UINT8 re_emoji_presentation_table_2[] = {
     22, 23, 24,  0,  0,  0,  0,  0, 25, 26, 25, 27, 28, 25, 29, 30,
     25, 31, 32, 25, 25, 25, 25, 33, 25, 34, 35, 36, 37, 18,  0, 38,
     25, 25, 39,  0, 25, 25, 40, 41,  0,  0,  0,  0,  0,  0,  0, 42,
-     0,  0,  0,  0,  0,  0,  0,  0, 43, 44, 45, 46, 25, 25, 47, 25,
-     0,  0,  0, 48, 49, 50, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0, 43, 44, 45, 25, 25, 25, 25, 25,
+     0,  0,  0, 46, 47, 48, 49, 50,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_emoji_presentation_table_3[] = {
@@ -9072,9 +9248,9 @@ static RE_UINT8 re_emoji_presentation_table_3[] = {
     255, 255,  15,   0, 255, 135,  15,   0, 255, 255,  17, 255, 255, 255, 255, 127,
     253, 255, 255, 255, 255, 255, 255, 159, 255, 255, 255,  63,   0, 120, 255, 255,
     255,   0,   0,   4,   0,   0,  96,   0,   0,   0,   0, 248, 255, 255,   0,   0,
-     63,  16, 231,   0,   0,  24, 240,  31, 255,  15,   0,   0,   0, 240, 255, 255,
-    255, 255, 255, 247, 191, 255, 255, 255, 255, 255, 255, 253, 255, 239, 255, 255,
-      0,   0,  31,   7, 127,   0, 255, 255, 255,   1, 127,   0,   7,   0, 127,   0
+     63,  16, 231, 224,   0,  24, 240,  31, 255,  15,   1,   0,   0, 240, 255, 255,
+    255, 255, 255, 247, 191, 255, 255, 255,   0,   0,  31,  31, 127,   0, 255, 255,
+    255,  31, 255,   7,  63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_emoji_presentation(RE_UINT32 codepoint) {
@@ -9232,10 +9408,10 @@ static RE_UINT8 re_extender_table_1[] = {
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  8,  9, 10,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 11,
-     4,  4,  4,  4, 12, 13, 14,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 15, 16,  4,  4,  4,  4,
+     4, 12,  4,  4, 13, 14, 15,  4,  4,  4,  4,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 16, 17,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4, 17,  4, 18,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4, 18,  4, 19,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
@@ -9324,18 +9500,20 @@ static RE_UINT8 re_extender_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 19,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 23,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 25,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 27,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -9345,8 +9523,8 @@ static RE_UINT8 re_extender_table_3[] = {
       8,   0,   0,   0, 128,   0,   0,   0,   0,   0,  64,   0,   0,   0,   0,   8,
      32,   0,   0,   0,   0,   0,  62,   0,   0,   0,   0,  96,   0,   0,   0, 112,
       0,  16,   0,   0,   0, 128,   0,   0,   0,   0,   1,   0,   0,   0,   0,  32,
-      0,   0,  24,   0, 192,   1,   0,   0,   0,   0,   0,   1,  12,   0,   0,   0,
-     11,   0,   0,   0,   0,   0,   0,  48, 112,   0,   0,   0
+      0,   0,  24,   0,   6,   0,   0,   0, 192,   1,   0,   0,   0,   0,   0,   1,
+     12,   0,   0,   0,  11,   0,   0,   0,   0,   0,   0,  48, 112,   0,   0,   0
 };
 
 RE_UINT32 re_get_extender(RE_UINT32 codepoint) {
@@ -9372,72 +9550,72 @@ RE_UINT32 re_get_extender(RE_UINT32 codepoint) {
 static RE_UINT8 re_general_category_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 19, 20, 20, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34, 13, 35, 34, 34,
-    34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 37, 38, 13, 13, 13, 13,
-    13, 39, 13, 40, 34, 34, 34, 34, 34, 34, 34, 34, 41, 34, 34, 42,
-    34, 34, 34, 34, 43, 44, 45, 34, 46, 34, 47, 48, 49, 50, 51, 34,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
-    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 34, 34, 34, 57, 34,
-    13, 13, 13, 13, 58, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    59, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 60,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 60
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 18, 19, 19, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 13, 35, 33, 33,
+    33, 36, 33, 33, 33, 33, 33, 33, 33, 33, 37, 38, 13, 13, 13, 13,
+    13, 39, 13, 40, 33, 33, 33, 33, 33, 33, 33, 41, 42, 33, 33, 43,
+    33, 33, 33, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 33,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 56, 13, 13, 13, 57, 58, 13,
+    13, 13, 13, 59, 13, 13, 13, 13, 13, 13, 60, 33, 33, 33, 61, 33,
+    13, 13, 13, 13, 62, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    63, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 64,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 64
 };
 
 static RE_UINT16 re_general_category_table_2[] = {
@@ -9445,124 +9623,132 @@ static RE_UINT16 re_general_category_table_2[] = {
       7,  15,  16,  17,  18,  19,  20,  21,  22,  22,  22,  23,  24,  25,  26,  27,
      28,  29,  17,   7,  30,   7,  31,   7,   7,  32,  33,  17,  34,  35,  36,  37,
      38,  39,  40,  41,  39,  39,  42,  43,  44,  45,  46,  39,  39,  47,  48,  49,
-     50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,  97,
-     98,  99, 100,  54, 101, 102, 103,  54, 104, 105, 106, 107, 108, 109, 110,  54,
+     50,  51,  52,  53,  54,  39,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,
+     65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,
+     81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,
+     97,  98,  99, 100, 101, 102, 103, 100, 104, 105, 106, 107, 108, 109, 110, 100,
      39, 111, 112, 113, 114,  28, 115, 116,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39, 117,  39, 118, 119, 120,  39, 121,  39, 122, 123, 124,  28,  28, 125,
     126,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39, 127, 128,  39,  39, 129, 130, 131, 132, 133,  39, 134, 135, 136,
     137,  39, 138, 139, 140, 141,  39, 142, 143, 144, 145, 146,  39, 147, 148, 149,
-    150,  39, 151, 152, 153, 154, 155,  54, 156, 157, 158, 159, 160, 161,  39, 162,
-     39, 163, 164, 165, 166, 167, 168, 169,  17, 170, 171, 172, 173, 171,  22, 174,
-      7,   7,   7,   7, 175,   7,   7,   7, 176, 177, 178, 179, 180, 181, 182, 183,
-    184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
-    200, 200, 200, 200, 200, 200, 200, 200, 201, 202, 149, 203, 204, 205, 206, 207,
-    149, 208, 209, 210, 211, 149, 149, 212, 149, 149, 149, 149, 149, 213, 214, 215,
-    149, 149, 149, 216, 149, 149, 149, 149, 149, 149, 149, 217, 218, 149, 219, 220,
-    149, 149, 149, 149, 149, 149, 149, 149, 200, 200, 200, 200, 221, 200, 222, 223,
-    200, 200, 200, 200, 200, 200, 200, 200, 149, 224, 225, 226, 227, 149, 149, 149,
-     28, 228, 229, 230,   7,   7,   7, 231,  17, 232,  39, 233, 234, 235, 235,  22,
-    236, 237, 238,  54, 239, 149, 149, 240, 149, 149, 149, 149, 149, 149, 241, 242,
-    243, 244,  98,  39, 245, 126,  39, 246, 247, 248,  39,  39, 249,  39, 149, 250,
-    251, 252, 253, 149, 252, 254, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    150,  39, 151, 152, 153, 154, 155, 100, 156, 157, 158, 159, 160, 161,  39, 162,
+     39, 163, 164, 165, 166, 167, 168, 169,  17, 170, 171, 172, 173, 171,  22,  22,
+      7,   7,   7,   7, 174,   7,   7,   7, 175, 176, 177, 178, 179, 180, 181, 182,
+    183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+    199, 199, 199, 199, 199, 199, 199, 199, 200, 201, 149, 202, 203, 204, 205, 206,
+    149, 207, 208, 209, 210, 149, 149, 211, 149, 149, 149, 149, 149, 212, 213, 214,
+    149, 149, 149, 215, 149, 149, 149, 149, 149, 149, 149, 216, 217, 149, 218, 219,
+    149, 149, 149, 149, 149, 149, 149, 149, 199, 199, 199, 199, 220, 199, 221, 222,
+    199, 199, 199, 199, 199, 199, 199, 199, 149, 223, 224, 225, 226, 149, 149, 149,
+     28,  29,  17, 227,   7,   7,   7, 228,  17, 229,  39, 230, 231, 232, 232,  22,
+    233, 234, 235, 100, 236, 149, 149, 237, 149, 149, 149, 149, 149, 149, 238, 239,
+    240, 241,  97,  39, 242, 126,  39, 243, 244, 245,  39,  39, 246,  39, 149, 247,
+    248, 249, 250, 149, 249, 251, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 149, 149,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+    252,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 255,
-    256,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39, 257, 149, 258, 165,  39,  39,  39,  39,  39,  39,  39,  39,
-    259, 260,   7, 261, 262,  39,  39, 263, 264, 265,   7, 266, 267, 268, 269, 270,
-    271, 272,  39, 273, 274, 275, 276, 277,  48, 278, 279, 255,  58, 280, 281, 282,
-     39, 283, 284, 285,  39, 286, 287, 288, 289, 290, 291, 292,  17,  17,  39, 293,
+     39,  39,  39,  39, 253, 149, 254, 165,  39,  39,  39,  39,  39,  39,  39,  39,
+    255, 256,   7, 257, 258,  39,  39, 259, 260, 261,   7, 262, 263, 264, 265, 266,
+    267, 268,  39, 269, 270, 271, 272, 273,  48, 274, 275, 276,  57, 277, 278, 279,
+     39, 280, 281, 282,  39, 283, 284, 285, 286, 287, 288, 289,  17,  17,  39, 290,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 294, 295, 296,
-    297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
-    297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 299,  39,  39, 300,  54, 301, 302, 303,  39,  39, 304, 305,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 306, 307,  39, 308,  39, 309, 310,
-    311, 312, 313, 314,  39,  39,  39, 315, 316,   2, 317, 318, 319, 143, 320, 321,
-    322, 323, 324,  54,  39,  39,  39, 325, 326, 327, 195, 328, 329, 330, 331, 332,
-     54,  54,  54,  54, 255,  39, 333, 334,  39, 335, 336, 337, 338,  39, 339,  54,
-     28, 340, 341,  39, 342, 343, 344, 345,  39, 346,  39, 347,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 234, 142, 309,  54,  54,  54,  54,
-    348, 349, 350, 351, 143, 352,  54, 353, 354, 355,  54,  54,  39, 356, 357, 210,
-    358, 359, 360, 361, 362,  54, 363, 364,  39, 365, 366, 367, 368, 369,  54,  54,
-     39,  39, 370,  54,  28, 371,  17, 372,  39, 373,  54,  54,  54,  54,  54,  54,
-     54,  54,  54, 374,  39, 375,  54,  54, 362, 376, 377,  54,  54, 307, 378, 234,
-    379, 380, 381, 382, 160, 383, 384, 385, 386, 387, 388, 389, 160, 390, 391, 392,
-    393, 394,  54,  54, 395, 396, 397, 398, 399, 400, 401, 402,  54,  54,  54,  54,
-     39, 403, 404, 405,  39, 406, 407,  54,  54,  54,  54,  54,  39, 408, 409,  54,
-     39, 410, 411, 412,  39, 413, 414,  54, 122, 415,  54,  54,  54,  54,  54,  54,
-     39, 416,  54,  54,  54,  28,  17, 417, 418, 419, 420,  54,  54, 421, 422, 423,
-    424, 425, 426,  39, 427, 428,  39, 139,  54,  54,  54,  54,  54,  54,  54,  54,
-    429, 430, 431, 432, 433, 434,  54,  54, 435, 436, 437, 438, 439, 414,  54,  54,
-     54,  54,  54,  54,  54,  54,  54, 440,  54,  54,  54,  54,  54, 441, 442, 443,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 291, 292, 293,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39, 296,  39,  39, 297, 100, 298, 299, 300,  39,  39, 301, 302,  39,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 303, 304,  39, 305,  39, 306, 307,
+    308, 309, 310, 311,  39,  39,  39, 312, 313,   2, 314, 315, 316, 143, 317, 318,
+    319, 320, 321, 100,  39,  39,  39, 322, 323, 324, 194, 325, 326, 327, 328, 329,
+    100, 100, 100, 100, 276,  39, 330, 331,  39, 332, 333, 334, 335,  39, 336, 100,
+     28, 337, 338,  39, 339, 340, 341, 342,  39, 343,  39, 344, 345, 346, 100, 100,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 231, 142, 347, 348, 349, 100, 100,
+    350, 351, 352, 353, 143, 354, 100, 355, 356, 357, 100, 100,  39, 358, 359, 209,
+    360, 361, 362, 363, 364, 100, 365, 366,  39, 367, 368, 369, 370, 371, 100, 100,
+     39,  39, 372, 100,  28, 373,  17, 374,  39, 375, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 376,  39, 377, 100, 100, 364, 378, 379, 380, 381, 380, 382, 231,
+    383, 384, 385, 386, 160, 387, 388, 389, 390, 391, 392, 393, 160, 394, 395, 396,
+    397, 398, 100, 100, 399, 400, 401, 402, 403, 404, 405, 406, 100, 100, 100, 100,
+     39, 407, 408, 409,  39, 410, 411, 100, 100, 100, 100, 100,  39, 412, 413, 100,
+     39, 414, 415, 416,  39, 417, 418, 100, 122, 419, 420, 100, 100, 100, 100, 100,
+     39, 421, 100, 100, 100,  28,  17, 422, 423, 424, 425, 100, 100, 426, 427, 428,
+    429, 430, 431,  39, 432, 433,  39, 139, 100, 100, 100, 100, 100, 100, 100, 100,
+    434, 435, 436, 437, 438, 439, 100, 100, 440, 441, 442, 443, 444, 418, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 445, 100, 100, 100, 100, 100, 446, 447, 448,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 300,  54,  54,  54,
-    195, 195, 195, 444,  39,  39,  39,  39,  39,  39, 445,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     39, 446,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 297, 100, 100, 100,
+    194, 194, 194, 449,  39,  39,  39,  39,  39,  39, 450, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 380,  39,  39, 451,
+     39, 452, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39, 447,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     39,  39, 420, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39, 139, 143, 448,  54,  54, 307, 449,  39, 450, 451, 452, 453,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  28,  17, 454,  54,  54,  54,  39,  39, 455, 456, 457,  54,  54, 458,
+     39, 139, 143, 453,  39, 143, 454, 455,  39, 456, 457, 458, 459, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100,  28,  17, 460, 100, 100, 100,  39,  39, 461, 462, 463, 100, 100, 464,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 459,
-     39,  39,  39,  39,  39,  39, 142,  54, 370,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39,  39,  39, 143,  54, 460, 461,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39, 296,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39, 462, 463, 464,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    149, 149, 149, 149, 149, 149, 149, 241, 149, 465, 149, 466, 467, 468, 149, 469,
-    149, 149, 470,  54,  54,  54,  54, 471, 149, 149, 472, 473,  54,  54,  54,  54,
-    474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 474, 475, 487,
-    477, 488, 489, 490, 481, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 465,
+     39,  39,  39,  39,  39,  39, 142, 100, 372, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 466,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 467, 468, 469,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39, 293, 100, 100, 100, 100, 100, 100, 100, 100,
+     39,  39,  39, 470, 471, 472, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  22, 473, 474, 149, 149, 149, 475, 100,
+    149, 149, 149, 149, 149, 149, 149, 238, 149, 476, 149, 477, 478, 479, 149, 208,
+    149, 149, 480, 100, 100, 100, 100, 481, 149, 149, 482, 483, 100, 100, 100, 100,
+    484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 484, 485, 497,
+    487, 498, 499, 500, 491, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-     22, 502,  22, 503, 504, 505,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    506, 507,  54,  54,  54,  54,  54,  54,  39, 508, 509,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  39, 510,  54,  54,  54,  54,  54,  54,  54,  54,
-     39,  39,  39,  39,  39,  39, 511,  54,  28, 512, 513,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54, 514, 210, 515,  54,  54, 516, 517,  54,  54,  54,  54,  54,  54,
-    518, 519, 520, 521, 522, 523,  54, 524,  54,  54,  54,  54,  54,  54,  54,  54,
-    149, 525, 149, 149, 240, 526, 527, 241, 528, 149, 149, 149, 149, 529,  54, 530,
-    531, 532, 533, 534,  54,  54,  54,  54, 149, 149, 149, 149, 149, 149, 149, 535,
+     22, 512,  22, 513, 514, 515, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 516, 100, 100, 100, 100, 100, 100, 100,
+    517, 518, 100, 100, 100, 100, 100, 100,  39, 519, 520, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 380, 521,  39, 522, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 523,
+     39,  39,  39,  39,  39,  39, 524, 100,  28, 525, 526, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 527, 209, 528, 100, 100, 529, 530, 100, 100, 100, 100, 100, 100,
+    531, 532, 533, 534, 535, 536, 100, 537, 100, 100, 100, 100, 100, 100, 100, 100,
+    149, 538, 149, 149, 237, 539, 540, 238, 541, 149, 149, 149, 149, 542, 100, 543,
+    544, 545, 546, 547, 100, 100, 100, 100, 149, 149, 149, 149, 149, 149, 149, 548,
     149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 536, 537, 149, 149, 149, 240, 149, 149, 538, 539,
-    525, 149, 540, 149, 541, 542,  54,  54, 149, 149, 149, 543, 149, 149, 544, 149,
-    149, 149, 240, 545, 546, 547, 548,  54, 149, 149, 149, 149, 549, 149, 209, 550,
+    149, 149, 149, 149, 149, 149, 549, 550, 149, 149, 149, 237, 149, 149, 551, 552,
+    538, 149, 553, 149, 554, 555, 100, 100, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 237, 556, 557, 558, 559, 560, 149, 149, 149, 149, 561, 149, 208, 562,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39, 342,  54,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39, 100,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39, 551,  39,  39,  39,  39,  39,  39,
-    342,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39,  39,  39,  39,  39, 139,  39,  39,  39,  39,  39,  39,
+    339,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39, 552,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     39,  39,  39,  39,  39, 563,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 553,
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 564,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    342,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+    339, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  53,  54,  54,  54,  54,  54,
-    554, 555, 555, 555,  54,  54,  54,  54,  22,  22,  22,  22,  22,  22,  22, 556,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 557
+     39,  39,  39,  39,  39,  39,  39,  39,  39,  39, 565, 100, 100, 100, 100, 100,
+    566, 567, 567, 567, 100, 100, 100, 100,  22,  22,  22,  22,  22,  22,  22, 568,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+    295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 569
 };
 
 static RE_UINT8 re_general_category_table_3[] = {
@@ -9643,7 +9829,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0, 15,
     15, 15, 15,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17,  7,  7,  7,  3,  3,  4,  3,  3, 14, 14,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  3, 17,  0,  3,  3,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  3, 17,  3,  3,  3,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22,
@@ -9673,13 +9859,11 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22,  0,  0,  3,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 11, 15, 15, 15, 15, 15, 15,  0,
+    17, 17,  0,  0,  0,  0,  0,  0, 22, 22, 22, 22, 22, 22, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 21, 22, 22, 22, 22, 22, 22,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -9733,9 +9917,9 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 24, 24, 24, 22, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
     15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0, 15, 22, 22,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 22, 15, 22, 22,
     22, 24, 24, 24, 24,  0, 22, 22, 22,  0, 22, 22, 22, 22,  0,  0,
-     0,  0,  0,  0,  0, 22, 22,  0, 15, 15, 15,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 22, 22,  0, 15, 15, 15,  0,  0, 15,  0,  0,
     15, 15, 22, 22,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  3, 18, 18, 18, 18, 18, 18, 18, 14,
     15, 22, 24, 24,  3, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9743,7 +9927,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0, 15, 15, 15, 15, 15,  0,  0, 22, 15, 24, 22,
     24, 24, 24, 24, 24,  0, 22, 24, 24,  0, 24, 24, 22, 22,  0,  0,
-     0,  0,  0,  0,  0, 24, 24,  0,  0,  0,  0,  0,  0,  0, 15,  0,
+     0,  0,  0,  0,  0, 24, 24,  0,  0,  0,  0,  0,  0, 15, 15,  0,
     15, 15, 22, 22,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9768,7 +9952,9 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 22, 15, 15, 22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  4,
     15, 15, 15, 15, 15, 15, 21, 22, 22, 22, 22, 22, 22, 22, 22,  3,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  3,  3,  0,  0,  0,  0,
-     0, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0, 15,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 22, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22, 15,  0,  0,
@@ -9826,10 +10012,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  5,  6,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  3,  3,  3, 25, 25,
     25, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
-    15, 15, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 22, 22, 22,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 22, 22, 22, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 22, 22, 24,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15,
@@ -9840,7 +10026,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22,  3,  3,  3, 21,  3,  3,  3,  4, 15, 22,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18,  0,  0,  0,  0,  0,  0,
-     3,  3,  3,  3,  3,  3,  8,  3,  3,  3,  3, 22, 22, 22, 17,  0,
+     3,  3,  3,  3,  3,  3,  8,  3,  3,  3,  3, 22, 22, 22, 17, 22,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -9876,16 +10062,16 @@ static RE_UINT8 re_general_category_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3, 21,  3,  3,  3,  3,  3,  3,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 22,
-    22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 22, 24, 22, 22, 22, 22, 22, 24, 22, 24, 24, 24,
-    24, 24, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,
+    24, 24, 22, 24, 24, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  3,  3,  3,  3,  3,  3,
      3, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 22, 22, 22, 22,
-    22, 22, 22, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
+    22, 22, 22, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14,  3,  3,  0,
     22, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 24, 22, 22, 22, 22, 24, 24, 22, 22, 24, 22, 22, 22, 15, 15,
@@ -9914,8 +10100,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 21, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 21, 21, 21, 21, 21,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-    22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0, 22, 22, 22, 22, 22,
     10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
     10, 13, 10, 13, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -9946,7 +10130,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,  0,  0,  0,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23,
     23, 22, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -10022,10 +10206,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     10, 13, 10, 10, 10, 13, 13, 10, 13, 10, 13, 10, 13, 10, 10, 10,
     10, 13, 10, 13, 13, 10, 13, 13, 13, 13, 13, 13, 21, 21, 10, 10,
     10, 13, 10, 13, 13, 14, 14, 14, 14, 14, 14, 10, 13, 10, 13, 22,
@@ -10043,7 +10223,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     16, 19,  5,  6,  5,  6,  5,  6,  5,  6,  3,  3,  3,  3,  3, 21,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  8,  8,  3,  3,  3,  3,
      8,  3,  5,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-    14, 14,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14,  3,  3,  3,  5,  6,  5,  6,  5,  6,  5,  6,  8,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -10077,8 +10257,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 21, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -10104,10 +10282,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     10, 13, 10, 13, 13, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
     10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 10, 10, 10, 10, 13,
     10, 10, 10, 10, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13,
-     0,  0, 10, 13, 10, 10, 10, 10, 13, 10, 13,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 13, 10, 13, 10, 10, 10, 10, 13, 10, 13,  0,  0,  0,  0,  0,
+    10, 13,  0, 13,  0, 13, 10, 13, 10, 13,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 10, 13, 15, 21, 21, 13, 15, 15, 15, 15, 15,
+     0,  0, 21, 21, 21, 10, 13, 15, 21, 21, 13, 15, 15, 15, 15, 15,
     15, 15, 22, 15, 15, 15, 22, 15, 15, 15, 15, 22, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 24, 24, 22, 22, 24, 14, 14, 14, 14, 22,  0,  0,  0,
@@ -10127,6 +10305,8 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 24, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 22, 24, 24, 22, 22, 22, 22, 24, 24, 22, 22, 24, 24,
     24,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0, 21,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  3,  3,
@@ -10176,18 +10356,18 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  6,  5,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
      0,  0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  4, 14,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  4, 14, 14, 14,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
      3,  3,  3,  3,  3,  3,  3,  5,  6,  3,  0,  0,  0,  0,  0,  0,
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
@@ -10261,7 +10441,17 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10,
+    10, 10, 10,  0, 10, 10,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13,  0, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    21, 21, 21, 21, 21, 21,  0, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+    21,  0, 21, 21, 21, 21, 21, 21, 21, 21, 21,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15,  0,  0, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10322,6 +10512,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 18, 18, 18, 18,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15, 15, 22, 22, 22, 22,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, 18,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 22, 24, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10331,10 +10525,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22, 22, 22, 22,  3,  3,  3,  3,  3,  3,  3,  0,  0,
      0,  0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     18, 18, 18, 18, 18, 18,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,
+    22, 15, 15, 22, 22, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     24, 24, 24, 22, 22, 22, 22, 24, 24, 22, 22,  3,  3, 17,  3,  3,
-     3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,
+     3,  3, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 17,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -10393,11 +10587,13 @@ static RE_UINT8 re_general_category_table_3[] = {
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 24, 22, 24, 24,
-    22, 22, 22, 22, 22, 22, 24, 22, 15,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 24, 22, 15,  3,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 24, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 18,  3,  3,  3, 14,
+    15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24, 24, 24, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22,  3,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 18, 18, 18, 18, 18,
@@ -10423,7 +10619,7 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 24, 22, 22,  3,  3,  3, 15,  3,  3,
      3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 24,
@@ -10458,12 +10654,14 @@ static RE_UINT8 re_general_category_table_3[] = {
      3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+    15,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  3,  3,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,
     22, 22, 22, 22, 22,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10487,6 +10685,10 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    21, 21, 21, 21,  0, 21, 21, 21, 21, 21, 21, 21,  0, 21, 21,  0,
+    15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -10496,6 +10698,12 @@ static RE_UINT8 re_general_category_table_3[] = {
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 14, 22, 22,  3,
     17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0,
+    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+    22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 24, 24, 22, 22, 22, 14, 14, 14, 24, 24, 24,
@@ -10504,8 +10712,6 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 22, 22, 22, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 22, 22, 22, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
@@ -10578,6 +10784,8 @@ static RE_UINT8 re_general_category_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22, 22, 22, 22, 22,
      0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     22, 22, 22, 22, 22, 22, 22,  0, 22, 22, 22, 22, 22, 22, 22, 22,
     22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0, 22, 22, 22, 22, 22,
     22, 22,  0, 22, 22,  0, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,
@@ -10586,8 +10794,12 @@ static RE_UINT8 re_general_category_table_3[] = {
     22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0, 15, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 22, 22, 22, 22,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  4,
+    15, 15, 15, 15, 15, 15, 15,  0, 15, 15, 15, 15,  0, 15, 15,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,
     15, 15, 15, 15, 15,  0,  0, 18, 18, 18, 18, 18, 18, 18, 18, 18,
     22, 22, 22, 22, 22, 22, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -10639,41 +10851,39 @@ static RE_UINT8 re_general_category_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
-    14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-    15, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
     15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
@@ -10705,258 +10915,268 @@ RE_UINT32 re_get_general_category(RE_UINT32 codepoint) {
 static RE_UINT8 re_graph_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 13, 13, 13, 13, 13, 13, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 13, 13, 13, 13, 13, 13, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    59, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60
 };
 
 static RE_UINT16 re_graph_table_2[] = {
       0,   1,   2,   3,   0,   1,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   4,   5,   6,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   7,   8,   2,   9,   2,  10,  11,
-     12,   2,   2,   2,   2,   2,   2,   2,  13,   2,  14,   2,   2,  15,   2,  16,
-      2,  17,  18,  19,   0,  20,  21,   2,   2,   2,   2,   2,  22,  23,  24,  25,
-     26,  27,  28,  29,  30,  31,  32,  33,  34,  31,  35,  36,  37,  38,  39,  40,
-     41,  42,  43,  44,  41,  45,  46,  47,  41,   2,  48,  49,  50,  51,  52,  53,
-      1,  54,  55,   0,  56,  57,  58,   0,   2,   2,  59,  60,  61,  12,  62,   0,
-      2,   2,   2,   2,   2,   2,  63,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,  64,   2,  65,  66,  67,   2,  68,   2,  16,  69,  70,   2,   2,  71,
+      2,   2,   2,   2,   2,   2,   2,   2,  12,   2,  13,   2,   2,  14,   2,  15,
+      2,  16,  17,  18,  19,   2,   2,   2,   2,   2,   2,   2,  20,  21,  22,  23,
+     24,  25,  26,  27,  28,  29,  30,  31,  32,  29,  33,  34,  35,  36,  37,  38,
+     39,  40,  41,  42,  39,  43,  44,  45,  39,   2,  46,  47,  48,  49,  50,  51,
+      1,  52,  53,   0,  54,  55,  56,   0,   2,   2,  57,  58,  59,  60,  61,   0,
+      2,   2,   2,   2,   2,   2,  62,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,  63,   2,  64,  65,  66,   2,  67,   2,  15,  68,  69,   2,   2,  70,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,  72,   2,   2,  73,  74,  75,  76,  77,   2,   2,  78,  79,
-     80,   2,   2,  73,   2,  81,   2,  82,   3,  83,  84,  85,   2,  86,  87,   2,
-     88,   2,   3,  89,  79,  90,  91,   0,   2,   2,  86,  69,   2,   2,   2,  92,
-      2,  93,  94,   2,  95,  16,  10,  96,   2,   2,   2,   2,   2,   2,   2,  97,
-      2,   2,   2,   2,   2,   2,   2,   2,  71,   2,  98,  78,   2,  20,  99, 100,
-    101, 102,   3, 103, 104,   2, 105, 106,   2,   2,   2,   2,  86,   2,   2,   2,
+      2,   2,   2,   2,  71,   2,   2,  72,  73,  74,  75,  76,   2,   2,  77,  78,
+     69,   2,   2,  72,   2,  18,   2,  79,   3,  80,  81,  82,   2,  83,  84,   2,
+     85,   2,   3,  86,  78,  87,  88,   0,   2,   2,  89,   3,   2,   2,   2,  90,
+      2,  91,  92,   2,  93,  15,  10,  94,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,  70,   2,  95,  77,   2,  96,  97,  98,
+     99, 100,   3, 101, 102,   2, 103, 104,   2,   2,   2,   2,  83,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2, 107,  19,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2, 105, 106,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 108, 109,   2,   2,   2,
-      2, 110,   3,   2,   2,   2,   2, 111,   2,  63,   2, 112,  75, 113, 113,   2,
-      2,   2, 114,   0,  97,   2,   2,  76,   2,   2,   2,   2,   2,   2,  82, 115,
-      1,   2,   1,   2,   8,   2,   2,   2, 116,   7,   2,   2, 110,   2,   2, 117,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 107, 108,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2, 109,   2,  62,   2, 110,  74, 111, 111,   2,
+      2,   2,  77,   0, 112,   2,   2,  75,   2,   2,   2,   2,   2,   2,  79, 113,
+      1,   2,   1,   2,   8,   2,   2,   2, 114,   7,   2,   2, 115,   2,   2, 116,
       3,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,  89,   2, 117,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2, 118,   2,   2,   2,   2,   2, 119,   2,   2,   2,   2,   2,   2, 120, 121,
+      2, 122,   2, 119,   2,   2, 123,   2,   2,   2, 124,  68,   2,   2, 125,   3,
+      2,  74, 126,   2,   2,   2, 127,  74, 128, 129,   2,  83,   2,   2,   2, 130,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  69,
-      2,   2,   2,   2, 118,   2, 119,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2, 120,   2,   2,   2,   2,   2, 121,   2,   2,   2,   2,   2,   2, 122, 123,
-      2, 124,   2, 121,   2,   2, 125,   2,   2,   2, 126,  69,   2,   2, 127,   3,
-      2,  75, 128,   2,   2,   2, 129,  75, 130, 131,   2,  86,   2,   2,   2, 132,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 117, 133,  55,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 116, 131,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,  90,   2,   2,  70,   0, 134, 135, 136,   2,   2,   2, 137,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 105,   2, 138,   2, 139, 140,
-     70,   2, 141, 142,   2,   2,   2,  89,   1,   2,   2,   2,   2,   3, 143, 144,
-    145, 146, 147,   0,   2,   2,   2,  96, 148, 149,   2,   2, 104,  91, 105,  78,
-      0,   0,   0,   0,  69,   2, 106,  55,   2, 150,  81,  96, 151,   2, 152,   0,
-      2,   2,   2,   2,  78, 153, 154,  55,   2,  10,   2, 155,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,  75,  82, 139,   0,   0,   0,   0,
-    156, 157, 109,   2,   3, 158,   0, 159, 160, 161,   0,   0,   2, 162, 138,   2,
-    163, 164, 165,   2,   2,   0,   2, 166,   2, 167, 168, 169, 170, 171,   0,   0,
-      2,   2, 172,   0,   2, 114,   2, 173,   2, 174,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   2, 175,   0,   0,   2,  10,  70,   0,   0, 105, 120,  75,
-      2,   2, 176, 177,   2,   2, 178, 179,   2,  20,  10,  75,   2,   2,   2, 180,
-    181,   3,   0,   0, 182, 153,   2, 183,  22, 184, 185, 186,   0,   0,   0,   0,
-      2,   2, 187, 188,   2,   2, 174,   0,   0,   0,   0,   0,   2, 168,  78,   0,
-      2,   2, 189, 190,   2,  73, 191,   0,  16,  86,   0,   0,   0,   0,   0,   0,
-      2,  55,   0,   0,   0,   2,   2, 192, 193, 194, 195,   0,   0, 196,   4, 197,
-      2,   2,  10,   2,   2, 198,   2,  73,   0,   0,   0,   0,   0,   0,   0,   0,
-    199, 200, 201, 118, 138, 202,   0,   0, 203, 204, 174, 205, 206, 191,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  73,   0,   0,   0,   0,   0, 207,   2, 208,
+      2,   2,   2,  87,   2,   2,  69,   0, 132, 133, 134,   2,   2,   2, 135,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 136,   2, 137, 138,
+     69,   2, 139, 140,   2,   2,   2,  86,   1,   2,   2,   2,   2,   3, 141, 142,
+    143, 144, 145,   0,   2,   2,   2,  94, 146, 147,   2,   2, 102, 148, 138,  77,
+      0,   0,   0,   0,  68,   2, 104,  53,   2, 149,  18,  94, 150,   2, 151,   0,
+      2,   2,   2,   2,  77, 152, 153,  53,   2,  10,   2, 154, 155, 156,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,  74,  79, 157, 158, 159,   0,   0,
+    160, 161, 108,   2,   3, 162,   0, 163, 164, 165,   0,   0,   2, 166, 136,   2,
+    167, 168, 169,   2,   2,   0,   2, 170,   2, 171, 172, 173, 174, 175,   0,   0,
+      2,   2, 176,   0,   2, 177,   2, 178,   2, 179,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   3,   2, 180,   0,   0,   2,  10,  69, 138, 181, 138, 118,  74,
+      2,   2, 182,  73,   2,   2, 183, 184,   2,  96,  10,  74,   2,   2,   2, 185,
+    186,   3,   0,   0, 187, 152,   2, 188,  20, 189, 190, 191,   0,   0,   0,   0,
+      2,   2, 192, 193,   2,   2, 179,   0,   0,   0,   0,   0,   2, 172,  77,   0,
+      2,   2, 194, 195,   2,  69, 181,   0,  15,  83, 105,   0,   0,   0,   0,   0,
+      2,  53,   0,   0,   0,   2,   2, 196, 197, 198, 199,   0,   0, 200,   4, 201,
+      2,   2,  10,   2,   2, 202,   2,  72,   0,   0,   0,   0,   0,   0,   0,   0,
+    203, 204, 205,  89, 136, 206,   0,   0, 207, 208, 179, 209, 210, 181,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  72,   0,   0,   0,   0,   0, 211,   2, 212,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  70,   0,   0,   0,
-      2,   2,   2, 209,   2,   2,   2,   2,   2,   2, 210,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  69,   0,   0,   0,
+      2,   2,   2, 213,   2,   2,   2,   2,   2,   2, 214,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2, 211,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 138,   2,   2, 177,
+      2, 215,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,  73,   3, 212,   0,   0, 105, 213,   2,   2, 214, 215, 216,   0,   0,   0,
+      2,  72,   3, 216,   2,   3, 152, 217,   2,   2, 218, 219, 220,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   2,   2,  96,   0,   0,   0,   2,   2, 217,   2, 218,   0,   0, 219,
+      0,   0,   2,   2,  94,   0,   0,   0,   2,   2, 221,   2, 222,   0,   0, 223,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 121,
-      2,   2,   2,   2,   2,   2,  82,   0, 172,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 119,
+      2,   2,   2,   2,   2,   2,  79,   0, 176,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,   2,   3,   0, 220, 221,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,  55,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2, 222, 223, 210,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 224,
+      2,   2,   2,   2,   2,   2,   2,   2,   2, 225, 226, 227,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,  53,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2, 228, 229, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2,   2,  82,   2, 224,   2,   2,   2,   2,   2, 172,
-      2,   2, 225,   0,   0,   0,   0,  76,   2,   2,  75,  73,   0,   0,   0,   0,
-      2,   2,  20,   2,  12, 226, 227,   2, 228, 229, 230,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2, 231,   2,   2,   2,   2,   2,   2,   2,   2, 232,   2,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,  87, 117,   2,   2,   2, 214,   0,
+      2,   2,   2,   2,   2,   2,   2,  79,   2, 230,   2,   2,   2,   2,   2, 106,
+      2,   2, 231,   0,   0,   0,   0,  75,   2,   2,  74,  72,   0,   0,   0,   0,
+      2,   2,  96,   2,  60, 232, 233,   2, 234, 235, 236,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2, 237,   2,   2,   2,   2,   2,   2,   2,   2, 238,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2, 233, 234,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    235, 236,   0,   0,   0,   0,   0,   0,   2, 237, 212,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   2, 161,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   2,   2,   2,   2, 238,   0,   2,   2, 239,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 240,   2, 241,   0,   0,   1,  78,   0,   0,   0,   0,   0,   0,
-    227, 242, 243, 244, 245, 246,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,  86,   2,   2,  76, 248, 249,  82,   2,   2,   2,   2,   2, 250,   0, 251,
-    252,  55, 253, 225,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,
+    241, 242,   0,   0,   0,   0,   0,   0,   2, 243, 244,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 138,  88,   2, 165,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      2,   2,   2,   2,   2,   2, 246,   0,   2,   2, 247,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 248,   2, 249,   0,   0,   1,  77,   0,   0,   0,   0,   0,   0,
+    233, 250, 251, 252, 253, 254,   0, 255,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,  83,   2,   2,  75, 256, 257,  79,   2,   2,   2,   2,   2, 258,   0, 259,
+    202,  53, 260, 231,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2, 121, 254,   2,   2,   2,  76,   2,   2,  73, 120,
-     86,   2, 174,   2,  10, 255,   0,   0,   2,   2,   2, 256,   2,   2, 145,   2,
-      2,   2,  76, 257, 119, 258, 259,   0,   2,   2,   2,   2, 141,   2,  19, 260,
+      2,   2,   2,   2,   2,   2, 261, 262,   2,   2,   2,  75,   2,   2,  72, 263,
+     83,   2, 179,   2,  10, 264,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,  75, 265, 117, 266, 267, 268,   2,   2,   2,   2, 139,   2, 106, 269,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,  78,   0,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2, 241,   2,   2,   2,   2,   2,   2,
-     78,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,  72,   2,   2,   2,   2,   2,   2,
+     77,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2, 261,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2, 270,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  91,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 148,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-     78,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     77,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  19,   0,   0,   0,   0,   0,
-    262,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2, 216,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2, 106,   0,   0,   0,   0,   0,
+    271,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2, 220,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  78
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,  77
 };
 
 static RE_UINT8 re_graph_table_3[] = {
       0,   0,   0,   0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127,
     255, 255, 255, 252, 240, 215, 255, 255, 251, 255, 255, 255, 255, 255, 254, 255,
     255, 255, 127, 254, 255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0,
-    255, 255, 255, 223, 255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0,
-    255, 255, 255, 231, 255,  63, 255, 127, 255, 255, 255,  79, 255,   7,   0,   0,
-    255, 255, 223, 255, 255,   0, 248, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255, 255, 127, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255, 127,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   3, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255, 255,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255, 255,   7, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255, 128, 255, 255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0,
-    223, 253, 240, 255, 207, 255, 255, 255, 238, 255, 127, 252, 255, 255, 251,  47,
-    127, 132,  95, 255, 192, 255,  28,   0, 255, 255, 255, 135, 255, 255, 255,  15,
-    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243, 255, 254, 255, 255,
-    255,  31, 254, 255, 255, 255, 255, 254, 255, 223, 255,   7, 191,  32, 255, 255,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
-    254, 255, 255,  31, 255, 255, 255,   1, 255, 223,  31,   0, 255, 255, 127,   0,
-    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3,
-    255, 127, 255,   3, 255,   7, 255, 255, 255, 255,  63,   0, 255,  15, 255,  15,
-    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
-    255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255,   1,   0,   0,   0,
-    255, 255,  15, 240, 255, 255, 255, 248, 255, 227, 255, 255, 255,   1, 255, 255,
-    255, 255, 255,   7, 255, 255, 255, 251,  63,  63, 255, 170, 223, 255, 207, 239,
-    255, 255, 220, 127,   0, 248, 255, 255, 255, 124, 255, 255, 223, 255, 243, 255,
-    255, 127, 255,  31,   0,   0, 255, 255, 255, 255,   1,   0, 127,   0,   0,   0,
-    255, 255, 207, 255, 255, 255, 191, 255, 255, 127, 255, 255, 255, 255,  15, 254,
-    255, 128,   1, 128, 127, 127, 127, 127, 255, 255,   7,   0,   0,   0, 255,  15,
-    224, 255, 255, 255,  15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255,
-    255,  15,   0,   0, 255, 255, 255,   0, 252,   7,   0,   0,   0,   0, 224, 255,
-    255,  31, 255,   3,  63, 192, 255,   3, 255, 255,  15, 128, 255, 191, 255, 195,
-    255,  63, 255, 243,   7,   0,   0, 248, 126, 126, 126,   0, 127, 127, 255, 255,
-    255,  63, 255,   3, 127, 248, 255, 255, 127,   0, 248, 224, 255, 255, 127,  95,
-    219, 255, 255, 255,   3,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
-      0,   0, 255,  63, 255, 255, 247, 255, 127,  15, 223, 255, 252, 252, 252,  28,
-    127, 127,   0,  62, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
-    135, 255, 255, 255, 255, 255, 143, 255,  15, 224, 255, 255, 255, 255, 255, 191,
-     15, 255,  63,   0, 255,   3, 255, 255, 255, 255,  15, 255,  15, 128,   0,   0,
+    255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231,
+    255,  63, 255, 127, 255, 255, 255,  79, 255,   7, 255, 255, 255, 127,   3, 255,
+    239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 127,
+    238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94, 192, 255, 127,   0,
+    238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   3, 254,
+    238, 159, 249, 255, 159,  57, 224, 176, 207, 255, 255,   0, 236, 199,  61, 214,
+     24, 199, 255, 195, 199,  61, 129,   0, 192, 255, 255,   7, 255, 223, 253, 255,
+    255, 253, 255, 243, 223,  61,  96,  39, 207, 255, 128, 255, 255, 253, 239, 243,
+    223,  61,  96,  96, 207, 255,   6,   0, 223, 253, 240, 255, 207, 255, 255, 255,
+    238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  28,   0,
+    255, 255, 255, 135, 255, 255, 255,  15, 214, 247, 255, 255, 175, 255, 255,  63,
+     95,  63, 255, 243, 255, 254, 255, 255, 255,  31, 254, 255, 255, 255, 255, 254,
+    255, 255, 255, 223, 255, 223, 255,   7, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 254, 255, 255,  31,
+    255, 255, 255,   1, 255, 255,  63, 128, 255, 255, 127,   0, 255, 255,  15,   0,
+    255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3, 255, 255,  63,   0,
+    255,  15, 255,  15, 241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255, 199, 255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255,
+    255, 127,   0,   0, 255,  31, 255, 255, 255, 255,  15, 240, 255, 255, 255, 248,
+    255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255,   7,  63,  63, 255, 170,
+    255, 255, 223, 255, 223, 255, 207, 239, 255, 255, 220, 127,   0, 248, 255, 255,
+    255, 124, 255, 255, 223, 255, 243, 255, 255, 127, 255,  31,   1,   0, 255, 255,
+    255, 255,   1,   0, 127,   0,   0,   0, 255,   7,   0,   0, 255, 255, 207, 255,
+    255, 255, 191, 255, 255, 255,  15, 254, 255, 128,   1, 128, 127, 127, 127, 127,
+    255, 255, 255, 251,   0,   0, 255,  15, 224, 255, 255, 255, 255, 127, 255, 255,
+     15,   0, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0, 255, 255, 255,   0,
+    255,   7, 235,   3,   0,   0, 252, 255, 255,  31, 255,   3,  63, 192, 255,   3,
+    255, 255,  15, 128, 255, 191, 255, 195, 255,  63, 255, 243,   7,   0,   0, 248,
+    126, 126, 126,   0, 127, 127, 255, 255, 255,  63, 255,   3, 127, 248, 255, 255,
+    127,   0, 248, 224, 255, 255, 127,  95, 219, 255, 255, 255,   7,   0, 248, 255,
+    255, 255, 252, 255, 255, 128,   0,   0,   0,   0, 255, 255, 255, 255, 247, 255,
+    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  62, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
+      1,   0,   0,   0,  15, 224, 255, 255, 255, 255, 255, 191,  15, 255,  63,   0,
+    255,   3, 255, 255, 255, 255,  15, 255,  15, 128, 255, 247, 255, 247, 183, 255,
+    251, 255, 251,  27, 255,   0,   0,   0, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0, 255, 255,  55, 248,
     255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240, 111, 240, 239, 254,
     255, 255,  63, 135, 255,   1, 255,   1, 127, 248, 127,   0, 255, 255,  63, 254,
     255, 255,  63, 255, 255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0,
-    255,   1,   0,   0, 255, 255,   7, 252, 255,   0, 255,   3, 255,  59,   3,   0,
-    255,  63, 252, 255, 255, 255,   0, 128,   3,  32, 255, 255, 255,   1, 255,   3,
-    254, 255,  31,   0, 255, 255, 251, 255, 127, 189, 255, 191, 255,   7, 255,   3,
-    255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0, 255, 255, 255, 239,
-      3,   0,   0,   0,  31,   0, 255,   3, 255,  31,   0,   0, 255,   3,   0,   0,
+    255,   1,   0,   0, 255, 255,   7,   0, 255, 255,   7, 252, 255,   0, 255,   3,
+    255,  59,   3,   0, 255,   3,   0,   0, 255,  63, 252, 255,   7,  32, 255, 255,
+    255,   1, 255,   3, 254, 255,  31,   0, 255, 255, 251, 255, 127, 189, 255, 191,
+    255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0,
+    255, 255, 255, 239,   3,   0,   0,   0,  31,   0, 255,   3, 255,  31,   0,   0,
     255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 191, 249, 127,   0, 255,   3,
-    255, 252, 255, 255,  31,   0,   0,   0,   7,   0,   0,   0, 255, 253, 255, 255,
+    255, 252, 255, 255,  31,   0,   0,   0,   7,   0, 255, 255, 255, 253, 255, 255,
     255, 255, 127, 255,  63,   0, 255, 255, 255, 254, 127,   0, 127, 251, 255, 255,
     255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
     255, 255,   3, 128, 255, 127,  31,   0,  15,   0,   0,   0, 255, 127, 255,   1,
-    255, 195,   0,   0, 255,  63,  63,   0,  63,   0, 255, 251, 251, 255, 255, 224,
+    255, 195, 255, 255, 255,  63,  63,   0,  63,   0, 255, 251, 251, 255, 255, 224,
     255, 255,   0,   0, 255, 135, 255, 255, 255, 128, 255, 255,  31,   0,   3,   0,
-      0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31, 255,   1, 255, 243,
-    127, 254, 255, 255,  63,   0,   0,   0, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    255, 207, 255, 255, 255,  15,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
-    219,   7,   0,   0, 255,  31, 255,  63, 159, 255, 127,   0, 255,  15, 255, 195,
+      0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255, 243, 127, 254, 255, 255,  63,   0,   0,   0,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 255, 207, 255, 255, 255,  15,   0, 248,
+    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
+    255, 195,   0,   0, 127, 111, 255, 127, 159, 255, 127,   0, 255,  15, 255, 195,
       0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10, 132, 234, 150, 170,
     150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   0,   0,   3,   0,
     255, 127, 254, 255, 254, 255, 254, 255, 255,  63,   0,   0, 192, 255, 255, 255,
-      7,   0, 255, 255, 255,   1,   3,   0, 255,  31, 255,  31, 255,  63,   3,   0,
-    255, 255, 255, 253, 255,  63,  31,   7, 255,   1, 127,   0,   7,   0, 127,   0,
-      0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
+    255,   1,   3,   0, 255, 255, 255, 224, 255,  31, 255,  31, 255,  15,   1,   0,
+    255,  63,   3,   0, 255,  63,  31,  31, 255,  31, 255,   7,  63,   0, 255,   3,
+    255,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
 };
 
 RE_UINT32 re_get_graph(RE_UINT32 codepoint) {
@@ -10982,183 +11202,191 @@ RE_UINT32 re_get_graph(RE_UINT32 codepoint) {
 static RE_UINT8 re_grapheme_base_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18
-};
-
-static RE_UINT16 re_grapheme_base_table_2[] = {
-      0,   1,   1,   2,   0,   3,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   4,   5,   6,   1,   1,
-      1,   1,   1,   1,   7,   1,   1,   1,   1,   8,   9,   1,  10,  11,  12,  13,
-     14,   1,  15,   8,   1,   1,  16,  17,  18,  19,  20,   1,   1,  21,   1,  22,
-     23,  24,  25,  15,   0,  26,  27,   0,  28,  29,  30,  31,  32,  33,  34,  35,
-     36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
-     52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,
-     68,  69,  70,   0,  71,  72,  73,   0,  74,  75,  76,  77,  78,  79,  80,   0,
-      1,  81,  82,  83,  84,   1,  85,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,  86,   1,  87,  88,  89,   1,  90,   1,  91,  92,  93,   1,   1,  94,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17
+};
+
+static RE_UINT16 re_grapheme_base_table_2[] = {
+      0,   1,   1,   2,   0,   3,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   4,   5,   6,   1,   1,
+      1,   1,   1,   1,   7,   1,   1,   1,   1,   8,   9,   1,  10,  11,  12,  13,
+     14,   1,  15,   8,   1,   1,  16,  17,  18,  19,  20,   1,   1,  21,   1,  22,
+     23,  24,  25,  26,  27,   1,  28,   0,  29,  30,  31,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,
+     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,
+     69,  70,  71,   0,  72,  73,  74,   0,  75,  76,  77,  78,  79,  80,  81,   0,
+      1,  82,  83,  84,  85,   1,  86,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  87,   1,  88,  89,  90,   1,  91,   1,  92,  93,  94,   1,   1,  95,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,  92,   1,   1,  95,  96,  97,  98,  99,   1, 100, 101, 102,
-    103,   1,   1,  95, 104, 105,   1, 106,   2, 107, 108, 109,   1, 110, 111,   1,
-    112,   1, 113, 114, 102, 115,   0,   0, 116, 117, 118, 119, 120, 121,   1, 122,
-      1, 123, 124,   1, 125, 126, 127, 128,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,  94,   1, 129, 130,   1,  26, 131, 132,
-    133, 134,   1, 135, 136,   1,   0,   0,   1,   1,   1,   1, 110,   1,   1,   1,
+      1,   1,   1,   1,  93,   1,   1,  96,  97,  98,  99, 100,   1, 101, 102, 103,
+    104,   1,   1,  96, 105, 106,   1, 107,   2, 108, 109, 110,   1, 111, 112,   1,
+    113,   1, 114, 115, 103, 116,   0,   0, 117, 118, 119, 120, 121, 122,   1, 123,
+      1, 124, 125,   1, 126, 127, 128, 129,   1,   1,   1,   1,   1,   1,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,  95,   1, 130, 131,   1, 132, 133, 134,
+     26, 135,   1, 136, 137,   1, 138,   0,   1,   1,   1,   1, 111,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 137,  15,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 139,  15,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138, 139,   1,   1,   1,
-      1, 140,   2,   1,   1,   1,   1, 141,   1,  85,   1, 142, 143, 144, 144,   0,
-      1,   1, 145,   0, 146,   1,   1, 147,   1,   1,   1,   1,   1,   1, 106, 148,
-      1, 149,  68,   1, 150,   1,   1,   1, 151,   8,   1,   1, 140,   1,   1, 152,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 140, 141,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 142,   1,  86,   1, 143, 144, 145, 145,   0,
+      1,   1, 131,   0, 146,   1,   1, 147,   1,   1,   1,   1,   1,   1, 107, 148,
+      1, 149,  69,   1, 150,   1,   1,   1, 151,   8,   1,   1, 152,   1,   1, 153,
       2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1, 154,   1, 155,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 156,   1, 157, 131,   1,   1, 158,   1,   1,   1,   1,   1,   1, 159, 160,
+    161, 162,   1, 163,   1,   1, 164, 165,   1, 166, 167,  93,  29, 168, 169, 170,
+      1, 171, 172, 173,   1, 174, 175, 176, 177, 178,   1, 111,   1,   1,   1, 179,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  92,
-      1,   1,   1,   1, 153,   1, 154,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 155,   1, 156, 130,   1,   1, 157,   1,   1,   1,   1,   1,   1, 158, 159,
-    160, 161,   1, 162,   1,   1, 163, 164,   1, 165, 166,  92,  28, 167, 168, 169,
-      1, 170, 171, 172,   1, 173, 174, 175, 176, 177,   1, 110,   1,   1,   1, 178,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 152, 179, 180,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 153, 180, 181,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1, 181,   1,   1,  93,   0, 182, 183, 184,   1,   1,   1, 185,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 186,   1, 187,   1,  27, 188,
-    189, 186, 190, 191,   1,   1,   1,  92,  68,   1,   1,   1, 130,   2, 192, 193,
-    194, 195, 196,   0,   1,   1,   1,  91, 197, 198,   1,   1, 136, 199, 186,  92,
-      0,   0,   0,   0,  92,   1, 200, 201,   1, 202, 133, 106, 203,   1, 204,   0,
-      1,   1,   1,   1, 130, 149, 205, 180,   1, 206,   1, 207,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 143, 106,  27,   0,   0,   0,   0,
-    208, 209, 139,   1,   2, 210,   0, 211, 212, 213,   0,   0,   1, 214, 187,   1,
-    215, 106, 216,   1,   1,   0,   1, 217,   1, 218, 219, 220, 221, 222,   0,   0,
-      1,   1, 223,   0,   1, 145,   1, 224,   1, 225,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   2,   1, 226,   0,   0,   1, 206, 227,   0,   0, 186, 155, 143,
-    228, 162, 229,  19, 120, 230, 231, 232,  28, 233, 206, 234, 120, 235, 236, 237,
-    238, 239,   0,   0, 240, 149,   2, 241,  44, 242, 243, 244,   0,   0,   0,   0,
-      1, 162, 245, 246,   1, 247, 248,   0,   0,   0,   0,   0,   1, 249, 201,   0,
-      1, 250, 251, 252,   1, 253, 254,   0,  91, 255,   0,   0,   0,   0,   0,   0,
-      1, 256,   0,   0,   0,   1,   1, 257, 258, 259, 260,   0,   0, 261, 262, 263,
-    264, 265, 266,   1, 267, 268,   1,  95,   0,   0,   0,   0,   0,   0,   0,   0,
-    269, 270, 271, 153,  19, 272,   0,   0, 273, 200, 274, 275, 276, 254,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 277,   0,   0,   0,   0,   0, 278,   1, 279,
+      1,   1,   1, 182,   1,   1,  94,   0, 183, 184, 185,   1,   1,   1, 186,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 187,   1, 188, 189,
+    190, 189, 191, 192,   1,   1,   1,  93,  69,   1,   1,   1, 131,   2, 193, 194,
+    195, 196, 197,   0,   1,   1,   1,  92, 198, 199,   1,   1, 137, 138, 189,  93,
+      0,   0,   0,   0,  93,   1, 200, 201,   1, 202,  26, 107, 203,   1, 204,   0,
+      1,   1,   1,   1, 131, 149, 205, 181,   1, 206,   1, 207, 208, 209,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 144, 107, 210, 211, 212,   0,   0,
+    213, 214, 141,   1,   2, 215,   0, 216, 217, 218,   0,   0,   1, 219, 187,   1,
+    220, 107, 221,   1,   1,   0,   1, 222,   1, 223, 224, 225, 226, 227,   0,   0,
+      1,   1, 228,   0,   1, 229,   1, 230,   1, 231,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   2,   1, 232,   0,   0,   1, 206, 233, 189, 234, 189, 156, 144,
+    235, 163, 236, 237, 121, 238, 239, 240,  29, 241, 206, 242, 121, 243, 244, 245,
+    246, 247,   0,   0, 248, 149,   2, 249,  45, 250, 251, 252,   0,   0,   0,   0,
+      1, 163, 253, 254,   1, 255, 256,   0,   0,   0,   0,   0,   1, 257, 201,   0,
+      1, 258, 259, 260,   1, 261,  28,   0,  92, 262, 139,   0,   0,   0,   0,   0,
+      1, 263,   0,   0,   0,   1,   1, 264, 265, 266, 267,   0,   0, 268, 269, 270,
+    271, 272, 273,   1, 274, 275,   1,  96,   0,   0,   0,   0,   0,   0,   0,   0,
+    276, 277, 278, 154,  19, 279,   0,   0, 280, 200, 281, 282, 283,  28,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 284,   0,   0,   0,   0,   0, 285,   1, 286,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  93,   0,   0,   0,
-      1,   1,   1, 280,   1,   1,   1,   1,   1,   1, 244,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  94,   0,   0,   0,
+      1,   1,   1, 287,   1,   1,   1,   1,   1,   1, 252,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 281,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 189,   1,   1, 229,
+      1,  27,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,  95,   2, 282,   0,   0, 186, 283,   1, 284, 285, 286,  19,   0,   0,   0,
+      1,  96,   2, 288,   1,   2, 149, 289,   1, 290, 291, 292,  19,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   1,  91,   0,   0,   0,   1,   1, 133,   1, 287,   0,   0, 288,
+      0,   0,   1,   1,  92,   0,   0,   0,   1,   1,  26,   1, 293,   0,   0, 294,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 162,
-      1,   1,   1,   1,   1,   1, 106,   0, 223,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 163,
+      1,   1,   1,   1,   1,   1, 107,   0, 228,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   2,   0, 289, 290,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 180,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1, 291, 292,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1, 106,   1, 293,   1, 294, 295, 296,   1, 223,
-      1,   1, 297,   0,   0,   0,   0, 147,   1,   1, 143,  95,   0,   0,   0,   0,
-      1,   1,  26,   1, 298, 299, 300,   1, 301, 302, 303,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 304,   1,   1,   1,   1,   1,   1,   1,   1, 305,   1,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 295,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 296, 297, 298,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 181,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 299, 300,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 189,   1,   1,   1, 252,   0,
+      1,   1,   1,   1,   1,   1,   1, 107,   1, 301,   1, 302, 303, 288,   1,  15,
+      1,   1, 304,   0,   0,   0,   0, 147,   1,   1, 144,  96,   0,   0,   0,   0,
+      1,   1, 132,   1, 305, 306, 307,   1, 308, 309, 310,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 311,   1,   1,   1,   1,   1,   1,   1,   1, 312,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      0, 306,   0, 307, 308,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   1, 309, 282,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   1, 310,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1, 311,   0,   1,   1, 312,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 313,   1, 314,   0,   0,  68, 130,   0,   0,   0,   0,   0,   0,
-    300, 315, 316, 317, 318, 319,   0, 320,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 110,   1,   1, 147, 321, 322, 106,   1,   1,   1,   1,   1, 115,   0, 323,
-    324, 180, 325, 326,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      0, 313,   0, 314, 315,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1, 316, 317,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 189, 116,   1, 318,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 319,
+      1,   1,   1,   1,   1,   1, 320,   0,   1,   1, 321,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 322,   1, 323,   0,   0,  69, 131,   0,   0,   0,   0,   0,   0,
+    307, 324, 325, 326, 327, 328,   0, 329,   0,   0,   0,   0,   0,   0,   0,   0,
+      1, 111,   1,   1, 147, 330, 331, 107,   1,   1,   1,   1,   1, 116,   0, 332,
+    275, 181, 333, 334,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 162, 327,   1,   1,   1, 147,   1,   1,  95, 155,
-    110,   1, 328,   1, 206, 329,   0,   0,   1,   1,   1, 330,   1,   1, 194,   1,
-      1,   1, 147, 331, 154, 332, 333,   0,   1,   1,   1,   1, 190,   1,  15, 189,
+      1,   1,   1,   1,   1,   1, 335, 336,   1,   1,   1, 147,   1,   1,  96, 337,
+    111,   1, 338,   1, 206, 339,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1, 147, 340, 155, 341, 342, 343,   1,   1,   1,   1, 191,   1,  15, 190,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 130,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 314,   1,   1,   1,   1,   1,   1,
-    130,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  96,   1,   1,   1,   1,   1,   1,
+    131,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 231,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 239,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 199,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    130,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  15,   0,   0,   0,   0,   0
 };
@@ -11167,87 +11395,89 @@ static RE_UINT8 re_grapheme_base_table_3[] = {
       0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 127, 255, 223, 255, 255,
       0,   0, 255, 252, 240, 215, 255, 255, 251, 255, 255, 255,   7, 252, 255, 255,
     255, 255, 254, 255, 255, 255, 127, 254, 255, 231,   0,   0,   0,   0,   0,  64,
-     73,   0, 255, 255, 255, 135,  31,   0, 192, 255,   0, 200, 255,   7,   0,   0,
+     73,   0, 255, 255, 255, 135,  31,   0, 192, 255,   0, 232, 255,   7,   0,   0,
     255, 255,  63,  64,  96, 194, 255, 255, 255,  63, 253, 255, 255, 255,   0,   0,
       0, 224, 255, 255,  63,   0,   2,   0, 255,   7, 240, 199, 255, 255,  63,   4,
-     16,   1, 255, 127, 255, 255, 255,  65, 255, 255, 223, 255, 255,   0,   0,   0,
-    248, 255, 255, 255, 255, 255, 255, 235,   1, 222,   1, 255, 243, 255, 255, 255,
-    237, 159, 249, 255, 255, 253, 197, 163, 129,  89,   0, 176, 195, 255, 255,  63,
-    232, 135, 249, 255, 255, 253, 109, 195,   1,   0,   0,  94, 192, 255,  92,   0,
-    232, 191, 251, 255, 255, 253, 237, 227,   1,  26,   1,   0, 195, 255,   3,   2,
-    236, 159, 249, 255, 255, 253, 237,  35, 129,  25,   0, 176, 195, 255, 255,   0,
-    232, 199,  61, 214,  24, 199, 255, 131, 198,  29,   1,   0, 192, 255, 255,   7,
-    238, 223, 253, 255, 255, 253, 255,  35,  30,   0,   0,   7, 195, 255, 128, 255,
-    253, 223, 253, 255, 255, 253, 239,  99, 155,  13,   0,  64, 195, 255,   6,   0,
-    252, 223, 253, 255, 255, 255, 255, 167, 193, 221, 112, 255, 195, 255, 255, 255,
-    236, 255, 127, 252, 255, 255, 251,  47, 127,   0,   3, 127, 192, 255,  28,   0,
-    254, 255, 255, 255, 255, 255,  13, 128, 127, 128, 255,  15, 214, 247, 255, 255,
-    175, 255,  13,  32,  95,   0, 255, 243, 255, 255, 255, 252, 255, 255,  95, 253,
-    255, 254, 255, 255, 255,  31,   0, 128,  32,  31,   0,   0,   0,   0,   0, 192,
-    191, 223, 255,   7, 255,  31,   2, 153, 255, 255, 255,  60, 254, 255, 225, 255,
-    155, 223, 255, 223, 191,  32, 255, 255, 255,  61, 127,  61, 255,  61, 255, 255,
-    255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255, 255,   7,
-    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 255, 255, 255,   1,
-    255, 223,   3,   0, 255, 255,  99,   0, 255, 255,   3,   0, 255, 223,   1,   0,
-    255, 255,  79, 192, 191,   1, 240,  31, 255,   3, 255,   3, 255,   7, 255,   3,
-    159, 255, 255, 255, 255,   5, 255, 255, 255, 255,  63,   0, 120,  14, 251,   1,
-    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
-    255, 255, 127, 198, 255, 255, 191,   0,  26, 224,   7,   0, 255,  63,   0,   0,
-    240, 255, 255, 255, 255, 255,  15, 232, 251,  15, 255, 255, 255,   7, 240,  31,
-    252, 255, 255, 255, 195, 196, 255, 255, 191,  92,  12, 240, 255,  15,  48, 248,
-    255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255, 231, 255,   0,   8,   0,
-      2, 222, 239,   4,  63,  63, 255, 170, 255, 255, 255,  63, 223, 255, 207, 239,
-    255, 255, 220, 127, 255,   7, 255, 255, 255, 128, 255, 255,   0,   0, 243, 255,
-    255, 127, 255,  31, 127,   0,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255,
-    255, 127, 255, 255, 255, 127,  12, 254, 255, 128,   1,   0, 255, 255, 127,   0,
-    127, 127, 127, 127, 255, 255,   7,   0, 255, 255, 255, 251, 255, 255,  15,   0,
+     16,   1, 255, 127, 255, 255, 255,  65, 255,   7, 255, 255, 255, 127,   0,   0,
+    255,   3,   0,   0, 248, 255, 255, 255, 255, 255, 255, 235,   1, 222,   1, 255,
+    243, 255, 255, 255, 237, 159, 249, 255, 255, 253, 197, 163, 129,  89,   0, 176,
+    195, 255, 255,  63, 232, 135, 249, 255, 255, 253, 109, 195,   1,   0,   0,  94,
+    192, 255,  92,   0, 232, 191, 251, 255, 255, 253, 237, 227,   1,  26,   1,   0,
+    195, 255,   3,   2, 236, 159, 249, 255, 255, 253, 237,  35, 129,  25,   0, 176,
+    195, 255, 255,   0, 232, 199,  61, 214,  24, 199, 255, 131, 198,  29,   1,   0,
+    192, 255, 255,   7, 238, 223, 253, 255, 255, 253, 255,  35,  30,   0,   0,  39,
+    195, 255, 128, 255, 253, 223, 253, 255, 255, 253, 239,  99, 155,  13,   0,  96,
+    195, 255,   6,   0, 252, 223, 253, 255, 255, 255, 255, 167, 193, 221, 112, 255,
+    195, 255, 255, 255, 236, 255, 127, 252, 255, 255, 251,  47, 127,   0,   3, 127,
+    192, 255,  28,   0, 254, 255, 255, 255, 255, 255,  13, 128, 127, 128, 255,  15,
+    214, 247, 255, 255, 175, 255,  13,  32,  95,   0, 255, 243, 255, 255, 255, 252,
+    255, 255,  95, 253, 255, 254, 255, 255, 255,  31,   0, 128,  32,  31,   0,   0,
+      0,   0,   0, 192, 191, 223, 255,   7, 255,  31,   2, 153, 255, 255, 255,  60,
+    254, 255, 225, 255, 155, 223, 255, 223, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,   7, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
+    255, 255, 255,   1, 255, 255,  35, 128, 255, 255, 115,   0, 255, 255,   3,   0,
+    255, 223,   1,   0, 255, 255,  79, 192, 191,   1, 240,  31, 255,   3, 255,   3,
+    255,   7, 255,   3, 159, 255, 255, 255, 255,   5, 255, 255, 255, 255,  63,   0,
+    120,  14, 251,   1, 241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255, 199, 255, 255, 127, 198, 255, 255, 191,   0,  26, 224,   7,   0,
+    255,  63,   0,   0, 240, 255, 255, 255, 255, 255,  15, 232, 251,  31, 255, 255,
+    255,   7, 240, 127, 252, 255, 255, 255, 195, 196, 255, 255, 191,  92,  12, 240,
+    255,  15,  48, 248, 255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255, 231,
+    255,   0,   8,   0,   2, 222, 239,   4,  63,  63, 255, 170, 255, 255, 255,  63,
+    255, 255, 223, 255, 223, 255, 207, 239, 255, 255, 220, 127, 255, 128, 255, 255,
+      0,   0, 243, 255, 255, 127, 255,  31,   1,   0,   0,   0, 127,   0,   0,   0,
+    255, 255, 207, 255, 255, 255, 191, 255, 255, 127,  12, 254, 255, 128,   1,   0,
+    255, 255, 127,   0, 127, 127, 127, 127, 255, 255, 255, 251, 255, 255,  15,   0,
       0,   0, 255,  15, 255,   3, 255, 255, 255, 255, 127, 248, 224, 255, 255, 255,
-     15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0,
-    255, 127,   8, 192, 255, 255, 252,   0, 252,   7,   0,   0,   0,   0, 224, 255,
-    187, 247, 255, 255, 159,  15, 255,   3, 255, 255, 255,   0,  15, 192, 255,   3,
-      0,   0, 252, 127,  63, 192, 255, 255, 127,   0,  12, 128, 255, 255,  55, 204,
-    255, 191, 255, 195, 223, 255, 255, 127, 255, 129,  25,   0, 247,  47, 255, 243,
-    255, 255, 255, 239, 255, 255,  98,  62,   5,   0,   0, 248, 255, 207,  63,   0,
-    126, 126, 126,   0, 127, 127, 255, 255, 223,  30, 255,   3, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 127,   0, 248, 160, 255, 255, 127,  95,
-    219, 255, 255, 255,   3,   0, 248, 255,   0,   0, 255, 255, 255, 255, 252, 255,
-      0,   0, 255,  63,   0,   0, 255,   3, 255, 255, 247, 255, 127,  15, 223, 255,
-    252, 252, 252,  28, 127, 127,   0,  48, 255, 239, 255, 255, 127, 255, 255, 183,
-    255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,   1,   0,   0,   0,
+    255, 127, 255, 255,  15,   0, 255, 255, 255,  31, 255, 255, 127,   0, 255, 255,
+    255,  15,   0,   0, 255, 127,   8, 192, 255, 255, 252,   0, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255, 159,  15, 255,   3, 255, 255, 255,   0,
+     15, 192, 255,   3,   0,   0, 252, 127,  63, 192, 255, 255, 127,   0,  12, 128,
+    255, 255,  55, 204, 255, 191, 255, 195, 223, 255, 255, 127, 255, 129,  25,   0,
+    247,  47, 255, 243, 255, 255, 255, 239, 255, 255,  98,  62,   5,   0,   0, 248,
+    255, 207,  63,   0, 126, 126, 126,   0, 127, 127, 255, 255, 223,  30, 255,   3,
+    127, 248, 255, 255, 255, 255, 255,  15, 255,  63, 255, 255, 127,   0, 248, 160,
+    255, 255, 127,  95, 219, 255, 255, 255,   7,   0, 248, 255, 255, 255, 252, 255,
+    255, 128,   0,   0,   0,   0, 255, 255,   0,   0, 255,   3, 255, 255, 247, 255,
+    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  48, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
     255, 255,   1,   0, 254, 255, 255,  15,  15, 224, 255, 255, 255, 255, 255, 191,
-     15, 255,  63,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15, 128,   0,   0,
-     63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0, 255, 255,  55, 248,
-    255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240,   1,   0, 239, 254,
-    255,   1, 255,   1,  31, 248, 127,   0, 255, 255,  63, 254, 255, 255,  63, 255,
-    255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0,
-    255, 255,   7, 252,  15,   0, 255,   3, 255,  35,   3,   0,  63,   0, 254,   3,
-    253, 255, 255, 255, 128,  63, 252, 255, 255, 255, 135, 217,   3,   0, 255, 255,
+     15, 255,  63,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15, 128, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 255,   0,   0,   0, 191, 255, 255, 255,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 128, 255,   0,   0,
+    255, 255,  55, 248, 255, 255, 255, 143, 255, 255, 255, 131, 255, 255, 255, 240,
+      1,   0, 239, 254, 255,   1, 255,   1,  31, 248, 127,   0, 255, 255,  63, 254,
+    255, 255,  63, 255, 255, 255,   7, 255, 255, 255,   3,  30,   0, 254,   0,   0,
+    255,   1,   0,   0, 255, 255,   7,   0, 255, 255,   7, 252,  15,   0, 255,   3,
+    255,  35,   3,   0,  63,   0, 254,   3, 195,   3,   0,   0, 253, 255, 255, 255,
+    128,  63, 252, 255, 255, 255,  38,   0, 255, 255, 135, 217,   3,   0, 255, 255,
     255,   1, 255,   3, 127,  16, 192, 255, 255, 255, 119,   0, 255, 255,  63, 128,
     255,  97, 255, 255, 254, 255,  31,   0, 255, 255, 251, 255, 255, 127,  44,  63,
     127, 189, 255, 191,   7,   0, 255,   3, 255, 253, 237, 163, 158,  57,   1, 224,
      15,   0,   0,   0, 163, 255, 255, 175,   3,   0,   0,   0, 255, 255,   6,  90,
     242,   0, 255,   3, 255, 127,   3,  79, 255, 255,   7,  88,  30,   0, 255,   3,
-    255,  31,   0,   0, 255, 215,  64,   1, 255,   3,   0,   0,  67,   0, 255, 255,
-    255, 127,   0,   9, 255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 190, 161,
-    119,   0, 255,   3, 255, 252, 255, 255, 255, 255,  15, 240,  30,   0,   0,   0,
-      1, 248, 255, 255, 255, 255,   7, 134, 127,   0, 129, 241, 255,   3, 128, 252,
-      7,   0,   0,   0, 255, 253, 255, 255, 255, 255,   0,  64,  63,   0, 255, 255,
-      0,   2,  18,   0, 127, 251, 255, 255,  64,   0, 255,   3, 191, 253, 255, 255,
-    255, 127,  88,   1, 255, 255, 231,   1,   0,   0,   1,   0, 255, 255,   3, 128,
-    255, 127,  31,   0, 255, 127,   0,   0, 255, 195,   0,   0, 255,  63,  32,   0,
-    255, 255, 128, 255,  63,   0, 255, 251, 251, 255, 255, 224, 255,   0, 248, 255,
-     15,   0,   3,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
+    255,  31,   0,   0, 255, 215,  64,   3,  67,   0, 255, 255, 255, 127,   0,   9,
+    255, 255,   7, 128, 127, 242, 111, 255, 255, 255, 190, 161, 119,   0, 255,   3,
+    255, 252, 255, 255, 255, 255,  15, 240,  30,   0,   0,   0,   1, 248, 255, 255,
+    255, 255,   7, 134, 127,   0, 129, 241, 255,   3, 128, 252,   7,   0, 255, 255,
+    255, 253, 255, 255, 255, 255,   0,  64,  63,   0, 255, 255,   0,   2,  18,   0,
+    127, 251, 255, 255,  64,   0, 255,   3, 191, 253, 255, 255, 255, 127,  88,   1,
+    255, 255, 231,   1,   0,   0,   1,   0, 255, 255,   3, 128, 255, 127,  31,   0,
+    255, 195, 255, 255, 255,  63,  32,   0, 255, 255, 128, 255,  63,   0, 255, 251,
+    251, 255, 255, 224, 255,   0, 248, 255,  15,   0,   3,   0,   0,   0, 239, 111,
+      7,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
     255,   1, 255, 147, 127, 254, 255, 255,  95,  60,   0,   0,  24, 240, 255, 255,
-    255, 195, 255, 255,  35,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 255, 207, 255, 255,   0,   0, 128,   7,   0, 224, 223, 255,
-    239,  15,   0,   0, 255,  31, 128,  63, 255,  15, 255, 131, 159, 255,   0,   0,
-     15,   8, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10,
-    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
-      0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255, 192, 255, 255, 255,
-      7,   0, 255, 255, 255,   1,   3,   0,  63,   0,   0,   0, 255,  31, 255,  31,
-    255,   0, 255,   3, 255,  63,   3,   0, 255, 255, 255, 253, 255,  63,  31,   7,
-    255,   1, 127,   0,   7,   0, 127,   0
+     35,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
+    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
+    255, 207, 255, 255,   0,   0, 128,   7,   0, 224, 223, 255, 239,  15,   0,   0,
+    255,  31, 128,  63, 255, 195,   0,   0, 255,  15, 255, 131, 127, 111, 255, 127,
+    159, 255,   0,   0,  15,   8, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0,
+    150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
+    238, 251, 255,  15,   0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255,
+    192, 255, 255, 255, 255,   1,   3,   0,  63,   0,   0,   0, 255, 255, 255, 224,
+    255,  31, 255,  31, 255,  15,   1,   0, 255,   0, 255,   3, 255,  63,   3,   0,
+    255,  63,  31,  31, 255,  31, 255,   7,  63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_grapheme_base(RE_UINT32 codepoint) {
@@ -11278,7 +11508,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_1[] = {
     24,  9, 25, 26, 27, 28, 29, 30,  9,  9,  9,  9,  9, 31,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 34,
-     9,  9,  9,  9, 35,  9, 36,  9, 37,  9, 38,  9, 39,  9,  9,  9,
+     9,  9,  9, 35, 36,  9, 37,  9, 38,  9, 39,  9, 40,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11327,7 +11557,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    40, 41, 41, 41,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    41, 42, 42, 42,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11346,17 +11576,17 @@ static RE_UINT8 re_grapheme_cluster_break_table_2[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   5,   5,   5,   6,   1,   1,   1,   1,
       1,   1,   1,   1,   7,   1,   1,   1,   1,   1,   1,   1,   8,   9,  10,   1,
      11,   1,  12,  13,   1,   1,  14,  15,  16,  17,  18,   1,   1,  19,   1,  20,
-     21,  22,  23,   1,   1,   1,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,
-     34,  35,  36,  37,  34,  35,  38,  39,  30,  40,  41,  29,  42,  43,  44,   1,
-     45,  46,  47,  29,  30,  48,  49,  29,  50,  51,  52,  29,  30,   1,  53,  54,
+     21,  22,  23,   1,  24,   1,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,
+     35,  36,  37,  38,  35,  36,  39,  40,  31,  41,  42,  30,  43,  44,  45,   1,
+     46,  41,  47,  30,  31,  48,  49,  30,  50,  51,  52,  30,  31,   1,  53,  54,
       1,  55,  56,   1,   1,  57,  58,   1,  59,  60,   1,  61,  62,  63,  64,   1,
       1,  65,  66,  67,  68,   1,   1,   1,  69,  69,  69,  70,  70,  71,  72,  72,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  73,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,  74,  74,  75,  75,   1,  76,  77,   1,
-     78,   1,   1,   1,  79,  80,   1,   1,   1,  81,   1,   1,   1,   1,   1,   1,
-     82,   1,  83,  84,   1,  17,  85,   1,  86,  87,  88,  89,  90,  91,   1,  92,
-      1,  93,   1,   1,   1,   1,  94,  95,   1,   1,   1,   1,   1,   1,   5,  96,
+      1,   1,   1,   1,   1,   1,   1,   1,  74,  75,  76,  76,   1,  77,  78,   1,
+     79,   1,   1,   1,  80,  81,   1,   1,   1,  82,   1,   1,   1,   1,   1,   1,
+     83,   1,  84,  85,   1,  17,  86,   1,  87,  88,  89,  90,  91,  92,   1,  93,
+      1,  94,   1,   1,   1,   1,  95,  96,   1,   1,   1,   1,   1,   1,   5,   5,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      97,  98,   1,  99,   1,   1,  17, 100,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -11367,62 +11597,64 @@ static RE_UINT8 re_grapheme_cluster_break_table_2[] = {
       1, 103,   1,   1, 104,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1, 105,  46,   1,   1, 106,   1,   1,   1,   1,   1,   1,   1,   1,
-    107, 108,   1,   1, 109, 110, 111, 112,   1, 113, 114, 115,  26, 116, 117, 118,
-      1, 119, 120, 121,   1, 122, 123, 124,   1,   1,   1,   1,   1,   1,   1, 125,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127,
-    128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129,
-    130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131,
-    132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126,
-    127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128,
-    129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127,
-    128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129,
-    130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131,
-    132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126,
-    127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128,
-    129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    131, 132, 126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 132,
-    126, 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, 130, 131, 133, 134, 135,
+      1,   1,   1, 105, 106,   1,   1, 107,   1,   1,   1,   1,   1,   1,   1,   1,
+    108, 109,   1,   1, 110, 111, 112, 113,   1, 114, 115, 116,  27, 117, 118, 119,
+      1, 120, 121, 122,   1, 123, 124, 125,   1,   1,   1,   1,   1,   1,   1, 126,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128,
+    129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130,
+    131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132,
+    133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127,
+    128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129,
+    130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128,
+    129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130,
+    131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132,
+    133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127,
+    128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129,
+    130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    132, 133, 127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 133,
+    127, 128, 129, 130, 131, 132, 133, 127, 128, 129, 130, 131, 132, 134, 135, 136,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1, 136,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1, 137,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      6,   6,   1,   1,   1,   1,   1,   2,   1,   1,   1,   1,  46,   1,   1, 137,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 138,
-      1,   1,   1,   1,   1,   1,   1,  85,   1,   1,   1, 139,   1,   1,   1,   1,
+      6,   6,   1,   1,   1,   1,   1,   2,   1,   1,   1,   1, 106,   1,   1, 138,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 139,
+      1,   1,   1,   1,   1,   1,   1, 140,   1,   1,   1, 141,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    142, 143,   1,   1,   1,   1,   1,  80,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 144,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 145,   1,   1,   1,   1,  19,   1, 146,   1,   1,   1,
+    147, 148, 149, 150,  91, 151, 152,   1, 153, 154, 155, 156,  91, 157, 158,   1,
+      1, 159,   1,   1,   1,   1, 102, 160,  50,  51, 161, 162,   1,   1,   1,   1,
+      1, 163, 164,   1,   1, 165, 166,   1,   1,   1,   1,   1,   1, 167, 168,   1,
+      1, 169, 140,   1,   1, 170,   1,   1,  73, 171,   1,   1,   1,   1,   1,   1,
+      1, 172,   1,   1,   1,   1,   1,   1,   1, 173, 174,   1,   1,   1, 175, 176,
+    177, 178, 179,   1, 180,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 181,   1,   1, 182, 183,   1,   1,   1, 184, 185,   1, 186,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 187,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 188,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    140, 141,   1,   1,   1,   1,   1,  79,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 142,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 143,   1,   1,   1,   1,  19,   1,   1,   1,   1,   1,
-    144, 145, 146, 102,  90, 147, 148,   1, 149, 150, 151, 152,  90, 153, 154,   1,
-      1, 155,   1,   1,   1,   1, 102, 156,  50,  51, 157, 158,   1,   1,   1,   1,
-      1, 159, 160,   1,   1, 161, 162,   1,   1,   1,   1,   1,   1, 163, 164,   1,
-      1, 165,  85,   1,   1, 166,   1,   1,  73, 167,   1,   1,   1,   1,   1,   1,
-      1, 168,   1,   1,   1,   1,   1,   1,   1, 169, 170,   1,   1,   1, 171, 172,
-    173, 174, 175,   1, 176,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 177,   1,   1, 178, 179,   1,   1,   1, 180, 181,   1, 182,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 183,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 184,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 189,   1, 190,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 185,   1, 186,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 191, 192, 193,   1,   1, 194,
+      1,   1,   1,   1, 195, 196,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 187, 188, 189,   1,   1, 190,
-      1,   1,   1,   1, 191, 192,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 193, 194, 195,   1,   1,
-      1,   1, 196,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   5, 197, 149,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 198, 199, 200,   1,   1,
+      1,   1, 201,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      5, 197,   5, 198, 199, 200,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    201, 202,   1,   1,   1,   1,   1,   1,   1, 186,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1, 203,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 186,   1,   1,   1, 204,   1,   1,   1,   1,   1,
+      5, 202,   5, 203, 204, 205,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 207,   1,   1,   1,   1,   1,   1,   1, 190,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 208,   1, 209,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1, 190,   1,   1,   1, 210,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 205,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 206,
-      3,   5,   5,   5,   3,   3,   3,   3,   5,   5,   5,   5,   5,   5,   5, 207,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 211,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 212,
+      3,   5,   5,   5,   3,   3,   3,   3,   5,   5,   5,   5,   5,   5,   5, 213,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3
@@ -11478,7 +11710,9 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
+     5,  5,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11521,8 +11755,6 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  6,  6,  6,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,
      4,  6,  6,  6,  6,  0,  4,  4,  4,  0,  4,  4,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11578,14 +11810,16 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  4,  4,  6,  4,  4,  4,  4,  4,  4,  4,  6,  6,
      6,  6,  6,  6,  6,  6,  4,  6,  6,  4,  4,  4,  4,  4,  4,  4,
      4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  1,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  1,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11599,7 +11833,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  6,  4,  6,  4,  4,  4,  4,  4,  4,  4,  0,
      4,  0,  4,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  6,  6,  6,
      6,  6,  6,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  4,
-     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11621,8 +11855,6 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      4,  6,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  4,  0,  0,
      0,  0,  0,  0,  4,  0,  0,  6,  4,  4,  0,  0,  0,  0,  0,  0,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
-     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  4,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  4, 10,  1,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  0,
@@ -11642,6 +11874,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,
      4,  4,  4,  0,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  4,  0,  0,  0,  4,  0,  0,  0,  0,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11707,6 +11941,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,
+     4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
      0,  4,  4,  4,  0,  4,  4,  0,  0,  0,  0,  0,  4,  4,  4,  4,
@@ -11717,6 +11953,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  4,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11724,8 +11962,10 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  0,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  6,  6,  4,  4,  4,  4,  6,  6,  4,  4,  0,  0,  5,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
+     0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -11763,7 +12003,7 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      6,  6,  6,  4,  4,  4,  4,  4,  4,  4,  4,  6,  6,  4,  6,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  6,  4,  6,  6,
      4,  4,  4,  4,  4,  4,  6,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-     6,  6,  4,  4,  4,  4,  6,  4,  4,  4,  4,  4,  0,  0,  0,  0,
+     0,  0,  4,  4,  4,  4,  6,  4,  4,  4,  4,  4,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  6,  6,  4,
      4,  4,  4,  4,  4,  4,  4,  4,  6,  4,  4,  0,  0,  0,  0,  0,
@@ -11815,6 +12055,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,
+     4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  4,  6,  4,  4,  4,  0,  0,  0,  6,  4,  4,
      4,  4,  4,  1,  1,  1,  1,  1,  1,  1,  1,  4,  4,  4,  4,  4,
      4,  4,  4,  0,  0,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,
@@ -11835,6 +12077,8 @@ static RE_UINT8 re_grapheme_cluster_break_table_3[] = {
      4,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  4,  4,  4,  4,  4,
      4,  4,  0,  4,  4,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,
@@ -11873,7 +12117,7 @@ static RE_UINT8 re_grapheme_extend_table_1[] = {
     16,  9, 17, 18, 19, 20, 21, 22,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 23, 24,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 25,
-     9,  9,  9,  9, 26,  9, 27,  9, 28,  9, 29,  9,  9,  9,  9,  9,
+     9,  9,  9, 26, 27,  9, 28,  9, 29,  9, 30,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11922,7 +12166,7 @@ static RE_UINT8 re_grapheme_extend_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    30,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    31,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -11941,61 +12185,63 @@ static RE_UINT8 re_grapheme_extend_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   2,   0,   0,   0,   0,
       0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   4,   5,   6,   0,
       7,   0,   8,   9,   0,   0,  10,  11,  12,  13,  14,   0,   0,  15,   0,  16,
-     17,  18,  19,   0,   0,   0,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
-     30,  31,  32,  33,  30,  31,  34,  35,  26,  36,  37,  25,  38,  39,  40,   0,
-     41,  42,  43,  25,  26,  44,  45,  25,  46,  47,  28,  25,  26,   0,  48,   0,
+     17,  18,  19,   0,  20,   0,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,
+     31,  32,  33,  34,  31,  32,  35,  36,  27,  37,  38,  26,  39,  40,  41,   0,
+     42,  37,  43,  26,  27,  44,  45,  26,  46,  47,  29,  26,  27,   0,  48,   0,
       0,  49,  50,   0,   0,  51,  52,   0,  53,  54,   0,  55,  56,  57,  58,   0,
       0,  59,  60,  61,  62,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  64,  64,  65,  65,   0,  66,  67,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  64,  65,  65,  65,   0,  66,  67,   0,
      68,   0,   0,   0,  69,  70,   0,   0,   0,  71,   0,   0,   0,   0,   0,   0,
-     72,   0,  73,  74,   0,  13,  75,   0,  76,  77,  38,  78,  46,  79,   0,  80,
-      0,  81,   0,   0,   0,   0,  82,  83,   0,   0,   0,   0,   0,   0,   1,  84,
+     72,   0,  73,  74,   0,  13,  75,   0,  76,  77,  39,  78,  46,  79,   0,  80,
+      0,  81,   0,   0,   0,   0,  82,  83,   0,   0,   0,   0,   0,   0,   1,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     85,   0,   0,   0,   0,   0,  13,  86,   0,   0,   0,   0,   0,   0,   0,   0,
+     84,   0,   0,   0,   0,   0,  13,  85,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  87,   0,   0,   0,  88,   0,   0,   0,   1,
+      0,   0,   0,   0,   0,   0,   0,  86,   0,   0,   0,  87,   0,   0,   0,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  89,   0,   0,  90,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  88,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  91,  42,   0,   0,  92,   0,   0,   0,   0,   0,   0,   0,   0,
-     93,  94,   0,   0,   0,   0,  95,  96,   0,  97,  98,   0,  22,  99,   0, 100,
-      0, 101, 102,  31,   0, 103,  26, 104,   0,   0,   0,   0,   0,   0,   0, 105,
+      0,   0,   0,  90,  91,   0,   0,  92,   0,   0,   0,   0,   0,   0,   0,   0,
+     93,  94,   0,   0,   0,   0,  95,  96,   0,  97,  98,   0,  23,  99,   0, 100,
+      0, 101, 102,  32,   0, 103,  27, 104,   0,   0,   0,   0,   0,   0,   0, 105,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  42,   0,   0,   0,
+      2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  91,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
-      0,   0,   0,   0,   0,   0,   0,  75,   0,   0,   0, 107,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 107,   0,   0,   0, 108,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 110,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 112,   0,   0,   0,   0,  15,   0, 113,   0,   0,   0,
+     27,  20, 114, 115,  46, 116,  39,   0,  23, 117,   0, 118,  46, 119, 120,   0,
+      0, 121,   0,   0,   0,   0,  87, 122,  46,  47, 123, 124,   0,   0,   0,   0,
+      0,  20, 125,   0,   0, 126, 127,   0,   0,   0,   0,   0,   0, 128, 129,   0,
+      0, 130, 107,   0,   0, 131,   0,   0,  63, 132,   0,   0,   0,   0,   0,   0,
+      0, 133,   0,   0,   0,   0,   0,   0,   0, 134, 135,   0,   0,   0, 136, 107,
+    137, 138, 139,   0, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 141,   0,   0, 142, 143,   0,   0,   0, 144, 145,   0, 146,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    108, 109,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 110,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 111,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0,
-     26, 112, 113,  88,  46, 114,   0,   0,  22, 115,   0, 116,  46, 117, 118,   0,
-      0, 119,   0,   0,   0,   0,  88, 120,  46,  47, 121, 122,   0,   0,   0,   0,
-      0, 112, 123,   0,   0, 124, 125,   0,   0,   0,   0,   0,   0, 126, 127,   0,
-      0, 128,  75,   0,   0, 129,   0,   0,  63, 130,   0,   0,   0,   0,   0,   0,
-      0, 131,   0,   0,   0,   0,   0,   0,   0, 132, 133,   0,   0,   0, 134,  75,
-    135, 136, 137,   0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 139,   0,   0, 140, 141,   0,   0,   0, 142, 143,   0, 144,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 145,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 148,   0, 149,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 146,   0, 147,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 150,   0, 151,   0,   0, 152,
+      0,   0,   0,   0, 153,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 148,   0, 149,   0,   0, 150,
-      0,   0,   0,   0, 151,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 153, 154,   0,   0,
-      0,   0, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1, 154, 114,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 155, 156, 157,   0,   0,
+      0,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 156,   1, 157, 158, 159,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    160, 161,   0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 162,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 147,   0,   0,   0, 163,   0,   0,   0,   0,   0,
+      1, 159,   1, 160, 161, 162,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    163, 164,   0,   0,   0,   0,   0,   0,   0, 149,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 165,   0, 166,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 149,   0,   0,   0, 167,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   2,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
@@ -12007,42 +12253,43 @@ static RE_UINT8 re_grapheme_extend_table_3[] = {
       0, 248, 255, 255,   0,   0,   1,   0,   0,   0, 192, 159, 159,  61,   0,   0,
       0,   0,   2,   0,   0,   0, 255, 255, 255,   7,   0,   0, 192, 255,   1,   0,
       0, 248,  15,  32,   0,   0, 192, 251, 239,  62,   0,   0,   0,   0,   0,  14,
-      0,   0, 248, 255, 251, 255, 255, 255,   7,   0,   0,   0,   0,   0,   0,  20,
-    254,  33, 254,   0,  12,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,  80,
-     30,  32, 128,   0,  12,   0,   0,  64,   6,   0,   0,   0,   0,   0,   0,  16,
-    134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,  12,   0,   0, 252,
-      0,   0,   0, 208,  30,  32, 224,   0,   4,   0,   0,   0,   0,   0,   0,  64,
-      1,  32, 128,   0,  17,   0,   0,   0,   0,   0,   0, 192, 193,  61,  96,   0,
+      0,   0,   0, 255,   0, 252, 255, 255, 251, 255, 255, 255,   7,   0,   0,   0,
+      0,   0,   0,  20, 254,  33, 254,   0,  12,   0,   0,   0,   2,   0,   0,   0,
+      0,   0,   0,  80,  30,  32, 128,   0,  12,   0,   0,  64,   6,   0,   0,   0,
+      0,   0,   0,  16, 134,  57,   2,   0,   0,   0,  35,   0, 190,  33,   0,   0,
+     12,   0,   0, 252,   0,   0,   0, 208,  30,  32, 224,   0,   4,   0,   0,   0,
+      0,   0,   0,  64,   1,  32, 128,   0,  17,   0,   0,   0, 193,  61,  96,   0,
       0,   0,   0, 144,  68,  48,  96,   0,   3,   0,   0,   0,   0,   0,   0,  88,
       0, 132,  92, 128,   0,   0, 242,   7, 128, 127,   0,   0,   0,   0, 242,  31,
       0,  63,   0,   0,   0,   0,   0,   3,   0,   0, 160,   2,   0,   0, 254, 127,
     223, 224, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,   0, 224, 253, 102,
       0,   0,   0, 195,   1,   0,  30,   0, 100,  32,   0,  32,   0,   0,   0, 224,
       0,   0,  28,   0,   0,   0,  12,   0,   0,   0, 176,  63,  64, 254,  15,  32,
-      0,  56,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0, 135,   1,   4,  14,
-      0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159,   1,   0,   0,   0,
+      0, 184,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0, 135,   1,   4,  14,
+      0,   0, 128,   9,   0,   0,  64, 127, 229,  31, 248, 159, 255, 127,   0,   0,
      15,   0,   0,   0,   0,   0, 240,  23,   0, 248,  15,   0,  60,  59,   0,   0,
      64, 163,   3,   0,   0, 240, 207,   0,   0,   0, 247, 255, 253,  33,  16,   3,
-    255, 255, 255, 251,   0,  16,   0,   0, 255, 255,   1,   0,   0, 128,   3,   0,
-      0,   0,   0, 128,   0, 252,   0,   0,   0,   0,   0,   6,   0, 128, 247,  63,
+      0,  16,   0,   0, 255, 255,   1,   0,   0, 128,   3,   0,   0,   0,   0, 128,
+      0, 252,   0,   0,   0,   0,   0,   6,   0, 128, 247,  63,   0,   0,   0, 192,
       0,   0,   3,   0,  68,   8,   0,   0,  96,  16,   0,   0,  48,   0,   0,   0,
     255, 255,   3, 128, 192,  63,   0,   0, 128, 255,   3,   0,   0,   0, 200,  51,
      32,   0,   0,   0,   0, 126, 102,   0,   8,  16,   0,   0,   0,   0, 157, 193,
-      0,  48,  64,   0,  32,  33,   0,   0,   0,   0,   0,  32,   0,   0, 192,   7,
-    110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,   0,  24,   0,   0,
-      0,   0,   0, 255, 127,   0,   0,   0,   0,   0, 120,   6, 128, 239,  31,   0,
-      0,   0,   8,   0,   0,   0, 192, 127,   0, 158,   0,   0,   0, 128, 211,  64,
-    248,   7,   0,   0,   1,   0, 128,   0, 192,  31,  31,   0,  92,   0,   0,  64,
-      0,   0, 249, 165,  13,   0,   0,   0,   0, 128,  60, 176,   1,   0,   0,  48,
-      0,   0, 248, 167,   0,  40, 191,   0, 188,  15,   0,   0,   0, 128, 255,   6,
-      0,   0,   1,  88,   8,   0,   0,   0,   0,   0, 240,  12, 254,   7,   0,   0,
-      0,   0, 248, 121, 128,   0, 126,  14,   0, 252, 127,   3,   0,   0, 127, 191,
-      0,   0, 252, 255, 255, 252, 109,   0,   0,   0, 126, 180, 191,   0,   0,   0,
-      0,   0, 163,   0,   0,   0,  24,   0,   0,   0,  31,   0,   0,   0, 127,   0,
-      0, 128,   0,   0,   0, 128,   7,   0,  16,   0,   0,   0,   0,   0,   0,  96,
-    160, 195,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
-    127, 255, 255, 249, 219,   7,   0,   0,   0, 240,   0,   0, 240,   7,   0,   0
+      0,  48,  64,   0,  32,  33,   0,   0,   0,   0,   0,  32,   1,   0,   0,   0,
+      0,   0, 192,   7, 110, 240,   0,   0,   0,   0,   0, 135, 240,   0,   0,   0,
+      0,  24,   0,   0,  60,   0,   0,   0, 127,   0,   0,   0,   0,   0,  25, 128,
+      0,   0, 120,   6, 128, 239,  31,   0,   0,   0,   8,   0,   0,   0, 192, 127,
+      0, 158,   0,   0,   0, 128, 211,  64, 248,   7,   0,   0,   1,   0, 128,   0,
+    192,  31,  31,   0,  92,   0,   0,  64,   0,   0, 249, 165,  13,   0,   0,   0,
+      0, 128,  60, 176,   1,   0,   0,  48,   0,   0, 248, 167,   0,  40, 191,   0,
+    188,  15,   0,   0,   0, 128, 255,   6,   0,   0,   1,  88,   8,   0,   0,   0,
+      0,   0, 240,  12, 254,   7,   0,   0,   0,   0, 248, 121, 128,   0, 126,  14,
+      0, 252, 127,   3,   0,   0, 127, 191,   0,   0, 252, 255, 255, 252, 109,   0,
+      0,   0, 126, 180, 191,   0,   0,   0,   0,   0, 163,   0,   0,   0,  24,   0,
+      0,   0,  31,   0,   0,   0, 127,   0,   0, 128,   0,   0,   0, 128,   7,   0,
+     16,   0,   0,   0,   0,   0,   0,  96, 255,  63, 255, 255, 160, 195,   7, 248,
+    231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 127, 248,
+    255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
+    219,   7,   0,   0,   0,  64,   0,   0,   0, 240,   0,   0, 240,   7,   0,   0
 };
 
 RE_UINT32 re_get_grapheme_extend(RE_UINT32 codepoint) {
@@ -12146,33 +12393,33 @@ static RE_UINT8 re_grapheme_link_table_2[] = {
      0,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  7,  7,  0,  0,  0,  0,  8,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  7,  8,  0,  0,  0,  0,  9,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  9,  0,  0,  0,  0,  0,  0,  5,  0,  0, 10,  0, 11,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,
+     0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  5,  0,  0, 11,  0, 12,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    13, 14,  0,  0,  0,  0,  5,  0,  0,  0, 15,  0,  0,  0,  9,  0,
-     0,  0,  0,  0,  0,  0,  0, 16,  0,  0,  0,  0,  0,  0,  0,  1,
+    14, 15,  0,  0,  0,  0,  5,  0,  0,  0, 16,  0,  0,  0, 10,  0,
+     0,  0,  0,  0,  0,  0,  0, 17,  0,  0,  0,  0,  0,  0,  0,  1,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 13, 12,  0, 17,  0,  0,  0, 18,  0,  0,  0,  0,  9,  0,
-     0, 19,  0,  0,  0,  0,  0,  3,  0,  0,  1,  0,  0,  0,  0,  0,
-     0,  0, 20,  0,  0,  0, 20,  0,  0,  0,  0,  0,  0, 12,  0,  0,
-     0, 12,  0,  0,  0, 16,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,
-     0, 17,  0,  0,  0,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,  9,
-     0,  7, 23,  0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 12,  0,  0,  0,  0,  0,  0,  0,  0, 24,  0, 25,  0,  0,  0,
+     0, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 14, 18,  0, 19,  0,  0,  0, 20,  0,  0,  0,  0, 10,  0,
+     0, 21,  0,  0,  0,  0,  0,  3,  0,  0,  1,  0,  0,  0,  0,  0,
+     0,  0, 22,  0,  0,  0, 22,  0,  0,  0,  0,  0,  0, 13,  0,  0,
+     0, 13,  0,  0,  0, 17,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,
+     0, 19,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0, 10,
+     0,  8, 25,  0, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 13,  0,  0,  0,  0,  0,  0,  0,  0, 26,  0, 27,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_grapheme_link_table_3[] = {
       0,   0,   0,   0,   0,  32,   0,   0,   0,   0,   0,  24,   0,   4,   0,   0,
-      0,   0,   0,   4,  16,   0,   0,   0,   0,   0,   0,   6,   0,   0,  16,   0,
-      0,   0,   4,   0,   1,   0,   0,   0,   0,  12,   0,   0,   0,   0,  12,   0,
-      0,   0,   0, 128,  64,   0,   0,   0,   0,  16,   0,   0,   0,   0,   8,   0,
-      0,   0,  64,   0,   0,   0,   0,   2,   0,   0,  24,   0,   0,   0,  32,   0,
-      4,   0,   0,   0,   0,   8,   0,   0,   0,   0,   0,  96, 128,   0,   0,   0,
-     48,   0,   0,   0,   0,   0, 128,   0
+      0,   0,   0,   4,  16,   0,   0,   0,   0,   0,   0,   6,   0,   0,  48,   0,
+      0,   0,  16,   0,   0,   0,   4,   0,   1,   0,   0,   0,   0,  12,   0,   0,
+      0,   0,  12,   0,   0,   0,   0, 128,  64,   0,   0,   0,   0,  16,   0,   0,
+      0,   0,   8,   0,   0,   0,  64,   0,   0,   0,   1, 128,   0,   0,   0,   2,
+      0,   0,  24,   0,   0,   0,  32,   0,   4,   0,   0,   0,   0,   8,   0,   0,
+      0,   0,   0,  96, 128,   0,   0,   0,  48,   0,   0,   0,   0,   0, 128,   0
 };
 
 RE_UINT32 re_get_grapheme_link(RE_UINT32 codepoint) {
@@ -12481,17 +12728,17 @@ RE_UINT32 re_get_hyphen(RE_UINT32 codepoint) {
 static RE_UINT8 re_id_continue_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9, 38, 39, 40,  9, 41,  9, 42, 43,  9,  9, 44,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9, 39, 40, 41, 42, 43, 44, 45, 46, 47,  9,  9, 48,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
-    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
-    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 49, 12, 12, 12, 50, 51, 12,
+    12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 53,  9,  9,  9, 54,  9,
+    12, 12, 12, 12, 55,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12535,7 +12782,7 @@ static RE_UINT8 re_id_continue_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    52,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    56,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12554,107 +12801,115 @@ static RE_UINT16 re_id_continue_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  13,   6,   6,   6,   6,  14,  15,   6,  16,  17,  18,  19,
      20,   6,   6,  21,   6,   6,  22,  23,  24,   6,  25,   6,   6,  26,   6,  27,
-      6,  28,  29,  30,   0,  31,  32,  11,   6,   6,   6,  33,  34,  35,  36,  37,
-     38,  39,  40,  41,  42,  43,  44,  45,  46,  43,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,  56,  57,  58,  59,  60,  53,   6,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,   0,  70,  71,  72,   0,  73,  74,  75,  76,  77,  78,  79,   0,
-      6,   6,  80,   6,  81,   6,  82,  83,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  84,   6,  85,  86,  87,   6,  88,   6,  89,  90,  91,   6,   6,  92,
-     67,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  93,   3,   6,   6,  94,  95,  96,  97,  98,   6,   6,  99, 100,
-    101,   6,   6, 102,   6, 103,   6, 104, 105, 106, 107, 108,   6, 109, 110,   0,
-     29,   6, 105, 111, 112, 113, 114,   0,   6,   6, 115, 116,   6,   6,   6,  97,
-      6, 117, 118,  81, 119,  89, 120,  68,   6,   6,   6,   6,   6,   6,   6, 121,
-      6,   6,   6,   6,   6,   6,   6,   6,  92,   6, 122,  81,   6, 123, 124, 125,
-      0, 126, 127, 128, 129,   0, 129, 130, 131, 132, 133,   6, 134,   0,   0,   0,
+      6,  28,  29,  30,  31,   6,   6,  11,   6,   6,   6,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
+     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
+      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,  89,  90,   6,   6,  91,
+     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  92,   3,   6,   6,  93,  94,  95,  96,  97,   6,   6,  98,  99,
+    100,   6,   6, 101,   6,  30,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
+     29,   6, 103, 109, 110, 111, 112,   0,   6,   6, 113, 114,   6,   6,   6,  96,
+      6, 115, 116,  80, 117,  88, 118,  67,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  91,   6, 119,  80,   6, 120, 121, 122,
+      0, 123, 124, 125, 126,   0, 126, 127, 128, 129, 130,   6, 131,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 135, 105,   6,   6,   6,   6, 136,   6,  82,   6, 137, 138, 139, 139,   6,
+      6,   6,   6,   6,   6,   6,   6, 132,   6,  81,   6, 133, 134, 135, 135,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  67,   6, 142,  67,   6,  83, 143,  14,   6,   6, 144,   6,   0,  24,
+    136, 137,  66,   6, 138,  66,   6,  82, 139,  14,   6,   6, 112,   6,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  24,  80,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  26, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  96,   6,   6, 150, 151,   6, 152,  96,  77,   6,   6, 153, 103,
+      6, 134, 154, 155,   6,   6, 156, 157, 158, 159,  82,  79,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  78,
-      6,   6,   6,   6, 145,   0,  24,  81,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  26, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  97,   6,   6, 155, 156,   6, 157,  97,  78,   6,   6, 158, 105,
-      6, 138, 159, 160,   6,   6, 161, 162, 163, 164,  83,  80,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  29,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  29,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  26, 172,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  81,  24,   6, 173,   6, 174, 175,
-     91, 176, 177, 178,   6,   6,   6,  78,   1,   2,   3, 107,   6, 105, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  68,   0,   0,   6,  96,   0,   0,   0, 183,
-      0,   0,   0,   0,  78,   6, 184, 114,   6, 185, 103,  68,  81,   6, 186,   0,
-      6,   6,   6,   6,  81,  80, 187,  29,   6, 188,   6, 189,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 138, 104, 174,   0,   0,   0,   0,
-    190, 191, 104, 138, 105,   0,   0, 192, 104, 168,   0,   0,   6, 193,   0,   0,
-    194, 195,   0,  78,  78,   0,  75, 196,   6, 104, 104, 197,  26,   0,   0,   0,
-      6,   6, 134,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 199,   0,   0,  78, 200, 184,   0,   0,  24, 201, 138,
-      6,   6, 196, 202,   6,  68,  24, 203,   6,  31, 204, 205,   6,   6, 206,   0,
-    207, 208,   0,   0, 209, 119,   6, 210,  34, 211, 212, 213,   0,   0,   0,   0,
-      6,   6, 214, 215,   6,   6, 216,   0,   0,   0,   0,   0,   6, 217, 218,   0,
-      6,   6, 219,   0,   6, 102, 100,   0,  89, 115,   0,   0,   0,   0,   0,   0,
-      6,  68,   0,   0,   0,   6,   6, 220, 221, 222, 223,   0,   0, 224, 225, 226,
-      6, 105, 200,   6, 227,   0,   6, 102,   0,   0,   0,   0,   0,   0,   0,   0,
-    228,   5, 229, 230, 173, 231,   0,   0, 232, 233, 198, 234, 235, 100,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 138,   0,   0,   0,   0,   0, 236,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  26, 167,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  80,  24,   6, 168,   6, 169, 170,
+     90, 171, 172, 173,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  67,   0,   0,   6,  95,   0,   0,   0, 178,
+      0,   0,   0,   0,  77,   6, 179, 180,   6, 181,  30,  67,  80,   6, 182,   0,
+      6,   6,   6,   6,  80,  79, 183,  29,   6, 184,   6, 185, 186, 187,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 134, 102, 169, 188, 189,   0,   0,
+    190, 191, 102, 134, 103,   0,   0, 192, 102, 163,   0,   0,   6, 193,   0,   0,
+    194, 195,   0,  77,  77,   0,  74, 196,   6, 102, 102, 197,  26,   0,   0,   0,
+      6,   6, 131,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 199,   0,   0,  77, 200, 179,  24, 201,  24, 202, 134,
+      6,   6, 196, 203,   6,  67, 204, 205,   6, 206, 207, 208,   6,   6, 209,   0,
+    210, 211,   0,   0, 212, 117,   6, 213,  33, 214, 215, 216,   0,   0,   0,   0,
+      6,   6, 217, 218,   6,   6, 219,   0,   0,   0,   0,   0,   6, 220, 221,   0,
+      6,   6, 222,   0,   6, 101,  99,   0,  88, 223, 196,   0,   0,   0,   0,   0,
+      6,  67,   0,   0,   0,   6,   6, 224, 225, 226, 227,   0,   0, 228, 229, 230,
+      6, 103, 200,   6, 231,  24,   6, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+    232,   5, 233, 148, 168, 234,   0,   0, 235, 236, 198, 237, 238,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 134,   0,   0,   0,   0,   0, 239,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 189,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 112,   6,   6,   6,   6,   6,   6, 240,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   6,   6, 179,
+      6, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 102, 105, 100,   0,   0,  24, 108,   6, 138, 223, 237,  91,   0,   0,   0,
+      6, 101, 103,  79,   6, 103,  79, 106,   6, 134, 227, 241,  90,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 238,   6, 239,   0,   0, 240,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 242,   6, 243,   0,   0, 244,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 117,
-      6,   6,   6,   6,   6,   6, 104,   0, 134,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 115,
+      6,   6,   6,   6,   6,   6, 102,   0, 131,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 105,   0, 241, 204,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 246, 247, 207,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 242, 243,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 248, 249,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244, 245, 246,   0,   0,
-      0,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  31,   6, 248, 249, 250,   6, 251, 252, 253,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 254, 255,  83,  31,  31, 135, 135, 228, 228, 256,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 257,   6, 258, 259, 260,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    261, 262,   0,   0,   0,   0,   0,   0,   6, 263, 264,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 265,   0,   6,   6, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 196,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 250, 251, 252,   0,   0,
+      0,   0, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 206,   6, 254, 255, 256,   6, 257, 258, 259,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 260, 261,  82, 206, 206, 262, 262, 232, 232, 263,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6, 264,   6, 265, 266, 267,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    250, 266, 267, 268, 269, 270,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    268, 269,   0,   0,   0,   0,   0,   0,   6, 270, 271,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 112,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 272,
+      6,   6,   6,   6,   6,   6, 273,   0,   6,   6, 223,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    256, 274, 275, 276, 277, 278,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  81,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  96,   6,   6,   6,   6,   6,   6,
-     81,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 101,   6,   6,   6,   6,   6,   6,
+     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 271,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 279,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 180,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  30,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  91,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 280,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  90,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -12666,67 +12921,70 @@ static RE_UINT8 re_id_continue_table_3[] = {
     255,   1, 254, 255, 255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,
       0,   0, 255,   7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,
       0,   0, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36,
-    255,  63,   0,   0, 255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255,   0,   0, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255,   0,   0, 239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64,
-    207, 255,   6,   0, 223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252,
-    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255,
-    255, 255, 255,   7, 255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,
-     95,  63, 255, 243,   1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255,
-    255,  31, 254, 255, 223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
-    255,   3, 255, 255, 255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  31,   0,
-    255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48,
-    255,   3,   0,   0,   0,  56, 255,   3, 255, 255, 255,   1, 255,   7, 255, 255,
-    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   7, 255, 255, 255, 159,
-    255,   3, 255,   3, 128,   0, 255, 191,   1,   0,   0,   0, 255,  15, 255,   3,
-      0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,
-      0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170, 255, 255, 223,  95,
-    220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,   1,   0,  16,   0,
-      0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0, 255, 127, 255, 255,
+    255,  63,   0,   0, 255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255,
+    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
+    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
+    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
+    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
+    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
+    255, 223, 253, 255, 255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0,
+    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0,
+    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
+    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
+    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
+      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
+    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
+    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0, 255, 255,  63,  63,
+    255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  63, 128, 255, 255,  31,   0,
+    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,
+      0, 184, 255,   3, 255, 255, 255,   1, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255,   7, 255, 255, 255, 159, 255,   3, 255,   3, 128,   0, 255, 191,
+    255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0,
+    255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,  63,  63, 255, 170,
+    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,
+      1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0,
+    132, 252,  47,  63,  80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0,
      31, 248,  15,   0, 255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 254, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 240, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
-    255, 255,   1,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 240, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32, 255, 255,   1,   0,
+      1,   0,   0,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135,
     127,   0,   0,   0, 255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,
-    128,   0, 255, 255,  31,   0,   0,   0, 192, 255,   0, 128, 255,   1, 255,   3,
-    240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255,
-    255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
-    159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0,
-    191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3,
+    128,   0, 255, 255,  63,   0,   0,   0,  31,   0,   0,   0, 192, 255,  63, 128,
+      4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 223, 255, 240,   0, 255, 255,
+    255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64,
+    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
+    207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3,
+    255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3, 255,  15, 255,   3,
     255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 249,  15,   0, 255,   3,
     255, 252, 255, 255, 255, 255, 255, 252,  27,   0,   0,   0, 255, 255, 255,  35,
-    255, 253, 255, 255,   1,   0, 255,   3,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
-      0,   0,   1,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
-     27,   0,   3,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
-    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
-    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
-    247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
-    255,  67,   0,   0,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255, 253, 255, 255,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
+     15,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
+     27,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
+    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
+    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,
+    127, 111, 255, 127,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_id_continue(RE_UINT32 codepoint) {
@@ -12752,17 +13010,17 @@ RE_UINT32 re_get_id_continue(RE_UINT32 codepoint) {
 static RE_UINT8 re_ideographic_table_1[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  2,  2,
      2,  2,  2,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  4,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  0,
+     2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,  2,  2,  2,  2,
-     2,  7,  2,  8,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  2,  2,  2,  2,
+     2,  6,  2,  7,  0,  0,  0,  0,  0,  0,  0,  0,  8,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2,  2,  2,  2,  2, 10,  2,  2,  2, 11, 12,  2,
-     2,  2,  2, 13,  2,  2,  2,  2,  2,  2, 14,  0,  0,  0, 15,  0,
-     2,  2,  2,  2, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     2,  2,  2,  2,  2,  2,  2,  2,  2,  9,  2,  2,  2, 10, 11,  2,
+     2,  2,  2, 12,  2,  2,  2,  2,  2,  2, 13,  0,  0,  0, 14,  0,
+     2,  2,  2,  2, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -12829,40 +13087,38 @@ static RE_UINT8 re_ideographic_table_2[] = {
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  5,  3,  3,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     3,  3,  3,  4,  3,  3,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  6,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  8,
-     3,  3,  3,  3,  3,  3,  9,  0, 10,  0,  0,  0,  0,  0,  0,  0,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  7,
+     3,  3,  3,  3,  3,  3,  8,  0,  9,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3, 12,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3, 11,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3, 13,  0,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  0,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3, 14,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3,  3,  3,  3,  3, 12,  3,  3,  3,  3,  3,  3,
     13,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3, 15,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+     3,  3,  3,  3,  3, 14,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 16,
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 15,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-     3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 17,  0,  0,  0,  0,  0
+     3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 16,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_ideographic_table_3[] = {
       0,   0,   0,   0, 192,   0,   0,   0, 254,   3,   0,   7, 255, 255, 255, 255,
-    255, 255, 255,  31, 255,  63, 255, 255, 255, 255, 255,   3,  16,   0,   0,   0,
-    255, 255, 255,   0, 255, 255,  63,   0, 255,   1,   0,   0,   0,   0, 255, 255,
-    255, 255, 255,  15, 255, 255, 255,  63, 255, 255,  31,   0,   3,   0, 255, 255,
-      1,   0,   0,   0, 255,   7,   0,   0
+    255,  63, 255, 255, 255, 255, 255,   3,  16,   0,   0,   0, 255, 255, 255,   0,
+    255, 255,  63,   0, 255,   1,   0,   0,   0,   0, 255, 255, 255, 255, 255,  15,
+    255, 255, 255,   1, 255, 255, 255,  63,   3,   0, 255, 255,   1,   0,   0,   0,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_ideographic(RE_UINT32 codepoint) {
@@ -12898,17 +13154,17 @@ RE_UINT32 re_get_ids_binary_operator(RE_UINT32 codepoint) {
 static RE_UINT8 re_id_start_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9,  9, 38,  9,  9, 39,  9, 40, 41,  9,  9,  9,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9,  9,  9, 39,  9, 40, 41, 42, 43, 44,  9,  9,  9,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 42, 12, 12, 12, 43, 44, 12,
-    12, 12, 12, 45, 12, 12, 12, 12, 12, 12, 46,  9,  9,  9, 47,  9,
-    12, 12, 12, 12, 48,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
+    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
+    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -12971,96 +13227,102 @@ static RE_UINT8 re_id_start_table_2[] = {
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   0,   7,   8,   9,   4,  10,
       4,   4,   4,   4,  11,   4,   4,   4,   4,  12,  13,   4,  14,   0,  15,  16,
       0,   4,  17,  18,   4,   4,  19,  20,  21,  22,  23,   4,   4,  24,  25,  26,
-     27,  28,  29,  17,   0,  30,  31,   0,  32,  33,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  44,  45,  46,  47,  48,  45,  49,  50,  51,  52,  46,   0,
-     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,
-     68,  69,  67,   0,  70,  71,  72,   0,  73,   0,  74,  75,  76,   0,   0,   0,
-      4,  77,  78,  79,  80,   4,  81,  82,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  83,   4,  84,  85,  86,   4,  87,   4,  88,   0,  22,   4,   4,  89,
-     68,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,  90,   1,   4,   4,  91,  92,  93,  93,  94,   4,  95,  96,   0,
-      0,   4,   4,  29,   4,  97,   4,  98,  99,   0,  15, 100,   4, 101, 102,   0,
-    103,   4, 104,   0,   0, 105,   0,   0, 106,  95, 107,   0, 108, 109,   4, 110,
+     27,  28,  29,  30,  31,   4,  32,   0,  33,  34,  35,  36,  37,  38,  39,  40,
+     41,  42,  43,  44,  45,  46,  47,  48,  49,  46,  50,  51,  52,  53,  47,   0,
+     54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,   0,
+     69,  70,  68,   0,  71,  72,  73,   0,  74,   0,  75,  76,  77,   0,   0,   0,
+      4,  78,  79,  80,  81,   4,  82,  83,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,  84,   4,  85,  86,  87,   4,  88,   4,  89,   0,  22,   4,   4,  90,
+     69,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,  91,   1,   4,   4,  92,  93,  94,  94,  95,   4,  96,  97,   0,
+      0,   4,   4,  29,   4,  98,   4,  99, 100,   0,  15, 101,   4, 102,  32,   0,
+    103,   4, 104,   0,   0, 105,   0,   0, 106,  96, 107,   0, 108, 109,   4, 110,
       4, 111, 112, 113, 114, 115,   0, 116,   4,   4,   4,   4,   4,   4,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  89,   4, 117, 113,   4, 118, 119, 120,
+      4,   4,   4,   4,   4,   4,   4,   4,  90,   4, 117, 113,   4, 118, 119, 120,
       0,   0,   0, 121, 122,   0,   0,   0, 123, 124, 125,   4,  14,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 126,  99,   4,   4,   4,   4, 127,   4,  81,   4, 128, 103, 129, 129,   0,
+      4,   4,   4,   4,   4,   4,   4, 126,   4,  82,   4, 127, 103, 128, 128,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 131,  68,   4, 132,  68,   4,  82, 106,  12,   4,   4, 133,   4,   0,  15,
+    129, 130,  69,   4, 131,  69,   4,  83, 106,  12,   4,   4, 132,   4,   0,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,  76,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
+    133, 134,   4, 135, 113,   4,   4,  22, 136, 137,   4,   4, 138,   4, 139, 140,
+    141, 142,   4,  96, 137,  96,   0, 143,  25, 144,  68, 145,  33, 146, 147, 148,
+      4,  14, 149, 150,   4, 151, 152, 153, 154, 155,  83, 156,   4,   4,   4, 142,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 134,
-      4,   4,   4,   4,  75,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
-    135, 136,   4, 137, 113,   4,   4,  22, 138, 139,   4,   4, 140,   4, 141, 142,
-    143, 144,   4,  95, 139,  95,   0, 145,  25, 146,  67, 134,  32, 147, 148, 149,
-      4,  14, 150, 151,   4, 152, 153, 154, 155, 156,  82, 157,   4,   4,   4, 144,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 158, 159, 160,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 157, 158, 159,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 161,   4,   4, 162,   0, 163, 164, 165,   4,   4,  93, 166,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 113,  15,   4, 167,   4,  31, 168,
-      0,   0,   0, 169,   4,   4,   4, 134,   0,   1,   1, 170,   4,  99, 171,   0,
-    172, 173, 174,   0,   4,   4,   4,  88,   0,   0,   4, 104,   0,   0,   0,   0,
-      0,   0,   0,   0, 134,   4, 175,   0,   4,  23, 176,  98, 113,   4, 177,   0,
-      4,   4,   4,   4, 113,  15, 178, 160,   4, 179,   4, 111,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  98,  31,   0,   0,   0,   0,
-    180, 181,  98, 103,  99,   0,   0, 182,  98, 162,   0,   0,   4, 183,   0,   0,
-    184,  98,   0, 134, 134,   0,  74, 185,   4,  98,  98, 147,  93,   0,   0,   0,
-      4,   4,  14,   0,   4, 147,   4, 147,   4, 111,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 186,   0,   0, 134, 187, 110,   0,   0,  15, 185, 103,
-    108, 188,   0,   0, 108,  22,  15,  14, 108,  67, 189, 190, 108, 147, 191,   0,
-    192, 193,   0,   0, 194, 114,  99,   0,  48,  45, 195,  56,   0,   0,   0,   0,
-      4, 104, 196,  56,   4,  22, 197,   0,   0,   0,   0,   0,   4, 133, 198,   0,
-      4,  22, 199,   0,   4, 200,   0,   0,  88,   0,   0,   0,   0,   0,   0,   0,
-      4, 193,   0,   0,   0,   4,   4, 201, 202, 203, 204,   0,   0, 205, 175, 206,
-    207, 208, 209,   4, 210,   0,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-    211, 133,  73, 212,  22,   0,   0,   0, 213, 175, 214, 215, 216,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,  46,   0,   0,
+      4,   4,   4, 160,   4,   4, 161,   0, 162, 163, 164,   4,   4,  94, 165,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 113,  15,   4, 166,   4, 167, 168,
+      0,   0,   0, 169,   4,   4,   4, 145,   0,   1,   1, 170,   4, 100, 171,   0,
+    172, 173, 174,   0,   4,   4,   4,  89,   0,   0,   4, 104,   0,   0,   0,   0,
+      0,   0,   0,   0, 145,   4, 175,   0,   4,  23,  30,  99, 113,   4, 176,   0,
+      4,   4,   4,   4, 113,  15, 177, 159,   4, 178,   4, 179, 180, 181,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  99, 167, 182, 183,   0,   0,
+    184, 185,  99, 103, 100,   0,   0, 186,  99, 161,   0,   0,   4, 187,   0,   0,
+    188,  99,   0, 145, 145,   0,  75, 189,   4,  99,  99, 146,  94,   0,   0,   0,
+      4,   4,  14,   0,   4, 146,   4, 146,   4, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 190,   0,   0, 145, 191, 110,  15,  57,  15, 189, 103,
+    108, 192,   0, 193, 108,  22,  15,  14, 108,  68, 194, 195, 108, 146, 196,   0,
+    197, 198,   0,   0, 199, 114, 100,   0,  49,  46, 200,  57,   0,   0,   0,   0,
+      4, 104, 201,  57,   4,  22, 202,   0,   0,   0,   0,   0,   4, 132, 203,   0,
+      4,  22, 204,   0,   4, 205,   0,   0,  89,   0,  68,   0,   0,   0,   0,   0,
+      4, 198,   0,   0,   0,   4,   4, 206, 207, 208, 209,   0,   0, 210, 175, 211,
+    212, 213, 214,   4, 215,  15,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
+    216, 132,  74, 140,  22,   0,   0,   0, 217, 175, 218, 219, 220,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,
-      4,   4,   4, 133,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 161,   0,   0,   0,
+      4,   4,   4, 132,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  15,   4,   4, 175,
+      4, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  29,  99,   0,   0,   0,  15, 217,   4,  22, 111, 218,  22,   0,   0,   0,
+      4,  29, 100,  15,   4, 100,  15, 221,   4,  22, 111, 222,  22,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 219,   0, 166,   0,   0, 220,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 223,   0, 165,   0,   0, 224,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 188,
-      4,   4,   4,   4,   4,   4,  98,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 192,
+      4,   4,   4,   4,   4,   4,  99,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  99,   0, 221, 222,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 160,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 223, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 225,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 142, 226, 227,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 159,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 228, 229,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  30,   4, 225, 226, 227,   4, 228, 229, 230,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 231, 232,  82,  30,  30, 126, 126, 211, 211, 150,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   4, 233, 234,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 193,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 185,   0,   4,   4, 235,   0,   0,   0,   0,   0,
+      4,   4, 230,   4, 231, 232, 233,   4, 234, 235, 236,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 237, 238,  83, 230, 230, 239, 239, 216, 216, 149,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   4, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  15, 221,   4, 198,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    227, 236, 237, 238, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 243,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    233, 244, 245, 246, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 113,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 104,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  29,   4,   4,   4,   4,   4,   4,
     113,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 241,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 249,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  73,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  74,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
@@ -13075,58 +13337,60 @@ static RE_UINT8 re_id_start_table_3[] = {
     255, 135,   7,   0, 255,   7,   0,   0,   0, 192, 254, 255, 255, 255,  47,   0,
      96, 192,   0, 156,   0,   0, 253, 255, 255, 255,   0,   0,   0, 224, 255, 255,
      63,   0,   2,   0,   0, 252, 255, 255, 255,   7,  48,   4, 255, 255,  63,   4,
-     16,   1,   0,   0, 255, 255, 255,   1, 255, 255, 223, 255, 255,   0,   0,   0,
-    240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,   3,   0, 254, 255,
-    225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,   3,   0,   3,  16,
-    224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,   0,   0,  28,   0,
-    224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,   3,   0,   0,   2,
-    224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0, 232, 199,  61, 214,
-     24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,   0,   0,   0,   7,
-      3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,   0,   0,   0,  64,
-      3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,   0,  64, 112, 128,
-      3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47, 127,   0,   0,   0,
-    254, 255, 255, 255, 255, 255,  13,   0, 214, 247, 255, 255, 175, 255,  13,  32,
-     95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255, 255,  31,   0,   0,
-      0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,  98, 192, 225, 255,
-      3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,   3,   0, 255, 255,   3,   0, 255, 223,   1,   0, 255, 255,  15,   0,
-      0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 127,   0,
-    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  15,   0,   0,
+     16,   1,   0,   0, 255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0,
+    255,   3,   0,   0, 240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,
+      3,   0, 254, 255, 225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,
+      3,   0,   3,  16, 224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,
+      0,   0,  28,   0, 224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,
+      3,   0,   0,   2, 224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0,
+    232, 199,  61, 214,  24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,
+      0,   0,   0,  39,   3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,
+      0,   0,   0,  96,   3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,
+      0,  64, 112, 128,   3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47,
+    127,   0,   0,   0, 254, 255, 255, 255, 255, 255,  13,   0, 214, 247, 255, 255,
+    175, 255,  13,  32,  95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255,
+    255,  31,   0,   0,   0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,
+     98, 192, 225, 255,   3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247,
+    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
+    255, 255,  61, 255, 255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255,
+    255, 199, 255,   1, 255, 255,   3, 128, 255, 255,   3,   0, 255, 223,   1,   0,
+    255, 255,  15,   0,   0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0,
+    255, 255, 255, 127, 255,  63,  31,   0, 255,  15, 255, 255, 255, 255, 127,   0,
+    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  31,   0,   0,
     248, 255, 255, 255,   1, 192,   0, 252,  63,   0,   0,   0,  15,   0,   0,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255, 255, 255, 255, 231,
       0, 222, 111,   4,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31,
-    255, 255, 127, 248, 255, 127,   0,   0, 255, 255, 255,  31, 255,  31, 255, 255,
-      0,  12,   0,   0, 255, 127,   0, 128,   0,   0, 128, 255, 252, 255, 255, 255,
-    255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255, 187, 247, 255, 255,
-      7,   0,   0,   0,   0,   0, 252, 104,  63,   0, 255, 255, 255, 255,   7,   0,
-      0, 128,   0,   0, 223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196,
-    255, 255,  98,  62,   5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160,
-    255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
+     80, 253, 255, 243, 224,  67,   0,   0,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 248,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127,   0, 128,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255,   7,   0,   0,   0,   0,   0, 252, 104,
+     63,   0, 255, 255, 255, 255, 255,  31, 255, 255,   7,   0,   0, 128,   0,   0,
+    223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196, 255, 255,  98,  62,
+      5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,  15,
+    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160, 255, 253, 127,  95,
+    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
       0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,   1,   0,
-    255,   7, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15,   0, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
       1,   0, 239, 254,  31,   0,   0,   0, 255,   3,   3,   0, 128,   0, 255, 255,
-    255, 255, 255,   0, 144,   0, 255, 255, 255, 255,  71,   0,  30,   0,   0,  20,
-    255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,   0,   0,   1, 224,
-    128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,  16,   0,   0,   0,
-    255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255, 255, 255,   0, 128,
-      2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,   1, 248, 255, 255,
-    255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32, 255, 253, 255, 255,
-      0,   0, 252, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
+    255, 255, 255,   0,   0,   0,  38,   0, 144,   0, 255, 255, 255, 255,  71,   0,
+     30,   0,   0,  20, 255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,
+      0,   0,   1, 224, 128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,
+     16,   0,   0,   0, 255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255,   0, 128,   2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,
+      1, 248, 255, 255, 255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32,
+    255, 253, 255, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
     255,   3,   0,   1, 255,  63,   0,   0, 248, 255, 255, 224, 255,   7,   1,   0,
-     11,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255,   3, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255,  31, 128,  63,   0,  64,   0,   0,  15,   8,   0,   0,
+     11,   0,   0,   0,   0,   0, 239, 111,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255,   3, 255, 255, 223, 255, 255, 255, 255, 223,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255,
+    255,  31, 128,  63,   0,  64,   0,   0, 127, 111, 255, 127,  15,   8,   0,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
     238, 251, 255,  15,   3,   0, 255, 255
 };
@@ -13240,25 +13504,25 @@ static RE_UINT8 re_indic_positional_category_table_2[] = {
       0,  38,  39,  40,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  42,  42,  43,  43,   0,  44,  45,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  46,   0,   0,   0,  47,  48,   0,
-     49,   0,  50,  51,   0,   0,   0,   0,  52,  53,  54,  55,  56,  57,   0,  58,
-      0,  59,   0,   0,   0,   0,  60,  61,   0,   0,   0,   0,   0,   0,   0,  62,
+      0,   0,   0,   0,   0,   0,   0,   0,  42,  43,  44,  44,   0,  45,  46,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  47,   0,   0,   0,  48,  49,   0,
+     50,   0,  51,  52,   0,   0,   0,   0,  53,  54,  55,  56,  57,  58,   0,  59,
+      0,  60,   0,   0,   0,   0,  61,  62,   0,   0,   0,   0,   0,   0,   0,  63,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  64,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     64,  65,   0,   0,  66,  67,  68,  69,   0,  70,  71,   0,   1,  72,  73,  74,
-      0,  75,  76,  77,   0,  78,  79,  80,   0,   0,   0,   0,   0,   0,   0,  81,
+     65,  66,   0,   0,  67,  68,  69,  70,   0,  71,  72,   0,   1,  73,  74,  75,
+      0,  76,  77,  78,   0,  79,  80,  81,   0,   0,   0,   0,   0,   0,   0,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     82,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     84,  85,  86,   0,  56,  87,   0,   0,  88,  89,  90,  91,  56,  92,  93,   0,
-      0,  94,   0,   0,   0,   0,  95,  96,  23,  97,  98,  99,   0,   0,   0,   0,
-      0, 100, 101,   0,   0, 102, 103,   0,   0,   0,   0,   0,   0, 104, 105,   0,
-      0, 106, 107,   0,   0, 108,   0,   0, 109, 110,   0,   0,   0,   0,   0,   0,
-      0, 111,   0,   0,   0,   0,   0,   0,   0, 112, 113,   0,   0,   0, 114, 115,
-    116, 117, 118,   0, 119,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 120,   0,   0, 121, 122,   0,   0,   0, 123, 124,   0, 125,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 126,   0,   0,   0,   0,   0,   0,   0,   0
+     83,  84,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     85,  86,  87,  88,  57,  89,  90,   0,  91,  92,  93,  94,  57,  95,  96,   0,
+      0,  97,   0,   0,   0,   0,  98,  99,  23, 100, 101, 102,   0,   0,   0,   0,
+      0, 103, 104,   0,   0, 105, 106,   0,   0,   0,   0,   0,   0, 107, 108,   0,
+      0, 109, 110,   0,   0, 111,   0,   0, 112, 113,   0,   0,   0,   0,   0,   0,
+      0, 114,   0,   0,   0,   0,   0,   0,   0, 115, 116,   0,   0,   0, 117, 118,
+    119, 120, 121,   0, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 123,   0,   0, 124, 125,   0,   0,   0, 126, 127,   0, 128,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_indic_positional_category_table_3[] = {
@@ -13303,7 +13567,7 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      1,  2,  2,  2,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  0,  1,  1,
      1,  2,  2,  2,  2,  0,  1,  1,  9,  0,  1,  1,  1,  1,  0,  0,
      0,  0,  0,  0,  0,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  2,  2,  2,  2,  0,  1,  6,  6,  0,  6,  6,  1,  1,  0,  0,
@@ -13347,7 +13611,9 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      0,  0,  3,  2,  4,  1,  1,  2,  2,  2,  2,  2,  2,  3,  0,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  1,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  1,  3,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  1,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -13437,7 +13703,11 @@ static RE_UINT8 re_indic_positional_category_table_3[] = {
      3,  3,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      2,  4,  2,  3,  3,  1,  1,  2,  2,  3,  3,  0,  0,  0,  0,  0,
+     0,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  3,  3,  4,  1,  9,  9,
@@ -13632,14 +13902,14 @@ static RE_UINT8 re_indic_syllabic_category_table_2[] = {
     107, 108, 109, 110,  54, 111, 112, 113,   0,   0,   0,   0,   0,   0, 114, 115,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     116, 117, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    119, 120, 121, 122, 123, 124,   0,   0, 125, 126, 127, 128, 129, 130, 131, 132,
-    133, 134,   0,   0, 135, 136, 137, 138, 139, 140, 141, 142,   0,   0,   0,   0,
-    143, 144, 145, 146, 147, 148, 149,   0,   0,   0,   0,   0, 143, 150, 151,   0,
-    143, 152, 153,   0, 154, 155,  65,   0, 156, 157,   0,   0,   0,   0,   0,   0,
-    154, 158,   0,   0,   0,   0,   0,   0, 159, 160, 161,   0,   0, 162, 163, 164,
-    165, 166, 167,  54, 168,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    169, 170, 171, 172, 173, 174,   0,   0, 175, 176, 177, 178, 179,  65,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 180,   0,   0,   0,   0,   0,   0,   0,   0
+    119, 120, 121, 122, 123, 124, 125,   0, 126, 127, 128, 129, 130, 131, 132, 133,
+    134, 135,   0,   0, 136, 137, 138, 139, 140, 141, 142, 143,   0,   0,   0,   0,
+    144, 145, 146, 147, 148, 149, 150,   0,   0,   0,   0,   0, 144, 151, 152,   0,
+    144, 153, 154,   0, 155, 156,  65,   0, 157, 158, 159,   0,   0,   0,   0,   0,
+    155, 160,   0,   0,   0,   0,   0,   0, 161, 162, 163,   0,   0, 164, 165, 166,
+    167, 168, 169,  54, 170,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    171, 172, 173, 174, 175, 176,   0,   0, 177, 178, 179, 180, 181,  65,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 182,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_indic_syllabic_category_table_3[] = {
@@ -13700,9 +13970,9 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      4,  4,  4,  5,  4,  6,  6,  6,  6,  6,  6,  6,  6,  0,  6,  6,
      6,  0,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  7,
-     7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0, 10,  8,  8,
+     7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  9, 10,  8,  8,
      8,  8,  8,  8,  8,  0,  8,  8,  8,  0,  8,  8,  8, 11,  0,  0,
-     0,  0,  0,  0,  0,  8,  8,  0,  7,  7,  7,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  8,  8,  0,  7,  7,  7,  0,  0, 13,  0,  0,
      6,  6,  8,  8,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  4,  5,  0,  6,  6,  6,  6,  6,  6,  6,  6,  0,  6,  6,
@@ -13710,7 +13980,7 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  0,  7,  7,  7,  7,  7,  0,  0,  9, 10,  8,  8,
      8,  8,  8,  8,  8,  0,  8,  8,  8,  0,  8,  8,  8, 11,  0,  0,
-     0,  0,  0,  0,  0,  8,  8,  0,  0,  0,  0,  0,  0,  0,  7,  0,
+     0,  0,  0,  0,  0,  8,  8,  0,  0,  0,  0,  0,  0, 13,  7,  0,
      6,  6,  8,  8,  0,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      0, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
@@ -13761,8 +14031,8 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7, 15,  8,  8,  8,  8, 20, 20, 20, 20, 20, 20, 20,  7, 20,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 20, 20,  8,  8,  0,  0,
-     6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  7,  7,
-     7,  7,  8,  8, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+     7,  7,  8,  8, 18, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  8,  8, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
@@ -13795,13 +14065,13 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      8,  8,  8,  8,  4, 20, 20, 20, 20, 20, 18,  3,  3,  0,  0,  3,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
-     4,  4,  4, 26,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+     4,  4,  4, 27,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     8,  8,  8,  8, 11,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0,  0,
+     8,  8,  8,  8, 11,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,
-     4, 26,  5,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,
+     4, 27,  5,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7, 23, 23, 23,  8,  8,  8,  8,  8,  8, 18, 24, 23, 23,  7,  7,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 10,  7,  7,  7, 27, 27,
@@ -13849,7 +14119,7 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8, 27,
     27, 27, 27, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     4,  4, 26,  5,  6,  6,  6,  6,  6,  7,  7,  7,  6,  6,  6,  7,
+     4,  4, 27,  5,  6,  6,  6,  6,  6,  7,  7,  7,  6,  6,  6,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8, 15, 15, 15,
@@ -13888,11 +14158,13 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      8,  8,  8,  8,  8,  8, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
     33, 33, 33, 33, 33, 33,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,
+    18,  6,  6,  8,  8,  7,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,
      4,  4,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      8,  8,  8,  8,  8,  8,  8,  8,  8, 11,  9,  0,  0,  0,  0,  0,
+     0,  0,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      4,  4,  5,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
      7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  8,
@@ -13959,6 +14231,8 @@ static RE_UINT8 re_indic_syllabic_category_table_3[] = {
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  0,  0, 15, 15, 15,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 18,  0,  0,  0,  0,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0,
+     7,  7,  7,  7,  7,  7,  7,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,
      8,  8,  8,  8,  8,  8,  8,  4,  5, 11,  9,  0,  0,  0,  0,  0,
      6,  6,  6,  6,  6,  6,  6,  0,  0,  6,  0,  0,  7,  7,  7,  7,
@@ -14109,11 +14383,11 @@ static RE_UINT8 re_joining_group_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  0,  0,  0,  0,
-     0,  0,  0, 12,  0, 13, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 12, 13, 14, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 15, 16,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 17, 18,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0, 16, 17,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 19,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -14143,18 +14417,20 @@ static RE_UINT8 re_joining_group_table_3[] = {
      15,  15,  13,  13,  13,  19,  19,  20,  20,  20,  18,   8,   8,   9,   6,   6,
       9,   8,   6,   2,   2,  14,  14,   1,   3,   3,  56,  56,   6,   9,   9,  17,
      57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   0,   0,   0,  68,   0,   0,  20,   6,  11,  11,  13,  69,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   6,  11,  15,  16,  18,  19,   1,   1,   8,   3,  68,   0,   7,  10,
-     13,  69,   8,  12,  17,   0,   4,   4,   4,   8,   1,  70,  71,  72,   4,   4,
-      4,   6,  13,  12,  71,   6,   6,  18,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   6,  11,  15,  16,  18,  19,   1,   1,   8,   3,  70,   0,   7,  10,
+     13,  71,   8,  12,  17,  16,   4,   4,   4,   8,   1,  72,  73,  74,   4,   4,
+      4,   6,  13,  12,  73,   6,   6,  18,  13,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     73,  74,  74,  75,  75,  76,   0,  77,   0,  78,  78,   0,   0,  79,  80,  81,
-     82,  82,  82,  83,  84,  85,  86,  87,  88,  89,  89,  90,  90,  91,  92,  92,
-     92,  93,   0,   0,  94,   0,   0,   0,   0,   0,   0,  95,  96,  97,  98,  99,
+     75,  76,  76,  77,  77,  78,   0,  79,   0,  80,  80,   0,   0,  81,  82,  83,
+     84,  84,  84,  85,  86,  87,  88,  89,  90,  91,  91,  92,  92,  93,  94,  94,
+     94,  95,   0,   0,  96,   0,   0,   0,   0,   0,   0,  97,  98,  99, 100, 101,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 100,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 101,   0,   0, 100,   0, 101,   0,
-    101,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 102,   0,   0,   0,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0, 102,   0, 103,   0,
+    103,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -14184,7 +14460,7 @@ static RE_UINT8 re_joining_type_table_1[] = {
     16,  9, 17, 18, 19, 20, 21, 22,  9,  9,  9,  9,  9, 23,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 24, 25,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 26,
-     9,  9,  9,  9, 27,  9, 28,  9, 29,  9, 30,  9,  9,  9,  9,  9,
+     9,  9,  9, 27, 28,  9, 29,  9, 30,  9, 31,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -14233,7 +14509,7 @@ static RE_UINT8 re_joining_type_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    31,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    32,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -14252,19 +14528,19 @@ static RE_UINT8 re_joining_type_table_2[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   3,   0,   0,   0,   0,
       0,   0,   0,   0,   4,   0,   0,   0,   0,   0,   0,   0,   5,   6,   7,   0,
       8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,   0,  20,  21,  22,
-     23,  24,  25,  26,   0,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
-     38,  35,  39,  40,  38,  35,  41,  42,  34,  43,  44,  33,  45,   0,  46,   0,
-     47,  48,  49,  33,  34,  43,  50,  33,  51,  52,  36,  33,  34,   0,  53,   0,
-      0,  54,  55,   0,   0,  56,  57,   0,  58,  59,   0,  60,  61,  62,  63,   0,
-      0,  64,  65,  66,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,
+     23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,
+     39,  36,  40,  41,  39,  36,  42,  43,  35,  44,  45,  34,  46,   0,  47,   0,
+     48,  49,  50,  34,  35,  44,  51,  34,  52,  53,  37,  34,  35,   0,  54,   0,
+      0,  55,  56,   0,   0,  57,  58,   0,  59,  60,   0,  61,  62,  63,  64,   0,
+      0,  65,  66,  67,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  69,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  69,  69,  70,  70,   0,  71,  72,   0,
-     73,  13,  13,  74,  75,  76,   0,   0,   0,  77,   0,   0,   0,   0,   0,   0,
-     78,   0,  79,  80,   0,  81,  82,   0,  83,  84,  45,  85,  51,  86,   0,  87,
-      0,  88,   0,   0,   0,   0,  89,  90,   0,   0,   0,   0,   0,   0,   2,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,  70,  71,  71,  71,   0,  72,  73,   0,
+     74,  13,  13,  75,  76,  77,   0,   0,   0,  78,   0,   0,   0,   0,   0,   0,
+     79,   0,  80,  81,   0,  82,  83,   0,  84,  85,  46,  86,  52,  87,   0,  88,
+      0,  89,   0,   0,   0,   0,  90,  91,   0,   0,   0,   0,   0,   0,   2,   2,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     92,  93,   0,  94,   0,   0,  81,  95,   0,   0,   0,   0,   0,   0,   0,   0,
+     92,  93,   0,  94,   0,   0,  82,  95,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -14273,44 +14549,46 @@ static RE_UINT8 re_joining_type_table_2[] = {
       0,  98,   0,   0,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 100,  48,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,   0,
-    102, 103,  13, 104,   0,   0, 105, 106,   0, 107, 108,   0,  30, 109,   0, 110,
-      0, 111, 112,  35,   0, 113,  34, 114,   0,   0,   0,   0,   0,   0,   0, 115,
+      0,   0,   0, 100, 101,   0,   0, 102,   0,   0,   0,   0,   0,   0,   0,   0,
+    103, 104,  13, 105,   0,   0, 106, 107,   0, 108, 109,   0,  31, 110,   0, 111,
+      0, 112, 113,  36,   0, 114,  35, 115,   0,   0,   0,   0,   0,   0,   0, 116,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 117,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      3,   3,   0,   0,   0,   0,   0,  97,   0,   0,   0,   0,   0,   0,   0, 117,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118,
-      0,   0,   0,   0,   0,   0,   0,  82,   0,   0,   0, 119,   0,   0,   0,   0,
+      3,   3,   0,   0,   0,   0,   0,  97,   0,   0,   0,   0,   0,   0,   0, 118,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 119,
+      0,   0,   0,   0,   0,   0,   0, 120,   0,   0,   0, 121,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    122, 123,   0,   0,   0,   0, 124, 125,   0,   0,   0,   0, 126, 127,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 128, 129,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   0,   0,   0, 131, 132, 133, 134, 135, 136,   0,
+     35, 137, 138, 139,  52, 140,  46,   0,  31, 141,   0, 142,  52, 143, 144,   0,
+      0, 145,   0,   0,   0,   0,  97, 146,  52,  53, 120, 147,   0,   0,   0,   0,
+      0, 137, 148,   0,   0, 149, 150,   0,   0,   0,   0,   0,   0, 151, 152,   0,
+      0, 153, 120,   0,   0, 154,   0,   0,  69, 155,   0,   0,   0,   0,   0,   0,
+      0, 156,   0,   0,   0,   0,   0,   0,   0, 157, 158,   0,   0,   0, 159, 120,
+    160, 161, 162,   0, 163,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 164,   0,   0, 165, 166,   0,   0,   0, 167, 168,   0, 169,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 170,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 171,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    120, 121,   0,   0,   0,   0, 122, 123,   0,   0,   0,   0, 124, 125,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 126, 127,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 128,   0,   0,   0, 129, 130,   0,   0, 131, 132,   0,
-     34, 133, 134,  97,  51, 135,   0,   0,  30, 136,   0, 137,  51, 138, 139,   0,
-      0, 140,   0,   0,   0,   0,  97, 141,  51,  52,  82, 142,   0,   0,   0,   0,
-      0, 133, 143,   0,   0, 144, 145,   0,   0,   0,   0,   0,   0, 146, 147,   0,
-      0, 148,  82,   0,   0, 149,   0,   0,  68, 150,   0,   0,   0,   0,   0,   0,
-      0, 151,   0,   0,   0,   0,   0,   0,   0, 152, 153,   0,   0,   0, 154,  82,
-    155, 156, 157,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 159,   0,   0, 160, 161,   0,   0,   0, 162, 163,   0, 164,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 165,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 166,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 172,   0, 173,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 167,   0, 168,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 174,   0, 175,   0,   0, 176,
+      0,   0,   0,   0, 177,  84,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 169,   0, 170,   0,   0, 171,
-      0,   0,   0,   0, 172,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,  98,   0,   0,
-      0,   0, 175,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2, 178, 138,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 179, 180,  98,   0,   0,
+      0,   0, 181,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      2, 176,   2, 177, 178, 179,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    180, 181,   0,   0,   0,   0,   0,   0,   0, 168,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 182,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 168,   0,  13,  13, 183,   0,   0,   0,   0,   0,
+      2, 182,   2, 183, 184, 185,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    186, 187,   0,   0,   0,   0,   0,   0,   0, 173,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 188,   0, 189,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 173,   0,  13,  13, 190,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     34,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   3,
+     35,   2,   2,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   3,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -14368,11 +14646,13 @@ static RE_UINT8 re_joining_type_table_3[] = {
     3, 2, 2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 3, 2, 3, 3, 3, 1, 1, 1, 0, 0, 0, 0,
     2, 0, 2, 2, 2, 2, 0, 3, 2, 3, 3, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+    3, 3, 3, 4, 4, 4, 2, 0, 0, 2, 2, 2, 2, 2, 3, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 0, 3, 2,
-    2, 3, 3, 2, 2, 0, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14412,7 +14692,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1,
     1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
@@ -14461,7 +14741,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 4, 1, 1, 1, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 4, 1, 1, 1, 0, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
@@ -14479,7 +14759,7 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14497,8 +14777,6 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0,
     0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
@@ -14518,6 +14796,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
     1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14553,6 +14833,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
     0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
@@ -14578,6 +14860,10 @@ static RE_UINT8 re_joining_type_table_3[] = {
     2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 0, 2, 2, 3, 3, 3, 0, 2, 3, 3, 2, 2, 3, 2, 2,
     0, 2, 3, 3, 2, 0, 0, 0, 0, 3, 2, 5, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14586,6 +14872,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,
     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -14661,6 +14949,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
@@ -14679,6 +14969,8 @@ static RE_UINT8 re_joining_type_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
     1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
@@ -14708,18 +15000,18 @@ static RE_UINT8 re_line_break_table_1[] = {
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 20, 21, 22,
     23, 24, 18, 19, 20, 25, 26, 26, 27, 27, 27, 27, 27, 27, 28, 29,
-    30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 27, 27, 40, 41, 27, 27,
-    27, 42, 27, 27, 27, 27, 27, 27, 27, 27, 43, 44, 13, 13, 13, 13,
-    13, 45, 46, 47, 27, 27, 27, 27, 27, 27, 27, 27, 48, 27, 27, 49,
-    27, 27, 27, 27, 50, 51, 52, 27, 53, 27, 54, 55, 56, 57, 58, 59,
+    30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 27, 40, 41, 42, 27, 27,
+    27, 43, 27, 27, 27, 27, 27, 27, 27, 27, 44, 45, 13, 13, 13, 13,
+    13, 46, 47, 48, 27, 27, 27, 27, 27, 27, 27, 49, 50, 27, 27, 51,
+    27, 27, 27, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 59,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 64,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 59,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 64,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
@@ -14760,7 +15052,7 @@ static RE_UINT8 re_line_break_table_1[] = {
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-    60, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+    65, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
     27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
@@ -14779,26 +15071,26 @@ static RE_UINT16 re_line_break_table_2[] = {
       7,   7,   7,   7,   7,   7,   8,   7,   9,   9,  10,  11,  12,  13,   7,   7,
       7,   7,   7,   7,  14,   7,   7,   7,   7,  15,  16,   7,  17,  18,  19,  20,
      21,   7,  22,  23,   7,   7,  24,  25,  26,  27,  28,   7,   7,  29,  30,  31,
-     32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
-     48,  49,  50,  51,  52,  53,  54,  55,  56,  53,  57,  58,  59,  60,  61,  62,
-     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
-     79,  80,  81,  36,  82,  83,  84,  36,  85,  86,  87,  88,  89,  90,  91,  36,
+     32,  33,  34,  35,  36,   7,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  52,  56,  57,  58,  59,  60,  61,
+     62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
+     78,  79,  80,  81,  82,  83,  84,  81,  85,  86,  87,  88,  89,  90,  91,  81,
      92,  92,  93,  92,  94,   7,  95,   7,  96,  96,  96,  97,  97,  98,  99,  99,
       7,   7, 100,   7, 101, 102, 103,   7, 104,   7, 105, 106, 107,   7,   7, 108,
     109,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7, 110,   7,   7, 111, 112, 113, 114, 115,  92,  92, 116, 117,
     118,   7,   7, 119, 120, 121,   7, 122, 123, 124, 125, 126,  92, 127, 128,   7,
-    129,  92, 130, 131, 132, 133, 134,  36, 135, 136, 137, 138, 139, 140,   7, 141,
-      7, 142, 143, 144, 145, 146, 147, 148,   7,   7,   7,   7,   7,   7,   9, 149,
-      7,   7,   7,   7,   7,   7,   7,   7, 108,   7, 150, 151,   7,  37, 152, 153,
+    129,  92, 130, 131, 132, 133, 134,  81, 135, 136, 137, 138, 139, 140,   7, 141,
+      7, 142, 143, 144, 145, 146, 147, 148,   7,   7,   7,   7,   7,   7,   9,   9,
+      7,   7,   7,   7,   7,   7,   7,   7, 108,   7, 149, 150,   7, 151, 152, 153,
     154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,   7, 167,   7,
     168, 169, 170, 171, 172, 173,   7, 174, 175, 176,   7,   7,   7,   7,   7, 177,
-      7, 178,  35, 179, 179, 179, 179, 180, 179, 179, 181, 182, 183, 184, 185, 186,
-    187, 188, 189, 190, 191, 192, 193, 194, 195,   7, 196, 197, 198,   7, 199, 200,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 201,   7, 202, 203,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 204, 205, 206,   7,   7,   7,
-      7, 207, 123,   7,   7,   7,   7, 208,   7,  95,   7, 209, 210, 211, 211,   9,
-    212, 213, 214,  36, 215, 216, 216, 217, 216, 216, 216, 216, 216, 216, 218, 219,
+      7, 178, 179, 180, 180, 180, 180, 181, 180, 180, 182, 183, 184, 185, 186, 187,
+    188, 189, 190, 191, 192, 193, 194, 195, 196,   7, 197, 198, 199,   7, 200, 201,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 202,   7, 203, 204,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 205, 206, 207,   7,   7,   7,
+      7,   7,   7,   7,   7,   7,   7, 208,   7,  95,   7, 209, 210, 211, 211,   9,
+    212, 213, 214,  81, 215, 216, 216, 217, 216, 216, 216, 216, 216, 216, 218, 219,
     220, 221, 222, 223, 224, 225, 223, 226, 227, 228, 216, 216, 229, 216, 216, 230,
     231, 216, 232, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
@@ -14809,7 +15101,7 @@ static RE_UINT16 re_line_break_table_2[] = {
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 234, 216, 235, 144,   7,   7,   7,   7,   7,   7,   7,   7,
     236, 237,   7, 238, 239,   7,   7, 240,   7,   7,   7,   7,   7,   7, 241, 242,
-    243, 244,   7, 245, 246, 136, 247, 248,  30, 249, 250, 251,  40, 252, 253, 254,
+    243, 244,   7, 245, 246, 136, 247, 248,  30, 249, 250, 251,  39, 252, 253, 254,
       7, 255, 256,  92,  92,  92, 257, 258, 259, 260,   7, 261,   7,   7,   7, 262,
     263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 269, 263, 264,
     265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266,
@@ -14829,74 +15121,84 @@ static RE_UINT16 re_line_break_table_2[] = {
     263, 264, 265, 266, 267, 268, 269, 263, 264, 265, 266, 267, 268, 270, 271, 272,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
     273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36, 216, 216, 216, 216, 216, 216, 216, 216,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216, 274, 275, 276,   7,   7,   7, 277,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 278, 279,   7, 280,   7, 281, 282,
-    283, 284, 285, 286,   7,   7,   7, 287, 288, 289, 290, 291, 292, 231, 293, 294,
-    295, 296, 297,  36,   7,   7,   7, 298, 299, 300,   7,   7, 301, 302, 279, 303,
-     36,  36,  36,  36, 304,   7, 305, 306,   7, 307, 308, 309, 310,   7, 311,  36,
-      7,   7,   7,   7, 151, 312, 313, 314,   7, 315,   7, 316,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 210, 122, 281,  36,  36,  36,  36,
-    317, 318, 319,   7, 123, 320,  36, 321, 322, 323,  36,  36,   7, 324, 280,   7,
-    325, 326, 327,   7,   7,  36,   7, 328,   7, 329, 330, 331, 332, 333,  36,  36,
-      7,   7, 334,  36,   7, 335,   7, 336,   7, 337,  36,  36,  36,  36,  36,  36,
-     36,  36,  36, 123,   7, 338,  36,  36,   7, 315, 339,  36,  36, 279, 340, 210,
-    139, 341, 342, 343, 139, 344, 345, 346, 139, 347, 348, 349, 139, 252, 350, 351,
-    352, 353,  36,  36, 354, 355, 356, 357, 358, 359, 360, 361,  36,  36,  36,  36,
-      7, 362, 363, 364,   7,  27, 365,  36,  36,  36,  36,  36,   7, 366, 367,  36,
-      7,  27, 368, 369,   7, 370, 371,  36, 372, 373,  36,  36,  36,  36,  36,  36,
-      7, 374,  36,  36,  36,   7,   7, 375, 376, 377, 378,  36,  36, 379, 380, 381,
-    382, 383, 384,   7, 385, 386,   7, 119,  36,  36,  36,  36,  36,  36,  36,  36,
-    387, 388, 389, 390, 391, 392,  36,  36, 393, 394, 395, 396, 397, 371,  36,  36,
-     36,  36,  36,  36,  36,  36,  36, 398,  36,  36,  36,  36,  36, 399, 400, 401,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 278,   7,   7, 279,   7, 280, 281,
+    282, 283, 284, 285,   7,   7,   7, 286, 287, 288, 289, 290, 291, 231, 292, 293,
+    294, 295, 296,  81,   7,   7,   7, 297, 298, 299,   7,   7, 300, 301, 302, 303,
+     81,  81,  81,  81, 304,   7, 305, 306,   7, 307,  35, 308, 309,   7, 310,  81,
+      7,   7,   7,   7, 150, 311, 312, 313,   7, 314,   7, 315, 316, 317,  81,  81,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 210, 122, 318, 319, 320,  81,  81,
+    321, 322, 323,   7, 123, 324,  81, 325, 326, 327,  81,  81,   7, 328, 279,   7,
+    329, 330, 331,   7,   7,  81,   7, 332,   7, 333, 334, 335, 336, 337,  81,  81,
+      7,   7, 338,  81,   7, 339,   7, 340,   7, 341,  81,  81,  81,  81,  81,  81,
+     81,  81,  81, 123,   7, 342,  81,  81,   7, 314, 343, 302, 344, 302, 345, 210,
+    139, 346, 347, 348, 139, 349, 350, 351, 139, 352, 353, 354, 139, 252, 355, 356,
+    357, 358,  81,  81, 359, 360, 361, 362, 363, 364, 365, 366,  81,  81,  81,  81,
+      7, 367, 368, 369,   7,  27, 370,  81,  81,  81,  81,  81,   7, 371, 372,  81,
+      7,  27, 373, 374,   7, 375, 376,  81, 377, 378, 379,  81,  81,  81,  81,  81,
+      7, 380,  81,  81,  81,   7,   7, 381, 382, 383, 384,  81,  81, 385, 386, 387,
+    388, 389, 390,   7, 391, 392,   7, 119,  81,  81,  81,  81,  81,  81,  81,  81,
+    393, 394, 395, 396, 397, 398,  81,  81, 399, 400, 401, 402, 403, 376,  81,  81,
+     81,  81,  81,  81,  81,  81,  81, 404,  81,  81,  81,  81,  81, 405, 406, 407,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 107,  36,  36,  36,
-      7,   7,   7, 402,   7,   7,   7,   7,   7,   7, 403,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 107,  81,  81,  81,
+      7,   7,   7, 408,   7,   7,   7,   7,   7,   7, 409,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 302,   7,   7, 339,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7, 404,   7, 405,   7,   7,   7,   7,   7,   7, 406,   7,   7,   7,   7,
-      7, 407,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 408,   7,
-      7,   7, 178,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7, 410,   7, 411,   7,   7,   7,   7,   7,   7, 412,   7,   7,   7,   7,
+      7, 413,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 414,   7,
+      7,   7, 178,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 119, 123, 409,  36,  36, 279, 410,   7, 411, 412, 413, 414,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,   7,   7, 415,  36,  36,  36,   7,   7, 416,   9, 417,  36,  36, 418,
+      7, 119, 123, 415,   7, 123, 311, 416,   7, 417, 418, 419, 420,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,   7,   7, 421,  81,  81,  81,   7,   7, 422,   9, 423,  81,  81, 424,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 419,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 425,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
     216, 216, 216, 216, 216, 216, 216, 216,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7, 122,  36, 420,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    216, 216, 216, 216, 216, 216, 216, 216, 231,  36, 421, 422, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 423,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7, 424, 425, 426,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7, 122,   7, 427,   7, 428, 429, 430,   7, 334,
-      7,   7, 431,  36,  36,  36,  36, 432,   7,   7, 210, 119,  36,  36,  36,  36,
-      7,   7,  37,   7, 433, 434, 435,   7, 436, 437, 438,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7, 439,   7,   7,   7,   7,   7,   7,   7,   7, 440, 441,
+      7,   7,   7,   7,   7,   7, 122,  81, 426,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 427,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 428, 429, 430, 216, 216, 216, 216,
+    216, 216, 216, 216, 216, 216, 216, 431,  81,  81,  81,  81,  81,  81,  81,  81,
+      7,   7,   7, 432, 433, 434,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,   9, 435, 436,   7,   7,   7, 409,  81,
+      7,   7,   7,   7,   7,   7,   7, 122,   7, 437,   7, 438, 439, 440,   7, 179,
+      7,   7, 441,  81,  81,  81,  81, 442,   7,   7, 210, 119,  81,  81,  81,  81,
+      7,   7, 151,   7, 443, 444, 445,   7, 446, 447, 448,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 449,   7,   7,   7,   7,   7,   7,   7,   7, 450, 451,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      9, 442,   9, 443, 444, 445,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    446, 447,  36,  36,  36,  36,  36,  36,   7, 448, 449,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,   7, 450,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7, 451,  36,   7,   7, 452,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36, 453,   7, 454,  36,  36, 455, 151,  36,  36,  36,  36,  36,  36,
-    435, 456, 457, 458, 459, 460,  36, 461,  36,  36,  36,  36,  36,  36,  36,  36,
-    216, 216, 216, 216, 216, 216, 216, 216, 462, 463, 179, 464, 179, 465, 216, 466,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 467, 468, 469, 470,
-    216, 216, 471, 472, 473, 474, 216, 216, 475, 476, 477, 478, 479, 216, 480, 481,
-    216, 216, 482, 483, 216, 484, 485, 216,   7,   7,   7, 486,   7,   7, 487, 216,
-    488,   7, 489,   7, 490, 491, 216, 216, 492, 493, 216, 494, 216, 495, 496, 216,
-      7,   7, 486, 216, 216, 216, 216, 216,   7,   7,   7,   7, 497,   7,  35, 498,
+      9, 452,   9, 453, 454, 455,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81, 123,  81,  81,  81,  81,  81,  81,  81,
+    456, 457,  81,  81,  81,  81,  81,  81,   7, 458, 459,  81,  81,  81,  81,  81,
+     81,  81,  81,  81, 302, 460,   7, 461,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81, 462,
+      7,   7,   7,   7,   7,   7, 463,  81,   7,   7, 464,  81,  81,  81,  81,  81,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
+     81,  81,  81, 465,   7, 466,  81,  81, 467, 150,  81,  81,  81,  81,  81,  81,
+    445, 468, 469, 470, 471, 472,  81, 473,  81,  81,  81,  81,  81,  81,  81,  81,
+    216, 216, 216, 216, 216, 216, 216, 216, 474, 475, 180, 476, 180, 477, 216, 478,
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 479, 480, 481, 482,
+    216, 216, 483, 484, 485, 486, 216, 216, 487, 488, 489, 490, 491, 216, 492, 493,
+    216, 216, 494, 495, 216, 496, 497, 216,   7,   7,   7, 498,   7,   7, 499, 216,
+    500,   7, 501,   7, 502, 503, 216, 216, 504, 505, 216, 506, 216, 507, 508, 216,
+      7,   7, 498, 216, 216, 216, 509, 510,   7,   7,   7,   7, 511,   7, 179, 512,
     216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 499,
-    500,   9,   9,   9,  36,  36,  36,  36,   9,   9,   9,   9,   9,   9,   9, 501,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36
+    216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 513,
+    514,   9,   9,   9,  81,  81,  81,  81,   9,   9,   9,   9,   9,   9,   9, 515,
+     81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81
 };
 
 static RE_UINT8 re_line_break_table_3[] = {
@@ -14943,7 +15245,7 @@ static RE_UINT8 re_line_break_table_3[] = {
     23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,  0,  0,  0,  0, 23,
     23, 23, 23,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9, 11, 11, 11, 14, 14,  9,  9,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  1,  0,  7,  7,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  1,  7,  7,  7,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11, 17, 17,  9,  9,  9,
@@ -14971,13 +15273,11 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  0,  0,  9,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
+     9,  9,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15029,9 +15329,9 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
      9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  9,  1,  1,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  1,  9,  1,  1,
      1,  1,  1,  1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  0,  0,
-     0,  0,  0,  0,  0,  1,  1,  0,  9,  9,  9,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  1,  1,  0,  9,  9,  9,  0,  0,  9,  0,  0,
      9,  9,  1,  1,  0,  0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
      0,  0,  0,  0,  0,  0,  0, 22,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  1,  1,  1, 22,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
@@ -15039,7 +15339,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  0,  0,  1,  9,  1,  1,
      1,  1,  1,  1,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1,  0,  0,
-     0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  9,  0,
+     0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  9,  9,  0,
      9,  9,  1,  1,  0,  0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
      0,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
@@ -15064,6 +15364,8 @@ static RE_UINT8 re_line_break_table_3[] = {
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0, 10,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  9,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  2,  2,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 24, 24,  0, 24,  0, 24, 24, 24, 24, 24,  0, 24, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
     24, 24, 24, 24,  0, 24,  0, 24, 24, 24, 24, 24, 24, 24, 24, 24,
@@ -15124,8 +15426,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 12, 18,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  2,  2,  2,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,
-     9,  9,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  1,  1,  1,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15136,7 +15438,7 @@ static RE_UINT8 re_line_break_table_3[] = {
     24, 24, 24, 24,  2,  2, 28, 24,  2,  9,  2, 10, 24, 24,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-     9,  9,  7,  7,  2,  2, 22,  9,  7,  7,  9,  1,  1,  1, 20,  0,
+     9,  9,  7,  7,  2,  2, 22,  9,  7,  7,  9,  1,  1,  1, 20,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
@@ -15168,16 +15470,16 @@ static RE_UINT8 re_line_break_table_3[] = {
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  2,  2,  9,  2,  2,  2,
      2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
+     1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  2,  2,  0,
      1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,
@@ -15198,12 +15500,12 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  9,  1,  9,  9,
      9,  9,  9,  9,  1,  9,  9,  1,  1,  1,  9,  0,  0,  0,  0,  0,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  1,  1,  1,  1,  1,
      9,  9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  0,  9,  0,  9,  0,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15220,7 +15522,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
     10, 10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 11, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -15258,6 +15560,8 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
@@ -15314,8 +15618,6 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,
      1,  1,  9,  9,  0,  0,  0,  0,  0,  7,  2,  2,  2,  9,  7,  2,
      9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  9,
@@ -15329,7 +15631,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      8,  8, 12, 18, 12, 18, 12, 18, 12, 18,  2,  2,  2,  2,  7,  9,
      2,  2,  9,  2,  2,  9,  9,  9,  9,  9, 31, 31,  2,  2,  2,  9,
      2,  2, 12,  2,  2,  2,  2,  2,  2,  2,  2,  9,  2,  9,  2,  2,
-     9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  7,  7, 12, 18, 12, 18, 12, 18, 12, 18,  2,  0,  0,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34,  0, 34, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
@@ -15382,10 +15684,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  9,  2,  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
+     9,  9,  0,  9,  0,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  1,  9,  9,  9,  1,  9,  9,  9,  9,  1,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  1,  1,  1,  1,  1,  9,  9,  9,  9,  1,  0,  0,  0,
@@ -15454,18 +15756,16 @@ static RE_UINT8 re_line_break_table_3[] = {
     23, 23, 23, 23, 23, 23, 23,  0, 23, 23, 23, 23, 23,  0, 23,  0,
     23, 23,  0, 23, 23,  0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 18, 12,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 11,  9,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 11,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
     14, 18, 18, 14, 14,  7,  7, 12, 18, 32,  0,  0,  0,  0,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
@@ -15506,6 +15806,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
      9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15516,8 +15818,6 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
      9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15533,7 +15833,17 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  0,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  0,  0,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15580,6 +15890,8 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
      1,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+     9,  9,  1,  1,  1,  1,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15587,10 +15899,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      1,  1,  1,  1,  1,  1,  1,  2,  2,  9,  9,  9,  9,  9,  0,  0,
      0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
+     1,  9,  9,  1,  1,  9,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  2,  2,
-     2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,
+     2,  2,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
@@ -15641,13 +15953,15 @@ static RE_UINT8 re_line_break_table_3[] = {
     22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  9,  9,  0,  0,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0, 24, 24, 24,
     24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 24, 24,  2,  2,  2, 24,
+    24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  9,  9,  9,  9,  9,  9,
@@ -15673,7 +15987,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  1,
      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  9, 22, 22,
     22,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,
@@ -15719,7 +16033,7 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 12, 18,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  2,  2,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,
      1,  1,  1,  1,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -15743,6 +16057,10 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34, 34, 34, 34, 34, 34,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  0,
+    34, 34, 34,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     36, 36, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 36, 36, 36, 36,  0,  0,  0,  0,  0,  0,  0,  0,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
@@ -15754,6 +16072,10 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  9,  1,  1,  2,
      1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,
+     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
+     1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  1,  1,  1,  1,  1,  9,  9,  9,  1,  1,  1,
@@ -15799,9 +16121,13 @@ static RE_UINT8 re_line_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,
      1,  1,  1,  1,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  0,  0,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  9,  9,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  1,  1,  1,  1,
     17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  0,  0,  0,  0,  0, 10,
+     9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,  0,  9,  9,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
      9,  9,  9,  9,  9,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  1,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,
@@ -15894,6 +16220,10 @@ static RE_UINT8 re_line_break_table_3[] = {
     34, 34, 34, 34, 34, 35, 35, 34, 35, 35, 34, 35, 34, 34, 34, 34,
     34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
     34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34,
+    34, 34, 34, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+    35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -15952,7 +16282,7 @@ static RE_UINT8 re_lowercase_table_1[] = {
      2, 12,  2, 13,  2,  2, 14,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 15,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
-     2,  2,  2,  2,  2, 16,  2,  2,  2,  2, 17,  2,  2,  2,  2,  2,
+     2,  2,  2,  2,  2, 16,  2, 17,  2,  2, 18,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
      2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
@@ -16030,27 +16360,29 @@ static RE_UINT8 re_lowercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 26, 47,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 26, 48, 49,  5,  5,  5, 50, 15, 51,  0,  0,  0,  0,  0,  0,
+     0, 26, 15, 48,  5,  5,  5, 49, 15, 50,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  5, 52, 53,  0,  0,  0,  0, 54,  5, 55, 56, 57, 58, 59,
+     0,  0,  5, 51, 52,  0,  0,  0,  0, 53,  5, 54, 55, 56, 57, 58,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 60, 61, 15, 15,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 59, 60, 15, 15,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 62,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
-     0, 63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0, 15, 67,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 62, 63,  0,  0,  0, 64, 65,  0,  0,  0,  0, 66, 67,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 68, 69,  0,  0,
+     0,  0,  0,  0,  0,  0, 15, 70,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 68, 69, 81,
-    71, 72, 82, 64, 75, 83, 84, 85, 86, 82, 87, 26, 88, 75, 89,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 90, 91,  0,  0,  0,  0,  0,
+    71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 71, 72, 84,
+    74, 75, 85, 63, 78, 86, 87, 88, 89, 85, 90, 26, 91, 78, 92,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 93,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 94, 95,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -16067,17 +16399,18 @@ static RE_UINT8 re_lowercase_table_3[] = {
      63,   0, 255,   0, 255,   0, 255,  63, 255,   0, 223,  64, 220,   0, 207,   0,
     255,   0, 220,   0,   0,   0,   2, 128,   0,   0, 255,  31,   0, 196,   8,   0,
       0, 128,  16,  50, 192,  67,   0,   0,  16,   0,   0,   0, 255,   3,   0,   0,
-    255, 255, 255, 127,  98,  21, 218,  63,  26,  80,   8,   0, 191,  32,   0,   0,
-    170,  42,   0,   0, 170, 170, 170,  58, 168, 170, 171, 170, 170, 170, 255, 149,
-    170,  80, 186, 170, 170, 130, 160, 170,   8,   5,   0,   0,   0,   0,  64,   7,
-    255, 255, 255, 247, 255,   1, 255, 255, 127,   0, 248,   0,   0, 255, 255, 255,
-    255, 255,   0,   0,   0,   0,   0, 255, 255, 255, 255,  15, 255, 255,   7,   0,
-      0,   0,   0, 252, 255, 255,  15,   0,   0, 192, 223, 255, 255,   0,   0,   0,
-    252, 255, 255,  15,   0,   0, 192, 235, 239, 255,   0,   0,   0, 252, 255, 255,
-     15,   0,   0, 192, 255, 255, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0,
-    192, 255, 255, 255,   0, 192, 255, 255,   0,   0, 192, 255,  63,   0,   0,   0,
-    252, 255, 255, 247,   3,   0,   0, 240, 255, 255, 223,  15, 255, 127,  63,   0,
-    255, 253,   0,   0, 247,  11,   0,   0, 252, 255, 255, 255,  15,   0,   0,   0
+     98,  21, 218,  63,  26,  80,   8,   0, 191,  32,   0,   0, 170,  42,   0,   0,
+    170, 170, 170,  58, 168, 170, 171, 170, 170, 170, 255, 149, 170,  80, 186, 170,
+    170, 130, 160, 170,  10,   5, 170,   2,   0,   0,  64,   7, 255, 255, 255, 247,
+    255,   1, 255, 255, 127,   0, 248,   0,   0, 255, 255, 255, 255, 255,   0,   0,
+      0,   0,   0, 255, 255, 255, 255,  15,   0,   0, 128, 255, 251, 255, 251,  27,
+    185, 255, 255, 255, 255, 255, 253,   7, 255, 255,   7,   0,   0,   0,   0, 252,
+    255, 255,  15,   0,   0, 192, 223, 255, 255,   0,   0,   0, 252, 255, 255,  15,
+      0,   0, 192, 235, 239, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0, 192,
+    255, 255, 255,   0,   0,   0, 252, 255, 255,  15,   0,   0, 192, 255, 255, 255,
+      0, 192, 255, 255,   0,   0, 192, 255,  63,   0,   0,   0, 252, 255, 255, 247,
+      3,   0,   0, 240, 255, 255, 223,  15, 255, 127,  63,   0, 255, 253,   0,   0,
+    247,  11,   0,   0, 255, 251, 255, 127, 252, 255, 255, 255,  15,   0,   0,   0
 };
 
 RE_UINT32 re_get_lowercase(RE_UINT32 codepoint) {
@@ -16630,14 +16963,14 @@ static RE_UINT8 re_nfkc_quick_check_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 15, 16,
-     5,  5,  5,  5, 17, 18, 19,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 17,  5,  5, 18, 19, 20,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 20, 21,  5,  5,  5,  5,  5, 22, 23,  5, 24,  5,
+     5,  5,  5,  5, 21, 22,  5,  5,  5,  5,  5, 23, 24,  5, 25,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 25,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 26,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -16731,20 +17064,22 @@ static RE_UINT8 re_nfkc_quick_check_table_2[] = {
      80,  81,  48,  82,  48,  48,  83,   0,  84,  85,  86,  48,  48,  87,  88,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  89,  90,  48,  91,  48,  92,  93,
      94,  90,  95,  96,  48,  48,  48,  97,  98,  48,  48,  48,  48,  75,  99, 100,
-      0,   0,   0,   0,   0, 101,   0,   0,   0, 102,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 101, 102,   0,   0,
+      0,   0,   0,   0,   0, 103,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  22,  27,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0, 104,   0,   0,
+      0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,   0, 106,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 107,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,   9,   0,  47,  70,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 108,   9,   0,  47,  70,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     48,  48, 107,  48, 108, 109, 110,  48, 111, 112, 113,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48, 114,  48,  48,  48,  48,  48,  48,  48,  48, 115,  48,
+     48,  48, 109,  48, 110, 111, 112,  48, 113, 114, 115,  48,  48,  48,  48,  48,
+     48,  48,  48,  48,  48, 116,  48,  48,  48,  48,  48,  48,  48,  48, 117,  48,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    110, 116, 117, 118, 119, 120,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 121, 122, 123, 124,  77,   0,   0,   0,
-    125, 126, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    112, 118, 119, 120, 121, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 123, 124, 125, 126,  77,   0,   0,   0,
+    127, 128, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  94,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
@@ -16909,7 +17244,7 @@ static RE_UINT8 re_nfkc_quick_check_table_3[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
+    1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
@@ -16954,6 +17289,10 @@ static RE_UINT8 re_nfkc_quick_check_table_3[] = {
     1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1,
     0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -17033,14 +17372,14 @@ static RE_UINT8 re_nfkd_quick_check_table_1[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5, 13, 14, 15, 15, 15, 15, 15,
     15, 15, 15, 15, 15, 16,  5,  5,  5,  5,  5,  5,  5,  5, 17, 18,
-     5,  5,  5,  5, 19, 20, 21,  5,  5,  5,  5,  5,  5,  5,  5,  5,
+     5, 19,  5,  5, 20, 21, 22,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5, 22, 23,  5,  5,  5,  5,  5, 24, 25,  5, 26,  5,
+     5,  5,  5,  5, 23, 24,  5,  5,  5,  5,  5, 25, 26,  5, 27,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 27,  5,
+     5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 28,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
@@ -17138,20 +17477,22 @@ static RE_UINT8 re_nfkd_quick_check_table_2[] = {
     107, 108,  59, 109,  59,  59,  61,   0, 110, 111, 112,  59,  59, 113, 114,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  64, 115,  59,   4,  59, 116, 117,
     118, 115, 119, 120,  59,  59,  59, 121, 122,  59,  59,  59,  59, 100, 123, 124,
-      0,   0,   0,   0, 125, 126,   0,   0,   0, 127,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0, 130,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 131,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 125, 126,   0,   0,
+      0,   0,   0,   0, 127, 128,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 130,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 131,   0,   0,   0,   0,   0,   0,   0, 132,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 132,  15,   0,  58,  92,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 134,  15,   0,  58,  92,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     59,  59,  65,  59, 133, 134, 135,  59, 136, 137, 138,  59,  59,  59,  59,  59,
-     59,  59,  59,  59,  59,   7,  59,  59,  59,  59,  59,  59,  59,  59, 139,  59,
+     59,  59,  65,  59, 135, 136, 137,  59, 138, 139, 140,  59,  59,  59,  59,  59,
+     59,  59,  59,  59,  59,   7,  59,  59,  59,  59,  59,  59,  59,  59, 141,  59,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    135, 140, 141, 142, 143, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, 145, 146, 147,  39, 102,   0,   0,   0,
-    148,  60, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    137, 142, 143, 144, 145, 146,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 147, 148, 149,  39, 102,   0,   0,   0,
+    150,  60, 151,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
@@ -17184,19 +17525,19 @@ static RE_UINT8 re_nfkd_quick_check_table_3[] = {
     255, 255, 143, 255, 255, 127, 255, 255, 255, 255, 255, 127,   0,   0, 192, 255,
     254, 255, 255, 255, 255, 255, 191, 248, 255, 175, 170, 170,  90, 253,  36, 201,
     255, 255, 239,  39, 255, 255, 111,  56, 255, 255,   1,   0,   0, 128,   3,   0,
-      0,   0,   0, 128,   0, 255,   0,   0, 255, 255, 254, 255, 255, 255, 255, 252,
+      0,   0,   0, 128,   0, 255,   0,   0, 255, 255, 254, 255, 255, 255, 227, 252,
     255, 255, 255,  15, 255, 253, 255, 255, 240, 255, 255, 255,   0, 192,  26, 128,
     154,   3,   0,   0,   0, 192,   0,   0, 128, 255,   7,  95,   0,   0, 128, 160,
      36,   0,   0,   0,   0,   0, 252, 255, 255, 255,   7,   0, 255, 255,   0,   0,
       0, 255, 255, 255, 255, 255,   0, 224, 255, 255,   0, 252,  96,   0,   8,   0,
     128, 240,  40,   0,   0,   0,   0, 224,   1,   0,   0,   0,   3,   3,   3, 227,
-    128, 128, 255, 255, 255, 255, 255, 235, 255, 247, 255, 255, 255,  63, 255, 255,
-    255, 231, 255, 255, 255, 255, 255, 167, 255, 255, 255, 243, 255, 255, 255, 254,
-    255, 255, 255,  63,   0,   0,   0,  32, 155,  33,   0,  20,  16,   0,   0,   0,
-     64,  24,  32,  32,   0,   0,   0, 132, 160,   3,   2,   0,   0,  48,   0,   0,
-    105,   1,   8, 245, 123,  21, 105,  85, 105,   8,   8, 161,   0,   4,   0, 240,
-     17,   4,   0, 240,   0, 248,   0,   0,   0, 128,   0,   0,   0,   0, 255, 255,
-    248, 255,   0,   0,   0, 254, 252, 255
+    128, 128, 255, 255,  65,   0,   0,   0,   0,   0,   2, 248, 255, 255, 255, 235,
+    255, 247, 255, 255, 255,  63, 255, 255, 255, 231, 255, 255, 255, 255, 255, 167,
+    255, 255, 255, 243, 255, 255, 255, 254, 255, 255, 255,  63,   0,   0,   0,  32,
+    155,  33,   0,  20,  16,   0,   0,   0,  64,  24,  32,  32,   0,   0,   0, 132,
+    160,   3,   2,   0,   0,  48,   0,   0, 105,   1,   8, 245, 123,  21, 105,  85,
+    105,   8,   8, 161,   0,   4,   0, 240,  17,   4,   0, 240,   0, 248,   0,   0,
+      0, 128,   0,   0,   0,   0, 255, 255, 248, 255,   0,   0,   0, 254, 252, 255
 };
 
 RE_UINT32 re_get_nfkd_quick_check(RE_UINT32 codepoint) {
@@ -17480,7 +17821,7 @@ static RE_UINT8 re_numeric_type_table_2[] = {
      20,  20,  20, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   0,   0,   0,   0,   0,   0, 101, 102,   0,   0,   0,   0,
+      0,   0,   0,   3,   0,   0,   3,   0,   0,   0, 101, 102,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -17919,7 +18260,7 @@ static RE_UINT8 re_numeric_value_table_2[] = {
     112, 113, 114, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   3,   0,   0,   0,   0,   0,   0, 116, 117,   0,   0,   0,   0,
+      0,   0,   0,   3,   0,   0,   3,   0,   0,   0, 116, 117,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -18363,23 +18704,23 @@ static RE_UINT8 re_other_alphabetic_table_2[] = {
      78,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  79,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  81,  82,   0,  28,  83,   0,   0,  56,  69,  46,   0,  56,  84,  85,   0,
-      0,  86,   0,   0,   0,   0,  52,  45,  16,  21,  22,  19,   0,   0,   0,   0,
-      0,  55,  87,   0,   0,  10,  66,   0,   0,   0,   0,   0,   0,  88,  89,   0,
-      0,  90,  53,   0,   0,  91,   0,   0,  92,  93,   0,   0,   0,   0,   0,   0,
-      0,  94,   0,   0,   0,   0,   0,   0,   0,  95,  96,   0,   0,   0,  97,  98,
-     99, 100, 101,   0, 102,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 103,   0,   0, 104, 105,   0,   0,   0, 106, 107,   0, 108,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 109,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 110,  61, 111,   0,   0, 112,
+     56,  81,  82,  83,  28,  84,  28,   0,  56,  69,  46,   0,  56,  85,  86,   0,
+      0,  87,   0,   0,   0,   0,  52,  45,  16,  21,  22,  19,   0,   0,   0,   0,
+      0,  55,  88,   0,   0,  10,  66,   0,   0,   0,   0,   0,   0,  89,  90,   0,
+      0,  91,  92,   0,   0,  93,   0,   0,  94,  95,   0,   0,   0,   0,   0,   0,
+      0,  96,   0,   0,   0,   0,   0,   0,   0,  97,  98,   0,   0,   0,  99, 100,
+    101, 102, 103,   0, 104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 105,   0,   0, 106, 107,   0,   0,   0, 108, 109,   0, 110,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 111,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,  61, 113,   0,   0, 114,
       0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    113, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    115, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 117,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  10, 116, 116,  62,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  10, 118, 118,  62,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -18397,23 +18738,23 @@ static RE_UINT8 re_other_alphabetic_table_3[] = {
       0, 248, 127, 121,   0,   0, 192, 195, 157,  63,  30,   0, 252, 191,   0,  60,
       0,   0, 192, 255, 255,   1,   0,   0,  96,   0,   0,   0,   0,   2,   0,   0,
     255,  15, 255,   1,   0,   0, 128,  15,   0,   0, 224, 127, 254, 255,  31,   0,
-      0,   0,   0, 128,   1,   0,   0,   0,  31,   0,   0,   0,   0,   0, 224, 255,
+      0,   0,   0, 128,   1, 112,   0,   0,  31,   0,   0,   0,   0,   0, 224, 255,
       7,   0,   0,   0, 254,  51,   0,   0, 128, 255,   3,   0, 240, 255, 127,   0,
     128, 255,  31,   0, 255, 255, 255, 255, 255,   3,   0,   0,   0,   0, 240,  15,
       4,   8,   0,   0, 248,   0,   0,   0,   3,   0,   0,   0,  47,   0,   0,   0,
     192,   7,   0,   0, 128, 255,   7,   0,   0, 254, 127,   0,   8,  48,   0,   0,
       0,   0,   0,  56,   0,   0, 157,  65,   0, 248,  32,   0, 248,   7,   0,   0,
       0,   0,   0,  64,   0,   0, 192,   7, 110, 240,   0,   0, 240,   0,   0,   0,
-      0,  24,   0,   0,   0,   0,   0, 255,  63,   0,   0,   0,   0,   0, 255,   1,
-      0,   0, 248, 255,   0, 192,   0,   0,   0, 240, 159,  64,  59,   0,   0,   0,
-      0, 128,  63, 127,   0,   0,   0,  48,   0,   0, 255, 127,   0, 248,  63,   0,
-      0,   0,   0, 224, 255,   7,   0,   0,   0, 240, 255,   1,   0,   0, 191,  25,
-      5,   0,   0,   0,   0,   0, 254, 252,  16,   0,   0,   0, 254,   7,   0,   0,
-      0,   0, 224, 123,   0,   0, 254,  15,   0, 252, 255,   0,   0, 128, 127, 127,
-      0,   0, 252, 255, 255, 254, 127,   0,   0,   0, 126, 180, 139,   0,   0,   0,
-      0, 124, 123,   0,   0,   0, 120,   0,   0, 128, 254, 255, 255, 128,   7,   0,
-      0,   0,   3,   0, 127, 255, 255, 249, 219,   7,   0,   0, 128,   0,   0,   0,
-    255,   3, 255, 255
+      0,  24,   0,   0,   0,   0,   0, 255,  63,   0,   0,   0,   0,   0,  24,   0,
+      0,   0, 255,   1,   0,   0, 248, 255,   0, 192,   0,   0,   0, 240, 159,  64,
+     59,   0,   0,   0,   0, 128,  63, 127,   0,   0,   0,  48,   0,   0, 255, 127,
+      1,   0,   0,   0,   0, 248,  63,   0,   0,   0,   0, 224, 255,   7,   0,   0,
+      0, 240, 255,   1,   0,   0, 191,  25,   5,   0,   0,   0,   0,   0, 254, 252,
+     16,   0,   0,   0, 254,   7,   0,   0,   0,   0, 224, 123,   0,   0, 254,  15,
+      0, 252, 255,   0,   0, 128, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0,
+      0,   0, 126, 180, 139,   0,   0,   0,   0, 124, 123,   0,   0,   0, 120,   0,
+      0, 128, 254, 255, 255, 128,   7,   0,   0,   0,   3,   0, 127, 255, 255, 249,
+    219,   7,   0,   0, 128,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_other_alphabetic(RE_UINT32 codepoint) {
@@ -18712,7 +19053,7 @@ static RE_UINT8 re_other_lowercase_table_1[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -18794,7 +19135,9 @@ static RE_UINT8 re_other_lowercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 15,  0,  0,  0,  0,  0,  0, 16,  0,  0,  0, 17,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 19, 20,  0,  0
 };
 
 static RE_UINT8 re_other_lowercase_table_3[] = {
@@ -18802,7 +19145,8 @@ static RE_UINT8 re_other_lowercase_table_3[] = {
      31,   0,   0,   0,  32,   0,   0,   0,   0,   0,   0,   4,   0, 240, 255, 255,
     255, 255, 255, 255, 255,   7,   0,   1,   0,   0,   0, 248,   0,   0,   2, 128,
       0,   0, 255,  31,   0,   0, 255, 255, 255,   3,   0,   0,   0,   0,   0,  48,
-      0,   0,   1,   0,   0,   0,   0,   3,   0,   0,   0, 240
+      0,   0,   1,   0,   0,   0,   0,   3,   0,   0,   0, 240, 185, 255, 255, 255,
+    255, 255, 253,   7
 };
 
 RE_UINT32 re_get_other_lowercase(RE_UINT32 codepoint) {
@@ -19104,17 +19448,17 @@ RE_UINT32 re_get_pattern_white_space(RE_UINT32 codepoint) {
 static RE_UINT8 re_posix_alnum_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 10, 39, 10, 10, 40, 10, 41, 42, 43, 10, 10, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 10, 10, 40, 10, 41, 42, 43, 44, 45, 46, 10, 10, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 44, 13, 13, 13, 45, 46, 13,
-    13, 13, 13, 47, 13, 13, 13, 13, 13, 13, 48, 10, 10, 10, 49, 10,
-    13, 13, 13, 13, 50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
+    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
+    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -19172,12 +19516,12 @@ static RE_UINT8 re_posix_alnum_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
 };
 
-static RE_UINT8 re_posix_alnum_table_2[] = {
+static RE_UINT16 re_posix_alnum_table_2[] = {
       0,   1,   2,   2,   0,   3,   4,   4,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   6,   7,   0,   0,   8,   9,  10,  11,   5,  12,
       5,   5,   5,   5,  13,   5,   5,   5,   5,  14,  15,   5,  16,  17,  18,  19,
      20,   5,  21,  22,   5,   5,  23,  24,  25,   5,  26,   5,   5,  27,  28,  29,
-     30,  31,  32,  33,   0,  34,  35,  36,   5,  37,  38,  39,  40,  41,  42,  43,
+     30,  31,  32,  33,  34,   5,  35,  36,   5,  37,  38,  39,  40,  41,  42,  43,
      44,  45,  46,  47,  48,  49,  50,  51,  52,  49,  53,  54,  55,  56,  57,   0,
      58,  59,  60,  61,  58,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,
      73,  74,  75,   0,  76,  77,  78,   0,  79,   0,  80,  81,  82,  83,   0,   0,
@@ -19185,96 +19529,102 @@ static RE_UINT8 re_posix_alnum_table_2[] = {
       5,   5,  88,   5,  89,  90,  91,   5,  92,   5,  74,   0,  93,   5,   5,  94,
      73,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,  95,   2,   5,   5,  96,  97,  98,  98,  99,   5, 100, 101,   0,
-      0,   5,   5,  32,   5, 102,   5, 103, 104, 105,  25, 106,   5, 107, 108,   0,
-    109,   5, 104, 110,   0, 111,  79,   0,   5, 112, 113,   0,   5, 114,   5, 115,
+      0,   5,   5,  32,   5,  33,   5, 102, 103, 104,  25, 105,   5, 106, 107,   0,
+    108,   5, 103, 109,   0, 110, 111,   0,   5, 112, 113,   0,   5, 114,   5, 115,
       5, 116, 117, 118, 119,  66,   0, 120,   5,   5,   5,   5,   5,   5,   0, 121,
       5,   5,   5,   5,   5,   5,   5,   5,  94,   5, 122, 118,   5, 123, 124, 125,
       0,   0,   0, 126, 127,   0,   0,   0, 128, 129, 130,   5,  16,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 131,   5, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 131,   5, 107,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 132, 104,   5,   5,   5,   5, 133,   5,  86,   5, 134, 116, 135, 135,   5,
-      0, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 138,  73,   5, 139,  73,   5,  87, 140,  14,   5,   5, 141,   5,   0,  25,
+      5,   5,   5,   5,   5,   5,   5, 132,   5,  86,   5, 133, 116, 134, 134,   5,
+      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    136, 137,  73,   5, 138,  73,   5,  87, 139,  14,   5,   5, 140,   5,   0,  25,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  83,
       5,   5,   5,   5,  31,   0,  25, 118,   5,   5,   5,   5,   5,   5,   5,   5,
-    142, 143,   5, 144,   5,   5,   5,  93, 145, 146,   5,   5, 147,   5, 148, 149,
-    150, 151,   5,  98,   5,   5, 152, 153,  28, 102, 154,  83,   5, 155, 136, 156,
-      5, 116, 157, 158,   5, 104, 159, 160, 161, 162,  87, 163,   5,   5,   5,  33,
+    141, 142,   5, 143,   5,   5,   5,  93, 144, 145,   5,   5, 146,   5, 147, 148,
+    149, 150,   5,  98,   5,   5, 151, 152,  28,  33, 153,  83,   5, 154, 135, 155,
+      5, 116, 156, 157,   5, 103, 158, 159, 160, 161,  87, 162,   5,   5,   5, 163,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 164, 165, 109,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 164, 165, 108,
       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5, 166,   5,   5, 167,   0, 168, 169, 170,   5,   5,  27, 171,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 118,  25,   5, 172,   5, 151, 173,
-      0,   0,   0, 174,   5,   5,   5,  83,   0,   2,   2, 175,   5, 104, 176,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 118,  25,   5, 172,   5, 150, 173,
+      0,   0,   0, 174,   5,   5,   5,  83,   0,   2,   2, 175,   5, 103, 176,   0,
     177, 178, 179,   0,   5,   5,   5,  74,   0,   0,   5, 180,   0,   0,   0,   0,
-      0,   0,   0,   0,  83,   5, 181,   0,   5,  26, 102,  74, 118,   5, 182,   0,
-      5,   5,   5,   5, 118,  25, 183, 109,   5, 184,   5,  61,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 116, 103, 151,   0,   0,   0,   0,
-    185, 186, 103, 116, 104,   0,   0, 187, 103, 167,   0,   0,   5, 188,   0,   0,
-    189, 103,   0,  83,  83,   0,  80, 190,   5, 103, 103, 154,  27,   0,   0,   0,
-      5,   5,  16,   0,   5, 154,   5, 154,   5, 151,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   5, 191,   0,   0,  83, 192, 193,   0,   0,  25, 190, 116,
-      5,   5, 193,   0, 146,  32,  25,  16,   5, 154, 194, 195,   5,   5, 196,   0,
-    197, 198,   0,   0, 199, 119,   5,  16,  40,  49, 200,  61,   0,   0,   0,   0,
-      5,   5, 201, 202,   5,   5, 203,   0,   0,   0,   0,   0,   5, 204, 205,   0,
-      5, 104, 206,   0,   5, 207,   0,   0,  66,  33,   0,   0,   0,   0,   0,   0,
-      5,  32,   0,   0,   0,   5,   5, 208, 209, 210, 211,   0,   0, 212,  30, 213,
-      5, 214,  25,   5, 215,   0,   5,  32,   0,   0,   0,   0,   0,   0,   0,   0,
-    216, 217,  79, 218, 172, 219,   0,   0, 220, 221, 222, 223, 224,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0, 225,   0,   0,
+      0,   0,   0,   0,  83,   5, 181,   0,   5,  26,  33,  74, 118,   5, 182,   0,
+      5,   5,   5,   5, 118,  25, 183, 108,   5, 184,   5, 185, 186, 187,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 116, 102, 150, 149, 188,   0,   0,
+    189, 190, 102, 116, 103,   0,   0, 191, 102, 167,   0,   0,   5, 192,   0,   0,
+    193, 102,   0,  83,  83,   0,  80, 194,   5, 102, 102, 153,  27,   0,   0,   0,
+      5,   5,  16,   0,   5, 153,   5, 153,   5, 150,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   5, 195,   0,   0,  83, 196, 197,  25, 198,  25, 194, 116,
+      5,   5, 197, 199, 145,  32, 200,  16,   5, 153, 201, 202,   5,   5, 203,   0,
+    204, 205,   0,   0, 206, 119,   5,  16,  40,  49, 207,  61,   0,   0,   0,   0,
+      5,   5, 208, 198,   5,   5, 209,   0,   0,   0,   0,   0,   5, 210, 211,   0,
+      5, 103, 212,   0,   5, 213,   0,   0,  66, 163, 214,   0,   0,   0,   0,   0,
+      5,  32,   0,   0,   0,   5,   5, 215, 216, 217, 218,   0,   0, 219,  30, 220,
+      5, 221,  25,   5, 222,  25,   5,  32,   0,   0,   0,   0,   0,   0,   0,   0,
+    223, 224,  79, 148, 172, 225,   0,   0, 226, 227, 228, 229, 230,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0, 231,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 167,   0,   0,   0,
-      5,   5,   5, 141,   5,   5,   5,   5,   5,   5,  61,   0,   0,   0,   0,   0,
+      5,   5,   5, 140,   5,   5,   5,   5,   5,   5,  61,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5, 141,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  25,   5,   5, 181,
+      5, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5, 226,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,  32, 104,   0,   0,   0,  25, 157,   5,  93,  61, 227,  93,   0,   0,   0,
+      5,  32, 103,  25,   5, 103,  25, 156,   5,  93,  61, 232,  93,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 228,   5, 229,   0,   0, 230,
+      0,   0,   5,   5,   0,   0,   0,   0,   5,   5, 233,   5, 234,   0,   0, 235,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 231,
-      5,   5,   5,   5,   5,   5, 103,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 236,
+      5,   5,   5,   5,   5,   5, 102,   0,  16,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 237,
+      5,   5,   5,   5,   5,   5,   5,   5,   5, 218, 238, 201,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5,   5, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      5,   5, 241,   5, 242, 243, 244,   5, 245, 246, 247,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 248, 249,  87, 241, 241, 250, 250, 223, 223, 251,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5,   5,   5, 104,   0, 232, 194,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5, 109,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5, 233, 234,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    252, 253,   0,   0,   0,   0,   0,   0,   5, 254, 255,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  25, 156,   5, 256,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,  34,   5, 235, 236, 237,   5, 238, 239, 240,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 241, 242,  87,  34,  34, 132, 132, 216, 216, 243,   0,
-    244, 245,   0,   0,   0,   0,   0,   0,   5, 246, 247,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   5, 248,   0,   0,   0,   0,   0,   0,   0,   0,
-      5,   5,   5,   5,   5,   5, 190,   0,   5,   5, 249,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 257,
+      5,   5,   5,   5,   5,   5, 194,   0,   5,   5, 258,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    237, 250, 251, 252, 253, 254,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  25, 163, 163, 108,   0,   0,   0,
+    244, 259, 260, 261, 262, 263,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  25, 162, 162, 107,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5, 118,   0,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5, 180,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5,   5,   5,   5,   5,  32,   5,   5,   5,   5,   5,   5,
     118,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5, 255,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
+      5,   5,   5,   5,   5, 264,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  79,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     118,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
-      5,   5,   5,   5,   5,   5,   5,   5,   5,   5,  33,   0,   0,   0,   0,   0
+      5,   5,   5,   5,   5,   5,   5,   5,   5,   5, 163,   0,   0,   0,   0,   0
 };
 
 static RE_UINT8 re_posix_alnum_table_3[] = {
@@ -19286,14 +19636,14 @@ static RE_UINT8 re_posix_alnum_table_3[] = {
       0,   0, 255,   7, 255, 255, 255, 254,   0, 192, 255, 255, 255, 255, 239,  31,
     254, 225,   0, 156,   0,   0, 255, 255,   0, 224, 255, 255, 255, 255,   3,   0,
       0, 252, 255, 255, 255,   7,  48,   4, 255, 255, 255, 252, 255,  31,   0,   0,
-    255, 255, 255,   1, 255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 240, 255,
+    255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0, 255,   3, 240, 255,
     248,   3, 255, 255, 255, 255, 255, 239, 255, 223, 225, 255,  15,   0, 254, 255,
     239, 159, 249, 255, 255, 253, 197, 227, 159,  89, 128, 176,  15,   0,   3,  16,
     238, 135, 249, 255, 255, 253, 109, 195, 135,  25,   2,  94,   0,   0,  63,   0,
     238, 191, 251, 255, 255, 253, 237, 227, 191,  27,   1,   0,  15,   0,   0,  30,
     238, 159, 249, 255, 159,  25, 192, 176,  15,   0,   2,   0, 236, 199,  61, 214,
      24, 199, 255, 195, 199,  29, 129,   0, 239, 223, 253, 255, 255, 253, 255, 227,
-    223,  29,  96,   7,  15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  64,
+    223,  29,  96,  39,  15,   0,   0,   0, 255, 253, 239, 227, 223,  29,  96,  96,
      15,   0,   6,   0, 255, 223, 253, 255, 255, 255, 255, 231, 223,  93, 240, 128,
      15,   0,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 128,  95, 255,
       0,   0,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 127,  32,   0,   0,
@@ -19302,46 +19652,49 @@ static RE_UINT8 re_posix_alnum_table_3[] = {
     255, 255, 127, 249, 255, 255,   0,  60, 191,  32, 255, 255, 255, 255, 255, 247,
     255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
     255, 255,  61, 255, 255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255,
-    255, 199, 255,   1, 255, 223,  15,   0, 255, 255,  15,   0, 255, 223,  13,   0,
-    255, 255, 207, 255, 255,   1, 128,  16, 255,   7, 255, 255, 255, 255,  63,   0,
-    255, 255, 255, 127, 255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255,
-    255,   3,   0,   0, 255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128,
-    255, 255, 239, 255, 239,  15,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0,
+    255, 199, 255,   1, 255, 255,  15, 128, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 207, 255, 255,   1, 128,  16, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,   1, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0,
+    255, 255, 255,  15, 254, 255,  31,   0, 128,   0,   0, 128,   1, 112,   0,   0,
+    255, 255, 239, 255, 239,  31,   0,   0, 255, 243,   0, 252, 191, 255,   3,   0,
     255, 255, 127,   0,   0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255,
       0, 222, 111,   4, 128, 255,  31,   0,  63,  63, 255, 170, 255, 255, 223,  95,
     220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31,
     132, 252,  47,  62,  80, 189, 255, 243, 224,  67,   0,   0,   0,   0, 192, 255,
-    255, 127, 255, 255,  31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,
-      0, 128,   0,   0, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224,
-    224, 255, 255, 255, 255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0,
-    255, 127, 240, 143,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 191, 255, 255, 255, 255,   0,   0,   0,
-     47,   0,   0,   0,   0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255,
-    255, 255,   0, 124, 255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56,
-    255, 255,  60,   0, 126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255,
+     31, 120,  12,   0, 255, 128,   0,   0, 127, 127, 127, 127,   0, 128,   0,   0,
+    224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224, 224, 255, 255, 255,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127, 240, 143,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 191, 255, 255, 255, 255,   0,   0,   0,  47,   0,   0,   0,
+      0,   0, 252, 232, 255, 255,   7,   0, 255, 255, 247, 255, 255, 255,   0, 124,
+    255,  63,   0,   0, 255, 255, 127, 252,   5,   0,   0,  56, 255, 255,  60,   0,
+    126, 126, 126,   0, 127, 127, 255, 255, 255,   3, 255, 255, 255,   7,   0,   0,
      15,   0, 255, 255, 127, 248, 255, 255, 255,  63, 255, 255, 255, 255, 255,   3,
     127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
     255, 255, 252, 255,   0,   0, 255,  15,   0,   0, 223, 255, 192, 255, 255, 255,
     252, 252, 252,  28, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
     255, 255,  31,   0, 255, 255,   1,   0,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
     255, 255, 255, 192, 111, 240, 239, 254,  31,   0,   0,   0, 255,  27,   3,   0,
-    128,   0, 255, 255,  63,   0,   0,   0, 240,   0, 255, 255, 255, 255,  71,   0,
-     30, 192,   0,  20, 255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191,
-    159,  25, 129, 224, 187,   7,   0, 128,   3,   0,   0,   0, 179,   0,   0,   0,
-    255, 255,  63, 127,   0,   0,   0,  63,  17,   0,   0,   0, 255, 255,  63,   1,
-      0,   0,   0, 128, 127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0,
-    255, 252, 255, 255,  26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32,
-    255, 253, 255, 255, 255, 255, 127, 127,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 203,   0,   0,   0, 191, 253, 255, 255,
-    255, 127, 123,   1,   0,   0,   1,   0, 127,   0,   0,   0, 248, 255, 255, 224,
-    255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0, 255, 255, 255,   0,
-      0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  67, 255, 255, 255, 223,
-    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
-     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 247,  15,   0,   0,
+    128,   0, 255, 255,  63,   0,   0,   0,   3,   0,   0,   0,   0,   0,  62,   0,
+      4,   0, 255, 255, 240,   0, 255, 255, 255, 255,  71,   0,  30, 192,   0,  20,
+    255, 255, 251, 255, 255, 255, 159,  64, 127, 189, 255, 191, 159,  25, 129, 224,
+    187,   7,   0, 128, 179,   0,   0,   0, 255, 255,  63, 127,   0,   0,   0,  63,
+     17,   0,   0,   0, 255, 255,  63,   1, 127,   0,   0,   0,   0,   0,   0, 128,
+    127, 242, 111, 255, 255, 255, 191, 153,   7,   0,   0,   0, 255, 252, 255, 255,
+     26,   0,   0,   0, 255, 255, 231, 127, 255, 255, 255,  32, 255, 253, 255, 255,
+    255, 255, 127, 127, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
+    203,   0,   0,   0, 191, 253, 255, 255, 255, 127, 123,   1,   0,   0,   1,   0,
+    248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,  11,   0,   3,   0,
+    255, 255, 255,   0,   0,   0, 239, 111,   0,   0,   7,   0, 255,   7, 255,  31,
+    255,   1, 255,  67, 255, 255, 223, 255, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247,  15,   0,   0,
     127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 128,  63,   0,  64,   0,   0,
-    255,  15,   0,   0, 143,   8,   0,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255,  15,   0,   0, 127, 111, 255, 127, 143,   8,   0,   0, 150, 254, 247,  10,
+    132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
+      3,   0, 255, 255
 };
 
 RE_UINT32 re_get_posix_alnum(RE_UINT32 codepoint) {
@@ -19377,10 +19730,10 @@ static RE_UINT8 re_posix_punct_table_1[] = {
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 17, 18,
-    19, 20, 21, 22, 23, 24, 25, 26, 13, 27, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 28, 29, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 30,
-    13, 13, 13, 13, 31, 32, 33, 13, 34, 13, 35, 36, 37, 38, 39, 13,
+    19, 20, 21, 22, 23, 24, 25, 26, 13, 27, 13, 28, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 30, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 31,
+    13, 13, 13, 32, 33, 34, 35, 13, 36, 13, 37, 38, 39, 40, 41, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -19448,82 +19801,86 @@ static RE_UINT8 re_posix_punct_table_2[] = {
       0,   0,   0,   0,   0,   0,   6,   7,   0,   0,   0,   8,   9,   0,   0,  10,
       0,   0,   0,   0,  11,   0,   0,   0,   0,   0,  12,   0,  13,  14,  15,  16,
      17,   0,   0,  18,   0,   0,  19,  20,  21,   0,   0,   0,   0,   0,   0,  22,
-      0,  23,  14,   0,   0,   0,   0,   0,   0,   0,   0,  24,   0,   0,   0,  25,
-      0,   0,   0,  10,   0,   0,   0,  26,   0,   0,   0,  27,   0,   0,   0,  28,
-      0,   0,   0,  29,  30,   0,   0,   0,   0,   0,  31,  32,   0,   0,   0,  33,
-      0,  34,  35,   0,   0,   0,   0,   0,  36,  37,   0,   0,  38,  39,  40,   0,
-      0,   0,  41,   0,  39,   0,   0,  42,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  43,  44,   0,   0,   0,
-     45,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  46,  47,   0,   0,  48,   0,  49,   0,   0,   0,   0,  50,   0,
-     51,   0,   0,   0,   0,   0,   0,   0,   0,   0,  52,   0,   0,   0,  39,  53,
-     39,   0,   0,   0,   0,  54,   0,   0,   0,   0,  12,  55,   0,   0,   0,  56,
-      0,  57,   0,  39,   0,   0,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  59,  60,  61,
-     62,  63,  64,  65,  66,  53,   0,   0,  67,  68,  69,   0,  70,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  71,  51,   0,  56,  72,   0,   0,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  72,  73,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  74,  75,  53,  53,  53,
-      0,   0,   0,   0,   0,   0,   0,  76,   0,   0,   0,  27,   0,   0,   0,   0,
-     53,  77,  78,   0,  79,  53,  53,  80,  53,  53,  53,  53,  53,  53,  72,  81,
-     82,  83,   0,   0,  47,  45,   0,  42,   0,   0,   0,   0,  84,   0,  53,  85,
-     64,  86,  87,  53,  86,  88,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
+      0,  23,  14,   0,  24,   0,   0,   0,   0,   0,   0,  25,   0,   0,   0,  26,
+      0,   0,   0,  10,   0,   0,   0,  27,   0,   0,   0,  28,   0,   0,   0,  29,
+      0,   0,   0,  30,  31,   0,   0,   0,   0,   0,  32,  33,   0,   0,   0,  34,
+      0,  35,  36,   0,   0,   0,   0,   0,  37,  38,   0,   0,  39,  40,  41,   0,
+      0,   0,  42,   0,  40,   0,   0,  43,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  44,  45,   0,   0,   0,
+     46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  47,  48,   0,   0,  49,   0,  50,   0,   0,   0,   0,  51,   0,
+     52,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,   0,   0,   0,  40,  54,
+     40,   0,   0,   0,   0,  55,   0,   0,   0,   0,  12,  56,   0,   0,   0,  57,
+      0,  58,   0,  40,   0,   0,  59,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  60,  61,  62,
+     63,  64,  65,  66,  67,  54,  46,   0,  68,  69,  70,   0,  71,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  72,  52,   0,  57,  73,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  73,  74,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  75,  76,  54,  54,  54,
+      0,   0,   0,   0,   0,   0,   0,  77,   0,   0,   0,  28,   0,   0,   0,   0,
+     54,  78,  79,   0,  80,  54,  54,  81,  54,  54,  54,  54,  54,  54,  73,  82,
+     83,  84,   0,   0,  48,  46,   0,  43,   0,   0,   0,   0,  85,   0,  54,  86,
+     65,  87,  88,  54,  87,  89,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  53,  53,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,  62,  53,  71,  39,   0,   0,   0,   0,   0,   0,   0,   0,
-     89,   0,   0,  90,   0,   0,   0,  91,  92,  93,   0,   0,  94,   0,   0,   0,
-      0,  95,   0,  96,   0,   0,  97,  98,   0,  97,  34,   0,   0,   0,  99,   0,
-      0,   0,  56, 100,   0,   0,  39,  26,   0,   0,  42, 101,   0,   0,   0, 102,
+      0,   0,   0,   0,  63,  54,  72,  40,   0,   0,   0,   0,   0,   0,   0,   0,
+     90,   0,   0,  91,   0,   0,   0,  92,  93,  94,   0,   0,  95,   0,   0,   0,
+      0,  96,   0,  97,   0,   0,  98,  99,   0,  98,  35,   0,   0,   0, 100,   0,
+      0,   0,  57, 101,   0,   0,  40,  27,   0,   0,  43, 102,   0,   0,   0, 103,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0, 104,  93,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0, 105,
-     44,  62, 106, 107,   0,   0,   0,   0,   1,   2,   2, 108,   0,   0,   0, 109,
-      0,   0,   0,   0,   0,   0,   0,   0, 110, 111,   0, 112, 113,  45,  62, 114,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  34,   0,  27,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104,   0,   0,   0, 105, 106,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  40, 107,   0,   0,   0,  32,  57,
+     45,  63, 108, 109,   0,   0,   0,   0,   1,   2,   2, 110,   0,   0,   0, 111,
+      0,   0,   0,   0,   0,   0,   0,   0, 106, 112,   0, 113, 114,  46,  63, 115,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  35,   0,  28,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  32,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   5, 115,   0,   0,   0,   0,  34,  34,   0,   0,   0,   0,   0,   0,
-      0,   0, 116,  34,   0,   0, 117, 118,   0, 112,   0,   0, 119,   0,   0,   0,
+      0,   0,   5, 116,   0,   0,   0,   0,  35,  35,   0,   0,   0,   0,   0,   0,
+      0,   0, 117,  35,   0,   0,  24, 118,   0, 113,   0,   0, 119,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 120,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0,
-      0,   0, 122,   0,   0, 123,  93,   0,   0,   0,  85, 124,   0,   0, 125,   0,
-      0, 126,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 127,   0,   0,   0, 128,   0,   0,   0,   0,   0,   0,   0, 129,   0,
-      0,   0, 130, 131,   0,   0,   0,   0,   0,  56,   0,   0,   0,   0,   0,   0,
-      0,  42,   0,   0,   0,   0,   0,   0,   0,   0, 132,   0,   0,   0,   0,  11,
-      0,  34,  71,   0, 133, 110,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0, 134,  26,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 115,   0,   0,   0,   0,   0,   0, 135, 136,
-      0,   0,   0, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 120,   0,   0,   0,   0, 121,   0, 122,   0,   0,   0,
+      0,   0, 123,   0,   0, 124,  94,   0,   0,   0,  86, 125,   0,   0, 126,   0,
+      0, 127,   0,   0,   0, 104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 128,   0,   0,   0, 129,   0,   0,   0,   0,   0,   0,   0, 130,   0,
+      0,   0, 131, 132,   0,  33,   0,   0,   0,  57,   0,   0,   0,   0,   0,   0,
+      0,  43,   0,   0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,  11,
+      0,  35,  72,   0, 134, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 135,  27,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 116,   0,   0,   0,   0,   0,   0, 136, 137,
+      0,   0,   0, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  97,   0,   0,   0, 138,   0, 111, 139,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 139,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11,
-      0,   0,   0,   0, 141,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,  98,   0,   0,   0, 140,   0, 112, 141,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     53,  53,  53,  53,  53,  53,  53,  72,  53, 142,  53, 143, 144, 145,  53,  43,
-     53,  53, 146,   0,   0,   0,   0,   0,  53,  53,  92,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11,
+      0,   0,   0,   0, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 147,  42, 138, 138,  31,  31, 103, 103, 148,   0,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-      0, 140,   0, 149, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  34,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 151,   0,   0,   0, 152,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  26,   0,   0,   0,   0,   0,   0,   0,   0,
-     53, 153,  53,  53,  80, 154, 155,  72, 156, 157,  41,  41,  86,  21,   0, 158,
-    159, 160, 161, 108,   0,   0,   0,   0,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
-     53,  53,  53,  53,  53,  53, 162, 163,  53,  53,  53,  80,  53,  53, 164, 165,
-    153,  53, 166,  53,  63, 167,   0,   0,  53,  53,  53, 168,  53,  53, 169,  53,
-     53,  53,  80, 170, 171, 172, 173,   0,  53,  53,  53,  53, 106,  53,  51,   0
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  63,  54,  54,  54,  86,   0,
+     54,  54,  54,  54,  54,  54,  54,  73,  54, 144,  54, 145, 146, 147,  54,  52,
+     54,  54, 148,   0,   0,   0,   0,   0,  54,  54,  93,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 149,  43, 140, 140,  32,  32, 104, 104, 150,   0,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+      0, 142,   0, 151, 152,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  32,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  40,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 153,   0,   0,   0, 154,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  27,   0,   0,   0,   0,   0,   0,   0,   0,
+     54, 155,  54,  54,  81, 156, 157,  73, 158, 107,  42,  42,  87,  21,   0, 159,
+    160, 161, 162, 110,   0,   0,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  54,  54,  54,  54, 163, 164,  54,  54,  54,  81,  54,  54, 165, 166,
+    155,  54, 167,  54,  64, 168,   0,   0,  54,  54,  54,  54,  54,  54,  54,  54,
+     54,  54,  81, 169, 170, 171, 172, 173,  54,  54,  54,  54, 108,  54,  52,   0
 };
 
 static RE_UINT8 re_posix_punct_table_3[] = {
@@ -19531,46 +19888,46 @@ static RE_UINT8 re_posix_punct_table_3[] = {
     254, 219, 211, 137,   0,   0, 128,   0,  60,   0, 252, 255, 224, 175, 255, 255,
       0,   0,  32,  64, 176,   0,   0,   0,   0,   0,  64,   0,   4,   0,   0,   0,
       0,   0,   0, 252,   0, 230,   0,   0,   0,   0,   0,  64,  73,   0,   0,   0,
-      0,   0,  24,   0, 192, 255,   0, 200,   0,  60,   0,   0,   0,   0,  16,  64,
+      0,   0,  24,   0, 192, 255,   0, 232,   0,  60,   0,   0,   0,   0,  16,  64,
       0,   2,   0,  96, 255,  63,   0,   0,   0,   0, 192, 195,   0,   0, 255, 127,
-     48,   0,   1,   0,   0,   0,  12,  44,   0,   0,   3,   0,   0,   0,   1,   0,
-      0,   0, 248,   7,   0,   0, 128, 128,  16,   0,   0,   0,   0, 128,   0,   0,
-      0,   0,   0,   2,   0,   0,  16,   0,   0,   0,   0, 128,   0, 128,   0,  12,
-    254, 255, 255, 252,   0,   0,  80,  61,  32,   0,   0,   0,   0,   0,   0, 192,
-    191, 223, 255,   7,   0, 252,   0,   0,   0,   0,   0,   8, 255,   1,   0,   0,
-      0,   0, 255,   3,   1,   0,   0,   0,   0,  96,   0,   0,   0,   0,   0,  24,
-      0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,  15, 255,   7,   0,   0,
-     49,   0,   0,   0, 255, 255, 255, 255, 127,  63,   0,   0, 255,   7, 240,  31,
-      0,   0,   0, 240,   0,   0,   0, 248, 255,   0,   8,   0,   0,   0,   0, 160,
-      3, 224,   0, 224,   0, 224,   0,  96,   0,   0, 255, 255, 255,   0, 255, 255,
-    255, 255, 255, 127,   0,   0,   0, 124,   0, 124,   0,   0, 123,   3, 208, 193,
-    175,  66,   0,  12,  31, 188,   0,   0,   0,  12, 255, 255, 127,   0,   0,   0,
-    255, 255,  63,   0,   0,   0, 240, 255, 255, 255, 207, 255, 255, 255, 191, 255,
-    224,   7,   0, 222, 255, 127, 255, 255, 255, 255,   7,   0, 255, 255, 255, 251,
-    255, 255,  15,   0,   0,   0, 255,  15,  30, 255, 255, 255,   1,   0, 193, 224,
-      0,   0, 195, 255,  15,   0,   0,   0,   0, 252, 255, 255, 255,   0,   1,   0,
-    255, 255,   1,   0,   0, 224,   0,   0,   0,   0,   8,  64,   0,   0, 252,   0,
-    255, 255, 127,   0,   3,   0,   0,   0,   0,   6,   0,   0,   0,  15, 192,   3,
-      0,   0, 240,   0,   0, 192,   0,   0,   0,   0,   0,  23, 254,  63,   0, 192,
-      0,   0, 128,   3,   0,  12,   0,   0,   0,   8,   0,   0,   0,   2,   0,   0,
-      0,   0, 252, 255,   0,   0,   0,  48, 255, 255, 247, 255, 127,  15,   0,   0,
-     63,   0,   0,   0, 127, 127,   0,  48,   7,   0,   0,   0,   0,   0, 128, 255,
-      0,   0,   0, 254, 255, 115, 255,  31, 255, 255, 255,  31,   0,   0, 128,   1,
-      0,   0, 255,   1,   0,   1,   0,   0,   0,   0, 127,   0,   0,   0,   0,  30,
-      0,  32,   0,   0,   0,   0, 224,   3, 128,  63,   0,   0,   0,   0,   0, 216,
-      0,   0,  48,   0, 224,  33,   0, 232,   0,   0,   0,  63,   0, 248,   0,  44,
-     64,   0,   0,   0, 254, 255, 255,   0,  14,   0,   0,   0, 255,  31,   0,   0,
-    112,   0,   0,   0,   0,   0,   0, 220,  62,   0,   0,   0,   0,   0, 224, 255,
-    255, 255,   3, 128,   0,   0,  31,   0,   0,   0,  32,   0,  48,   0,   0,   0,
-      0,   0, 128,   7,   0,   0,   0, 144, 127, 254, 255, 255,  31,  28,   0,   0,
-     24, 240, 255, 255, 255, 195, 255, 255,  35,   0,   0,   0,   2,   0,   0,   8,
-      8,   0,   0,   0,   0, 224, 223, 255, 239,  15,   0,   0,   0,  16,   1,   0,
-      0,  64,   0,   0, 255,  15, 255, 255, 255, 127, 254, 255, 254, 255, 254, 255,
-      0, 224, 255, 255, 255, 255,   0,   0, 192, 255, 255, 255,   7,   0, 255, 255,
-    255, 255, 255,  15, 255,   1,   3,   0, 255, 255, 255,   0, 255,  31, 255,  31,
-    255, 255, 255,   1, 255,  15,   0,   0, 255,   0, 255,   3, 255,  63,   3,   0,
-    255, 255, 255, 253, 255, 239, 255, 255, 255,  63,  31,   7, 127,   0, 255, 255,
-    255,   1, 127,   0,   7,   0, 127,   0
+      0,   1,   0,   0,  48,   0,   1,   0,   0,   0,  12,  44,   0,   0,   3,   0,
+      0,   0,   1,   0,   0,   0, 248,   7,   0,   0, 128, 128,  16,   0,   0,   0,
+      0, 128,   0,   0,   0,   0,   0,   2,   0,   0,  16,   0,   0,   0,   0, 128,
+      0, 128,   0,  12, 254, 255, 255, 252,   0,   0,  80,  61,  32,   0,   0,   0,
+      0,   0,   0, 192, 191, 223, 255,   7,   0, 252,   0,   0,   0,   0,   0,   8,
+    255,   1,   0,   0,   0,   0, 255,   3,   1,   0,   0,   0,   0,  96,   0,   0,
+      0,   0,   0,  24,   0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,  15,
+    255,   7,   0,   0,  49,   0,   0,   0, 255, 255, 255, 255, 127,  63,   0,   0,
+    255,   7, 240, 127,   0,   0,   0, 240,   0,   0,   0, 248, 255,   0,   8,   0,
+      0,   0,   0, 160,   3, 224,   0, 224,   0, 224,   0,  96,   0,   0, 255, 255,
+    255,   0, 255, 255, 255, 255, 255, 127,   0,   0,   0, 124,   0, 124,   0,   0,
+    123,   3, 208, 193, 175,  66,   0,  12,  31, 188,   0,   0,   0,  12, 255, 255,
+    127,   0,   0,   0, 255, 255,  63,   0,   0,   0, 240, 255, 255, 255, 207, 255,
+    255, 255, 191, 255, 224,   7,   0, 222, 255, 127, 255, 255, 255, 255, 255,  63,
+    255, 255, 255, 251, 255, 255,  15,   0,   0,   0, 255,  15,  30, 255, 255, 255,
+      1,   0, 193, 224,   0,   0, 195, 255,  15,   0,   0,   0,   0, 252, 255, 255,
+    255,   0,   1,   0, 255, 255,   1,   0,   0, 224,   0,   0,   0,   0,   8,  64,
+      0,   0, 252,   0, 255, 255, 127,   0,   3,   0,   0,   0,   0,   6,   0,   0,
+      0,  15, 192,   3,   0,   0, 240,   0,   0, 192,   0,   0,   0,   0,   0,  23,
+    254,  63,   0, 192,   0,   0, 128,   3,   0,  12,   0,   0,   0,   8,   0,   0,
+      0,   2,   0,   0,   0,   0, 252, 255,   7,   0,   0,   0, 255, 255,   0,   0,
+    255, 255, 247, 255, 127,  15,   0,   0,  63,   0,   0,   0, 127, 127,   0,  48,
+      0,   0, 128, 255,   0,   0,   0, 254, 255, 115, 255,  31, 255, 255, 255,  31,
+      0,   0, 128,   1,   0,   0, 255,   1,   0,   0, 127,   0,   0,   0,   0,  30,
+      0,  32,   0,   0,   0,   0, 224,   3, 192,   3,   0,   0, 128,  63,   0,   0,
+      0,   0,   0, 216,   0,   0,  48,   0, 224,  33,   0, 232,   0,   0,   0,  63,
+      0, 248,   0,  44,  64,   0,   0,   0, 254, 255, 255,   0,  14,   0,   0,   0,
+    255,  31,   0,   0, 112,   0,   0,   0,   0,   0,   0, 220,  62,   0,   0,   0,
+      0,   0, 224, 255, 255, 255,   3, 128,   0,   0,  31,   0,   0,   0,   6,   0,
+      0,   0,  32,   0,  48,   0,   0,   0,   0,   0, 128,   7,   0,   0,   0, 144,
+    127, 254, 255, 255,  31,  28,   0,   0,  24, 240, 255, 255, 255, 195, 255, 255,
+     35,   0,   0,   0,   2,   0,   0,   8,   8,   0,   0,   0,   0, 224, 223, 255,
+    239,  15,   0,   0,   0,  16,   1,   0,   0,  64,   0,   0, 255,  15, 255, 255,
+    255, 127, 254, 255, 254, 255, 254, 255,   0, 224, 255, 255, 192, 255, 255, 255,
+      7,   0, 255, 255, 255, 255, 255,  15, 255,   1,   3,   0, 255, 255, 255, 224,
+    255,  31, 255,  31, 255, 255, 255,   1, 255,  15,   1,   0, 255,   0, 255,   3,
+    255,  63,   3,   0, 255,  63,  31,  31, 127,   0, 255, 255, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0
 };
 
 RE_UINT32 re_get_posix_punct(RE_UINT32 codepoint) {
@@ -19612,6 +19969,8 @@ RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 codepoint) {
         return 1;
     if (codepoint == 0x070F)
         return 1;
+    if (0x0890 <= codepoint && codepoint <= 0x0891)
+        return 1;
     if (codepoint == 0x08E2)
         return 1;
     if (codepoint == 0x0110BD)
@@ -19626,257 +19985,268 @@ RE_UINT32 re_get_prepended_concatenation_mark(RE_UINT32 codepoint) {
 static RE_UINT8 re_print_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 14, 13, 15, 16, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 17, 18, 18, 13, 13, 13, 13, 13, 13, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 18, 13, 31, 18, 18,
-    18, 32, 18, 18, 18, 18, 18, 18, 18, 18, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 18, 38,
-    18, 18, 18, 18, 39, 40, 41, 18, 42, 18, 43, 44, 45, 46, 47, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 16, 17, 17, 13, 13, 13, 13, 13, 13, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 17, 30, 13, 31, 17, 17,
+    17, 32, 17, 17, 17, 17, 17, 17, 17, 17, 33, 34, 13, 13, 13, 13,
+    13, 35, 13, 36, 17, 17, 17, 17, 17, 17, 17, 37, 38, 17, 17, 39,
+    17, 17, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 48, 13, 13, 13, 49, 50, 13,
-    13, 13, 13, 51, 13, 13, 13, 13, 13, 13, 52, 18, 18, 18, 53, 18,
-    13, 13, 13, 13, 54, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 52, 13, 13, 13, 53, 54, 13,
+    13, 13, 13, 55, 13, 13, 13, 13, 13, 13, 56, 17, 17, 17, 57, 17,
+    13, 13, 13, 13, 58, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    59, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 56
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60
 };
 
 static RE_UINT16 re_print_table_2[] = {
       0,   1,   1,   2,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   3,   4,   5,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   6,   7,   1,   8,   1,   9,  10,
-     11,   1,   1,   1,   1,   1,   1,   1,  12,   1,  13,   1,   1,  14,   1,  15,
-      1,  16,  17,  18,   0,  19,  20,   1,   1,   1,   1,   1,  21,  22,  23,  24,
-     25,  26,  27,  28,  29,  30,  31,  32,  33,  30,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  40,  44,  45,  46,  40,   1,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,   0,  56,  57,  58,   0,   1,   1,  59,  60,  61,  11,  62,   0,
-      1,   1,   1,   1,   1,   1,  63,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,  64,   1,  65,  66,  67,   1,  68,   1,  15,  69,  70,   1,   1,  71,
+      1,   1,   1,   1,   1,   1,   1,   1,  11,   1,  12,   1,   1,  13,   1,  14,
+      1,  15,  16,  17,  18,   1,   1,   1,   1,   1,   1,   1,  19,  20,  21,  22,
+     23,  24,  25,  26,  27,  28,  29,  30,  31,  28,  32,  33,  34,  35,  36,  37,
+     38,  39,  40,  41,  38,  42,  43,  44,  38,   1,  45,  46,  47,  48,  49,  50,
+     51,  52,  53,   0,  54,  55,  56,   0,   1,   1,  57,  58,  59,  60,  61,   0,
+      1,   1,   1,   1,   1,   1,  62,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  63,   1,  64,  65,  66,   1,  67,   1,  14,  68,  69,   1,   1,  70,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,  69,   1,   1,  72,  73,  74,  75,  76,   1,   1,  77,  78,
-     79,   1,   1,  72,   1,  80,   1,  81,   2,  82,  83,  84,   1,  85,  86,   1,
-     87,   1,   2,  88,  78,  89,  90,   0,   1,   1,  85,  69,   1,   1,   1,  91,
-      1,  92,  93,   1,  94,  15,   9,  95,   1,   1,   1,   1,   1,   1,   1,  96,
-      1,   1,   1,   1,   1,   1,   1,   1,  71,   1,  97,  77,   1,  19,  98,  99,
-      1, 100,   1, 101, 102,   1, 103, 104,   1,   1,   1,   1,  85,   1,   1,   1,
+      1,   1,   1,   1,  68,   1,   1,  71,  72,  73,  74,  75,   1,   1,  76,  77,
+     69,   1,   1,  71,   1,  17,   1,  78,   2,  79,  80,  81,   1,  82,  83,   1,
+     84,   1,   2,  85,  77,  86,  87,   0,   1,   1,  88,   2,   1,   1,   1,  89,
+      1,  90,  91,   1,  92,  14,   9,  93,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,  70,   1,  94,  76,   1,  95,  96,  97,
+      1,  98,   1,  99, 100,   1, 101, 102,   1,   1,   1,   1,  82,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 105,  18,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 103, 104,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 106, 107,   1,   1,   1,
-      1, 108,   2,   1,   1,   1,   1, 109,   1,  63,   1, 110,  74, 111, 111,   1,
-      1,   1, 112,   0,  96,   1,   1,  75,   1,   1,   1,   1,   1,   1,  81, 113,
-      1,   1,  53,   1,   7,   1,   1,   1, 114,   6,   1,   1, 108,   1,   1, 115,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 105, 106,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1, 107,   1,  62,   1, 108,  73, 109, 109,   1,
+      1,   1,  76,   0, 110,   1,   1,  74,   1,   1,   1,   1,   1,   1,  78, 111,
+      1,   1,  51,   1,   7,   1,   1,   1, 112,   6,   1,   1, 113,   1,   1, 114,
       2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,  88,   1, 115,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1, 116,   1,   1,   1,   1,   1, 117,   1,   1,   1,   1,   1,   1, 118, 119,
+      1, 120,   1, 117,   1,   1, 121,   1,   1,   1, 122,  68,   1,   1, 123,   2,
+      1,  73, 124,   1,   1,   1, 125,  73, 126, 127,   1,  82,   1,   1,   1, 128,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  69,
-      1,   1,   1,   1, 116,   1, 117,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 118,   1,   1,   1,   1,   1, 119,   1,   1,   1,   1,   1,   1, 120, 121,
-      1, 122,   1, 119,   1,   1, 123,   1,   1,   1, 124,  69,   1,   1, 125,   2,
-      1,  74, 126,   1,   1,   1, 127,  74, 128, 129,   1,  85,   1,   1,   1, 130,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 115, 131,  55,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 114, 129,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,  89,   1,   1,  70,   0, 132, 133, 134,   1,   1,   1, 135,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 103,   1, 136,   1, 137, 138,
-     70,   1, 139, 140,   1,   1,   1,  88,  53,   1,   1,   1,   1,   2, 141, 142,
-    143, 144, 145,   0,   1,   1,   1,  95, 146, 147,   1,   1, 102,  90, 103,  77,
-      0,   0,   0,   0,  69,   1, 104,  55,   1, 148,  80,  95, 149,   1, 150,   0,
-      1,   1,   1,   1,  77, 151, 152,  55,   1,   9,   1, 153,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,  74,  81, 137,   0,   0,   0,   0,
-    154, 155, 107,   1,   2, 156,   0, 157, 158, 159,   0,   0,   1, 160, 136,   1,
-    161, 162, 163,   1,   1,   0,   1, 164,   1, 165, 166, 167, 168, 169,   0,   0,
-      1,   1, 170,   0,   1, 112,   1, 171,   1, 172,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   2,   1, 173,   0,   0,   1,   9,  70,   0,   0, 103, 118,  74,
-      1,   1, 174, 175,   1,   1, 176, 177,   1,  19,   9,  74,   1,   1,   1, 178,
-    179,   2,   0,   0, 180, 151,   1, 181,  21, 182, 183, 184,   0,   0,   0,   0,
-      1,   1, 185, 186,   1,   1, 172,   0,   0,   0,   0,   0,   1, 166,  77,   0,
-      1,   1, 187, 188,   1,  72, 189,   0,  15,  85,   0,   0,   0,   0,   0,   0,
-      1,  55,   0,   0,   0,   1,   1, 190, 191, 192, 193,   0,   0, 100,   3, 194,
-      1,   1,   9,   1,   1, 195,   1,  72,   0,   0,   0,   0,   0,   0,   0,   0,
-    196, 197, 198, 116, 136, 199,   0,   0, 200, 201, 172, 202, 203, 189,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  72,   0,   0,   0,   0,   0, 204,   1, 205,
+      1,   1,   1,  86,   1,   1,  69,   0, 130, 131, 132,   1,   1,   1, 133,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 134,   1, 135, 136,
+     69,   1, 137, 138,   1,   1,   1,  85,  51,   1,   1,   1,   1,   2, 139, 140,
+    141, 142, 143,   0,   1,   1,   1,  93, 144, 145,   1,   1, 100, 146, 136,  76,
+      0,   0,   0,   0,  68,   1, 102,  53,   1, 147,  17,  93, 148,   1, 149,   0,
+      1,   1,   1,   1,  76, 150, 151,  53,   1,   9,   1, 152, 153, 154,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  73,  78, 155, 156, 157,   0,   0,
+    158, 159, 106,   1,   2, 160,   0, 161, 162, 163,   0,   0,   1, 164, 134,   1,
+    165, 166, 167,   1,   1,   0,   1, 168,   1, 169, 170, 171, 172, 173,   0,   0,
+      1,   1, 174,   0,   1, 175,   1, 176,   1, 177,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   2,   1, 178,   0,   0,   1,   9,  69, 136, 179, 136, 116,  73,
+      1,   1, 180,  72,   1,   1, 181, 182,   1,  95,   9,  73,   1,   1,   1, 183,
+    184,   2,   0,   0, 185, 150,   1, 186,  19, 187, 188, 189,   0,   0,   0,   0,
+      1,   1, 190, 191,   1,   1, 177,   0,   0,   0,   0,   0,   1, 170,  76,   0,
+      1,   1, 192, 193,   1,  69, 179,   0,  14,  82, 103,   0,   0,   0,   0,   0,
+      1,  53,   0,   0,   0,   1,   1, 194, 195, 196, 197,   0,   0,  98,   3, 198,
+      1,   1,   9,   1,   1, 199,   1,  71,   0,   0,   0,   0,   0,   0,   0,   0,
+    200, 201, 202,  88, 134, 203,   0,   0, 204, 205, 177, 206, 207, 179,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  71,   0,   0,   0,   0,   0, 208,   1, 209,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  70,   0,   0,   0,
-      1,   1,   1, 206,   1,   1,   1,   1,   1,   1, 207,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  69,   0,   0,   0,
+      1,   1,   1, 210,   1,   1,   1,   1,   1,   1, 211,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1, 208,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 136,   1,   1, 175,
+      1, 212,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1, 103,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,  72,   2, 209,   0,   0, 103, 210,   1,   1, 211, 212, 213,   0,   0,   0,
+      1,  71,   2, 213,   1,   2, 150, 214,   1,   1, 215, 216, 217,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   1,  95,   0,   0,   0,   1,   1, 214,   1, 215,   0,   0, 216,
+      0,   0,   1,   1,  93,   0,   0,   0,   1,   1, 218,   1, 219,   0,   0, 220,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 119,
-      1,   1,   1,   1,   1,   1,  81,   0, 170,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 117,
+      1,   1,   1,   1,   1,   1,  78,   0, 174,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   2,   0, 217, 218,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,  55,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1, 219, 220, 207,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 221,
+      1,   1,   1,   1,   1,   1,   1,   1,   1, 222, 223, 224,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,  53,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 225, 226, 211,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,  81,   1, 221,   1,   1,   1,   1,   1, 170,
-      1,   1, 222,   0,   0,   0,   0,  75,   1,   1,  74,  72,   0,   0,   0,   0,
-      1,   1,  19,   1,  11, 223, 224,   1, 225, 226, 227,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 228,   1,   1,   1,   1,   1,   1,   1,   1, 229,   1,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   1,  86, 115,   1,   1,   1, 211,   0,
+      1,   1,   1,   1,   1,   1,   1,  78,   1, 227,   1,   1,   1,   1,   1, 104,
+      1,   1, 228,   0,   0,   0,   0,  74,   1,   1,  73,  71,   0,   0,   0,   0,
+      1,   1,  95,   1,  60, 229, 230,   1, 231, 232, 233,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 234,   1,   1,   1,   1,   1,   1,   1,   1, 235,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1, 230, 231,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    232, 233,   0,   0,   0,   0,   0,   0,   1, 234, 209,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   1, 159,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1, 235,   0,   1,   1, 236,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 237,   1, 238,   0,   0,  53,  77,   0,   0,   0,   0,   0,   0,
-    224, 239, 240, 241, 242, 243,   0, 244,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,  85,   1,   1,  75, 245, 246,  81,   1,   1,   1,   1,   1, 247,   0, 248,
-    249,  55, 250, 222,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1, 236, 237,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,
+    238, 239,   0,   0,   0,   0,   0,   0,   1, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0, 136,  87,   1, 163,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      1,   1,   1,   1,   1,   1, 243,   0,   1,   1, 244,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 245,   1, 246,   0,   0,  51,  76,   0,   0,   0,   0,   0,   0,
+    230, 247, 248, 249, 250, 251,   0, 252,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,  82,   1,   1,  74, 253, 254,  78,   1,   1,   1,   1,   1, 255,   0, 256,
+    199,  53, 257, 228,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1, 119, 251,   1,   1,   1,  75,   1,   1,  72, 118,
-     85,   1, 172,   1,   9, 252,   0,   0,   1,   1,   1, 253,   1,   1, 143,   1,
-      1,   1,  75, 254, 117, 255, 256,   0,   1,   1,   1,   1, 139,   1,  18, 257,
+      1,   1,   1,   1,   1,   1, 258, 259,   1,   1,   1,  74,   1,   1,  71, 260,
+     82,   1, 177,   1,   9, 261,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,  74, 262, 115, 263, 264, 265,   1,   1,   1,   1, 137,   1, 104, 266,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,  77,   0,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1, 238,   1,   1,   1,   1,   1,   1,
-     77,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,  71,   1,   1,   1,   1,   1,   1,
+     76,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 258,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 267,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  90,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 146,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-     77,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  18,   0,   0,   0,   0,   0,
-    259,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1, 213,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 104,   0,   0,   0,   0,   0,
+    268,   1,   1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1, 217,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  77
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  76
 };
 
 static RE_UINT8 re_print_table_3[] = {
       0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 252,
     240, 215, 255, 255, 251, 255, 255, 255, 255, 255, 254, 255, 255, 255, 127, 254,
-    255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0, 255, 255, 255, 223,
-    255, 191, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231,
-    255,  63, 255, 127, 255, 255, 255,  79, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
-    207, 255, 255, 127, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
-    192, 255, 127,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
-    207, 255,   3, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255, 255,   0,
-    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255, 255,   7,
-    255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7, 207, 255, 128, 255,
-    255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0, 223, 253, 240, 255,
-    207, 255, 255, 255, 238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255,
-    192, 255,  28,   0, 254, 255, 255, 255, 255, 255, 255, 135, 255, 255, 255,  15,
-    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243, 255, 254, 255, 255,
-    255,  31, 254, 255, 255, 255, 255, 254, 255, 223, 255,   7, 191,  32, 255, 255,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63,
-    255, 255, 255,   1, 255, 223,  31,   0, 255, 255, 127,   0, 255, 255,  15,   0,
-    255, 223,  13,   0, 255, 255, 255,  63, 255,   3, 255,   3, 255, 127, 255,   3,
-    255,   7, 255, 255, 255, 255,  63,   0, 255,  15, 255,  15, 241, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199, 255, 255, 255, 207,
-    255, 255, 255, 159, 255,  63, 255, 255,   1,   0,   0,   0, 255, 255,  15, 240,
-    255, 255, 255, 248, 255, 227, 255, 255, 255,   1, 255, 255, 255, 255, 255,   7,
-    255, 255, 255, 251,  63,  63, 255, 170, 223, 255, 207, 239, 255, 255, 220, 127,
-    255, 252, 255, 255, 223, 255, 243, 255, 255, 127, 255,  31,   0,   0, 255, 255,
-    255, 255,   1,   0, 127,   0,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255,
-    255, 127, 255, 255, 255, 255,  15, 254, 255, 128,   1, 128, 127, 127, 127, 127,
-    255, 255,   7,   0,   0,   0, 255,  15, 224, 255, 255, 255,  15,   0, 255, 255,
-    255,  31, 255, 255, 127,   0, 255, 255, 255,  15,   0,   0, 255, 255, 255,   0,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  31, 255,   3,  63, 192, 255,   3,
-    255, 255,  15, 128, 255, 191, 255, 195, 255,  63, 255, 243,   7,   0,   0, 248,
-    126, 126, 126,   0, 127, 127, 255, 255, 255,  63, 255,   3, 127, 248, 255, 255,
-    127,   0, 248, 224, 255, 255, 127,  95, 219, 255, 255, 255,   3,   0, 248, 255,
-    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  63, 255, 255, 247, 255,
-    127,  15, 223, 255, 252, 252, 252,  28, 127, 127,   0,  62, 255, 239, 255, 255,
-    127, 255, 255, 183, 255,  63, 255,  63, 135, 255, 255, 255, 255, 255, 143, 255,
-     15, 224, 255, 255, 255, 255, 255, 191,  15, 255,  63,   0, 255,   3, 255, 255,
-    255, 255,  15, 255,  15, 128,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255, 231, 254, 255, 255,   0, 255, 255, 255, 135,  31,   0, 255, 191, 255, 255,
+    255, 231, 255, 255, 255, 255,   3,   0, 255, 255, 255, 231, 255,  63, 255, 127,
+    255, 255, 255,  79, 255,   7, 255, 255, 255, 127,   3, 255, 239, 159, 249, 255,
+    255, 253, 197, 243, 159, 121, 128, 176, 207, 255, 255, 127, 238, 135, 249, 255,
+    255, 253, 109, 211, 135,  57,   2,  94, 192, 255, 127,   0, 238, 191, 251, 255,
+    255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   3, 254, 238, 159, 249, 255,
+    159,  57, 224, 176, 207, 255, 255,   0, 236, 199,  61, 214,  24, 199, 255, 195,
+    199,  61, 129,   0, 192, 255, 255,   7, 255, 223, 253, 255, 255, 253, 255, 243,
+    223,  61,  96,  39, 207, 255, 128, 255, 255, 253, 239, 243, 223,  61,  96,  96,
+    207, 255,   6,   0, 223, 253, 240, 255, 207, 255, 255, 255, 238, 255, 127, 252,
+    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  28,   0, 254, 255, 255, 255,
+    255, 255, 255, 135, 255, 255, 255,  15, 214, 247, 255, 255, 175, 255, 255,  63,
+     95,  63, 255, 243, 255, 254, 255, 255, 255,  31, 254, 255, 255, 255, 255, 254,
+    255, 255, 255, 223, 255, 223, 255,   7, 191,  32, 255, 255, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255,  31, 255, 255, 255,   3, 255, 255,  63,  63, 255, 255, 255,   1,
+    255, 255,  63, 128, 255, 255, 127,   0, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 255,  63, 255,   3, 255,   3, 255, 255,  63,   0, 255,  15, 255,  15,
+    241, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255, 199,
+    255, 255, 255, 207, 255, 255, 255, 159, 255,  63, 255, 255, 255, 127,   0,   0,
+    255,  31, 255, 255, 255, 255,  15, 240, 255, 255, 255, 248, 255, 227, 255, 255,
+    255,   1, 255, 255, 255, 255, 255,   7,  63,  63, 255, 170, 255, 255, 223, 255,
+    223, 255, 207, 239, 255, 255, 220, 127, 255, 252, 255, 255, 223, 255, 243, 255,
+    255, 127, 255,  31,   1,   0, 255, 255, 255, 255,   1,   0, 127,   0,   0,   0,
+    255,   7,   0,   0, 255, 255, 207, 255, 255, 255, 191, 255, 255, 255,  15, 254,
+    255, 128,   1, 128, 127, 127, 127, 127, 255, 255, 255, 251,   0,   0, 255,  15,
+    224, 255, 255, 255, 255, 127, 255, 255,  15,   0, 255, 255, 127,   0, 255, 255,
+    255,  15,   0,   0, 255, 255, 255,   0, 255,   7, 235,   3,   0,   0, 252, 255,
+    255,  31, 255,   3,  63, 192, 255,   3, 255, 255,  15, 128, 255, 191, 255, 195,
+    255,  63, 255, 243,   7,   0,   0, 248, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  63, 255,   3, 127, 248, 255, 255, 127,   0, 248, 224, 255, 255, 127,  95,
+    219, 255, 255, 255,   7,   0, 248, 255, 255, 255, 252, 255, 255, 128,   0,   0,
+      0,   0, 255, 255, 255, 255, 247, 255, 127,  15, 223, 255, 252, 252, 252,  28,
+    127, 127,   0,  62, 255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,
+    135, 255, 255, 255, 255, 255, 143, 255,   1,   0,   0,   0,  15, 224, 255, 255,
+    255, 255, 255, 191,  15, 255,  63,   0, 255,   3, 255, 255, 255, 255,  15, 255,
+     15, 128, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 255,   0,   0,   0,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     128, 255,   0,   0, 255, 255,  55, 248, 255, 255, 255, 143, 255, 255, 255, 131,
     255, 255, 255, 240, 111, 240, 239, 254, 255, 255,  63, 135, 255,   1, 255,   1,
     127, 248, 127,   0, 255, 255,  63, 254, 255, 255,  63, 255, 255, 255,   7, 255,
-    255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0, 255, 255,   7, 252,
-    255,   0, 255,   3, 255,  59,   3,   0, 255,  63, 252, 255, 255, 255,   0, 128,
-      3,  32, 255, 255, 255,   1, 255,   3, 254, 255,  31,   0, 255, 255, 251, 255,
-    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
-    207,  31,  31,   0, 255, 255, 255, 239,   3,   0,   0,   0,  31,   0, 255,   3,
-    255,  31,   0,   0, 255,   3,   0,   0, 255, 255,   7, 128, 127, 242, 111, 255,
-    255, 255, 191, 249, 127,   0, 255,   3,  31,   0,   0,   0,   7,   0,   0,   0,
+    255, 255,   3,  30,   0, 254,   0,   0, 255,   1,   0,   0, 255, 255,   7,   0,
+    255, 255,   7, 252, 255,   0, 255,   3, 255,  59,   3,   0, 255,   3,   0,   0,
+    255,  63, 252, 255,   7,  32, 255, 255, 255,   1, 255,   3, 254, 255,  31,   0,
+    255, 255, 251, 255, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
+    159,  57, 129, 224, 207,  31,  31,   0, 255, 255, 255, 239,   3,   0,   0,   0,
+     31,   0, 255,   3, 255,  31,   0,   0, 255, 255,   7, 128, 127, 242, 111, 255,
+    255, 255, 191, 249, 127,   0, 255,   3,  31,   0,   0,   0,   7,   0, 255, 255,
     255, 253, 255, 255, 255, 255, 127, 255,  63,   0, 255, 255, 255, 254, 127,   0,
     127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
       0,   0,   1,   0, 255, 255,   3, 128, 255, 127,  31,   0,  15,   0,   0,   0,
-    255, 127, 255,   1, 255, 195,   0,   0, 255,  63,  63,   0,  63,   0, 255, 251,
+    255, 127, 255,   1, 255, 195, 255, 255, 255,  63,  63,   0,  63,   0, 255, 251,
     251, 255, 255, 224, 255, 255,   0,   0, 255, 135, 255, 255, 255, 128, 255, 255,
-     31,   0,   3,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255, 243, 127, 254, 255, 255,  63,   0,   0,   0, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 255, 207, 255, 255, 255,  15,   0, 248, 254, 255,   0,   0,
-    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 159, 255, 127,   0,
+     31,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    240,   0, 255, 255, 255,   7, 255,  31, 255,   1, 255, 243, 127, 254, 255, 255,
+     63,   0,   0,   0, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 255, 207, 255, 255,
+    255,  15,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+    255,  31, 255,  63, 255, 195,   0,   0, 127, 111, 255, 127, 159, 255, 127,   0,
     255,  15, 255, 195,   0,   0, 254, 255, 255, 255,  31,   0, 150, 254, 247,  10,
     132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,
       0,   0,   3,   0, 255, 127, 254, 255, 254, 255, 254, 255, 255,  63,   0,   0,
-    192, 255, 255, 255,   7,   0, 255, 255, 255,   1,   3,   0, 255,  31, 255,  31,
-    255,  63,   3,   0, 255, 255, 255, 253, 255,  63,  31,   7, 255,   1, 127,   0,
-      7,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,   2,   0,   0,   0
+    192, 255, 255, 255, 255,   1,   3,   0, 255, 255, 255, 224, 255,  31, 255,  31,
+    255,  15,   1,   0, 255,  63,   3,   0, 255,  63,  31,  31, 255,  31, 255,   7,
+     63,   0, 255,   3, 255,   0, 127,   0,   0,   0, 255,   3,   3,   0, 255, 255,
+      2,   0,   0,   0
 };
 
 RE_UINT32 re_get_print(RE_UINT32 codepoint) {
@@ -20034,72 +20404,72 @@ RE_UINT32 re_get_regional_indicator(RE_UINT32 codepoint) {
 static RE_UINT8 re_script_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 21, 21, 34, 35, 21, 21,
-    21, 36, 21, 21, 21, 21, 21, 21, 21, 21, 37, 38, 39, 39, 39, 39,
-    39, 40, 41, 42, 21, 21, 21, 21, 21, 21, 21, 21, 43, 21, 21, 44,
-    21, 21, 21, 21, 45, 46, 47, 21, 48, 21, 49, 50, 51, 52, 53, 21,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 54, 13, 13, 13, 55, 56, 13,
-    13, 13, 13, 57, 13, 13, 13, 13, 13, 13, 58, 21, 21, 21, 59, 21,
-    13, 13, 13, 13, 60, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    61, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33, 34, 35, 20, 20,
+    20, 36, 20, 20, 20, 20, 20, 20, 20, 20, 37, 38, 39, 39, 39, 39,
+    39, 40, 41, 42, 20, 20, 20, 20, 20, 20, 20, 43, 44, 20, 20, 45,
+    20, 20, 20, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 20,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 58, 13, 13, 13, 59, 60, 13,
+    13, 13, 13, 61, 13, 13, 13, 13, 13, 13, 62, 20, 20, 20, 63, 20,
+    13, 13, 13, 13, 64, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    65, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
 };
 
 static RE_UINT16 re_script_table_2[] = {
@@ -20107,126 +20477,134 @@ static RE_UINT16 re_script_table_2[] = {
       4,   4,   4,   4,   4,   5,   0,   6,   7,   7,   7,   8,   9,  10,  11,  12,
      13,  13,  13,  13,  14,  13,  13,  13,  13,  15,  16,  17,  18,  19,  20,  21,
      22,  23,  24,  25,  23,  23,  26,  23,  27,  28,  29,  23,  30,  31,  32,  33,
-     34,  35,  36,  37,  38,  39,  40,  41,  42,  42,  43,  44,  45,  46,  47,  48,
-     49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,
-     65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,
-     81,  82,  83,  38,  84,  85,  86,  38,  87,  87,  88,  89,  90,  91,  92,  38,
-     93,  93,  93,  93,  93,  94,  95,  96,  97,  97,  97,  97,  97,  97,  97,  97,
-     98,  98,  99,  98, 100, 101, 102,  98, 103,  98, 104, 105, 106, 107, 107, 108,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 110, 111, 111, 112, 113, 114, 115, 116, 117, 117, 118, 119,
-    120, 121, 121, 122, 121, 123, 109, 124, 125, 126, 127, 128, 129, 130, 131, 117,
-    132, 133, 134, 135, 136, 137, 138,  38, 139, 139, 140, 141, 142, 142, 143, 144,
-    145, 146, 147, 148, 149, 150, 151, 152,   4, 153, 154, 155,   4, 156,   7, 157,
-      4,   4,   4,   4,   4,   4,   4,   4, 158,  11, 159, 160,  11, 161, 162, 163,
-    164,   0,   0, 165, 166,   0, 167, 168,   0, 169, 170,   4, 171,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 172, 173,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    174, 174, 174, 174, 174, 174, 174, 174,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 175, 176,   0,   0,   0,
-    177, 178, 179,   4, 180, 180, 180, 181,  94, 182, 183, 184, 185, 186, 186,  13,
-      0,   0, 187,  38, 188, 189, 189, 190, 189, 189, 189, 189, 189, 189, 191, 192,
-    193, 194, 195, 196, 197, 198, 199, 200, 201, 202,  97,  97, 203, 204,   0, 205,
-    206,   0,   0, 207,   0,   0, 208, 209, 199, 199, 210,   0,   0,   0,   0,   0,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,   0,   0,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 211,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 213, 212, 214, 215, 216, 216, 216, 216, 216, 216, 216, 216,
-    216, 217,  13,  13,  13, 218, 218, 219,   0, 220,   4,   4, 221,   4, 222, 223,
-    224, 225, 226, 227, 228, 228, 229,  42, 230, 231, 232, 233, 234, 234, 235, 236,
-    237, 238, 239,  93, 240, 240, 241, 242, 243, 244, 245, 246, 107, 107, 247, 248,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97, 249, 250, 251,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 252, 189, 189, 253,  38, 254, 255, 256,  23,  23,  23, 257,  23,
-     23,  23,  23,  23,  23,  23,  23,  23,  23, 258, 259,  23, 260,  23, 261, 262,
-    263, 264, 265, 266,  23,  23,  23, 267, 268,   1,   1, 269, 270, 206, 271, 272,
-    273, 274, 275,  38, 276, 276, 276, 277, 278, 279,  11,  11, 280, 281, 282, 283,
-     38,  38,  38,  38, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,  38,
-    295, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,  38,  38,  38,  38,
-    306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 308, 309,  38,  38,  38,  38,
-    310, 311, 312, 313, 314, 315,  38, 316, 317, 318,  38,  38, 319, 320, 321, 322,
-    323, 324, 325, 326, 327,  38, 328, 329, 330, 331, 332, 333, 334, 335,  38,  38,
-    336, 336, 337,  38, 338, 339, 338, 340, 341, 342,  38,  38,  38,  38,  38,  38,
-     38,  38,  38, 343, 344, 345,  38,  38, 346, 347, 348,  38,  38, 349, 350, 351,
+     34,  35,  36,  37,  38,  23,  23,  39,  40,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,
+     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
+     79,  80,  81,  82,  83,  84,  85,  82,  86,  86,  87,  88,  89,  90,  91,  82,
+     92,  92,  92,  92,  92,  93,  94,  95,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  98,  97,  99, 100, 101,  97, 102,  97, 103, 104, 105, 106, 106, 107,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
+    108, 108, 108, 108, 109, 110, 110, 111, 112, 113, 114, 115, 116, 116, 117, 118,
+    119, 120, 120, 121, 120, 122, 108, 123, 124, 125, 126, 127, 128, 129, 130, 116,
+    131, 132, 133, 134, 135, 136, 137,  82, 138, 138, 139, 140, 141, 141, 142, 143,
+    144, 145, 146, 147, 148, 149, 150, 151,   4, 152, 153, 154,   4, 155,   7,   7,
+      4,   4,   4,   4,   4,   4,   4,   4, 156,  11, 157, 158,  11, 159, 160, 161,
+    162,   0,   0, 163, 164,   0, 165, 166,   0, 167, 168,   4, 169,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 170, 171,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    172, 172, 172, 172, 172, 172, 172, 172,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 173, 174,   0,   0,   0,
+    175, 175, 175,   4, 176, 176, 176, 177,  93, 178, 179, 180, 181, 182, 182,  13,
+      0,   0, 183,  82, 184, 185, 185, 186, 185, 185, 185, 185, 185, 185, 187, 188,
+    189, 190, 191, 192, 193, 194, 195, 196, 197, 198,  96,  96, 199, 200,   0, 201,
+    202,   0,   0, 203,   0,   0, 204, 205, 195, 195, 206,   0,   0,   0,   0,   0,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,   0,   0,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+    207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+    207, 207, 207, 207, 208, 207, 209, 210, 211, 211, 211, 211, 211, 211, 211, 211,
+    211, 212,  13,  13,  13, 213, 213, 214,   0, 215,   4,   4, 216,   4, 217, 218,
+    219, 220, 221, 222, 223, 223, 224,  40, 225, 226, 227, 228, 229, 229, 230, 231,
+    232, 233, 234,  92, 235, 235, 236, 237, 238, 239, 240, 241, 106, 106, 242, 243,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96, 244, 245, 246,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 247, 185, 185, 248,  82, 249, 250, 251,  23,  23,  23, 252,  23,
+     23,  23,  23,  23,  23,  23,  23,  23,  23, 253,  23,  23, 254,  23, 255, 256,
+    257, 258, 259, 260,  23,  23,  23, 261, 262,   1,   1, 263, 264, 202, 265, 266,
+    267, 268, 269,  82, 270, 270, 270, 271, 272, 273,  11,  11, 274, 275, 276, 277,
+     82,  82,  82,  82, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,  82,
+    289, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,  82,  82,
+    302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, 305, 306, 307,  82,  82,
+    308, 309, 310, 311, 312, 313,  82, 314, 315, 316,  82,  82, 317, 318, 319, 320,
+    321, 322, 323, 324, 325,  82, 326, 327, 328, 329, 330, 331, 332, 333,  82,  82,
+    334, 334, 335,  82, 336, 337, 336, 338, 339, 340,  82,  82,  82,  82,  82,  82,
+     82,  82,  82, 341, 342, 343,  82,  82, 344, 345, 346, 347, 348, 349, 350, 351,
     352, 352, 353, 354, 355, 355, 356, 357, 358, 359, 360, 361, 362, 362, 362, 363,
-    364, 365,  38,  38, 366, 367, 368, 369, 370, 371, 372, 373,  38,  38,  38,  38,
-    374, 374, 375, 376, 377, 377, 378,  38,  38,  38,  38,  38, 379, 380, 381,  38,
-    382, 382, 383, 384, 385, 386, 387,  38, 388, 389,  38,  38,  38,  38,  38,  38,
-    390, 391,  38,  38,  38, 392, 392, 393, 394, 395, 396,  38,  38, 397, 398, 399,
-    400, 400, 401, 402, 402, 403, 404, 405,  38,  38,  38,  38,  38,  38,  38,  38,
-    406, 407, 408, 409, 410, 411,  38,  38, 412, 413, 414, 415, 416, 417,  38,  38,
-     38,  38,  38,  38,  38,  38,  38, 418,  38,  38,  38,  38,  38, 419, 420, 421,
-    422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
-    422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 423,  38,  38,  38,
-    422, 422, 422, 424, 422, 422, 422, 422, 422, 422, 425,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
-    426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
-    426, 427,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428,
-    428, 428, 429,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
-    218, 430, 431, 432,  38,  38, 433, 434, 435, 435, 436, 437, 438,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38, 439, 439, 440,  38,  38,  38, 441, 441, 442, 441, 443,  38,  38, 444,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 446,
-    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
-    445, 445, 445, 445, 445, 445, 445, 445, 447, 447, 447, 447, 447, 447, 447, 447,
-    447, 447, 447, 447, 447, 447, 448,  38, 449,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    450, 196, 196, 196, 196, 196, 196, 196, 451,  38, 452, 453, 454, 454, 454, 454,
-    454, 454, 454, 454, 454, 454, 454, 455,  38,  38,  38,  38,  38,  38,  38,  38,
-    456, 456, 456, 457, 458, 459,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-      0,   0,   0,   0,   0,   0,   0, 460,   0, 461,   0, 462, 463, 464,   0, 465,
-     11,  11, 466,  38,  38,  38,  38, 467,   0,   0, 468, 469,  38,  38,  38,  38,
-      0,   0, 470,   0, 471, 472, 473,   0, 474, 475, 476,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 477,   0,   0,   0,   0,   0,   0,   0,   0, 478,   0,
-    479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
-    479, 479, 479, 479, 480, 481,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    482, 483,  38,  38,  38,  38,  38,  38, 484, 485, 486,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38, 487, 488,  38,  38,  38,  38,  38,  38,  38,  38,
-    489, 489, 489, 489, 489, 489, 490,  38, 491, 491, 492,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38, 493,   0, 494,  38,  38, 268, 495,  38,  38,  38,  38,  38,  38,
-    496, 497, 498, 499, 500, 501,  38, 502,  38,  38,  38,  38,  38,  38,  38,  38,
-      0, 503,   0,   0, 467, 504, 505, 460,   0,   0,   0,   0,   0, 506,  38, 507,
-    508, 509, 510, 511,  38,  38,  38,  38,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 512, 513,   0,   0,   0, 467,   0,   0, 469, 514,
-    503,   0, 515,   0, 516, 517,  38,  38,   0,   0,   0, 518,   0,   0, 519,   0,
-      0,   0, 467, 520, 521, 522, 523,  38,   0,   0,   0,   0, 265,   0, 173, 524,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 525,  38, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 526, 189, 189, 189, 189, 189, 189,
-    525, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 527, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 528,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    525,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
-    189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 529,  38,  38,  38,  38,  38,
-    530,   0,   0,   0,  38,  38,  38,  38,   7,   7,   7,   7,   7,   7,   7, 531,
-     38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38
+    364, 365,  82,  82, 366, 367, 368, 369, 370, 371, 372, 373,  82,  82,  82,  82,
+    374, 374, 375, 376, 377, 377, 378,  82,  82,  82,  82,  82, 379, 380, 381,  82,
+    382, 382, 383, 384, 385, 386, 387,  82, 388, 389, 390,  82,  82,  82,  82,  82,
+    391, 392,  82,  82,  82, 393, 393, 394, 395, 396, 397,  82,  82, 398, 399, 400,
+    401, 401, 402, 403, 403, 404, 405, 406,  82,  82,  82,  82,  82,  82,  82,  82,
+    407, 408, 409, 410, 411, 412,  82,  82, 413, 414, 415, 416, 417, 418,  82,  82,
+     82,  82,  82,  82,  82,  82,  82, 419,  82,  82,  82,  82,  82, 420, 421, 422,
+    423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
+    423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 424,  82,  82,  82,
+    423, 423, 423, 425, 423, 423, 423, 423, 423, 423, 426,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 427, 428, 428, 429,
+    430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
+    430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
+    430, 431,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
+    432, 432, 433,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
+    213, 434, 435, 436, 437, 438, 439, 440, 441, 441, 442, 443, 444,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82, 445, 445, 446,  82,  82,  82, 447, 447, 448, 447, 449,  82,  82, 450,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452,
+    451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
+    451, 451, 451, 451, 451, 451, 451, 451, 453, 453, 453, 453, 453, 453, 453, 453,
+    453, 453, 453, 453, 453, 453, 454,  82, 455,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 456,
+    457, 192, 192, 192, 192, 192, 192, 192, 192, 458, 459, 460, 461, 461, 461, 461,
+    461, 461, 461, 461, 461, 461, 461, 462,  82,  82,  82,  82,  82,  82,  82,  82,
+    463, 463, 463, 464, 465, 466,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,   7, 467, 468,   0,   0,   0, 466,  82,
+      0,   0,   0,   0,   0,   0,   0, 469,   0, 470,   0, 471, 472, 473,   0, 171,
+     11,  11, 474,  82,  82,  82,  82, 475,   0,   0, 476, 477,  82,  82,  82,  82,
+      0,   0, 478,   0, 479, 480, 481,   0, 482, 483, 484,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 485,   0,   0,   0,   0,   0,   0,   0,   0, 486,   0,
+    487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487,
+    487, 487, 487, 487, 488, 489,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82, 490,  82,  82,  82,  82,  82,  82,  82,
+    491, 492,  82,  82,  82,  82,  82,  82, 493, 494, 495,  82,  82,  82,  82,  82,
+     82,  82,  82,  82, 496, 497, 498, 499,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82, 500,
+    501, 501, 501, 501, 501, 501, 502,  82, 503, 503, 504,  82,  82,  82,  82,  82,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+     82,  82,  82, 505,   0, 506,  82,  82, 262, 183,  82,  82,  82,  82,  82,  82,
+    507, 508, 509, 510, 511, 512,  82, 513,  82,  82,  82,  82,  82,  82,  82,  82,
+      0, 514,   0,   0, 475, 515, 516, 469,   0,   0,   0,   0,   0, 517,  82, 518,
+    519, 520, 521, 522,  82,  82,  82,  82,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 523, 524,   0,   0,   0, 475,   0,   0, 477, 525,
+    514,   0, 526,   0, 527, 528,  82,  82,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 475, 529, 530, 531, 532, 533,   0,   0,   0,   0, 259,   0, 171, 534,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185,  82, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 535, 185, 185, 185, 185, 185, 185,
+    536, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 537, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 538,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    536,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 539,  82,  82,  82,  82,  82,
+    540,   0,   0,   0,  82,  82,  82,  82,   7,   7,   7,   7,   7,   7,   7, 541,
+     82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82
 };
 
 static RE_UINT8 re_script_table_3[] = {
@@ -20275,7 +20653,7 @@ static RE_UINT8 re_script_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   0,   0,   0,   0,   9,
       9,   9,   9,   9,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10,   1,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,   0,  10,   1,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,  10,   1,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   4,   4,   4,   4,   4,
@@ -20305,13 +20683,9 @@ static RE_UINT8 re_script_table_3[] = {
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,   0,   0,  15,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+     10,  10,   0,   0,   0,   0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,   1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
@@ -20363,9 +20737,9 @@ static RE_UINT8 re_script_table_3[] = {
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,
      22,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,  22,  22,  22,  22,
-     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,   0,  22,  22,  22,
+     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,  22,  22,  22,  22,
      22,  22,  22,  22,  22,   0,  22,  22,  22,   0,  22,  22,  22,  22,   0,   0,
-      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,  22,   0,   0,
      22,  22,  22,  22,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
       0,   0,   0,   0,   0,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,
@@ -20373,7 +20747,7 @@ static RE_UINT8 re_script_table_3[] = {
      23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,  23,  23,  23,  23,
      23,  23,  23,  23,   0,  23,  23,  23,  23,  23,   0,   0,  23,  23,  23,  23,
      23,  23,  23,  23,  23,   0,  23,  23,  23,   0,  23,  23,  23,  23,   0,   0,
-      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,  23,   0,
+      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,  23,  23,   0,
      23,  23,  23,  23,   0,   0,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,
       0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,   0,  24,  24,
@@ -20398,6 +20772,8 @@ static RE_UINT8 re_script_table_3[] = {
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,   1,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,   0,  27,  27,  27,  27,
      27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
      27,  27,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,  27,  27,  27,  27,
@@ -20456,8 +20832,8 @@ static RE_UINT8 re_script_table_3[] = {
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,   1,   1,   1,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,   0,   0,   0,   0,   0,   0,   0,
-     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,   0,  37,  37,
-     37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,
+     37,  37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,
      38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
      38,  38,  38,  38,  38,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
@@ -20470,7 +20846,7 @@ static RE_UINT8 re_script_table_3[] = {
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
-     42,  42,   1,   1,  42,   1,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,
+     42,  42,   1,   1,  42,   1,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,   0,   0,   0,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
@@ -20506,14 +20882,14 @@ static RE_UINT8 re_script_table_3[] = {
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,   0,   0,   0,   0,
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -20544,8 +20920,6 @@ static RE_UINT8 re_script_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   7,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
@@ -20564,7 +20938,7 @@ static RE_UINT8 re_script_table_3[] = {
       1,   2,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -20586,10 +20960,6 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -20605,7 +20975,7 @@ static RE_UINT8 re_script_table_3[] = {
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
@@ -20652,8 +21022,6 @@ static RE_UINT8 re_script_table_3[] = {
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,   1,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,   1,   1,   1,   1,   1,   1,   1,   1,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,   0,   0,   0,
@@ -20674,10 +21042,10 @@ static RE_UINT8 re_script_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   1,   1,   1,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   0,   2,   0,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,   0,   0,   0,
@@ -20744,18 +21112,16 @@ static RE_UINT8 re_script_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   0,   9,   9,   9,   9,   9,   0,   9,   0,
       9,   9,   0,   9,   9,   0,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,   1,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,  10,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   7,   7,
@@ -20841,315 +21207,345 @@ static RE_UINT8 re_script_table_3[] = {
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  85,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,   0,   0,  87,   0,  87,  87,  87,  87,  87,  87,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,   0,  86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,   0,  87,  87,   0,   0,   0,  87,   0,   0,  87,
+     87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+     88,  88,  88,  88,  88,  88,   0,   0,  88,   0,  88,  88,  88,  88,  88,  88,
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     88,  88,  88,  88,  88,  88,   0,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
+     88,  88,  88,  88,  88,  88,   0,  88,  88,   0,   0,   0,  88,   0,   0,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     89,  89,  89,  89,  89,  89,   0,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,   0,
-      0,   0,   0,   0,   0,   0,   0,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,   0,  91,  91,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,   0,
+      0,   0,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
-     92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,   0,   0,   0,  92,
+     92,  92,  92,   0,  92,  92,   0,   0,   0,   0,   0,  92,  92,  92,  92,  92,
      93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,
-     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,   0,   0,  93,
-     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,  93,
      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,   0,   0,   0,   0,   0,  94,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,   0,   0,   0,   0,  95,  95,  95,  95,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-      0,   0,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     96,  96,  96,  96,   0,  96,  96,   0,   0,   0,   0,   0,  96,  96,  96,  96,
-     96,  96,  96,  96,   0,  96,  96,  96,   0,  96,  96,  96,  96,  96,  96,  96,
      96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
-     96,  96,  96,  96,  96,  96,   0,   0,  96,  96,  96,   0,   0,   0,   0,  96,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+      0,   0,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  97,  97,   0,  97,  97,   0,   0,   0,   0,   0,  97,  97,  97,  97,
+     97,  97,  97,  97,   0,  97,  97,  97,   0,  97,  97,  97,  97,  97,  97,  97,
      97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     97,  97,  97,  97,  97,  97,   0,   0,  97,  97,  97,   0,   0,   0,   0,  97,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100,   0,   0,   0, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-    101, 101, 101, 101, 101, 101,   0,   0, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101,   0,   0,   0, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
-    102, 102, 102,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
+    102, 102, 102, 102, 102, 102,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    103, 103, 103,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103, 103,
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104,   0,   0,   0,   0,   0,   0,   0,
+    104, 104,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104, 104, 104, 104,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0, 105, 105, 105, 105, 105, 105,
+    105, 105, 105, 105, 105, 105, 105, 105, 105,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 106, 106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0, 106, 106, 106, 106, 106, 106,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0, 107, 107, 107,   0,   0,
-    107, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
-    108, 108, 108, 108, 108, 108, 108, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108,   0, 108, 108, 108,   0,   0,
+    108, 108,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,
-      0,   0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    111, 111, 111, 111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113,   0,   0,
+    113, 113, 113, 113, 113, 113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
-    114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,
+      0,   0, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115,   0, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115, 115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
-    116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
-      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
-     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117,   0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117, 117, 117, 117,   0,   0,   0,   0,   0,   0,   0,   0,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118,   0, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,   0,
-    119, 119, 119, 119, 119, 119, 119,   0, 119,   0, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    118, 118, 118, 118, 118, 118, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
+     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    120, 120,   0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,   0,
-    121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0, 121,
-    121,   0,   0, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121,
-    121,   0, 121, 121,   0, 121, 121, 121, 121, 121,   0,   4, 121, 121, 121, 121,
-    121, 121, 121, 121, 121,   0,   0, 121, 121,   0,   0, 121, 121, 121,   0,   0,
-    121,   0,   0,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0, 121, 121, 121,
-    121, 121, 121, 121,   0,   0, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,
-    121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,
+    121, 121, 121, 121, 121, 121, 121,   0, 121,   0, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0, 122, 122, 122,
-    122, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,   0,
+    123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0, 123,
+    123,   0,   0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123,
+    123,   0, 123, 123,   0, 123, 123, 123, 123, 123,   0,   4, 123, 123, 123, 123,
+    123, 123, 123, 123, 123,   0,   0, 123, 123,   0,   0, 123, 123, 123,   0,   0,
+    123,   0,   0,   0,   0,   0,   0, 123,   0,   0,   0,   0,   0, 123, 123, 123,
+    123, 123, 123, 123,   0,   0, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,
+    123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124,   0,   0, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0,   0,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0, 124, 124, 124,
+    124, 124,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,
-     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,   0,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    126, 126, 126, 126, 126, 126,   0,   0, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+    127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 129,
-    130, 130, 130, 130, 130, 130, 130,   0,   0, 130,   0,   0, 130, 130, 130, 130,
-    130, 130, 130, 130,   0, 130, 130,   0, 130, 130, 130, 130, 130, 130, 130, 130,
+    129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130,   0, 130, 130,   0,   0, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 131,
+    132, 132, 132, 132, 132, 132, 132,   0,   0, 132,   0,   0, 132, 132, 132, 132,
+    132, 132, 132, 132,   0, 132, 132,   0, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
-    132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,
-    133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+    132, 132, 132, 132, 132, 132,   0, 132, 132,   0,   0, 132, 132, 132, 132, 132,
+    132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
+    133, 133, 133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,
-    135, 135, 135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135,
+    134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,   0,   0,   0,
+    135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-      0,   0, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136, 136,   0, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137,   0, 137, 137,   0, 137, 137, 137, 137, 137,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,
+    137, 137, 137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
-    137, 137, 137, 137, 137, 137, 137,   0,   0,   0, 137,   0, 137, 137,   0, 137,
-    137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138,   0, 138, 138,   0, 138, 138, 138, 138, 138, 138,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,
-    138, 138,   0, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,   0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138, 138,   0, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139,   0, 139, 139,   0, 139, 139, 139, 139, 139,
     139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
-    139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    139, 139, 139, 139, 139, 139, 139,   0,   0,   0, 139,   0, 139, 139,   0, 139,
+    139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140,   0, 140, 140,   0, 140, 140, 140, 140, 140, 140,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
+    140, 140,   0, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
+    141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
      21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
-    140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,   0,
-    141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-    142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,   0,   0,   0, 143, 143,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,
+    142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,
-    144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,
+    144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145,   0, 145, 145, 145, 145, 145,
-    145, 145,   0, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0, 146, 146,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    148, 149,   1,   1, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,
+    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,
+    148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0, 149, 149, 149, 149, 149,
+    149, 149,   0, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
-    150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,
+    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    152, 153,  56,  56, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,   0,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     58,  58,  58,  58,   0,  58,  58,  58,  58,  58,  58,  58,   0,  58,  58,   0,
      58,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   0,
+     58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      57,  57,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,  58,  58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0, 151, 151, 151, 151,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155,
       1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,   1,   1,   1,   1,   1,
@@ -21160,8 +21556,6 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -21188,40 +21582,46 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 152, 152, 152, 152,
-      0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 156, 156, 156, 156, 156,
+      0, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
      54,  54,  54,  54,  54,  54,  54,   0,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,   0,   0,  54,  54,  54,  54,  54,
      54,  54,   0,  54,  54,   0,  54,  54,  54,  54,  54,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0, 153, 153,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,   0, 157, 157,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0, 154,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159,   0,   0,   0,   0,   0, 159,
+     32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,   0,  32,  32,   0,
+     32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,   0,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160,   0,   0, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0, 161, 161,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,  10,  10,   0,  10,   0,   0,  10,   0,  10,  10,  10,  10,  10,  10,  10,
@@ -21255,35 +21655,33 @@ static RE_UINT8 re_script_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
       1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
      56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -21317,198 +21715,206 @@ RE_UINT32 re_get_script(RE_UINT32 codepoint) {
 static RE_UINT8 script_extensions_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23,
-    24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 21, 21, 34, 35, 21, 21,
-    21, 36, 21, 21, 21, 21, 21, 21, 21, 21, 37, 38, 39, 39, 39, 39,
-    39, 40, 41, 42, 21, 21, 21, 21, 21, 21, 21, 21, 43, 21, 21, 44,
-    21, 21, 21, 21, 45, 46, 47, 21, 48, 21, 49, 50, 51, 52, 53, 21,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 54, 13, 13, 13, 55, 56, 13,
-    13, 13, 13, 57, 13, 13, 13, 13, 13, 13, 58, 21, 21, 21, 59, 21,
-    13, 13, 13, 13, 60, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    61, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21
+    13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 22,
+    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33, 34, 35, 20, 20,
+    20, 36, 20, 20, 20, 20, 20, 20, 20, 20, 37, 38, 39, 39, 39, 39,
+    39, 40, 41, 42, 20, 20, 20, 20, 20, 20, 20, 43, 44, 20, 20, 45,
+    20, 20, 20, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 20,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 58, 13, 13, 13, 59, 60, 13,
+    13, 13, 13, 61, 13, 13, 13, 13, 13, 13, 62, 20, 20, 20, 63, 20,
+    13, 13, 13, 13, 64, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    65, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
 };
 static RE_UINT16 script_extensions_table_2[] = {
       0,   0,   1,   1,   0,   2,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   5,   0,   6,   7,   7,   8,   9,  10,  11,  12,  13,
      14,  14,  14,  14,  15,  14,  14,  14,  14,  16,  17,  18,  19,  20,  21,  22,
      23,  24,  25,  26,  24,  24,  27,  24,  28,  29,  30,  24,  31,  32,  33,  34,
-     35,  36,  37,  38,  39,  40,  41,  42,  43,  43,  44,  45,  46,  47,  48,  49,
-     50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  39,  85,  86,  87,  39,  88,  88,  89,  90,  91,  92,  93,  39,
-     94,  94,  95,  94,  94,  96,  97,  98,  99,  99,  99,  99,  99,  99,  99,  99,
-    100, 100, 101, 100, 102, 103, 104, 100, 105, 100, 106, 107, 108, 109, 109, 110,
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 112, 113, 113, 114, 115, 116, 117, 118, 119, 119, 120, 121,
-    122, 123, 123, 124, 123, 125, 111, 126, 127, 128, 129, 130, 131, 132, 133, 119,
-    134, 135, 136, 137, 138, 139, 140,  39, 141, 141, 142, 143, 144, 144, 145, 146,
-    147, 148, 149, 150, 151, 152, 153, 154,   4, 155, 156, 157,   4, 158, 159, 160,
-      4,   4,   4,   4,   4,   4,   4,   4, 161,  12, 162, 163,  12, 164, 165, 166,
-    167, 168,   0, 169, 170,   0, 171, 172,   0, 173, 174,   4, 175,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0, 176, 177,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    178, 178, 178, 178, 178, 178, 178, 178,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 179, 180,   0,   0,   0,
-    181, 182, 183,   4, 184, 184, 184, 185,  96, 186, 187, 188, 189, 190, 190,  14,
-      0,   0, 191,  39, 192, 193, 193, 194, 193, 193, 193, 193, 193, 193, 195, 196,
-    197, 198, 199, 200, 201, 202, 203, 204, 205, 206,  99,  99, 207, 208, 209, 210,
-    211, 209, 212, 213, 209, 214, 215, 216, 203, 203, 217, 218,   0,   0,   0, 219,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,   0,   0,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 220,
-    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
-    221, 221, 221, 221, 222, 221, 223, 224, 225, 225, 225, 225, 225, 225, 225, 225,
-    225, 226,  14, 227,  14, 228, 228, 229, 230, 231,   4,   4, 232,   4, 233, 234,
-    235, 236, 237, 238, 239, 239, 240, 241, 242, 243, 244, 245, 246, 246, 247, 248,
-    249, 250, 251,  94, 252, 252, 253, 254, 255, 256, 257, 258, 109, 109, 259, 260,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99, 261, 262, 263,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 264, 193, 193, 265,  39, 266, 267, 268,  24,  24,  24, 269,  24,
-     24,  24,  24,  24,  24,  24,  24,  24,  24, 270, 271,  24, 272,  24, 273, 274,
-    275, 276, 277, 278,  24,  24,  24, 279, 280,   1,   1, 281, 282, 211, 283, 284,
-    285, 286, 287,  39, 288, 288, 288, 289, 290, 291,  12,  12, 292, 293, 294, 295,
-     39,  39,  39,  39, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,  39,
-    307, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,  39,  39,  39,  39,
-    318, 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, 321,  39,  39,  39,  39,
-    322, 323, 324, 325, 326, 327,  39, 328, 329, 330,  39,  39, 331, 332, 333, 334,
-    335, 336, 337, 338, 339,  39, 340, 341, 342, 343, 344, 345, 346, 347,  39,  39,
-    348, 348, 349,  39, 350, 351, 350, 352, 353, 354,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 355, 356, 357,  39,  39, 358, 359, 360,  39,  39, 361, 362, 363,
-    364, 364, 365, 366, 367, 367, 368, 369, 370, 371, 372, 373, 374, 374, 374, 375,
-    376, 377,  39,  39, 378, 379, 380, 381, 382, 383, 384, 385,  39,  39,  39,  39,
-    386, 386, 387, 388, 389, 389, 390,  39,  39,  39,  39,  39, 391, 392, 393,  39,
-    394, 394, 395, 396, 397, 398, 399,  39, 400, 401,  39,  39,  39,  39,  39,  39,
-    402, 403,  39,  39,  39, 404, 404, 405, 406, 407, 408,  39,  39, 409, 410, 411,
-    412, 412, 413, 414, 414, 415, 416, 417,  39,  39,  39,  39,  39,  39,  39,  39,
-    418, 419, 420, 421, 422, 423,  39,  39, 424, 425, 426, 427, 428, 429,  39,  39,
-     39,  39,  39,  39,  39,  39,  39, 430,  39,  39,  39,  39,  39, 431, 432, 433,
-    434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
-    434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 435,  39,  39,  39,
-    434, 434, 434, 436, 434, 434, 434, 434, 434, 434, 437,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438,
-    438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438,
-    438, 439,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
-    440, 440, 441,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
-    228, 442, 443, 444,  39,  39, 445, 446, 447, 447, 448, 449, 450,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39, 451, 451, 452,  39,  39,  39, 453, 453, 454, 453, 455,  39,  39, 456,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458,
-    457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
-    457, 457, 457, 457, 457, 457, 457, 457, 459, 459, 459, 459, 459, 459, 459, 459,
-    459, 459, 459, 459, 459, 459, 460,  39, 461,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    462, 200, 200, 200, 200, 200, 200, 200, 463,  39, 464, 465, 466, 466, 466, 466,
-    466, 466, 466, 466, 466, 466, 466, 467,  39,  39,  39,  39,  39,  39,  39,  39,
-    468, 468, 468, 469, 470, 471,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-      0,   0,   0,   0,   0,   0,   0, 472,   0, 473,   0, 474, 475, 476,   0, 477,
-     12,  12, 478,  39,  39,  39,  39, 479,   0,   0, 480, 481,  39,  39,  39,  39,
-      0,   0, 482,   0, 483, 484, 485,   0, 486, 487, 488,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 489,   0,   0,   0,   0,   0,   0,   0,   0, 490,   0,
-    491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
-    491, 491, 491, 491, 492, 493,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    494, 495,  39,  39,  39,  39,  39,  39, 496, 497, 498,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39, 499, 500,  39,  39,  39,  39,  39,  39,  39,  39,
-    501, 501, 501, 501, 501, 501, 502,  39, 503, 503, 504,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39, 505,   0, 506,  39,  39, 280, 507,  39,  39,  39,  39,  39,  39,
-    508, 509, 510, 511, 512, 513,  39, 514,  39,  39,  39,  39,  39,  39,  39,  39,
-      0, 515,   0,   0, 479, 516, 517, 472,   0,   0,   0,   0,   0, 518,  39, 519,
-    520, 521, 522, 523,  39,  39,  39,  39,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 524, 525,   0,   0,   0, 479,   0,   0, 526, 527,
-    515,   0, 528,   0, 529, 530,  39,  39,   0,   0,   0, 531,   0,   0, 532,   0,
-      0,   0, 479, 533, 534, 535, 536,  39,   0,   0,   0,   0, 537,   0, 177, 538,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 539,  39, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 540, 193, 193, 193, 193, 193, 193,
-    539, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 541, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 542,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    539,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
-    193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 543,  39,  39,  39,  39,  39,
-    544,   0,   0,   0,  39,  39,  39,  39,   7,   7,   7,   7,   7,   7,   7, 545,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39
+     35,  36,  37,  38,  39,  24,  24,  40,  41,  41,  42,  43,  44,  45,  46,  47,
+     48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
+     64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
+     80,  81,  82,  83,  84,  85,  86,  83,  87,  87,  88,  89,  90,  91,  92,  83,
+     93,  93,  94,  93,  93,  95,  96,  97,  98,  98,  98,  98,  98,  98,  98,  98,
+     99,  99, 100,  99, 101, 102, 103,  99, 104,  99, 105, 106, 107, 108, 108, 109,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+    110, 110, 110, 110, 111, 112, 112, 113, 114, 115, 116, 117, 118, 118, 119, 120,
+    121, 122, 122, 123, 122, 124, 110, 125, 126, 127, 128, 129, 130, 131, 132, 118,
+    133, 134, 135, 136, 137, 138, 139,  83, 140, 140, 141, 142, 143, 143, 144, 145,
+    146, 147, 148, 149, 150, 151, 152, 153,   4, 154, 155, 156,   4, 157, 158, 159,
+      4,   4,   4,   4,   4,   4,   4,   4, 160,  12, 161, 162,  12, 163, 164, 165,
+    166, 167,   0, 168, 169,   0, 170, 171,   0, 172, 173,   4, 174,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0, 175, 176,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    177, 177, 177, 177, 177, 177, 177, 177,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 178, 179,   0,   0,   0,
+    180, 180, 180,   4, 181, 181, 181, 182,  95, 183, 184, 185, 186, 187, 187,  14,
+      0,   0, 188,  83, 189, 190, 190, 191, 190, 190, 190, 190, 190, 190, 192, 193,
+    194, 195, 196, 197, 198, 199, 200, 201, 202, 203,  98,  98, 204, 205, 206, 207,
+    208, 206, 209, 210, 206, 211, 212, 213, 200, 200, 214, 215,   0,   0,   0, 216,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,   0,   0,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
+    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
+    217, 217, 217, 217, 218, 217, 219, 220, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 222,  14, 223,  14, 224, 224, 225, 226, 227,   4,   4, 228,   4, 229, 230,
+    231, 232, 233, 234, 235, 235, 236, 237, 238, 239, 240, 241, 242, 242, 243, 244,
+    245, 246, 247,  93, 248, 248, 249, 250, 251, 252, 253, 254, 108, 108, 255, 256,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
+     98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98, 257, 258, 259,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 260, 190, 190, 261,  83, 262, 263, 264,  24,  24,  24, 265,  24,
+     24,  24,  24,  24,  24,  24,  24,  24,  24, 266,  24,  24, 267,  24, 268, 269,
+    270, 271, 272, 273,  24,  24,  24, 274, 275,   1,   1, 276, 277, 208, 278, 279,
+    280, 281, 282,  83, 283, 283, 283, 284, 285, 286,  12,  12, 287, 288, 289, 290,
+     83,  83,  83,  83, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,  83,
+    302, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,  83,  83,
+    315, 315, 315, 315, 315, 315, 315, 315, 315, 316, 317, 318, 319, 320,  83,  83,
+    321, 322, 323, 324, 325, 326,  83, 327, 328, 329,  83,  83, 330, 331, 332, 333,
+    334, 335, 336, 337, 338,  83, 339, 340, 341, 342, 343, 344, 345, 346,  83,  83,
+    347, 347, 348,  83, 349, 350, 349, 351, 352, 353,  83,  83,  83,  83,  83,  83,
+     83,  83,  83, 354, 355, 356,  83,  83, 357, 358, 359, 360, 361, 362, 363, 364,
+    365, 365, 366, 367, 368, 368, 369, 370, 371, 372, 373, 374, 375, 375, 375, 376,
+    377, 378,  83,  83, 379, 380, 381, 382, 383, 384, 385, 386,  83,  83,  83,  83,
+    387, 387, 388, 389, 390, 390, 391,  83,  83,  83,  83,  83, 392, 393, 394,  83,
+    395, 395, 396, 397, 398, 399, 400,  83, 401, 402, 403,  83,  83,  83,  83,  83,
+    404, 405,  83,  83,  83, 406, 406, 407, 408, 409, 410,  83,  83, 411, 412, 413,
+    414, 414, 415, 416, 416, 417, 418, 419,  83,  83,  83,  83,  83,  83,  83,  83,
+    420, 421, 422, 423, 424, 425,  83,  83, 426, 427, 428, 429, 430, 431,  83,  83,
+     83,  83,  83,  83,  83,  83,  83, 432,  83,  83,  83,  83,  83, 433, 434, 435,
+    436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+    436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 437,  83,  83,  83,
+    436, 436, 436, 438, 436, 436, 436, 436, 436, 436, 439,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 440, 441, 441, 442,
+    443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
+    443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
+    443, 444,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
+    445, 445, 446,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+    224, 447, 448, 449, 450, 451, 452, 453, 454, 454, 455, 456, 457,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83, 458, 458, 459,  83,  83,  83, 460, 460, 461, 460, 462,  83,  83, 463,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 465,
+    464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
+    464, 464, 464, 464, 464, 464, 464, 464, 466, 466, 466, 466, 466, 466, 466, 466,
+    466, 466, 466, 466, 466, 466, 467,  83, 468,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 469,
+    470, 197, 197, 197, 197, 197, 197, 197, 197, 471, 472, 473, 474, 474, 474, 474,
+    474, 474, 474, 474, 474, 474, 474, 475,  83,  83,  83,  83,  83,  83,  83,  83,
+    476, 476, 476, 477, 478, 479,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,   7, 480, 481,   0,   0,   0, 482,  83,
+      0,   0,   0,   0,   0,   0,   0, 483,   0, 484,   0, 485, 486, 487,   0, 176,
+     12,  12, 488,  83,  83,  83,  83, 489,   0,   0, 490, 491,  83,  83,  83,  83,
+      0,   0, 492,   0, 493, 494, 495,   0, 496, 497, 498,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 499,   0,   0,   0,   0,   0,   0,   0,   0, 500,   0,
+    501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
+    501, 501, 501, 501, 502, 503,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83, 504,  83,  83,  83,  83,  83,  83,  83,
+    505, 506,  83,  83,  83,  83,  83,  83, 507, 508, 509,  83,  83,  83,  83,  83,
+     83,  83,  83,  83, 510, 511, 512, 513,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83, 514,
+    515, 515, 515, 515, 515, 515, 516,  83, 517, 517, 518,  83,  83,  83,  83,  83,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+     83,  83,  83, 519,   0, 520,  83,  83, 275, 521,  83,  83,  83,  83,  83,  83,
+    522, 523, 524, 525, 526, 527,  83, 528,  83,  83,  83,  83,  83,  83,  83,  83,
+      0, 529,   0,   0, 489, 530, 531, 483,   0,   0,   0,   0,   0, 532,  83, 533,
+    534, 535, 536, 537,  83,  83,  83,  83,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 538, 539,   0,   0,   0, 489,   0,   0, 540, 541,
+    529,   0, 542,   0, 543, 544,  83,  83,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0, 489, 545, 546, 547, 548, 549,   0,   0,   0,   0, 550,   0, 176, 551,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190,  83, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 552, 190, 190, 190, 190, 190, 190,
+    553, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 554, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 555,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    553,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
+    190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 556,  83,  83,  83,  83,  83,
+    557,   0,   0,   0,  83,  83,  83,  83,   7,   7,   7,   7,   7,   7,   7, 558,
+     83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83
 };
 static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -21527,9 +21933,9 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4, 158,   4,   4, 158,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4, 163,   4,   4, 163,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+      4,   4,   4, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
       5,   5,   5,   5,   1,   5,   5,   5,   0,   0,   5,   5,   5,   5,   1,   5,
       0,   0,   0,   0,   5,   1,   5,   1,   5,   5,   5,   0,   5,   0,   5,   5,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
@@ -21541,7 +21947,7 @@ static RE_UINT8 script_extensions_table_3[] = {
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7, 160, 161, 162, 162, 161,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,   7, 165, 166, 167, 167, 166,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       0,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
@@ -21557,16 +21963,16 @@ static RE_UINT8 script_extensions_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
       9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,   0,   0,   0,   0,   9,
       9,   9,   9,   9,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10, 163,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 163, 164,   0,  10, 163,
+     10,  10,  10,  10,  10,   1,  10,  10,  10,  10,  10,  10, 168,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 168, 169,  10,  10, 170,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-    165,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 166, 166, 166, 166, 166,
-    166, 166, 166, 166, 166, 166,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-    167, 167, 167, 167, 167, 167, 167, 167, 167, 167,  10,  10,  10,  10,  10,  10,
-    166,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+    171,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 172, 172, 172, 172, 172,
+    172, 172, 172, 172, 172, 172,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173,  10,  10,  10,  10,  10,  10,
+    172,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10, 168,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,
+     10,  10,  10,  10, 174,  10,  10,  10,  10,  10,  10,  10,  10,   1,  10,  10,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,  11,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
@@ -21588,20 +21994,16 @@ static RE_UINT8 script_extensions_table_3[] = {
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
      15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,   0,   0,  15,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+     10,  10,   0,   0,   0,   0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,   1,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16, 169, 170,   4,   4,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16, 171, 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+     16, 175, 176,   4,   4,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
+     16,  16,  16,  16, 177, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      17,  17,  17,  17,   0,  17,  17,  17,  17,  17,  17,  17,  17,   0,   0,  17,
      17,   0,   0,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,
@@ -21609,7 +22011,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      17,   0,  17,   0,   0,   0,  17,  17,  17,  17,   0,   0,  17,  17,  17,  17,
      17,  17,  17,  17,  17,   0,   0,  17,  17,   0,   0,  17,  17,  17,  17,   0,
       0,   0,   0,   0,   0,   0,   0,  17,   0,   0,   0,   0,  17,  17,   0,  17,
-     17,  17,  17,  17,   0,   0, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+     17,  17,  17,  17,   0,   0, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
      17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,  17,   0,
       0,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,  18,
      18,   0,   0,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
@@ -21617,7 +22019,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      18,   0,  18,  18,   0,  18,  18,   0,  18,  18,   0,   0,  18,   0,  18,  18,
      18,  18,  18,   0,   0,   0,   0,  18,  18,   0,   0,  18,  18,  18,   0,   0,
       0,  18,   0,   0,   0,   0,   0,   0,   0,  18,  18,  18,  18,   0,  18,   0,
-      0,   0,   0,   0,   0,   0, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+      0,   0,   0,   0,   0,   0, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
      18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  19,  19,  19,   0,  19,  19,  19,  19,  19,  19,  19,  19,  19,   0,  19,
      19,  19,   0,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,  19,
@@ -21625,7 +22027,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      19,   0,  19,  19,   0,  19,  19,  19,  19,  19,   0,   0,  19,  19,  19,  19,
      19,  19,  19,  19,  19,  19,   0,  19,  19,  19,   0,  19,  19,  19,   0,   0,
      19,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     19,  19,  19,  19,   0,   0, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
+     19,  19,  19,  19,   0,   0, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
      19,  19,   0,   0,   0,   0,   0,   0,   0,  19,  19,  19,  19,  19,  19,  19,
       0,  20,  20,  20,   0,  20,  20,  20,  20,  20,  20,  20,  20,   0,   0,  20,
      20,   0,   0,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,
@@ -21641,14 +22043,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      21,  21,  21,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,  21,  21,
      21,  21,  21,   0,   0,   0,  21,  21,  21,   0,  21,  21,  21,  21,   0,   0,
      21,   0,   0,   0,   0,   0,   0,  21,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
-    177, 177, 177, 177,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
+    183, 183, 183, 183,  21,  21,  21,  21,  21,  21,  21,   0,   0,   0,   0,   0,
      22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,
      22,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      22,  22,  22,  22,  22,  22,  22,  22,  22,   0,  22,  22,  22,  22,  22,  22,
-     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,   0,  22,  22,  22,
+     22,  22,  22,  22,  22,  22,  22,  22,  22,  22,   0,   0,  22,  22,  22,  22,
      22,  22,  22,  22,  22,   0,  22,  22,  22,   0,  22,  22,  22,  22,   0,   0,
-      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  22,  22,   0,  22,  22,  22,   0,   0,  22,   0,   0,
      22,  22,  22,  22,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,
       0,   0,   0,   0,   0,   0,   0,  22,  22,  22,  22,  22,  22,  22,  22,  22,
      23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,
@@ -21656,8 +22058,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      23,  23,  23,  23,  23,  23,  23,  23,  23,   0,  23,  23,  23,  23,  23,  23,
      23,  23,  23,  23,   0,  23,  23,  23,  23,  23,   0,   0,  23,  23,  23,  23,
      23,  23,  23,  23,  23,   0,  23,  23,  23,   0,  23,  23,  23,  23,   0,   0,
-      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,  23,   0,
-     23,  23,  23,  23,   0,   0, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
+      0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,  23,  23,   0,
+     23,  23,  23,  23,   0,   0, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
       0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,   0,  24,  24,
      24,   0,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,  24,
@@ -21681,6 +22083,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,   1,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,   0,  27,  27,  27,  27,
      27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
      27,  27,  27,  27,   0,  27,   0,  27,  27,  27,  27,  27,  27,  27,  27,  27,
@@ -21701,14 +22105,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      28,  28,  28,  28,  28,   1,   1,   1,   1,  28,  28,   0,   0,   0,   0,   0,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-    179, 179, 179, 179, 179, 179, 179, 179, 179, 179,  29,  29,  29,  29,  29,  29,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,   0,  30,   0,   0,   0,   0,   0,  30,   0,   0,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30, 180,  30,  30,  30,  30,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30, 186,  30,  30,  30,  30,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,
@@ -21741,10 +22145,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,   1,   1,   1,  36,  36,
      36,  36,  36,  36,  36,  36,  36,  36,  36,   0,   0,   0,   0,   0,   0,   0,
-     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,   0,  37,  37,
-     37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,  37,
+     37,  37,  37,  37,  37,  37,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,
      38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,  38,
-     38,  38,  38,  38,  38, 181, 181,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     38,  38,  38,  38,  38, 187, 187,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
      39,  39,  39,  39,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,  40,  40,
@@ -21755,7 +22159,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
      41,  41,  41,  41,  41,  41,  41,  41,  41,  41,   0,   0,   0,   0,   0,   0,
-     42,  42, 182, 182,  42, 182,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,
+     42,  42, 188, 188,  42, 188,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,   0,   0,   0,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
@@ -21791,14 +22195,14 @@ static RE_UINT8 script_extensions_table_3[] = {
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,   0,   0,   0,   0,
      47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
      48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,   0,   0,
+     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,  49,
      50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,
@@ -21818,9 +22222,9 @@ static RE_UINT8 script_extensions_table_3[] = {
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
      30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,   0,   0,  30,  30,  30,
      49,  49,  49,  49,  49,  49,  49,  49,   0,   0,   0,   0,   0,   0,   0,   0,
-    183, 184, 183, 185, 184, 186, 186, 187, 186, 187, 188, 184, 187, 187, 184, 184,
-    187, 186, 184, 184, 184, 184, 184, 184, 184, 189, 186, 184, 184, 186, 184, 184,
-    184, 184, 190, 185, 191, 186, 186, 192, 185, 185, 193,   0,   0,   0,   0,   0,
+    189, 190, 189, 191, 190, 192, 192, 193, 192, 193, 194, 190, 193, 193, 190, 190,
+    193, 192, 190, 190, 190, 190, 190, 190, 190, 195, 192, 190, 190, 192, 190, 190,
+    190, 190, 196, 191, 197, 192, 192, 198, 191, 191, 199,   0,   0,   0,   0,   0,
       2,   2,   2,   2,   2,   2,   5,   5,   5,   5,   5,   7,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
@@ -21829,10 +22233,10 @@ static RE_UINT8 script_extensions_table_3[] = {
       2,   2,   2,   2,   2,   2,   2,   2,   7,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,
-    158, 158,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+    163, 163,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4, 194,   4,   0,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4, 200,   4, 201,   4,   4,   4,   4,   4,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,
@@ -21847,16 +22251,16 @@ static RE_UINT8 script_extensions_table_3[] = {
       0,   0,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 195,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 202,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   2,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-    196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    203,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   5,   1,   1,   1,   2,   2,   1,   1,   1,   1,
       1,   1,   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,   1,
@@ -21875,10 +22279,6 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
-     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -21893,8 +22293,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      32,  32,  32,  32,  32,  32,  32,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
      32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,  32,  32,  32,   0,
-      1,   1,   1, 161,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1, 166,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,  56,  56,  56,  56,  56,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
@@ -21905,54 +22305,52 @@ static RE_UINT8 script_extensions_table_3[] = {
      56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      1, 197, 197, 198,   1,  56, 199,  56, 197, 197, 197, 197, 197, 197, 197, 197,
-    197, 197,   1, 198, 197, 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, 198,
-      1,  56,  56,  56,  56,  56,  56,  56,  56,  56, 200, 200, 200, 200,  31,  31,
-    198, 201, 201, 201, 201, 201,   1, 198,  56,  56,  56,  56, 202, 202, 199, 199,
+      1, 204, 204, 205,   1,  56, 206,  56, 204, 204, 204, 204, 204, 204, 204, 204,
+    204, 204,   1, 205, 204, 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, 205,
+      1,  56,  56,  56,  56,  56,  56,  56,  56,  56, 207, 207, 207, 207,  31,  31,
+    205, 208, 208, 208, 208, 208,   1, 205,  56,  56,  56,  56, 209, 209, 206, 206,
       0,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,   0,   0, 201, 201, 201, 201,  57,  57,  57,
-    201,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+     57,  57,  57,  57,  57,  57,  57,   0,   0, 208, 208, 208, 208,  57,  57,  57,
+    208,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 197, 201,  58,  58,  58,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 204, 208,  58,  58,  58,
       0,   0,   0,   0,   0,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       0,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,
-    199, 199, 199, 199, 199, 199, 199, 199,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   1,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,   1,   1,   1,   1,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 199,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 206,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,   1,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,
+     58,  58,  58,  58,  58,  58,  58,  58, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,   1,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,
      59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,   0,   0,   0,
@@ -21965,26 +22363,26 @@ static RE_UINT8 script_extensions_table_3[] = {
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,
      61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,  61,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 161,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 166,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
      62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,   0,
-    203, 203, 203, 203, 203, 203, 203, 203,   1,   1,   1,   1,   1,   1,   1,   1,
+    210, 210, 210, 210, 210, 210, 210, 210,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   1,   1,   1,   2,   2,   2,   2,   2,
       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+      2,   2,   0,   2,   0,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
      63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,   0,   0,   0,
-    204, 204, 204, 205, 205, 205, 206, 206, 206, 206,   0,   0,   0,   0,   0,   0,
+    211, 211, 211, 212, 212, 212, 213, 213, 213, 213,   0,   0,   0,   0,   0,   0,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
      64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,  64,
@@ -21994,10 +22392,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      65,  65,  65,  65,  65,  65,   0,   0,   0,   0,   0,   0,   0,   0,  65,  65,
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,   0,   0,   0,   0,   0,   0,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16, 186,  16, 207,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
+     16, 192,  16, 214,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
      66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,
-     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66, 208,  66,
+     66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66,  66, 215,  66,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,  67,
      67,  67,  67,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,
@@ -22005,7 +22403,7 @@ static RE_UINT8 script_extensions_table_3[] = {
      31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,   0,   0,   0,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,
-     68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0, 209,
+     68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0, 216,
      68,  68,  68,  68,  68,  68,  68,  68,  68,  68,   0,   0,   0,   0,  68,  68,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
      29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,   0,
@@ -22049,23 +22447,21 @@ static RE_UINT8 script_extensions_table_3[] = {
       9,   9,   9,   9,   9,   9,   9,   0,   9,   9,   9,   9,   9,   0,   9,   0,
       9,   9,   0,   9,   9,   0,   9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   1,   1,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 217, 217,
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
       0,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   0,   0,   0,   0,   0,  10,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     10,  10, 210,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 210,   0,   0,
+     10,  10, 218,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10, 218,  10,  10,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   7,   7,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1, 198, 198,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   1, 205, 205,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   0,   0,   0,   0,
      10,  10,  10,  10,  10,   0,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
@@ -22073,10 +22469,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,   0,   1,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1, 197, 197, 197, 197, 197,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-    201,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+      1, 204, 204, 204, 204, 204,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
+    208,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
      58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,
-     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 201, 201,
+     58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58,  58, 208, 208,
       0,   0,  31,  31,  31,  31,  31,  31,   0,   0,  31,  31,  31,  31,  31,  31,
       0,   0,  31,  31,  31,  31,  31,  31,   0,   0,  31,  31,  31,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   0,
@@ -22091,10 +22487,10 @@ static RE_UINT8 script_extensions_table_3[] = {
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,
      72,  72,  72,  72,  72,  72,  72,  72,  72,  72,  72,   0,   0,   0,   0,   0,
-    211, 211, 211,   0,   0,   0,   0, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
-    212, 212, 212, 212,   0,   0,   0, 211, 211, 211, 211, 211, 211, 211, 211, 211,
+    219, 219, 220,   0,   0,   0,   0, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+    221, 221, 221, 221,   0,   0,   0, 220, 220, 220, 220, 220, 220, 220, 220, 220,
       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22109,8 +22505,8 @@ static RE_UINT8 script_extensions_table_3[] = {
      74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,
      74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,  74,
      74,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
-    213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,   0,   0,   0,   0,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+    222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,   0,   0,   0,   0,
      75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
      75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
      75,  75,  75,  75,   0,   0,   0,   0,   0,   0,   0,   0,   0,  75,  75,  75,
@@ -22146,314 +22542,346 @@ static RE_UINT8 script_extensions_table_3[] = {
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,
      85,  85,  85,  85,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  85,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
-     86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     86,  86,  86,  86,  86,  86,  86,  86,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,   0,   0,  87,   0,  87,  87,  87,  87,  87,  87,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,  86,  86,
+     86,  86,  86,   0,  86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
+     86,  86,   0,  86,  86,  86,  86,  86,  86,  86,   0,  86,  86,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
+     87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,   0,  87,  87,   0,   0,   0,  87,   0,   0,  87,
+     87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     87,  87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,
+     88,  88,  88,  88,  88,  88,   0,   0,  88,   0,  88,  88,  88,  88,  88,  88,
      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     88,  88,  88,  88,  88,  88,   0,  88,  88,  88,  88,  88,  88,  88,  88,  88,
-     89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
+     88,  88,  88,  88,  88,  88,   0,  88,  88,   0,   0,   0,  88,   0,   0,  88,
      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     89,  89,  89,  89,  89,  89,   0,  89,  89,  89,  89,  89,  89,  89,  89,  89,
+     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
      90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-     90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,   0,
-      0,   0,   0,   0,   0,   0,   0,  90,  90,  90,  90,  90,  90,  90,  90,  90,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,
-     91,  91,  91,   0,  91,  91,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,
+     91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,   0,
+      0,   0,   0,   0,   0,   0,   0,  91,  91,  91,  91,  91,  91,  91,  91,  91,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,
-     92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,  92,   0,   0,   0,  92,
+     92,  92,  92,   0,  92,  92,   0,   0,   0,   0,   0,  92,  92,  92,  92,  92,
      93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,
-     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,   0,   0,  93,
-     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
+     93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,   0,   0,   0,  93,
      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,   0,   0,   0,   0,  95,  95,  95,  95,
-     95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-      0,   0,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
+     94,  94,  94,  94,  94,  94,  94,  94,  94,  94,   0,   0,   0,   0,   0,  94,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
      95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,  95,
-     96,  96,  96,  96,   0,  96,  96,   0,   0,   0,   0,   0,  96,  96,  96,  96,
-     96,  96,  96,  96,   0,  96,  96,  96,   0,  96,  96,  96,  96,  96,  96,  96,
      96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
-     96,  96,  96,  96,  96,  96,   0,   0,  96,  96,  96,   0,   0,   0,   0,  96,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     96,  96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,   0,   0,   0,
-     97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     96,  96,  96,  96,  96,  96,  96,  96,   0,   0,   0,   0,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+      0,   0,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,
+     97,  97,  97,  97,   0,  97,  97,   0,   0,   0,   0,   0,  97,  97,  97,  97,
+     97,  97,  97,  97,   0,  97,  97,  97,   0,  97,  97,  97,  97,  97,  97,  97,
      97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,
+     97,  97,  97,  97,  97,  97,   0,   0,  97,  97,  97,   0,   0,   0,   0,  97,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
+     97,  97,  97,  97,  97,  97,  97,  97,  97,   0,   0,   0,   0,   0,   0,   0,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,  99,  99,  99,  99,  99,
-     99,  99,  99,  99,  99,  99,  99,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
-    100, 100, 100, 100, 100, 100,   0,   0,   0, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100,   0,   0,   0,   0, 100, 100, 100, 100, 100,
+    100, 100, 223, 100, 100, 100, 100,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
     101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
-    101, 101, 101, 101, 101, 101,   0,   0, 101, 101, 101, 101, 101, 101, 101, 101,
+    101, 101, 101, 101, 101, 101,   0,   0,   0, 101, 101, 101, 101, 101, 101, 101,
     102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
-    102, 102, 102,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
+    102, 102, 102, 102, 102, 102,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
+    103, 103, 103,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103, 103, 103,
     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
-    104, 104, 104, 104, 104, 104, 104, 104, 104,   0,   0,   0,   0,   0,   0,   0,
+    104, 104,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104, 104, 104, 104,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
-    105, 105, 105,   0,   0,   0,   0,   0,   0,   0, 105, 105, 105, 105, 105, 105,
+    105, 105, 105, 105, 105, 105, 105, 105, 105,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
-    106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,
-    106, 106, 106, 106, 106, 106, 106, 106, 106, 106,   0,   0,   0,   0,   0,   0,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
-     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+    106, 106, 106,   0,   0,   0,   0,   0,   0,   0, 106, 106, 106, 106, 106, 106,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
     107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0, 107, 107, 107,   0,   0,
-    107, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,   0,   0,
+    107, 107, 107, 107, 107, 107, 107, 107, 107, 107,   0,   0,   0,   0,   0,   0,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,
+     10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,  10,   0,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
     108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
-    108, 108, 108, 108, 108, 108, 108, 108,   0,   0,   0,   0,   0,   0,   0,   0,
+    108, 108, 108, 108, 108, 108, 108, 108, 108, 108,   0, 108, 108, 108,   0,   0,
+    108, 108,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
     109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
-    109, 109, 109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    109, 109, 109, 109, 109, 109, 109, 109,   0,   0,   0,   0,   0,   0,   0,   0,
     110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+    110, 110, 110, 110, 110, 110, 110, 110, 110, 110,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
-    111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,
-      0,   0, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+    111, 111, 111, 111, 111, 111, 111, 111, 111, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112,
-    113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
+    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
-    113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113,   0,   0,
+    113, 113, 113, 113, 113, 113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
-    114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,
-    114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,   0,   0,
+      0,   0, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+    114, 114, 114, 114, 114, 114,   0,   0,   0,   0,   0,   0,   0,   0,   0, 114,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
     115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115,   0, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
-    115, 115, 115, 115, 115, 115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    115, 115, 115,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0,
     116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
-    116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0,   0,   0,   0,   0,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
     117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
-      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
-     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117,   0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+    117, 117, 117, 117, 117, 117, 117, 117,   0,   0,   0,   0,   0,   0,   0,   0,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118,   0, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
     118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
-    118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,   0,
-    119, 119, 119, 119, 119, 119, 119,   0, 119,   0, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0, 119,
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119,   0,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    118, 118, 118, 118, 118, 118, 118,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+      0,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,
+     25,  25,  25,  25,  25,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+    120, 120,   0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
     120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,
-    120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,   0,   0,   0,   0,   0,
-    121, 177, 121, 177,   0, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0, 121,
-    121,   0,   0, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
-    121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121, 121, 121, 121, 121, 121,
-    121,   0, 121, 121,   0, 121, 121, 121, 121, 121,   0, 177, 177, 121, 121, 121,
-    121, 121, 121, 121, 121,   0,   0, 121, 121,   0,   0, 121, 121, 121,   0,   0,
-    121,   0,   0,   0,   0,   0,   0, 121,   0,   0,   0,   0,   0, 121, 121, 121,
-    121, 121, 121, 121,   0,   0, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,
-    121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,   0,
+    121, 121, 121, 121, 121, 121, 121,   0, 121,   0, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0, 121,
+    121, 121, 121, 121, 121, 121, 121, 121, 121, 121,   0,   0,   0,   0,   0,   0,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
     122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
-    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0, 122, 122, 122,
-    122, 122,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
-    123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,
-    123, 123, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,
+    122, 122, 122, 122, 122, 122, 122, 122, 122, 122,   0,   0,   0,   0,   0,   0,
+    123, 183, 123, 183,   0, 123, 123, 123, 123, 123, 123, 123, 123,   0,   0, 123,
+    123,   0,   0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
+    123, 123, 123, 123, 123, 123, 123, 123, 123,   0, 123, 123, 123, 123, 123, 123,
+    123,   0, 123, 123,   0, 123, 123, 123, 123, 123,   0, 183, 183, 123, 123, 123,
+    123, 123, 123, 123, 123,   0,   0, 123, 123,   0,   0, 123, 123, 123,   0,   0,
+    123,   0,   0,   0,   0,   0,   0, 123,   0,   0,   0,   0,   0, 123, 123, 123,
+    123, 123, 123, 123,   0,   0, 123, 123, 123, 123, 123, 123, 123,   0,   0,   0,
+    123, 123, 123, 123, 123,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124,   0,   0, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0,   0,
+    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   0, 124, 124, 124,
+    124, 124,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,   0,   0,
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125,   0,   0,   0,   0,   0,   0,
-     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
     126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,   0,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    126, 126, 126, 126, 126, 126,   0,   0, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0, 127, 127, 127,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,
     127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+    127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    127, 127, 127, 127, 127, 127, 127, 127, 127, 127,   0,   0,   0,   0,   0,   0,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
     128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+    128, 128, 128, 128, 128, 128, 128, 128, 128, 128,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0, 129, 129, 129,
+    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,
     129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
-    129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 129,
-    130, 130, 130, 130, 130, 130, 130,   0,   0, 130,   0,   0, 130, 130, 130, 130,
-    130, 130, 130, 130,   0, 130, 130,   0, 130, 130, 130, 130, 130, 130, 130, 130,
+    129, 129, 129, 129, 129, 129, 129,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
     130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130,   0, 130, 130,   0,   0, 130, 130, 130, 130, 130,
-    130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,   0,   0,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+    130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,   0,   0,   0,   0,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
     131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131, 131, 131, 131,   0,   0, 131, 131, 131, 131, 131, 131,
-    131, 131, 131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+    131, 131, 131,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 131,
+    132, 132, 132, 132, 132, 132, 132,   0,   0, 132,   0,   0, 132, 132, 132, 132,
+    132, 132, 132, 132,   0, 132, 132,   0, 132, 132, 132, 132, 132, 132, 132, 132,
     132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
-    132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132,   0, 132, 132,   0,   0, 132, 132, 132, 132, 132,
+    132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    132, 132, 132, 132, 132, 132, 132, 132, 132, 132,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
     133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
-    133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    133, 133, 133, 133, 133, 133, 133, 133,   0,   0, 133, 133, 133, 133, 133, 133,
+    133, 133, 133, 133, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
     134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
-    134, 134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,
-    135, 135, 135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135,
+    134, 134, 134, 134, 134, 134, 134, 134,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135,   0, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
-    135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,   0,   0,   0,
+    135, 135, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,  34,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
     136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-      0,   0, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136, 136,   0, 136, 136, 136, 136, 136, 136, 136,
-    136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137,   0, 137, 137,   0, 137, 137, 137, 137, 137,
+    136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+    136, 136, 136, 136, 136, 136, 136, 136, 136,   0,   0,   0,   0,   0,   0,   0,
+    137, 137, 137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137, 137,   0, 137, 137, 137, 137, 137, 137, 137, 137,
+    137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
-    137, 137, 137, 137, 137, 137, 137,   0,   0,   0, 137,   0, 137, 137,   0, 137,
-    137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,   0,   0,
-    137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138,   0, 138, 138,   0, 138, 138, 138, 138, 138, 138,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,   0,   0,   0,
     138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,
-    138, 138,   0, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,
-    138, 138, 138, 138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,   0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138, 138,   0, 138, 138, 138, 138, 138, 138, 138,
+    138, 138, 138, 138, 138, 138, 138,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139,   0, 139, 139,   0, 139, 139, 139, 139, 139,
     139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
-    139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-    177, 177,  21, 177,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
-     21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    139, 139, 139, 139, 139, 139, 139,   0,   0,   0, 139,   0, 139, 139,   0, 139,
+    139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,   0,   0,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140,   0, 140, 140,   0, 140, 140, 140, 140, 140, 140,
     140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
-    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
     140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,
-    140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    140, 140,   0, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
-    141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,   0,
     141, 141, 141, 141, 141, 141, 141, 141, 141,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     60,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+    183, 183,  21, 183,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+     21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+     21,  21,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
-    142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
-     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,
-    143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,   0,   0,   0, 143, 143,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,
+    142, 142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    142, 142, 142, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+    143, 143, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
-    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,
-    144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+    144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0,
+    144, 144, 144, 144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    145, 145, 145, 145, 145, 145, 145, 145, 145, 145,   0, 145, 145, 145, 145, 145,
-    145, 145,   0, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
-    145, 145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0, 145, 145, 145,
     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
+    145, 145, 145, 145, 145, 145, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,  62,
+     62,  62,  62,  62,  62,  62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,
     146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
-    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,
+    146, 146, 146, 146, 146, 146, 146, 146, 146, 146,   0,   0,   0,   0, 146, 146,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,   0, 147,
     147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
-    148, 149,   1,   1, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,
+    147, 147, 147, 147, 147, 147, 147, 147, 147, 147,   0,   0,   0,   0,   0,   0,
     148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
-    148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,
+    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,
+    148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0, 149, 149, 149, 149, 149,
+    149, 149,   0, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,   0, 149, 149, 149,
+    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
     150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
-    150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    148, 148, 148, 148, 148, 148, 148, 148, 148,   0,   0,   0,   0,   0,   0,   0,
+    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,   0,   0,   0,   0,   0,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0, 151,
+    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+    152, 153,  56,  56, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,   0,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+    154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     58,  58,  58,  58,   0,  58,  58,  58,  58,  58,  58,  58,   0,  58,  58,   0,
      58,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
      57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,
-     57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,  57,   0,
+     58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      57,  57,  57,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,  58,  58,  58,  58,   0,   0,   0,   0,   0,   0,   0,   0,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0,   0,   0,   0,   0,   0,
-    151, 151, 151, 151, 151, 151, 151, 151, 151, 151,   0,   0, 151, 151, 151, 151,
-    214, 214, 214, 214,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,
+    155, 155, 155, 155, 155, 155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155,
+    224, 224, 224, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+      1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22465,16 +22893,14 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   4,   4,   4,   4,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
-    199, 199,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
+    206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
+    206, 206,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -22493,34 +22919,42 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 152, 152, 152, 152, 152,
-      0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 156, 156, 156, 156, 156,
+      0, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
+      2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
      54,  54,  54,  54,  54,  54,  54,   0,  54,  54,  54,  54,  54,  54,  54,  54,
      54,  54,  54,  54,  54,  54,  54,  54,  54,   0,   0,  54,  54,  54,  54,  54,
      54,  54,   0,  54,  54,   0,  54,  54,  54,  54,  54,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,
-    153, 153, 153, 153, 153, 153, 153, 153, 153, 153,   0,   0,   0,   0, 153, 153,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,
+    157, 157, 157, 157, 157, 157, 157, 157, 157, 157,   0,   0,   0,   0, 157, 157,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-    154, 154, 154, 154, 154, 154, 154, 154, 154, 154,   0,   0,   0,   0,   0, 154,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155,   0,   0, 155, 155, 155, 155, 155, 155, 155, 155, 155,
-    155, 155, 155, 155, 155, 155, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0,
-    156, 156, 156, 156, 156, 156, 156, 156, 156, 156,   0,   0,   0,   0, 156, 156,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
+    158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+    159, 159, 159, 159, 159, 159, 159, 159, 159, 159,   0,   0,   0,   0,   0, 159,
+     32,  32,  32,  32,  32,  32,  32,   0,  32,  32,  32,  32,   0,  32,  32,   0,
+     32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,   0,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160,   0,   0, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+    160, 160, 160, 160, 160, 160, 160,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0,
+    161, 161, 161, 161, 161, 161, 161, 161, 161, 161,   0,   0,   0,   0, 161, 161,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -22556,43 +22990,41 @@ static RE_UINT8 script_extensions_table_3[] = {
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-    199, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    206, 206,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
       1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,
-      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   0,   0,   0,   1,   1,   1,   1,   1,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-      1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
+      1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
-     56,  56,  56,  56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,   0,   0,
      56,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,
      56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -22605,31 +23037,32 @@ static RE_UINT8 script_extensions_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 static RE_UINT16 script_extensions_table_4[] = {
-      0,   2,   4,   7,  10,  13,  19,  23,  32,  35,  39,  42,  56,  69,  90, 112,
-    117, 121, 124, 127, 130, 133, 137, 140, 145, 148, 153, 155, 158, 161, 164, 171,
-    174, 183, 187, 189, 191, 194, 197, 201, 208, 214, 216, 219, 222, 226, 229, 244,
-    258, 270, 273, 277, 280, 283, 286, 290, 293
+      0,   2,   4,   7,  10,  13,  20,  24,  32,  42,  45,  49,  52,  66,  79, 100,
+    122, 127, 131, 134, 137, 140, 143, 147, 150, 155, 158, 163, 165, 168, 171, 174,
+    181, 184, 193, 197, 199, 201, 204, 206, 209, 213, 220, 226, 228, 231, 234, 238,
+    241, 256, 270, 282, 285, 289, 292, 295, 298, 302, 305, 309, 312, 315
 };
 static RE_UINT8 script_extensions_table_5[] = {
-      5,   0,   2,   0,   7,  77,   0,   7,  54,   0,   7,   2,   0,  10, 106,  11,
-     12, 107,   0,  10,  11,  12,   0, 156,  10,  15,  99, 103, 106, 109,  11,   0,
-     10,  11,   0,  10,  12, 107,   0,  10, 106,   0,  17,  16, 121,  19,  18,  23,
-      2,  24,  20, 117,  21,  22, 123,   0,  17,  16, 121,  19,  18,  23,   2,  24,
-     20,  21,  22, 123,   0,  17,  16, 128, 138, 137, 121,  19,  18,  23, 116,  24,
-    131,  20, 120,  25,  63, 126,  21,  22, 123,   0,  17,  16, 128, 138, 137, 121,
-     19,  18,  23,  43, 116,  24, 131,  20, 120,  25,  63, 126,  21,  22, 123,   0,
-     16, 128, 113, 116,   0,  17, 115,  63,   0,  18, 119,   0,  19, 118,   0, 121,
-     21,   0,  23, 131,   0, 115,  29,  44,   0,  30,   2,   0,  39,  38,  40,  37,
-      0,  42,  64,   0,  17,  16, 121,  23,   0,  16,   0,  16, 121,   0,  17,  16,
-      0,  16, 117,   0,  16,  23,  24,  20,  21,  22,   0,  16, 131,   0,  17,  16,
-    121,  23, 131,  20,  22, 123,   0,  16, 121,  23,   0,  17,   0, 131,   0,   7,
-     11,   0,   2,  42,   0,  16, 121,   2,   0,   3,  31,  56,  57,  58,  59,   0,
-      3,  31,  56,  57,  58,   0,  56,   0,   3,  56,   0,  57,  58,   0,  56,  57,
-     58,   0,  56,   2,   0,  16, 128,  19,  18, 118,  23, 113, 116,  24, 125, 131,
-    120, 126, 123,   0,  16, 128,  19,  18, 118,  23, 113, 116, 125, 131, 120, 126,
-    123,   0,  16, 128,  19,  18, 118, 113, 116, 125, 120, 126, 123,   0,  16,  21,
-      0,  66,   2,  29,   0,  46,  68,   0,  10,  12,   0,  87,  72,   0,  87,  86,
-     72,   0,  10,   6,   0, 151,   0
+      5,   0,   2,   0,   7,  77,   0,   7,  54,   0,   7,   2,   0,  10,  13, 107,
+     11,  12, 108,   0,  10,  11,  12,   0, 161,  10,  13, 107,  11,  12, 108,   0,
+    161,  10,  15, 100, 111, 104, 107, 110,  11,   0,  10,  11,   0,  10,  12, 108,
+      0,  10, 107,   0,  17,  16, 123,  19,  18,  23,   2,  24,  20, 119,  21,  22,
+    125,   0,  17,  16, 123,  19,  18,  23,   2,  24,  20,  21,  22, 125,   0,  17,
+     16, 130, 140, 139, 123,  19,  18,  23, 118,  24, 133,  20, 122,  25,  63, 128,
+     21,  22, 125,   0,  17,  16, 130, 140, 139, 123,  19,  18,  23,  43, 118,  24,
+    133,  20, 122,  25,  63, 128,  21,  22, 125,   0,  16, 130, 115, 118,   0,  17,
+    117,  63,   0,  18, 121,   0,  19, 120,   0, 123,  21,   0,  23, 133,   0, 117,
+     29,  44,   0,  30,   2,   0,  39,  38,  40,  37,   0,  42,  64,   0,  17,  16,
+    123,  23,   0,  16,   0,  16, 123,   0,  17,  16,   0,  16, 119,   0,  16,  23,
+     24,  20,  21,  22,   0,  16, 133,   0,  17,  16, 123,  23, 133,  20,  22, 125,
+      0,  16, 123,  23,   0,  17,   0, 133,   0,   7,  11,   0,  11,   0,   2,  42,
+      0,  16, 123,   2,   0,   3,  31,  56,  57,  58,  59,   0,   3,  31,  56,  57,
+     58,   0,  56,   0,   3,  56,   0,  57,  58,   0,  56,  57,  58,   0,  56,   2,
+      0,  16, 130,  19,  18, 120,  23, 115, 118,  24, 127, 133, 122, 128, 125,   0,
+     16, 130,  19,  18, 120,  23, 115, 118, 127, 133, 122, 128, 125,   0,  16, 130,
+     19,  18, 120, 115, 118, 127, 122, 128, 125,   0,  16,  21,   0,  66,   2,  29,
+      0,  46,  68,   0,  10,  13,   0,  10,  12,   0, 143,  88,  72,   0,  88,  72,
+      0,  88,  87,  72,   0,  10,   6,   0, 100, 111,   0, 155,   0
 };
 
 int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
@@ -22648,13 +23081,13 @@ int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
     v = script_extensions_table_2[(v << 5) | field_1];
     v = script_extensions_table_3[(v << 5) | field_0];
 
-    if (v < 158) {
+    if (v < 163) {
         scripts[0] = v;
 
         return 1;
     }
 
-    offset = script_extensions_table_4[v - 158];
+    offset = script_extensions_table_4[v - 163];
     count = 0;
 
     do {
@@ -22669,72 +23102,72 @@ int re_get_script_extensions(RE_UINT32 codepoint, RE_UINT8* scripts) {
 static RE_UINT8 re_sentence_break_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21,
-    22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 19, 19, 13, 32, 19, 19,
-    19, 33, 19, 19, 19, 19, 19, 19, 19, 19, 34, 35, 13, 13, 13, 13,
-    13, 36, 13, 37, 19, 19, 19, 19, 19, 19, 19, 19, 38, 19, 19, 39,
-    19, 19, 19, 19, 40, 41, 42, 19, 43, 19, 44, 45, 46, 47, 48, 19,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 49, 13, 13, 13, 50, 51, 13,
-    13, 13, 13, 52, 13, 13, 13, 13, 13, 13, 53, 19, 19, 19, 54, 19,
-    13, 13, 13, 13, 55, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    56, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
-    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20,
+    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 18, 31, 13, 32, 18, 18,
+    18, 33, 18, 18, 18, 18, 18, 18, 18, 18, 34, 35, 13, 13, 13, 13,
+    13, 36, 13, 37, 18, 18, 18, 18, 18, 18, 18, 38, 39, 18, 18, 40,
+    18, 18, 18, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 18,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 53, 13, 13, 13, 54, 55, 13,
+    13, 13, 13, 56, 13, 13, 13, 13, 13, 13, 57, 18, 18, 18, 58, 18,
+    13, 13, 13, 13, 59, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    60, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18
 };
 
 static RE_UINT16 re_sentence_break_table_2[] = {
@@ -22742,116 +23175,124 @@ static RE_UINT16 re_sentence_break_table_2[] = {
       8,  16,  17,  18,  19,  20,  21,  22,  23,  23,  23,  24,  25,  26,  27,  28,
      29,  30,  18,   8,  31,   8,  32,   8,   8,  33,  34,  18,  35,  36,  37,  38,
      39,  40,  41,  42,  40,  40,  43,  44,  45,  46,  47,  40,  40,  48,  49,  50,
-     51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,  70,  71,  72,  73,  74,  75,  72,  76,  77,  78,  79,  80,  81,
-     82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,  97,
-     98,  99, 100,  55, 101, 102, 103,  55, 104, 105, 106, 107, 108, 109, 110,  55,
+     51,  52,  53,  54,  55,  40,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,  69,  70,  71,  72,  73,  74,  71,  75,  76,  77,  78,  79,  80,
+     81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96,
+     97,  98,  99, 100, 101, 102, 103, 100, 104, 105, 106, 107, 108, 109, 110, 100,
      40, 111, 112, 113, 114,  29, 115, 116,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40, 117,  40, 118, 119, 120,  40, 121,  40, 122, 123, 124,  29,  29, 125,
-     98,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     97,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40, 126, 127,  40,  40, 128, 129, 130, 131, 132,  40, 133, 134, 135,
-    136,  40,  40, 137, 138, 139,  40, 140, 141, 142, 143, 144,  40, 145, 146,  55,
-    147,  40, 148, 149, 150, 151, 152,  55, 153, 133, 154, 155, 156, 157,  40, 158,
-     40, 159, 160, 161, 162, 163, 164, 165,  18,  18,  18,  18,  18,  18,  23, 166,
-      8,   8,   8,   8, 167,   8,   8,   8, 168, 169, 170, 171, 169, 172, 173, 174,
-    175, 176, 177, 178, 179,  55, 180, 181, 182, 183, 184,  30, 185,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55, 186, 187,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55, 188,  30, 189,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 190, 191,  55,  55, 192, 193,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 194,  55, 195, 196,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     29, 197, 198, 199,   8,   8,   8, 200,  18, 201,  40, 202, 203, 204, 204,  23,
-    205, 206, 207,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    208, 209,  98,  40, 210,  98,  40, 116, 211, 212,  40,  40, 213,  40,  55, 214,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 215,
-     40,  40,  40,  40, 216,  55, 214, 217,  40,  40,  40,  40,  40,  40,  40,  40,
-    218, 219,   8, 220, 221,  40,  40, 222, 223, 224,   8, 225, 226, 227, 228, 229,
-    230, 231,  40, 232, 233, 133, 234, 235,  49, 236, 237, 215,  59, 238, 239, 240,
-     40, 241, 242, 243,  40, 244, 245, 246, 247, 248, 249, 250,  18,  18,  40, 251,
+    136,  40,  40, 137, 138, 139,  40, 140, 141, 142, 143, 144,  40, 145, 146, 100,
+    147,  40, 148, 149, 150, 151, 152, 100, 153, 133, 154, 155, 156, 157,  40, 158,
+     40, 159, 160, 161, 162, 163, 164, 165,  18,  18,  18,  18,  18,  18,  23,  23,
+      8,   8,   8,   8, 166,   8,   8,   8, 167, 168, 169, 170, 168, 171, 172, 173,
+    174, 175, 176, 177, 178, 100, 179, 180, 181, 182, 183,  30, 184, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 185, 186, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 187,  30, 188, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 189, 190, 100, 100, 191, 192,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 193, 100, 194, 195,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     29,  30,  18, 196,   8,   8,   8, 197,  18, 198,  40, 199, 200, 201, 201,  23,
+    202, 203, 204, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    205, 206,  97,  40, 207,  97,  40, 116, 208, 209,  40,  40, 210,  40, 100, 211,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 252, 253, 254,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40, 255,  40,  40, 256,  55, 257, 258, 259,  40,  40, 260, 261,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 262, 214,  40, 263,  40, 264, 265,
-    266, 267, 268, 269,  40,  40,  40, 270, 271,   2, 272, 273, 274, 141, 275, 276,
-    277, 278, 279,  55,  40,  40,  40, 280,  55,  55,  40, 281,  55,  55,  55, 282,
-     55,  55,  55,  55, 215,  40, 283, 152,  40, 284, 285, 286, 287,  40, 288,  55,
-     29, 289, 290,  40, 287, 291, 292, 293,  40, 294,  40, 295,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 203, 140, 264,  55,  55,  55,  55,
-    296, 297, 140, 203, 141,  55,  55, 298, 140, 256,  55,  55,  40, 299,  55,  55,
-    300, 301, 302, 215, 215,  55, 106, 303,  40, 140, 140, 304, 260,  55,  55,  55,
-     40,  40, 305,  55,  29, 306,  18, 307,  40, 308,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  40, 309,  55,  55, 215, 310, 311,  55,  55, 214, 312, 203,
-    156, 313, 314, 315, 156, 316, 317, 318, 156, 319, 320, 321, 156, 238, 322,  55,
-    323, 324,  55,  55, 325, 326, 327, 328, 329, 330, 331, 332,  55,  55,  55,  55,
-     40, 333, 334, 335,  40,  46, 336,  55,  55,  55,  55,  55,  40, 337, 338,  55,
-     40,  46, 339,  55,  40, 340, 135,  55, 122, 341,  55,  55,  55,  55,  55,  55,
-     40, 342,  55,  55,  55,  29,  18, 343, 344, 345, 346,  55,  55, 347, 348, 349,
-    350, 351, 352,  40, 353,  55,  40, 137,  55,  55,  55,  55,  55,  55,  55,  55,
-    354, 355, 356, 357, 358, 359,  55,  55, 360, 361, 362, 363, 364, 135,  55,  55,
-     55,  55,  55,  55,  55,  55,  55, 365,  55,  55,  55,  55,  55, 366,  55,  55,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 256,  55,  55,  55,
-     40,  40,  40, 213,  40,  40,  40,  40,  40,  40, 295,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40, 367,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40, 368,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+     40,  40,  40,  40, 212, 100, 211, 213,  40,  40,  40,  40,  40,  40,  40,  40,
+    214, 215,   8, 216, 217,  40,  40, 218, 219, 220,   8, 221, 222, 223, 224, 225,
+    226, 227,  40, 228, 229, 133, 230, 231,  49, 232, 233, 234,  58, 235, 236, 237,
+     40, 238, 239, 240,  40, 241, 242, 243, 244, 245, 246, 247,  18,  18,  40, 248,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40, 137, 141, 369,  55,  55, 214, 370,  40, 371, 372, 373, 124,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  29,  18, 374,  55,  55,  55,  40,  40, 375,  23, 376,  55,  55, 377,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 249, 250, 251,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40, 252,  40,  40, 253, 100, 254, 255, 256,  40,  40, 257, 258,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 259, 211,  40, 260,  40, 261, 262,
+    263, 264, 265, 266,  40,  40,  40, 267, 268,   2, 269, 270, 271, 141, 272, 273,
+    274, 275, 276, 100,  40,  40,  40, 277, 100, 100,  40, 278, 100, 100, 100, 279,
+    100, 100, 100, 100, 234,  40, 280, 281,  40, 282,  54, 283, 284,  40, 285, 100,
+     29, 286, 287,  40, 284, 288, 289, 290,  40, 291,  40, 292, 293, 294, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 200, 140, 261, 295, 296, 100, 100,
+    297, 298, 140, 200, 141, 100, 100, 299, 140, 253, 100, 100,  40, 300, 100, 100,
+    301, 302, 303, 234, 234, 100, 106, 304,  40, 140, 140, 305, 257, 100, 100, 100,
+     40,  40, 306, 100,  29, 307,  18, 308,  40, 309, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100,  40, 310, 100, 100, 234, 311, 312, 211, 313, 211, 314, 200,
+    156, 315, 316, 317, 156, 318, 319, 320, 156, 321, 322, 323, 156, 235, 324, 100,
+    325, 326, 100, 100, 327, 328, 329, 330, 331, 332, 333, 334, 100, 100, 100, 100,
+     40, 335, 336, 337,  40,  46, 338, 100, 100, 100, 100, 100,  40, 339, 340, 100,
+     40,  46, 341, 100,  40, 342, 135, 100, 122, 343, 344, 100, 100, 100, 100, 100,
+     40, 345, 100, 100, 100,  29,  18, 346, 347, 348, 349, 100, 100, 350, 351, 352,
+    353, 354, 355,  40, 356, 211,  40, 137, 100, 100, 100, 100, 100, 100, 100, 100,
+    357, 358, 359, 360, 361, 362, 100, 100, 363, 364, 365, 366, 367, 135, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 368, 100, 100, 100, 100, 100, 369, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 378,
-     40,  40,  40,  40,  40,  40, 140,  55, 305,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40,  40,  40, 141,  55, 379, 380,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40, 254,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40, 381, 382, 383,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 384, 385, 386,  55,  55,
-     55,  55, 387,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 388, 389, 401,
-    391, 402, 403, 404, 395, 405, 406, 407, 408, 409, 410, 197, 411, 412, 413, 414,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     23, 415,  23, 416, 417, 418,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    419, 420,  55,  55,  55,  55,  55,  55,  40, 421, 422,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  40, 423,  55,  55,  55,  55,  55,  55,  55,  55,
-     40,  40,  40,  40,  40,  40, 424,  55,  29, 425, 426,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-    427, 428, 429, 430, 431, 432,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55, 433, 434, 434, 435,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55, 436,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55, 437,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 253, 100, 100, 100,
+     40,  40,  40, 210,  40,  40,  40,  40,  40,  40, 370, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 211,  40,  40, 280,
+     40, 371, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40, 344, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40, 137, 141, 372,  40, 141, 373, 374,  40, 375, 376, 377, 124, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100,  29,  18, 378, 100, 100, 100,  40,  40, 379,  23, 380, 100, 100, 381,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 382,
+     40,  40,  40,  40,  40,  40, 140, 100, 306, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 383,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 384, 385, 386,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40, 251, 100, 100, 100, 100, 100, 100, 100, 100,
+     40,  40,  40, 387, 388, 389, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100,  23, 390, 391, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 392, 393, 394, 100, 100,
+    100, 100, 395, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 396, 397, 409,
+    399, 410, 411, 412, 403, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+     23, 424,  23, 425, 426, 427, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 428, 100, 100, 100, 100, 100, 100, 100,
+    429, 430, 100, 100, 100, 100, 100, 100,  40, 431, 432, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 211, 433,  40, 434, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 435,
+     40,  40,  40,  40,  40,  40, 436, 100,  29, 437, 438, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    439, 440, 441, 442, 443, 444, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 445, 446, 446, 447, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 448, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 449,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40, 287,  55,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40, 100,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40, 281,  40,  40,  40,  40,  40,  40,
-    287,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40,  40,  40,  40,  40, 137,  40,  40,  40,  40,  40,  40,
+    284,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40, 438,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     40,  40,  40,  40,  40, 450,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 439,
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 451,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-    287,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,
+    284, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  54,  55,  55,  55,  55,  55,
-    440,  23,  23,  23,  55,  55,  55,  55,  23,  23,  23,  23,  23,  23,  23, 441,
-     55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55,  55
+     40,  40,  40,  40,  40,  40,  40,  40,  40,  40, 452, 100, 100, 100, 100, 100,
+    453,  23,  23,  23, 100, 100, 100, 100,  23,  23,  23,  23,  23,  23,  23, 454,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
 };
 
 static RE_UINT8 re_sentence_break_table_3[] = {
@@ -22934,7 +23375,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0, 13,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     12, 12, 12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  6,  6,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 12,  0,  4,  4,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 12,  4,  4,  4,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,
@@ -22964,13 +23405,11 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,  0,
+    12, 12,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23022,9 +23461,9 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
     13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 13, 14, 14,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0, 14, 13, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0, 13, 13, 13,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14, 14,  0, 13, 13, 13,  0,  0, 13,  0,  0,
     13, 13, 14, 14,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 14, 14, 14,  0, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
@@ -23032,7 +23471,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0, 13, 13, 13, 13, 13,  0,  0, 14, 13, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0, 13,  0,
+     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0, 13, 13,  0,
     13, 13, 14, 14,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
      0, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
@@ -23057,6 +23496,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 14, 13, 13, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 13, 13,  0, 13,  0, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0, 13,  0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23113,8 +23554,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  5,  5,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,
-    13, 13, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23127,7 +23568,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14,  0,  0,  0, 13,  0,  0,  0,  0, 13, 14,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  6,  4,  0,  0,  0,  0,  6,  4,  0, 14, 14, 14, 12,  0,
+     0,  0,  6,  4,  0,  0,  0,  0,  6,  4,  0, 14, 14, 14, 12, 14,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
@@ -23159,14 +23600,14 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 13,  4,  4,  4,  4,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  4,  4,  0,  0,  4,  4,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
-    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,
     14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13,
@@ -23187,8 +23628,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 14, 13, 13,
     13, 13, 13, 13, 14, 13, 13, 14, 14, 14, 13,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
      9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
      9, 10,  9, 10,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10,  9, 10,
     10, 10, 10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -23249,10 +23688,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  5,  5,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  5,  0,  0,
-     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
      9, 10,  9,  9,  9, 10, 10,  9, 10,  9, 10,  9, 10,  9,  9,  9,
      9, 10,  9, 10, 10,  9, 10, 10, 10, 10, 10, 10, 10, 10,  9,  9,
      9, 10,  9, 10, 10,  0,  0,  0,  0,  0,  0,  9, 10,  9, 10, 14,
@@ -23270,7 +23705,7 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,  0,  4, 13,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,
      0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  4,  4,  5,  5,  5,  5,  5,  5,  5,  5,  0,  0,  0,
      1,  6,  4,  0,  0, 13, 13, 13,  5,  5,  5,  5,  5,  5,  5,  5,
      5,  5,  0,  0,  5,  5,  5,  5,  5,  5,  5,  5,  0,  5,  5,  5,
      0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
@@ -23285,8 +23720,6 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23311,10 +23744,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      9, 10,  9, 10, 10, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
      9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9,  9,  9,  9,  9, 10,
      9,  9,  9,  9,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,  9, 10,
-     0,  0,  9, 10,  9,  9,  9,  9, 10,  9, 10,  0,  0,  0,  0,  0,
+     9, 10,  9, 10,  9,  9,  9,  9, 10,  9, 10,  0,  0,  0,  0,  0,
+     9, 10,  0, 10,  0, 10,  9, 10,  9, 10,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  9, 10, 13, 10, 10, 10, 13, 13, 13, 13, 13,
+     0,  0, 13, 13, 13,  9, 10, 13, 10, 10, 10, 13, 13, 13, 13, 13,
     13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 13, 14, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 14, 14, 14, 14, 14,  0,  0,  0,  0, 14,  0,  0,  0,
@@ -23332,6 +23765,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  0, 13,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23423,10 +23858,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23446,7 +23881,15 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  9,  9,  9,  9,
+     9,  9,  9,  0,  9,  9,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10,  0, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10,  0,  0,  0,
+    10, 13, 13, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    10,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13,  0,  0, 13,  0, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23479,6 +23922,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  4,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
+    13, 13, 14, 14, 14, 14,  4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23486,10 +23931,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
+    14, 13, 13, 14, 14, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 12,  4,  4,
-     4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,
+     4,  4, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23539,6 +23984,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 14, 13,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  4,  4,  4,  0,
+    13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
@@ -23589,12 +24036,14 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 14, 14, 14, 14,  4,  4,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     12, 12, 12, 12, 12, 12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  0,
-    13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  4,  4,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+     8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,
     14, 14, 14, 14, 14,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23614,6 +24063,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13,  0, 13, 13, 13, 13, 13, 13, 13,  0, 13, 13,  0,
+    13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
@@ -23623,6 +24076,10 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0, 14, 14,  4,
     12, 12, 12, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14,
     14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
@@ -23677,6 +24134,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      9,  9,  9,  9,  9,  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
     10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10,  0, 10, 10, 10, 10, 10, 10,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  0, 10, 10, 10, 10, 10, 10,
@@ -23693,6 +24152,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
      0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 13, 10, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  0,
     14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 14, 14, 14, 14, 14,
     14, 14,  0, 14, 14,  0, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
@@ -23701,8 +24162,12 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13,  0,  0,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0, 13,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13,  0, 13, 13, 13, 13,  0, 13, 13,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
     13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -23735,6 +24200,8 @@ static RE_UINT8 re_sentence_break_table_3[] = {
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
@@ -23844,57 +24311,57 @@ static RE_UINT8 re_sentence_terminal_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 11,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,
     13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 14,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0,
-     0, 16,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14,  0,  0,  0,  0, 15, 16,  0,  0,  0,  0,
+     0, 17,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 17, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 19, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    20,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 21, 22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    23,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,
-    22,  0,  0,  0,  0,  0,  0, 23,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 24,  0,  0, 22,  0,  0, 25,  0,  0,  0,  0, 26,  0,
-     0,  0, 27,  0,  0,  0,  0, 28,  0,  0,  0,  0,  0,  0,  0, 29,
+     0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,
+    25,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 27,  0,  0, 25,  0,  0, 28,  0,  0,  0,  0, 29,  0,
+     0,  0,  3,  0,  0,  0,  0, 30,  0,  0,  0,  0,  0,  0,  0, 31,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 30,  0,  0,  0,  0,  0,  1,  0,  0, 31,  0,  0,  0,  0,
+     0,  0, 32,  0,  0,  0,  0,  0,  1,  0,  0, 33,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,
-     0,  0, 33,  0,  0,  3, 34,  0,  0,  0, 35,  0,  0,  0, 36,  0,
-     0, 37,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 38,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 39,  0,
-     0,  0, 40,  0,  0,  0,  0,  0,  0, 41,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 42,  0,  0,  0,  0,  0,
-     0,  0, 43,  0, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 40,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 44,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 34,  0, 35,  0,  0,  0,
+     0,  0, 36,  0,  0, 18, 37,  0,  0,  0, 38,  0,  0,  0, 39,  0,
+     0, 40,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 41,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 42,  0,
+     0,  0, 43,  0,  0,  0,  0,  0,  0, 44,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 45,  0,  0,  0,  0,  0,
+     0,  0, 46,  0, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 43,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 22,  0,  0,  0, 45,  0, 44, 46,  0,  0,  0,  0,  0,
+     0,  0,  0, 25,  0,  0,  0, 48,  0, 47, 49,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 50,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 48,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_sentence_terminal_table_3[] = {
-      0,   0,   0,   0,   2,  64,   0, 128,   0,   2,   0,   0,   0,   0,   0, 192,
+      0,   0,   0,   0,   2,  64,   0, 128,   0,   2,   0,   0,   0,   0,   0, 224,
       0,   0,  16,   0,   7,   0,   0,   0,   0,   0,   0,   2,   0,   0, 128,  98,
      48,   0,   0,   0,   0,  12,   0,   0, 132,   1,   0,   0,   0,  64,   0,   0,
       0,   0,  96,   0,   8,   2,   0,   0,   0,  15,   0,   0,   0,   0,   0, 204,
-      0,   0,   0,  24,   0,   0,   0,  48, 128,   3,   0,   0,   0,  64,   0,  16,
-      4,   0,   0,   0,   0,   0,   0, 128,   0, 192,   0,   0,   0,   0, 136,   0,
-      0,   0, 192,   0,   0, 128,   0,   0,   0,   3,   0,   0,   0,   0,   0, 224,
-      0,   0,   3,   0,   0,   8,   0,   0,   0,   0, 196,   0,   2,   0,   0,   0,
-      0,   0, 224,   3, 128,   1,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,
-     96,  32,   0, 192,   0,   0,   0,  27,   0,  24,   0,   0,  12, 254, 255,   0,
-      6,   0,   0,   0,   0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,
-      0,   0, 128,   1,   0,   0,  32,   0,  16,   0,   0,   0,   0,   0,   0,   1,
-      0,   1,   0,   0
+      0,   0,   0,  96,   0,   0,   0,  24,   0,   0,   0, 192,   0,   0,   0,  48,
+    128,   3,   0,   0,   0,  64,   0,  16,   0,   0,  24,   0,   4,   0,   0,   0,
+      0,   0,   0, 128,   0, 192,   0,   0,   0,   0, 136,   0,   0,   0, 192,   0,
+      0, 128,   0,   0,   0,   3,   0,   0,   0,   0,   3,   0,   0,   8,   0,   0,
+      0,   0, 196,   0,   2,   0,   0,   0,   0,   0, 224,   3, 192,   3,   0,   0,
+    128,   1,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,  96,  32,   0, 192,
+      0,   0,   0,  27,   0,  24,   0,   0,  12, 254, 255,   0,   6,   0,   0,   0,
+      0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,   0,   0, 128,   1,
+      0,   0,  32,   0,  16,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0
 };
 
 RE_UINT32 re_get_sentence_terminal(RE_UINT32 codepoint) {
@@ -23925,7 +24392,7 @@ static RE_UINT8 re_soft_dotted_table_1[] = {
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-    2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    2, 2, 2, 2, 2, 6, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -24002,7 +24469,9 @@ static RE_UINT8 re_soft_dotted_table_2[] = {
      0,  0,  0, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 17, 18,  0, 19, 20,  0, 21,  0, 22, 23,  0, 24,  0, 17, 18,
-     0, 19, 20,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0, 19, 20,  0, 21,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_soft_dotted_table_3[] = {
@@ -24012,7 +24481,7 @@ static RE_UINT8 re_soft_dotted_table_3[] = {
       0,  32,   0,   0,   0,   8,   0,   0,   0,   0,   2,   0,   0,   3,   0,   0,
       0,   0,   0,  16,  12,   0,   0,   0,   0,   0, 192,   0,   0,  12,   0,   0,
       0,   0,   0, 192,   0,   0,  12,   0, 192,   0,   0,   0,   0,   0,   0,  12,
-      0, 192,   0,   0
+      0, 192,   0,   0,   0,   0,   0,   4
 };
 
 RE_UINT32 re_get_soft_dotted(RE_UINT32 codepoint) {
@@ -24120,67 +24589,67 @@ static RE_UINT8 re_terminal_punctuation_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0, 16,  0,  0,  0, 17,  0, 18,  0,  0,  0,  0, 19,  0,
     20,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 21,  0,  0,  0,  0, 22,  0,  0,  0,  0,  0,
-     0, 23,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 21,  0,  0,  0,  0, 22, 23,  0,  0,  0,  0,
+     0, 24,  0, 25,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 25, 26,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 26, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0, 27, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0, 28, 29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0,  0,  0,  0,  0,
-    30,  0,  0,  0,  0,  0,  0, 31,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 32,  0,  0, 33,  0,  0, 34,  0,  0,  0,  0, 26,  0,
-     0,  0, 35,  0,  0,  0, 36, 37,  0,  0,  0,  0,  0,  0,  0, 38,
+     0,  0,  0,  0,  0,  0,  0, 25,  0,  0,  0,  0,  0,  0,  0,  0,
+    31,  0,  0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 33,  0,  0, 34,  0,  0, 35,  0,  0,  0,  0, 27,  0,
+     0,  0, 36,  0,  0,  0, 37, 38,  0,  0,  0,  0,  0,  0,  0, 39,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 39,  0,  0,  0,  0,  0,  1,  0,  0, 40,  0,  0,  0,  0,
+     0,  0, 40,  0,  0,  0,  0,  0,  1,  0,  0, 41,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 36,  0, 41,  0,
-     0,  0, 42,  0,  0,  0,  0,  0, 36,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 32,  0,  0,  0,  0, 43,  0, 44,  0,  0, 45,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 37,  0, 42,  0,
+     0,  0, 43,  0,  0,  0,  0,  0, 37,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 33,  0,  0,  0,  0, 44,  0, 45,  0,  0, 46,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 46,  0,  0,  0,  0,  0,
-     0,  0, 47,  0,  0, 24, 48,  0,  0,  0, 49,  0,  0,  0, 50,  0,
-     0, 51,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 52,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 53,  0,
-     0,  0, 29,  0,  0,  0,  0,  0,  0, 54,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55,  0,  0,  0,  0,  0,
-     0,  0, 56,  0, 57, 29,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 49, 58,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 60,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 47,  0, 48,  0,  0,  0,
+     0,  0, 49,  0,  0, 25, 50,  0,  0,  0, 51,  0,  0,  0, 52,  0,
+     0, 53,  0,  0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 54,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55,  0,
+     0,  0, 30,  0,  0,  0,  0,  0,  0, 56,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 57,  0,  0,  0,  0,  0,
+     0,  0, 58,  0, 59, 30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0, 51, 60,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0, 62,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 33,  0,  0,  0, 61,  0, 62, 63,  0,  0,  0,  0,  0,
+     0,  0,  0, 34,  0,  0,  0, 63,  0, 64, 65,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 37,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+     0,  0,  0,  0, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_terminal_punctuation_table_3[] = {
       0,   0,   0,   0,   2,  80,   0, 140,   0,   0,   0,  64, 128,   0,   0,   0,
-      0,   2,   0,   0,   8,   0,   0,   0,   0,  16,   0, 200,   0,   0,  16,   0,
+      0,   2,   0,   0,   8,   0,   0,   0,   0,  16,   0, 232,   0,   0,  16,   0,
     255,  23,   0,   0,   0,   0,   0,   3,   0,   0, 255, 127,  48,   0,   0,   0,
       0,   0,   0,  12,   0, 225,   7,   0,   0,  12,   0,   0, 254,   1,   0,   0,
       0,  64,   0,   0,   0,  56,   0,   0,   0,   0,  96,   0,   0,   0, 112,   4,
-     60,   3,   0,   0,   0,  15,   0,   0,   0,   0,   0, 236,   0,   0,   0, 248,
-      0,   0,   0, 192,   0,   0,   0,  48, 128,   3,   0,   0,   0,  64,   0,  16,
-      2, 208,   0,   0,   6,   0,   0,   0,   0, 224,   0,   0,   0,   0, 248,   0,
-      0,   0, 192,   0,   0, 192,   0,   0,   0, 128,   0,   0,   0,   0,   0, 224,
-      0,   0,   0, 128,   0,   0,   3,   0,   0,   8,   0,   0,   0,   0, 247,   0,
-     18,   0,   0,   0,   0,   0,   1,   0,   0,   0, 128,   0,   0,   0,  63,   0,
-      0,   0,   0, 252,   0,   0,   0,  30,   0,   0, 224,   3, 128,  63,   0,   0,
-      3,   0,   0,   0,  14,   0,   0,   0,  96,  32,   0, 192,   0,   0,   0,  31,
-      0,  56,   0,  12,  60, 254, 255,   0,   0,   0,   0, 112,  80,   0,   0,   0,
-     12,   0,   0,   0,   0,   0,   0,  24,   0,   0,   2,   0,   0,   0, 128,   1,
-      0,   0,  31,   0,   0,   0,  32,   0,   0,   0, 128,   3,  16,   0,   0,   0,
-    128,   7,   0,   0
+     60,   3,   0,   0,   0,  15,   0,   0,   0,   0,   0, 236,   0,   0,   0,  96,
+      0,   0,   0, 248,   0,   0,   0, 192,   0,   0,   0,  48, 128,   3,   0,   0,
+      0,  64,   0,  16,   2, 208,  24,   0,   6,   0,   0,   0,   0, 224,   0,   0,
+      0,   0, 248,   0,   0,   0, 192,   0,   0, 192,   0,   0,   0, 128,   0,   0,
+      0,   0,   0, 224,   0,   0,   0, 128,   0,   0,   3,   0,   0,   8,   0,   0,
+      0,   0, 247,   0,  18,   0,   0,   0,   0,   0,   1,   0,   0,   0, 128,   0,
+      0,   0,  63,   0,   0,   0,   0, 252,   0,   0,   0,  30,   0,   0, 224,   3,
+    192,   3,   0,   0, 128,  63,   0,   0,   3,   0,   0,   0,  14,   0,   0,   0,
+     96,  32,   0, 192,   0,   0,   0,  31,   0,  56,   0,  12,  60, 254, 255,   0,
+      0,   0,   0, 112,  80,   0,   0,   0,  12,   0,   0,   0,   0,   0,   0,  24,
+      0,   0,   2,   0,   0,   0, 128,   1,   0,   0,  31,   0,   0,   0,  32,   0,
+      0,   0, 128,   3,  16,   0,   0,   0, 128,   7,   0,   0
 };
 
 RE_UINT32 re_get_terminal_punctuation(RE_UINT32 codepoint) {
@@ -24204,74 +24673,74 @@ RE_UINT32 re_get_terminal_punctuation(RE_UINT32 codepoint) {
 
 /* Unified_Ideograph. */
 static RE_UINT8 re_unified_ideograph_table_1[] = {
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,
-     1,  1,  1,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  3,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  5,  1,  1,  1,  6,  7,  1,
-     1,  1,  1,  8,  1,  1,  1,  1,  1,  1,  9,  0,  0,  0,  0,  0,
-     1,  1,  1,  1, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+    1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 5, 6, 1,
+    1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0,
+    1, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
 static RE_UINT8 re_unified_ideograph_table_2[] = {
@@ -24281,28 +24750,26 @@ static RE_UINT8 re_unified_ideograph_table_2[] = {
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
     5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 0, 0, 0, 0, 0
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 0, 0, 0, 0, 0
 };
 
 static RE_UINT8 re_unified_ideograph_table_3[] = {
-      0,   0,   0,   0, 255, 255, 255, 255, 255, 255, 255,  31,   0, 192,  26, 128,
-    154,   3,   0,   0, 255, 255, 255,  63, 255, 255,  31,   0,   3,   0, 255, 255,
-      1,   0,   0,   0, 255,   7,   0,   0
+      0,   0,   0,   0, 255, 255, 255, 255,   0, 192,  26, 128, 154,   3,   0,   0,
+    255, 255, 255,   1, 255, 255, 255,  63,   3,   0, 255, 255,   1,   0,   0,   0,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_unified_ideograph(RE_UINT32 codepoint) {
@@ -24411,25 +24878,25 @@ static RE_UINT8 re_uppercase_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 40, 19,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    18, 41,  0, 42,  3,  3,  3, 43,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 19,  0, 41,  3,  3,  3, 42,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  3, 44, 45,  0,  0,  0,  0, 46,  3, 47, 48, 49, 50, 51,
+     0,  0,  3, 43, 44,  0,  0,  0,  0, 45,  3, 46, 47, 48, 49, 50,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
-    18, 52,  0,  0,  0, 26, 53,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    18, 51,  0,  0,  0, 26, 52,  0,  0,  0,  0, 53, 54,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 18, 54,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 18, 55,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0, 18,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    55, 56, 57, 58, 59, 60, 26, 61, 62, 63, 64, 65, 66, 55, 56, 57,
-    58, 67, 25, 26, 61, 58, 68, 69, 70, 71, 40, 41, 26, 72, 73,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 18, 74,  0,  0,  0,  0,  0,  0,
+    56, 57, 58, 59, 60, 61, 26, 62, 63, 64, 65, 66, 67, 56, 57, 58,
+    59, 68, 25, 26, 62, 59, 69, 70, 71, 72, 40, 73, 26, 74, 75,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 18, 76,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 75, 75, 61,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0, 26, 77, 77, 62,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
@@ -24444,15 +24911,16 @@ static RE_UINT8 re_uppercase_table_3[] = {
      85,  85,  21,  64,   0, 255,   0,  63,   0, 255,   0, 255,   0,  63,   0, 170,
       0, 255,   0,   0,   0,   0,   0,  15,   0,  15,   0,  15,   0,  31,   0,  15,
     132,  56,  39,  62,  80,  61,  15, 192,  32,   0,   0,   0,   8,   0,   0,   0,
-      0,   0, 192, 255, 255, 127,   0,   0, 157, 234,  37, 192,   5,  40,   4,   0,
-     85,  21,   0,   0,  85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,
-     85,  40,  69,  85,  85, 125,  95,  85, 244,   2,   0,   0,   0,   0,  32,   0,
-    255,   0,   0,   0, 255, 255,  15,   0, 255, 255,   7,   0, 255, 255, 255,   3,
-      0,   0, 240, 255, 255,  63,   0,   0,   0, 255, 255, 255,   3,   0,   0, 208,
-    100, 222,  63,   0, 255,   3,   0,   0, 176, 231, 223,  31,   0,   0,   0, 123,
-     95, 252,   1,   0,   0, 240, 255, 255,  63,   0,   0,   0,   3,   0,   0, 240,
-      1,   0,   0,   0, 252, 255, 255,   7,   0,   0,   0, 240, 255, 255,  31,   0,
-    255,   1,   0,   0,   0,   4,   0,   0,   3,   0,   0,   0, 255,   3, 255, 255
+      0,   0, 192, 255, 157, 234,  37, 192,   5,  40,   4,   0,  85,  21,   0,   0,
+     85,  85,  85,   5,  84,  85,  84,  85,  85,  85,   0, 106,  85,  40,  69,  85,
+     85, 125,  95,  85, 245,   2,  65,   1,   0,   0,  32,   0, 255,   0,   0,   0,
+    255, 255,  15,   0,   0,   0, 255, 247, 255, 247,  55,   0, 255, 255,   7,   0,
+    255, 255, 255,   3,   0,   0, 240, 255, 255,  63,   0,   0,   0, 255, 255, 255,
+      3,   0,   0, 208, 100, 222,  63,   0, 255,   3,   0,   0, 176, 231, 223,  31,
+      0,   0,   0, 123,  95, 252,   1,   0,   0, 240, 255, 255,  63,   0,   0,   0,
+      3,   0,   0, 240,   1,   0,   0,   0, 252, 255, 255,   7,   0,   0,   0, 240,
+    255, 255,  31,   0, 255, 127,   0,   0, 255,   1,   0,   0,   0,   4,   0,   0,
+      3,   0,   0,   0, 255,   3, 255, 255
 };
 
 RE_UINT32 re_get_uppercase(RE_UINT32 codepoint) {
@@ -24478,6 +24946,8 @@ RE_UINT32 re_get_uppercase(RE_UINT32 codepoint) {
 RE_UINT32 re_get_variation_selector(RE_UINT32 codepoint) {
     if (0x180B <= codepoint && codepoint <= 0x180D)
         return 1;
+    if (codepoint == 0x180F)
+        return 1;
     if (0xFE00 <= codepoint && codepoint <= 0xFE0F)
         return 1;
     if (0x0E0100 <= codepoint && codepoint <= 0x0E01EF)
@@ -24599,17 +25069,17 @@ RE_UINT32 re_get_white_space(RE_UINT32 codepoint) {
 static RE_UINT8 re_word_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 13, 13,
     13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 15, 13, 16, 17, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 18, 10, 10, 10, 10, 10, 10, 10, 10, 19, 20,
-    21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 10, 10, 13, 31, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 13, 13, 13, 13, 13,
+    13, 13, 13, 13, 13, 17, 10, 10, 10, 10, 10, 10, 10, 10, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 30, 13, 31, 10, 10,
     10, 32, 10, 10, 10, 10, 10, 10, 10, 10, 33, 34, 13, 13, 13, 13,
-    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 10, 37, 10, 10, 38,
-    10, 10, 10, 10, 39, 40, 41, 10, 42, 10, 43, 44, 45, 10, 46, 10,
+    13, 35, 13, 36, 10, 10, 10, 10, 10, 10, 10, 37, 38, 10, 10, 39,
+    10, 10, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 10, 50, 10,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-    13, 13, 13, 13, 13, 13, 13, 13, 13, 47, 13, 13, 13, 48, 49, 13,
-    13, 13, 13, 50, 13, 13, 13, 13, 13, 13, 51, 10, 10, 10, 52, 10,
-    13, 13, 13, 13, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    13, 13, 13, 13, 13, 13, 13, 13, 13, 51, 13, 13, 13, 52, 53, 13,
+    13, 13, 13, 54, 13, 13, 13, 13, 13, 13, 55, 10, 10, 10, 56, 10,
+    13, 13, 13, 13, 57, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24653,7 +25123,7 @@ static RE_UINT8 re_word_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    54, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    58, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24672,183 +25142,193 @@ static RE_UINT16 re_word_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  11,   6,   6,   6,   6,  13,  14,   6,  15,  16,  17,  18,
      19,   6,   6,  20,   6,   6,  21,  22,  23,   6,  24,   6,   6,  25,   6,  26,
-      6,  27,  28,  29,   0,  30,  31,  11,   6,   6,   6,  32,  33,  34,  35,  36,
-     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
-     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
-     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
-      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,   0,  89,   6,   6,  90,
-     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  91,   3,   6,   6,  92,  93,  94,  95,  96,   6,   6,  97,  98,
-     99,   6,   6, 100,   6, 101,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
-     28,   6, 103, 109, 108, 110, 111,   0,   6,   6, 112, 113,   6,   6,   6,  95,
-      6, 114, 115,  80, 116,  88, 117,  67,   6,   6,   6,   6,   6,   6,   6, 118,
-      6,   6,   6,   6,   6,   6,   6,   6,  90,   6, 119,  80,   6, 120, 121, 122,
-    123, 124, 125, 126, 127,   0,  23, 128, 129, 130, 131,   6, 132,   0,   0,   0,
+      6,  27,  28,  29,  30,   6,   6,  11,   6,   6,   6,  31,  32,  33,  34,  35,
+     36,  37,  38,  39,  40,  41,  42,  43,  44,  41,  45,  46,  47,  48,  49,  50,
+     51,  52,  53,  54,  55,  56,  57,  58,  51,   6,  59,  60,  61,  62,  63,  64,
+     65,  66,  67,   0,  68,  69,  70,   0,  71,  72,  73,  74,  75,  76,  77,   0,
+      6,   6,  78,   6,  79,   6,  80,  81,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  82,   6,  83,  84,  85,   6,  86,   6,  87,   0,  88,   6,   6,  89,
+     65,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  90,   3,   6,   6,  91,  92,  93,  94,  95,   6,   6,  96,  97,
+     98,   6,   6,  99,   6,  29,   6, 100, 101, 102, 103, 104,   6, 105, 106,   0,
+     28,   6, 101, 107, 106, 108, 109,   0,   6,   6, 110, 111,   6,   6,   6,  94,
+      6, 112, 113,  79, 114,  87, 115,  66,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  89,   6, 116,  79,   6, 117, 118, 119,
+    120, 121, 122, 123, 124,   0,  23, 125, 126, 127, 128,   6, 129,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 133,   6,  98,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 130,   6,  97,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 134, 103,   6,   6,   6,   6, 135,   6,  81,   6, 136, 137, 138, 138,   6,
-      0, 139,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  66,   6, 142,  66,   6,  82, 143,  13,   6,   6, 144,   6,   0,  23,
+      6,   6,   6,   6,   6,   6,   6, 131,   6,  80,   6, 132, 133, 134, 134,   6,
+      0, 135,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    136, 137,  65,   6, 138,  65,   6,  81, 139,  13,   6,   6, 109,   6,   0,  23,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  23,  79,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  25, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  94,   6,   6, 150, 151,   6, 152,  94,  76,   6,   6, 153, 101,
+      6, 133, 154, 155,   6,   6, 156, 157, 158, 159,  81,  78,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  77,
-      6,   6,   6,   6, 145,   0,  23,  80,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  25, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  95,   6,   6, 155, 156,   6, 157,  95,  77,   6,   6, 158, 103,
-      6, 137, 159, 160,   6,   6, 161, 162, 163, 164,  82,  79,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  28,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  28,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  25, 172,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  80,  23,   6, 173,   6, 174, 175,
-     89, 176, 177, 178,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  67,   0,   0,   6,  94,   0,   0,   0, 183,
-      0,   0,   0,   0,  77,   6, 128, 111,   6, 184, 101,  67,  80,   6, 185,   0,
-      6,   6,   6,   6,  80,  79, 186,  28,   6, 187,   6, 188,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 137, 102, 174,   0,   0,   0,   0,
-    189, 190, 102, 137, 103,   0,   0, 191, 102, 168,   0,   0,   6, 192,   0,   0,
-    193, 194,   0,  77,  77,   0,  74, 195,   6, 102, 102, 196,  25,   0,   0,   0,
-      6,   6, 132,   0,   6, 196,   6, 196,   6, 197,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 198,   0,   0,  77, 110, 128,   0,   0,  23, 199, 137,
-      6,   6, 195, 200,   6,  67,  23, 201,   6,  30, 202, 203,   6,   6, 204,   0,
-    205, 206,   0,   0, 207, 116,   6, 208,  33, 209, 210, 211,   0,   0,   0,   0,
-      6,   6, 212, 213,   6,   6, 214,   0,   0,   0,   0,   0,   6, 215, 216,   0,
-      6,   6, 217,   0,   6, 100,  98,   0,  88, 112,   0,   0,   0,   0,   0,   0,
-      6,  67,   0,   0,   0,   6,   6, 218, 219, 220, 221,   0,   0, 222, 223, 224,
-      6, 103, 110,   6, 225,   0,   6, 100,   0,   0,   0,   0,   0,   0,   0,   0,
-    226,   5, 227, 228, 173, 229,   0,   0, 230, 231, 197, 232, 233,  98,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 137,   0,   0,   0,   0,   0, 234,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  25, 167,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  79,  23,   6, 168,   6, 169, 170,
+     88, 171, 172, 173,   6,   6,   6,  76,   1,   2,   3, 103,   6, 101, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  66,   0,   0,   6,  93,   0,   0,   0, 178,
+      0,   0,   0,   0,  76,   6, 125, 179,   6, 180,  29,  66,  79,   6, 181,   0,
+      6,   6,   6,   6,  79,  78, 182,  28,   6, 183,   6, 184, 185, 186,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 133, 100, 169, 187, 188,   0,   0,
+    189, 190, 100, 133, 101,   0,   0, 191, 100, 163,   0,   0,   6, 192,   0,   0,
+    193, 194,   0,  76,  76,   0,  73, 195,   6, 100, 100, 196,  25,   0,   0,   0,
+      6,   6, 129,   0,   6, 196,   6, 196,   6, 197,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 198,   0,   0,  76, 108, 125,  23, 199,  23, 200, 133,
+      6,   6, 195, 201,   6,  66, 202, 203,   6, 204, 205, 206,   6,   6, 207,   0,
+    208, 209,   0,   0, 210, 114,   6, 211,  32, 212, 213, 214,   0,   0,   0,   0,
+      6,   6, 215, 216,   6,   6, 217,   0,   0,   0,   0,   0,   6, 218, 219,   0,
+      6,   6, 220,   0,   6,  99,  97,   0,  87, 221, 195,   0,   0,   0,   0,   0,
+      6,  66,   0,   0,   0,   6,   6, 222, 223, 224, 225,   0,   0, 226, 227, 228,
+      6, 101, 108,   6, 229,  23,   6,  99,   0,   0,   0,   0,   0,   0,   0,   0,
+    230,   5, 231, 148, 168, 232,   0,   0, 233, 234, 197, 235, 236,  97,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 133,   0,   0,   0,   0,   0, 237,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 188,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 109,   6,   6,   6,   6,   6,   6, 238,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  23,   6,   6, 125,
+      6, 109,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 195,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 100, 103,  98,   0,   0,  23, 106,   6, 137, 221, 235,  89,   0,   0,   0,
+      6,  99, 101,  78,   6, 101,  78, 104,   6, 133, 225, 239,  88,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 236,   6, 237,   0,   0, 238,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 240,   6, 241,   0,   0, 242,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
-      6,   6,   6,   6,   6,   6, 102,   0, 132,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 112,
+      6,   6,   6,   6,   6,   6, 100,   0, 129,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 103,   0, 239, 202,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 243,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 244, 245, 205,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  28,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 240, 241,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 246, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 195,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 248, 249, 250,   0,   0,
+      0,   0, 251,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 204,   6, 252, 253, 254,   6, 255, 256, 257,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 258, 259,  81, 204, 204, 260, 260, 230, 230, 261,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6, 262,   6, 263, 264, 265,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242, 243, 244,   0,   0,
-      0,   0, 245,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  30,   6, 246, 247, 248,   6, 249, 250, 251,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 252, 253,  82,  30,  30, 134, 134, 226, 226, 254,   6,
+      0,   0,   0,   0,   0,   0,   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,
+    266, 267,   0,   0,   0,   0,   0,   0,   6, 268, 269,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  23, 109,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 255,   6, 256, 257, 258,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    259, 260,   0,   0,   0,   0,   0,   0,   6, 261, 262,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 263,   0,   6,   6, 112,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 270,
+      6,   6,   6,   6,   6,   6, 271,   0,   6,   6, 221,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    248, 264, 265, 266, 267, 268,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  23,  79,  79,  98,   0,   0,   0,
+    254, 272, 273, 274, 275, 276,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  23,  78,  78,  97,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  80,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  94,   6,   6,   6,   6,   6,   6,
-     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,  99,   6,   6,   6,   6,   6,   6,
+     79,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 269,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 277,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 111,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 179,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     79,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  89,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 278,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  88,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
-
-static RE_UINT8 re_word_table_3[] = {
-      0,   0,   0,   0,   0,   0, 255,   3, 254, 255, 255, 135, 254, 255, 255,   7,
-      0,   4,  32,   4, 255, 255, 127, 255, 255, 255, 255, 255, 195, 255,   3,   0,
-     31,  80,   0,   0, 255, 255, 223, 188,  64, 215, 255, 255, 251, 255, 255, 255,
-    255, 255, 191, 255, 255, 255, 254, 255, 255, 255, 127,   2, 255,   1, 254, 255,
-    255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,   0,   0, 255,   7,
-    255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,   0,   0, 255, 255,
-    255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36, 255,  63,   0,   0,
-    255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255, 255,   0, 248, 255,
-    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
-    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
-    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
-    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
-    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
-    255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7, 207, 255,   0,   0,
-    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64, 207, 255,   6,   0,
-    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
-    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
-    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
-      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
-    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
-    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255, 231, 255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255,
-    255, 199, 255,   1, 255, 223,  31,   0, 255, 255,  31,   0, 255, 255,  15,   0,
-    255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,   0,  56, 255,   3,
-    255, 255, 255,   1, 255,   7, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
-    255,   3, 255,   3, 255, 255, 255, 159, 128,   0, 255, 255,   1,   0,   0,   0,
-    255,  15, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255,
-    255,   1, 255, 255,   0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170,
-    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,  48,   0,   0,
-      0,   0,   0, 128,   1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31,
-    255, 255,   1,   0, 132, 252,  47,  62,  80, 189, 255, 243, 224,  67,   0,   0,
-    255,   1,   0,   0,   0,   0, 192, 255, 255, 127, 255, 255,  31, 248,  15,   0,
+
+static RE_UINT8 re_word_table_3[] = {
+      0,   0,   0,   0,   0,   0, 255,   3, 254, 255, 255, 135, 254, 255, 255,   7,
+      0,   4,  32,   4, 255, 255, 127, 255, 255, 255, 255, 255, 195, 255,   3,   0,
+     31,  80,   0,   0, 255, 255, 223, 188,  64, 215, 255, 255, 251, 255, 255, 255,
+    255, 255, 191, 255, 255, 255, 254, 255, 255, 255, 127,   2, 255,   1, 254, 255,
+    255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,   0,   0, 255,   7,
+    255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,   0,   0, 255, 255,
+    255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36, 255,  63,   0,   0,
+    255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255, 207, 255, 254, 255,
+    239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176, 207, 255,   3,  80,
+    238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94, 192, 255,  63,   0,
+    238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0, 207, 255,   0, 254,
+    238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0, 236, 199,  61, 214,
+     24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0, 255, 223, 253, 255,
+    255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0, 239, 223, 253, 255,
+    255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0, 223, 125, 240, 128,
+    207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47, 127, 132,  95, 255,
+    192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7, 255, 127, 255,   3,
+    214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,   1,   0,   0,   3,
+    255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255, 223, 255, 255, 254,
+    255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255, 255, 255, 255,  63,
+    191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61, 255,  61, 255, 255,
+    255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255, 255, 255, 255, 231,
+    255, 255,   0,   0, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
+    255, 255,  63, 128, 255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0,
+    255, 255, 143,  48, 255,   3,   0,   0,   0, 184, 255,   3, 255, 255, 255,   1,
+    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
+    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   3, 255, 255, 255, 159,
+    128,   0, 255, 255, 255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0,
+    255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,
+     63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,
+      0,  48,   0,   0,   0,   0,   0, 128,   1,   0,  16,   0,   0,   0,   2, 128,
+      0,   0, 255,  31, 255, 255,   1,   0, 132, 252,  47,  62,  80, 189, 255, 243,
+    224,  67,   0,   0, 255,   1,   0,   0,   0,   0, 192, 255,  31, 248,  15,   0,
     255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,   0, 128,   0,   0,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 230, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 247, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 247, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    255, 255, 252, 255, 255,   0,   0,   0,   0,   0, 255,  15, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 223, 255, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,   1,   0,   0,   0,
       0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
-     15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
+     15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255,
+    255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0,
     255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135, 127,   0,   0,   0,
-    255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,  31,   0,   0,   0,
-    192, 255,   0, 128, 255,   1, 255,   3, 240,   0, 255, 255, 255, 255,  79,   0,
-     31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64, 127, 189, 255, 191,
-    255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0,
-    255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3, 255, 255,  63, 255,
-      1,   0,   0,  63,  17,   0, 255,   3, 255,   3,   0, 128, 127, 242, 111, 255,
+    255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,  63,   0,   0,   0,
+     31,   0,   0,   0, 192, 255,  63, 128,   4,   0, 255, 255, 255,   1, 255,   3,
+    255, 255, 223, 255, 240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23,
+    255, 255, 251, 255, 255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3,
+    255, 253, 237, 251, 159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,
+      3,   0,   0,   0, 191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,
+     17,   0, 255,   3, 255,  15, 255,   3, 255,   3,   0, 128, 127, 242, 111, 255,
     255, 255, 191, 249,  15,   0, 255,   3, 255, 252, 255, 255, 255, 255, 255, 252,
      27,   0,   0,   0, 255, 255, 255,  35, 255, 253, 255, 255,   1,   0, 255,   3,
-      0,   0, 252, 255, 255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180,
-    191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0, 248, 255, 255, 224,
-    255, 135, 255, 255, 255, 128, 255, 255,  27,   0,   3,   0,   0,   0,   7,   0,
-    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
-      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
-    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
-     63, 255, 255, 255, 253, 255, 255, 247, 247, 207, 255, 255, 255, 255, 127, 248,
-    255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249,
-    219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,  31,   0, 127,   0,
+    255, 254, 127,   0, 127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255,
+    255, 127, 251,   1,   0,   0,   1,   0,  15,   0,   0,   0, 248, 255, 255, 224,
+    255, 135, 255, 255, 255, 128, 255, 255,  27,   0,   3,   0,   0,   0, 239, 111,
+      7,   0,   0,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
+    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
+    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
+    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
+    255, 127, 255, 255, 247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,
+     16,   0,   0, 248, 254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0,
+    255,  31, 255,  63, 255,  67,   0,   0, 127, 111, 255, 127,  31,   0, 127,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
-    238, 251, 255,  15,   3,   0, 255, 255
+    238, 251, 255,  15,   3,   0, 255, 255, 255,   7,   0,   0
 };
 
 RE_UINT32 re_get_word(RE_UINT32 codepoint) {
@@ -24876,10 +25356,10 @@ static RE_UINT8 re_word_break_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 13, 14, 15, 13, 13, 13, 13, 13,
     13, 13, 13, 13, 13, 16, 10, 10, 10, 10, 10, 10, 10, 10, 17, 18,
-    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 10, 10, 13, 29, 10, 10,
-    10, 30, 10, 10, 10, 10, 10, 10, 10, 10, 31, 32, 10, 10, 10, 10,
-    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 33, 10, 10, 34,
-    10, 10, 10, 10, 35, 36, 37, 10, 38, 10, 39, 40, 41, 10, 42, 10,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 10, 29, 13, 30, 10, 10,
+    10, 31, 10, 10, 10, 10, 10, 10, 10, 10, 32, 33, 10, 10, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 34, 35, 10, 10, 36,
+    10, 10, 10, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 10, 47, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24928,7 +25408,7 @@ static RE_UINT8 re_word_break_table_1[] = {
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-    43, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+    48, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
@@ -24947,90 +25427,100 @@ static RE_UINT16 re_word_break_table_2[] = {
       7,   7,   7,   7,   7,   7,   8,   7,   9,   9,   9,  10,  11,  12,   7,  13,
       7,   7,   7,   7,  14,   7,   7,   7,   7,  15,  16,   7,  17,  18,  19,  20,
      21,   7,  22,  23,   7,   7,  24,  25,  26,  27,  28,   7,   7,  29,  30,  31,
-     32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
-     48,  49,  50,  51,  52,  53,  54,  55,  56,  53,  57,  58,  59,  60,  61,  62,
-     63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,
-     36,  79,  80,  36,  36,  81,  82,  36,  83,  84,  85,  86,  87,  88,  89,  36,
-     36,  90,  91,  92,  93,   7,  94,  95,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,  96,   7,  97,  98,  99,   7, 100,   7, 101,  36, 102,   7,   7, 103,
+     32,  33,  34,  35,  36,   7,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,
+     47,  48,  49,  50,  51,  52,  53,  54,  55,  52,  56,  57,  58,  59,  60,  61,
+     62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
+     78,  79,  80,  78,  78,  81,  82,  78,  83,  84,  85,  86,  87,  88,  89,  78,
+     78,  90,  91,  92,  93,   7,  94,  95,   7,   7,   7,   7,   7,   7,   7,   7,
+      7,   7,  96,   7,  97,  98,  99,   7, 100,   7, 101,  78, 102,   7,   7, 103,
     104,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7, 105, 106,   7,   7, 107, 108, 109, 110, 111,  36, 112, 113, 114,
-    115,   7,   7, 116, 117, 118,   7, 119, 120, 121,  62,  36,  36,  36, 122,  36,
-    123,  36, 124, 125, 126, 127, 128,  36, 129, 130, 131, 132, 133, 134,   7, 135,
-      7, 136, 137, 138, 139, 140, 141, 142,   7,   7,   7,   7,   7,   7,   9, 143,
-      7,   7,   7,   7,   7,   7,   7,   7, 103,   7, 144, 138,   7, 145, 146, 147,
-    148, 149, 150, 151, 152,  36, 127, 153, 154, 155, 156,   7, 157,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36, 158,   7, 159,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7, 160, 120,   7,   7,   7,   7, 161,   7,  94,   7, 162, 163, 164, 164,   9,
-     36, 165,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    166, 167,  36,  36, 168, 169, 169, 170, 171,  15,   7,   7, 172,   7,  36, 173,
-     36,  36,  36,  36,  36,  36, 173, 174, 169, 169, 175,  36,  36,  36,  36,  36,
+      7,   7,   7, 105, 106,   7,   7, 107, 108, 109, 110, 111,  78, 112, 113, 114,
+    115,   7,   7, 116, 117, 118,   7, 119, 120, 121,  61,  78,  78,  78, 122,  78,
+    123,  78, 124, 125, 126, 127, 128,  78, 129, 130, 131, 132, 133, 134,   7, 135,
+      7, 136, 137, 138, 139, 140, 141, 142,   7,   7,   7,   7,   7,   7,   9,   9,
+      7,   7,   7,   7,   7,   7,   7,   7, 103,   7, 143, 138,   7, 144, 145, 146,
+    147, 148, 149, 150, 151,  78, 127, 152, 153, 154, 155,   7, 156,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78, 157,   7, 158,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7,   7,   7,   7,   7,   7, 159,   7,  94,   7, 160, 161, 162, 162,   9,
+     78, 163,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+    164, 165,  78,  78, 166, 167, 167, 168, 169,  15,   7,   7, 170,   7,  78, 171,
+     78,  78,  78,  78,  78,  78, 171, 172, 167, 167, 173,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7, 176,  36, 177, 138,   7,   7,   7,   7,   7,   7,   7,   7,
-    178, 179,   7, 180, 181,   7,   7, 182, 183,   7,   7,   7,   7,   7, 184, 185,
-    186, 187,   7, 188, 189, 130, 190, 191,  30, 192, 193, 194,  40, 195, 196, 197,
-      7, 198, 199, 200,  36, 201, 202, 203, 204, 205,   7, 206,   7,   7,   7, 207,
+      7,   7,   7,   7, 174,  78, 175, 138,   7,   7,   7,   7,   7,   7,   7,   7,
+    176, 177,   7, 178, 179,   7,   7, 180, 181,   7,   7,   7,   7,   7, 182, 183,
+    184, 185,   7, 186, 187, 130, 188, 189,  30, 190, 191, 192,  39, 193, 194, 195,
+      7, 196, 197, 198,  78, 199, 200, 201, 202, 203,   7, 204,   7,   7,   7, 205,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 208, 209, 210,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36, 211, 212, 213,   7,   7, 214, 215,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 138, 177,   7, 216,   7, 217, 218,
-    219, 220, 221, 222,   7,   7,   7, 223, 224,   2,   3, 225, 226, 120, 227, 228,
-    229, 230, 231,  36,   7,   7,   7, 232,  36,  36,   7, 233,  36,  36,  36, 234,
-     36,  36,  36,  36, 194,   7, 235, 128,   7, 236, 237, 238, 138,   7, 239,  36,
-      7,   7,   7,   7, 138, 240, 241, 210,   7, 242,   7, 243,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7,   7,   7,   7, 163, 119, 217,  36,  36,  36,  36,
-    244, 245, 119, 163, 120,  36,  36, 246, 119, 247,  36,  36,   7,   8,  36,  36,
-    248, 249,  36, 194, 194,  36,  85, 250,   7, 119, 119, 251, 214,  36,  36,  36,
-      7,   7, 157,  36,   7, 251,   7, 251,   7, 252,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,   7, 253,  36,  36, 194, 254, 255,  36,  36, 177, 256, 163,
-    133, 257, 258, 259, 133, 260, 261, 262, 133, 263, 264, 265, 133, 195, 266,  36,
-    267, 268,  36,  36, 269, 139, 270, 271, 272, 273, 274, 275,  36,  36,  36,  36,
-      7, 276, 277, 278,   7,  27, 279,  36,  36,  36,  36,  36,   7, 280, 281,  36,
-      7,  27, 282,  36,   7, 283, 114,  36, 284, 285,  36,  36,  36,  36,  36,  36,
-      7, 286,  36,  36,  36,   7,   7, 287, 288, 289, 290,  36,  36, 291, 292, 293,
-    294, 295, 296,   7, 297,  36,   7, 116,  36,  36,  36,  36,  36,  36,  36,  36,
-    298, 299, 300, 301, 302, 303,  36,  36, 304, 305, 306, 307, 308, 114,  36,  36,
-     36,  36,  36,  36,  36,  36,  36, 309,  36,  36,  36,  36,  36, 310,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 206, 207, 208,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78, 209, 210, 211,   7,   7, 212, 213,   7,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 138, 175,   7, 214,   7, 215, 216,
+    217, 218, 219, 220,   7,   7,   7, 221, 222,   2,   3, 223, 224, 120, 225, 226,
+    227, 228, 229,  78,   7,   7,   7, 230,  78,  78,   7, 231,  78,  78,  78, 232,
+     78,  78,  78,  78, 192,   7, 233, 234,   7, 235,  35, 236, 138,   7, 237,  78,
+      7,   7,   7,   7, 138, 238, 239, 208,   7, 240,   7, 241, 242, 243,  78,  78,
+      7,   7,   7,   7,   7,   7,   7,   7,   7, 161, 119, 215, 244, 245,  78,  78,
+    246, 247, 119, 161, 120,  78,  78, 248, 119, 249,  78,  78,   7,   8,  78,  78,
+    250, 251,  78, 192, 192,  78,  85, 252,   7, 119, 119, 253, 212,  78,  78,  78,
+      7,   7, 156,  78,   7, 253,   7, 253,   7, 254,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,   7, 255,  78,  78, 192, 256, 257, 175, 258, 175, 259, 161,
+    133, 260, 261, 262, 133, 263, 264, 265, 133, 266, 267, 268, 133, 193, 269,  78,
+    270, 271,  78,  78, 272, 139, 273, 274, 275, 276, 277, 278,  78,  78,  78,  78,
+      7, 279, 280, 281,   7,  27, 282,  78,  78,  78,  78,  78,   7, 283, 284,  78,
+      7,  27, 285,  78,   7, 286, 114,  78, 287, 288,  78,  78,  78,  78,  78,  78,
+      7, 289,  78,  78,  78,   7,   7, 290, 291, 292, 293,  78,  78, 294, 295, 296,
+    297, 298, 299,   7, 300, 175,   7, 116,  78,  78,  78,  78,  78,  78,  78,  78,
+    301, 302, 303, 183, 304, 305,  78,  78, 306, 307, 308, 309, 310, 114,  78,  78,
+     78,  78,  78,  78,  78,  78,  78, 311,  78,  78,  78,  78,  78, 312,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 247,  36,  36,  36,
-      7,   7,   7, 172,   7,   7,   7,   7,   7,   7, 243,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7, 311,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7, 249,  78,  78,  78,
+      7,   7,   7, 170,   7,   7,   7,   7,   7,   7, 313,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 175,   7,   7, 233,
+      7, 314,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7,   7, 312,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+      7,   7, 315,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
       7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
-      7, 116, 120, 114,  36,  36, 177, 313,   7, 314, 315, 316, 102,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,   7,   7,  36,  36,  36,  36,   7,   7, 317,   9, 318,  36,  36, 319,
-    320,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 321,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7, 322, 323, 324,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 325, 326, 327,  36,  36,
-     36,  36, 328,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,  37,   7, 329, 330, 331,   7, 332, 333, 334,   7,   7,   7,   7,   7,
-      7,   7,   7,   7,   7, 335, 336,  95,  37,  37, 160, 160, 298, 298, 337, 338,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-      9, 339,   9, 340, 341, 342,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    343, 344,  36,  36,  36,  36,  36,  36,   7, 345, 346,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,   7, 347,  36,  36,  36,  36,  36,  36,  36,  36,
-      7,   7,   7,   7,   7,   7, 348,  36,   7,   7, 349,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-    331, 350, 351, 352, 353, 354,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36, 177, 206, 206, 159,  36,  36, 355,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 356,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36, 122,
-    357,   9,   9,   9,  36,  36,  36,  36,   9,   9,   9,   9,   9,   9,   9, 358,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36
+      7, 116, 120, 238,   7, 120, 238, 316,   7, 317, 318, 319, 102,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,   7,   7,  78,  78,  78,  78,   7,   7, 320,   9, 321,  78,  78, 322,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 323,
+    324,  78,  78,  78,  78,  78,  78,  78,  78, 325,  78, 326,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7,   7, 327, 328, 329,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,   9, 330, 261,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 331, 332, 333,  78,  78,
+     78,  78, 334,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      7,   7, 335,   7, 336, 337, 338,   7, 339, 340, 341,   7,   7,   7,   7,   7,
+      7,   7,   7,   7,   7, 342, 343,  95, 335, 335, 344, 344, 301, 301, 345, 346,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+      9, 347,   9, 348, 349, 350,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78, 120,  78,  78,  78,  78,  78,  78,  78,
+    351, 352,  78,  78,  78,  78,  78,  78,   7, 353, 354,  78,  78,  78,  78,  78,
+     78,  78,  78,  78, 175, 355,   7, 356,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 357,
+      7,   7,   7,   7,   7,   7, 358,  78,   7,   7, 359,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+    338, 360, 361, 362, 363, 364,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78, 175, 204, 204, 158,  78,  78, 365,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 366,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78, 122,
+    367,   9,   9,   9,  78,  78,  78,  78,   9,   9,   9,   9,   9,   9,   9, 368,
+     78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78
 };
 
 static RE_UINT8 re_word_break_table_3[] = {
@@ -25105,13 +25595,11 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,  0,
+    13, 13,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25163,9 +25651,9 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
     11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 11, 14, 14,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0, 14, 11, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0, 11, 11, 11,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 14, 14,  0, 11, 11, 11,  0,  0, 11,  0,  0,
     11, 11, 14, 14,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 14, 14, 14,  0, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
@@ -25173,7 +25661,7 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11,  0, 11, 11, 11, 11, 11,  0,  0, 14, 11, 14, 14,
     14, 14, 14, 14, 14,  0, 14, 14, 14,  0, 14, 14, 14, 14,  0,  0,
-     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0, 11,  0,
+     0,  0,  0,  0,  0, 14, 14,  0,  0,  0,  0,  0,  0, 11, 11,  0,
     11, 11, 14, 14,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
@@ -25193,6 +25681,8 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      0,  0, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -25250,8 +25740,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
-    11, 11, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25264,7 +25754,7 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 13,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 13, 14,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
@@ -25290,13 +25780,13 @@ static RE_UINT8 re_word_break_table_3[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 14, 14, 14, 14,
     14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -25320,8 +25810,6 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 14, 11, 11,
     11, 11, 11, 11, 14, 11, 11, 14, 14, 14, 11,  0,  0,  0,  0,  0,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14,
     11, 11, 11, 11, 11, 11,  0,  0, 11, 11, 11, 11, 11, 11,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11,  0, 11,  0, 11,  0, 11,  0, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25354,8 +25842,6 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 14,
     14, 14, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0, 11,
@@ -25402,10 +25888,10 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
+    11, 11,  0, 11,  0, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 14, 11, 11, 11, 14, 11, 11, 11, 11, 14, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 14, 14, 14, 14, 14,  0,  0,  0,  0, 14,  0,  0,  0,
@@ -25506,10 +25992,10 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
-    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,
     11, 11, 11, 11,  0,  0,  0,  0, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25521,7 +26007,15 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11,  0, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11,  0, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,  0,  0,  0,
+    11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11,  0,  0, 11,  0, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25546,6 +26040,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -25553,10 +26049,10 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
+    14, 11, 11, 14, 14, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0, 13,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,
+     0,  0, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
@@ -25636,8 +26132,6 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14, 14,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
      0,  0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
     14, 14, 14, 14, 14, 14, 14, 14,  0, 14, 14, 14, 14, 14, 14, 14,
@@ -25656,6 +26150,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
     13, 13, 13, 13, 13, 13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,
@@ -25674,8 +26170,12 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11,  0, 11, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    17, 17, 17, 17,  0, 17, 17, 17, 17, 17, 17, 17,  0, 17, 17,  0,
     17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0, 17, 17, 17, 17,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
@@ -25684,6 +26184,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0, 14, 14,  0,
     13, 13, 13, 13,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  0,
+    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
      0,  0,  0,  0,  0, 14, 14, 14, 14, 14,  0,  0,  0, 14, 14, 14,
     14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14,
     14, 14, 14,  0,  0, 14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,
@@ -25693,6 +26195,8 @@ static RE_UINT8 re_word_break_table_3[] = {
      0,  0, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11,
      0,  0, 11,  0,  0, 11, 11,  0,  0, 11, 11, 11, 11,  0, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11,  0, 11, 11, 11,
@@ -25708,6 +26212,8 @@ static RE_UINT8 re_word_break_table_3[] = {
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
     11, 11, 11,  0, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25728,8 +26234,12 @@ static RE_UINT8 re_word_break_table_3[] = {
     14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 11,  0,  0,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0, 11,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  0,  0,  0,  0,  0,  0,
+    11, 11, 11, 11, 11, 11, 11,  0, 11, 11, 11, 11,  0, 11, 11,  0,
+    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,
     11, 11, 11, 11, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     14, 14, 14, 14, 14, 14, 14,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 11,  0,  0,  0,  0,
@@ -25881,7 +26391,7 @@ static RE_UINT8 re_xdigit_table_2[] = {
     0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+    0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
@@ -25921,17 +26431,17 @@ RE_UINT32 re_get_xdigit(RE_UINT32 codepoint) {
 static RE_UINT8 re_xid_continue_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9, 38, 39, 40,  9, 41,  9, 42, 43,  9,  9, 44,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9, 39, 40, 41, 42, 43, 44, 45, 46, 47,  9,  9, 48,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
-    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
-    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 49, 12, 12, 12, 50, 51, 12,
+    12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 53,  9,  9,  9, 54,  9,
+    12, 12, 12, 12, 55,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25975,7 +26485,7 @@ static RE_UINT8 re_xid_continue_table_1[] = {
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
-    52,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    56,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -25994,107 +26504,115 @@ static RE_UINT16 re_xid_continue_table_2[] = {
       6,   6,   6,   6,   6,   6,   7,   8,   6,   6,   6,   9,  10,  11,   6,  12,
       6,   6,   6,   6,  13,   6,   6,   6,   6,  14,  15,   6,  16,  17,  18,  19,
      20,   6,   6,  21,   6,   6,  22,  23,  24,   6,  25,   6,   6,  26,   6,  27,
-      6,  28,  29,  30,   0,  31,  32,  11,   6,   6,   6,  33,  34,  35,  36,  37,
-     38,  39,  40,  41,  42,  43,  44,  45,  46,  43,  47,  48,  49,  50,  51,  52,
-     53,  54,  55,  56,  57,  58,  59,  60,  53,   6,  61,  62,  63,  64,  65,  66,
-     67,  68,  69,   0,  70,  71,  72,   0,  73,  74,  75,  76,  77,  78,  79,   0,
-      6,   6,  80,   6,  81,   6,  82,  83,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,  84,   6,  85,  86,  87,   6,  88,   6,  89,  90,  91,   6,   6,  92,
-     67,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,  93,   3,   6,   6,  94,  95,  96,  97,  98,   6,   6,  99, 100,
-    101,   6,   6, 102,   6, 103,   6, 104, 105, 106, 107, 108,   6, 109, 110,   0,
-     29,   6, 105, 111, 112, 113, 114,   0,   6,   6, 115, 116,   6,   6,   6,  97,
-      6, 117, 118,  81, 119,  89, 120,  68,   6,   6,   6,   6,   6,   6,   6, 121,
-      6,   6,   6,   6,   6,   6,   6,   6,  92,   6, 122,  81,   6, 123, 124, 125,
-      0, 126, 127, 128, 129,   0, 129, 130, 131, 132, 133,   6, 134,   0,   0,   0,
+      6,  28,  29,  30,  31,   6,   6,  11,   6,   6,   6,  32,  33,  34,  35,  36,
+     37,  38,  39,  40,  41,  42,  43,  44,  45,  42,  46,  47,  48,  49,  50,  51,
+     52,  53,  54,  55,  56,  57,  58,  59,  52,   6,  60,  61,  62,  63,  64,  65,
+     66,  67,  68,   0,  69,  70,  71,   0,  72,  73,  74,  75,  76,  77,  78,   0,
+      6,   6,  79,   6,  80,   6,  81,  82,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,  83,   6,  84,  85,  86,   6,  87,   6,  88,  89,  90,   6,   6,  91,
+     66,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,  92,   3,   6,   6,  93,  94,  95,  96,  97,   6,   6,  98,  99,
+    100,   6,   6, 101,   6,  30,   6, 102, 103, 104, 105, 106,   6, 107, 108,   0,
+     29,   6, 103, 109, 110, 111, 112,   0,   6,   6, 113, 114,   6,   6,   6,  96,
+      6, 115, 116,  80, 117,  88, 118,  67,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,  91,   6, 119,  80,   6, 120, 121, 122,
+      0, 123, 124, 125, 126,   0, 126, 127, 128, 129, 130,   6, 131,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 135, 105,   6,   6,   6,   6, 136,   6,  82,   6, 137, 138, 139, 139,   6,
+      6,   6,   6,   6,   6,   6,   6, 132,   6,  81,   6, 133, 134, 135, 135,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    140, 141,  67,   6, 142,  67,   6,  83, 143,  14,   6,   6, 144,   6,   0,  24,
+    136, 137,  66,   6, 138,  66,   6,  82, 139,  14,   6,   6, 112,   6,   0,  24,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6, 140,   0,  24,  80,   6,   6,   6,   6,   6,   6,   6,   6,
+    141, 142,   6, 143,   6,   6,   6,  26, 144, 145,   6,   6, 146,   6, 147, 148,
+      6, 149,   6,  96,   6,   6, 150, 151,   6, 152,  96,  77,   6,   6, 153, 103,
+      6, 134, 154, 155,   6,   6, 156, 157, 158, 159,  82,  79,   6,   6,   6, 160,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  78,
-      6,   6,   6,   6, 145,   0,  24,  81,   6,   6,   6,   6,   6,   6,   6,   6,
-    146, 147,   6, 148,   6,   6,   6,  26, 149, 150,   6,   6, 151,   6, 152, 153,
-      6, 154,   6,  97,   6,   6, 155, 156,   6, 157,  97,  78,   6,   6, 158, 105,
-      6, 138, 159, 160,   6,   6, 161, 162, 163, 164,  83,  80,   6,   6,   6, 165,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 166, 167,  29,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 161, 162,  29,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6, 157,   6,   6, 168,   0, 169, 170, 171,   6,   6,  26, 172,   6,
-      6,   6,  81, 173,   6,   6,   6,   6,   6,  81,  24,   6, 174,   6, 175,   1,
-     91, 176, 177, 178,   6,   6,   6,  78,   1,   2,   3, 107,   6, 105, 179,   0,
-    180, 181, 182,   0,   6,   6,   6,  68,   0,   0,   6,  96,   0,   0,   0, 183,
-      0,   0,   0,   0,  78,   6, 184, 114,   6, 185, 103,  68,  81,   6, 186,   0,
-      6,   6,   6,   6,  81,  80, 187,  29,   6, 188,   6, 189,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6,   6, 138, 104, 175,   0,   0,   0,   0,
-    190, 191, 104, 138, 105,   0,   0, 192, 104, 168,   0,   0,   6, 193,   0,   0,
-    194, 195,   0,  78,  78,   0,  75, 196,   6, 104, 104, 197,  26,   0,   0,   0,
-      6,   6, 134,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   6, 199,   0,   0,  78, 200, 184,   0,   0,  24, 201, 138,
-      6,   6, 196, 202,   6,  68,  24, 203,   6,  31, 204, 205,   6,   6, 206,   0,
-    207, 208,   0,   0, 209, 119,   6, 210,  34, 211, 212, 213,   0,   0,   0,   0,
-      6,   6, 214, 215,   6,   6, 216,   0,   0,   0,   0,   0,   6, 217, 218,   0,
-      6,   6, 219,   0,   6, 102, 100,   0,  89, 115,   0,   0,   0,   0,   0,   0,
-      6,  68,   0,   0,   0,   6,   6, 220, 221, 222, 223,   0,   0, 224, 225, 226,
-      6, 105, 200,   6, 227,   0,   6, 102,   0,   0,   0,   0,   0,   0,   0,   0,
-    228,   5, 229, 230, 174, 231,   0,   0, 232, 233, 198, 234, 235, 100,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 138,   0,   0,   0,   0,   0, 236,   0,   0,
+      6,   6,   6, 152,   6,   6, 163,   0, 164, 165, 166,   6,   6,  26, 167,   6,
+      6,   6,  80, 168,   6,   6,   6,   6,   6,  80,  24,   6, 169,   6, 170,   1,
+     90, 171, 172, 173,   6,   6,   6,  77,   1,   2,   3, 105,   6, 103, 174,   0,
+    175, 176, 177,   0,   6,   6,   6,  67,   0,   0,   6,  95,   0,   0,   0, 178,
+      0,   0,   0,   0,  77,   6, 179, 180,   6, 181,  30,  67,  80,   6, 182,   0,
+      6,   6,   6,   6,  80,  79, 183,  29,   6, 184,   6, 185, 186, 187,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 134, 102, 170, 188, 189,   0,   0,
+    190, 191, 102, 134, 103,   0,   0, 192, 102, 163,   0,   0,   6, 193,   0,   0,
+    194, 195,   0,  77,  77,   0,  74, 196,   6, 102, 102, 197,  26,   0,   0,   0,
+      6,   6, 131,   0,   6, 197,   6, 197,   6, 198,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   6, 199,   0,   0,  77, 200, 179,  24, 201,  24, 202, 134,
+      6,   6, 196, 203,   6,  67, 204, 205,   6, 206, 207, 208,   6,   6, 209,   0,
+    210, 211,   0,   0, 212, 117,   6, 213,  33, 214, 215, 216,   0,   0,   0,   0,
+      6,   6, 217, 218,   6,   6, 219,   0,   0,   0,   0,   0,   6, 220, 221,   0,
+      6,   6, 222,   0,   6, 101,  99,   0,  88, 223, 196,   0,   0,   0,   0,   0,
+      6,  67,   0,   0,   0,   6,   6, 224, 225, 226, 227,   0,   0, 228, 229, 230,
+      6, 103, 200,   6, 231,  24,   6, 101,   0,   0,   0,   0,   0,   0,   0,   0,
+    232,   5, 233, 148, 169, 234,   0,   0, 235, 236, 198, 237, 238,  99,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 134,   0,   0,   0,   0,   0, 239,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 168,   0,   0,   0,
-      6,   6,   6, 144,   6,   6,   6,   6,   6,   6, 189,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 163,   0,   0,   0,
+      6,   6,   6, 112,   6,   6,   6,   6,   6,   6, 240,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,   6,   6, 179,
+      6, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6, 196,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6, 102, 105, 100,   0,   0,  24, 108,   6, 138, 223, 237,  91,   0,   0,   0,
+      6, 101, 103,  79,   6, 103,  79, 106,   6, 134, 227, 241,  90,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 238,   6, 239,   0,   0, 240,
+      0,   0,   6,   6,   0,   0,   0,   0,   6,   6, 242,   6, 243,   0,   0, 244,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 117,
-      6,   6,   6,   6,   6,   6, 104,   0, 134,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 115,
+      6,   6,   6,   6,   6,   6, 102,   0, 131,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6,   6,   6, 105,   0, 241, 204,   6,   6,   6,   6,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 245,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 246, 247, 207,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6, 242, 243,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6,   6, 248, 249,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6, 152, 196,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 250, 251, 252,   0,   0,
+      0,   0, 253,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      6,   6, 206,   6, 254, 255, 256,   6, 257, 258, 259,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 260, 261,  82, 206, 206, 262, 262, 232, 232, 263,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 244, 245, 246,   0,   0,
-      0,   0, 247,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,  31,   6, 248, 249, 250,   6, 251, 252, 253,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 254, 255,  83,  31,  31, 135, 135, 228, 228, 256,   6,
+      6, 264,   6, 265, 266, 267,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      6, 257,   6, 258, 259, 260,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    261, 262,   0,   0,   0,   0,   0,   0,   6, 263, 264,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   6, 168,   0,   0,   0,   0,   0,   0,   0,   0,
-      6,   6,   6,   6,   6,   6, 265,   0,   6,   6, 115,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0,   0,   0,   0,   0,
+    268, 269,   0,   0,   0,   0,   0,   0,   6, 270, 271,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  24, 112,   6, 163,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 272,
+      6,   6,   6,   6,   6,   6, 273,   0,   6,   6, 223,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    250, 266, 267, 268, 269, 270,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    256, 274, 275, 276, 277, 278,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,  81,   0,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,  96,   6,   6,   6,   6,   6,   6,
-     81,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6,   6,   6,   6,   6, 101,   6,   6,   6,   6,   6,   6,
+     80,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6, 271,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
+      6,   6,   6,   6,   6, 279,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 114,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 180,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-     81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     80,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
-      6,   6,   6,   6,   6,   6,   6,   6,   6,   6,  30,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  91,
+      6,   6,   6,   6,   6,   6,   6,   6,   6,   6, 280,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,  90,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -26106,67 +26624,70 @@ static RE_UINT8 re_xid_continue_table_3[] = {
     255,   1, 254, 255, 255, 255, 255, 191, 182,   0, 255, 255, 255, 135,   7,   0,
       0,   0, 255,   7, 255, 195, 255, 255, 255, 255, 239, 159, 255, 253, 255, 159,
       0,   0, 255, 255, 255, 231, 255, 255, 255, 255,   3,   0, 255, 255,  63,  36,
-    255,  63,   0,   0, 255, 255, 255,  15, 255,   7,   0,   0, 255, 255, 223, 255,
-    255,   0, 248, 255, 207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243,
-    159, 121, 128, 176, 207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211,
-    135,  57,   2,  94, 192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243,
-    191,  59,   1,   0, 207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176,
-    207, 255,   2,   0, 236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0,
-    192, 255,   0,   0, 255, 223, 253, 255, 255, 253, 255, 227, 223,  61,  96,   7,
-    207, 255,   0,   0, 239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  64,
-    207, 255,   6,   0, 223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252,
-    255, 255, 251,  47, 127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255,
-    255, 255, 255,   7, 255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,
-     95,  63, 255, 243,   1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255,
-    255,  31, 254, 255, 223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0,
-    255,   3, 255, 255, 255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247,
-    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
-    255, 255,  61, 255, 255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0,
-    255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1, 255, 223,  31,   0,
-    255, 255,  31,   0, 255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48,
-    255,   3,   0,   0,   0,  56, 255,   3, 255, 255, 255,   1, 255,   7, 255, 255,
-    255, 255,  63,   0, 255, 255, 255, 127, 255,  15, 255,  15, 192, 255, 255, 255,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3, 255,   7, 255, 255, 255, 159,
-    255,   3, 255,   3, 128,   0, 255, 191,   1,   0,   0,   0, 255,  15, 255,   3,
-      0, 248,  15,   0, 255, 255, 255,   0, 255, 227, 255, 255, 255,   1, 255, 255,
-      0,   0, 247, 255, 255, 255, 255, 251,  63,  63, 255, 170, 255, 255, 223,  95,
-    220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,   1,   0,  16,   0,
-      0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0, 255, 127, 255, 255,
+    255,  63,   0,   0, 255, 255, 255,  15, 255,   7, 255, 255, 255, 126,   0, 255,
+    207, 255, 254, 255, 239, 159, 249, 255, 255, 253, 197, 243, 159, 121, 128, 176,
+    207, 255,   3,  80, 238, 135, 249, 255, 255, 253, 109, 211, 135,  57,   2,  94,
+    192, 255,  63,   0, 238, 191, 251, 255, 255, 253, 237, 243, 191,  59,   1,   0,
+    207, 255,   0, 254, 238, 159, 249, 255, 159,  57, 224, 176, 207, 255,   2,   0,
+    236, 199,  61, 214,  24, 199, 255, 195, 199,  61, 129,   0, 192, 255,   0,   0,
+    255, 223, 253, 255, 255, 253, 255, 243, 223,  61,  96,  39, 207, 255,   0,   0,
+    239, 223, 253, 255, 255, 253, 239, 243, 223,  61,  96,  96, 207, 255,   6,   0,
+    223, 125, 240, 128, 207, 255,   0, 252, 238, 255, 127, 252, 255, 255, 251,  47,
+    127, 132,  95, 255, 192, 255,  12,   0, 254, 255, 255, 255, 255, 255, 255,   7,
+    255, 127, 255,   3, 214, 247, 255, 255, 175, 255, 255,  63,  95,  63, 255, 243,
+      1,   0,   0,   3, 255,   3, 160, 194, 255, 254, 255, 255, 255,  31, 254, 255,
+    223, 255, 255, 254, 255, 255, 255,  31,  64,   0,   0,   0, 255,   3, 255, 255,
+    255, 255, 255,  63, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
+    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
+    255, 255, 255, 231,   0, 254,   3,   0, 255, 255,   0,   0, 255, 255,  63,  63,
+    255, 159, 255, 255, 255, 199, 255,   1, 255, 255,  63, 128, 255, 255,  31,   0,
+    255, 255,  15,   0, 255, 223,  13,   0, 255, 255, 143,  48, 255,   3,   0,   0,
+      0, 184, 255,   3, 255, 255, 255,   1, 255, 255,  63,   0, 255, 255, 255, 127,
+    255,  15, 255,  15, 192, 255, 255, 255, 255,  63,  31,   0, 255,  15, 255, 255,
+    255,   3, 255,   7, 255, 255, 255, 159, 255,   3, 255,   3, 128,   0, 255, 191,
+    255, 127,   0,   0, 255,  31, 255,   3,   0, 248,  15,   0, 255, 255, 255,   0,
+    255, 227, 255, 255, 255,   1, 255, 255,   0,   0, 247, 255,  63,  63, 255, 170,
+    255, 255, 223,  95, 220,  31, 207,  15, 255,  31, 220,  31,   0,   0,   0, 128,
+      1,   0,  16,   0,   0,   0,   2, 128,   0,   0, 255,  31, 226, 255,   1,   0,
+    132, 252,  47,  63,  80, 253, 255, 243, 224,  67,   0,   0, 255,   1,   0,   0,
      31, 248,  15,   0, 255, 128,   0, 128, 255, 255, 127,   0, 127, 127, 127, 127,
     224,   0,   0,   0, 254, 255,  62,  31, 255, 255, 127, 230, 224, 255, 255, 255,
-    255, 127,   0,   0, 255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0,
-    255, 255, 240, 191,   0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255,
-    252,   7,   0,   0,   0,   0, 224, 255, 255,  16,   0,   0,  63,   0, 255,   3,
-    255, 255, 255, 232, 255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3,
-    255, 255, 127, 252,   7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,   3, 127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,
-      0,   0, 248, 255, 240, 255, 255, 255, 255, 255, 252, 255, 255,   0,   0,   0,
-    255, 255,  24,   0,   0, 224,   0,   0,   0,   0, 138, 170, 252, 252, 252,  28,
-    255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32,
-    255, 255,   1,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
-    255,   0, 255, 255,  15,   0,   0,   0,  63, 253, 255, 255, 255, 255, 191, 145,
+    255,  31,   0,   0, 255,  31, 255, 255, 255,  15,   0,   0, 255, 255, 240, 191,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 255,  16,   0,   0,  63,   0, 255,   3, 255, 255, 255, 232,
+    255,  63, 255, 255,   1, 128, 255,   3, 255,  63, 255,   3, 255, 255, 127, 252,
+      7,   0,   0,  56, 255, 255, 124,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,  55, 255,   3,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,   3,
+    127,   0, 248, 224, 255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255,
+    240, 255, 255, 255, 255, 255, 252, 255, 255,   0,   0,   0, 255, 255,  24,   0,
+      0, 224,   0,   0,   0,   0, 138, 170, 252, 252, 252,  28, 255, 239, 255, 255,
+    127, 255, 255, 183, 255,  63, 255,  63,   0,   0,   0,  32, 255, 255,   1,   0,
+      1,   0,   0,   0,   0, 224, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255,
+    255,   0, 255, 255,  15,   0, 255, 247, 255, 247, 183, 255, 251, 255, 251,  27,
+    191, 255, 255, 255, 255, 255, 253,   7,  63, 253, 255, 255, 255, 255, 191, 145,
     255, 255,  55,   0, 255, 255, 255, 192, 111, 240, 239, 254, 255, 255,  63, 135,
     127,   0,   0,   0, 255, 255,   7,   0, 255,   0, 255,   3, 255,  27,   3,   0,
-    128,   0, 255, 255,  31,   0,   0,   0, 192, 255,   0, 128, 255,   1, 255,   3,
-    240,   0, 255, 255, 255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255,
-    255, 255, 255,  64, 127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251,
-    159,  57, 129, 224, 207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0,
-    191,   0, 255,   3, 255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3,
+    128,   0, 255, 255,  63,   0,   0,   0,  31,   0,   0,   0, 192, 255,  63, 128,
+      4,   0, 255, 255, 255,   1, 255,   3, 255, 255, 223, 255, 240,   0, 255, 255,
+    255, 255,  79,   0,  31, 222, 255,  23, 255, 255, 251, 255, 255, 255, 255,  64,
+    127, 189, 255, 191, 255,   7, 255,   3, 255, 253, 237, 251, 159,  57, 129, 224,
+    207,  31,  31,   0, 255,   7, 255, 195,   3,   0,   0,   0, 191,   0, 255,   3,
+    255, 255,  63, 255,   1,   0,   0,  63,  17,   0, 255,   3, 255,  15, 255,   3,
     255,   3,   0, 128, 127, 242, 111, 255, 255, 255, 191, 249,  15,   0, 255,   3,
     255, 252, 255, 255, 255, 255, 255, 252,  27,   0,   0,   0, 255, 255, 255,  35,
-    255, 253, 255, 255,   1,   0, 255,   3,   0,   0, 252, 255, 255, 254, 127,   0,
-    127, 251, 255, 255, 255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,
-      0,   0,   1,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
-     27,   0,   3,   0,   0,   0,   7,   0, 255,   7, 255,  31, 255,   1, 255,  99,
-    224, 227,   7, 248, 231,  15,   0,   0,   0,  60,   0,   0,  28,   0,   0,   0,
-    255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223,
-    255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247,
-    247, 207, 255, 255, 255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248,
-    254, 255,   0,   0, 127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63,
-    255,  67,   0,   0,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
-    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255
+    255, 253, 255, 255,   1,   0, 255,   3, 255, 254, 127,   0, 127, 251, 255, 255,
+    255, 255, 127, 180, 191, 253, 255, 255, 255, 127, 251,   1,   0,   0,   1,   0,
+     15,   0,   0,   0, 248, 255, 255, 224, 255, 135, 255, 255, 255, 128, 255, 255,
+     27,   0,   3,   0,   0,   0, 239, 111,   7,   0,   0,   0,   0,   0,   7,   0,
+    255,   7, 255,  31, 255,   1, 255,  99, 224, 227,   7, 248, 231,  15,   0,   0,
+      0,  60,   0,   0,  28,   0,   0,   0, 255, 255, 255, 223, 100, 222, 255, 235,
+    239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,
+     63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255, 247, 207, 255, 255,
+    255, 255, 127, 248, 255,  31,  32,   0,  16,   0,   0, 248, 254, 255,   0,   0,
+    127, 255, 255, 249, 219,   7,   0,   0, 255,  31, 255,  63, 255,  67,   0,   0,
+    127, 111, 255, 127,  31,   0, 127,   0, 150, 254, 247,  10, 132, 234, 150, 170,
+    150, 247, 247,  94, 255, 251, 255,  15, 238, 251, 255,  15,   3,   0, 255, 255,
+    255,   7,   0,   0
 };
 
 RE_UINT32 re_get_xid_continue(RE_UINT32 codepoint) {
@@ -26192,17 +26713,17 @@ RE_UINT32 re_get_xid_continue(RE_UINT32 codepoint) {
 static RE_UINT8 re_xid_start_table_1[] = {
      0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 12, 12,
     12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 14, 12, 15, 16, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 17,  9,  9,  9,  9,  9,  9,  9,  9, 18, 19,
-    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  9,  9, 12, 30,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12,
+    12, 12, 12, 12, 12, 16,  9,  9,  9,  9,  9,  9,  9,  9, 17, 18,
+    19, 20, 21, 22, 23, 24, 25, 26, 27, 28,  9, 29, 12, 30,  9,  9,
      9, 31,  9,  9,  9,  9,  9,  9,  9,  9, 32, 33, 12, 12, 12, 12,
-    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9,  9, 36,  9,  9, 37,
-     9,  9,  9,  9,  9, 38,  9,  9, 39,  9, 40, 41,  9,  9,  9,  9,
+    12, 34, 12, 35,  9,  9,  9,  9,  9,  9,  9, 36, 37,  9,  9, 38,
+     9,  9,  9,  9,  9, 39,  9, 40, 41, 42, 43, 44,  9,  9,  9,  9,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
     12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-    12, 12, 12, 12, 12, 12, 12, 12, 12, 42, 12, 12, 12, 43, 44, 12,
-    12, 12, 12, 45, 12, 12, 12, 12, 12, 12, 46,  9,  9,  9, 47,  9,
-    12, 12, 12, 12, 48,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+    12, 12, 12, 12, 12, 12, 12, 12, 12, 45, 12, 12, 12, 46, 47, 12,
+    12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49,  9,  9,  9, 50,  9,
+    12, 12, 12, 12, 51,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
@@ -26265,96 +26786,102 @@ static RE_UINT8 re_xid_start_table_2[] = {
       4,   4,   4,   4,   4,   4,   5,   6,   0,   0,   0,   7,   8,   9,   4,  10,
       4,   4,   4,   4,  11,   4,   4,   4,   4,  12,  13,   4,  14,   0,  15,  16,
       0,   4,  17,  18,   4,   4,  19,  20,  21,  22,  23,   4,   4,  24,  25,  26,
-     27,  28,  29,  17,   0,  30,  31,   0,  32,  33,  34,  35,  36,  37,  38,  39,
-     40,  41,  42,  43,  44,  45,  46,  47,  48,  45,  49,  50,  51,  52,  46,   0,
-     53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,   0,
-     68,  69,  67,   0,  70,  71,  72,   0,  73,   0,  74,  75,  76,   0,   0,   0,
-      4,  77,  78,  79,  80,   4,  81,  82,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  83,   4,  84,  85,  86,   4,  87,   4,  88,   0,  22,   4,   4,  89,
-     68,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,  90,   1,   4,   4,  91,  92,  93,  93,  94,   4,  95,  96,   0,
-      0,   4,   4,  29,   4,  97,   4,  98,  99,   0,  15, 100,   4, 101, 102,   0,
-    103,   4, 104,   0,   0, 105,   0,   0, 106,  95, 107,   0, 108, 109,   4, 110,
+     27,  28,  29,  30,  31,   4,  32,   0,  33,  34,  35,  36,  37,  38,  39,  40,
+     41,  42,  43,  44,  45,  46,  47,  48,  49,  46,  50,  51,  52,  53,  47,   0,
+     54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,   0,
+     69,  70,  68,   0,  71,  72,  73,   0,  74,   0,  75,  76,  77,   0,   0,   0,
+      4,  78,  79,  80,  81,   4,  82,  83,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,  84,   4,  85,  86,  87,   4,  88,   4,  89,   0,  22,   4,   4,  90,
+     69,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,  91,   1,   4,   4,  92,  93,  94,  94,  95,   4,  96,  97,   0,
+      0,   4,   4,  29,   4,  98,   4,  99, 100,   0,  15, 101,   4, 102,  32,   0,
+    103,   4, 104,   0,   0, 105,   0,   0, 106,  96, 107,   0, 108, 109,   4, 110,
       4, 111, 112, 113, 114, 115,   0, 116,   4,   4,   4,   4,   4,   4,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  89,   4, 117, 113,   4, 118, 119, 120,
+      4,   4,   4,   4,   4,   4,   4,   4,  90,   4, 117, 113,   4, 118, 119, 120,
       0,   0,   0, 121, 122,   0,   0,   0, 123, 124, 125,   4,  14,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 126,  99,   4,   4,   4,   4, 127,   4,  81,   4, 128, 103, 129, 129,   0,
+      4,   4,   4,   4,   4,   4,   4, 126,   4,  82,   4, 127, 103, 128, 128,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    130, 131,  68,   4, 132,  68,   4,  82, 106,  12,   4,   4, 133,   4,   0,  15,
+    129, 130,  69,   4, 131,  69,   4,  83, 106,  12,   4,   4, 132,   4,   0,  15,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,  76,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
+    133, 134,   4, 135, 113,   4,   4,  22, 136, 137,   4,   4, 138,   4, 139, 140,
+    141, 142,   4,  96, 137,  96,   0, 143,  25, 144,  68, 145,  33, 146, 147, 148,
+      4,  14, 149, 150,   4, 151, 152, 153, 154, 155,  83, 156,   4,   4,   4, 142,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 134,
-      4,   4,   4,   4,  75,   0,  15, 113,   4,   4,   4,   4,   4,   4,   4,   4,
-    135, 136,   4, 137, 113,   4,   4,  22, 138, 139,   4,   4, 140,   4, 141, 142,
-    143, 144,   4,  95, 139,  95,   0, 145,  25, 146,  67, 134,  32, 147, 148, 149,
-      4,  14, 150, 151,   4, 152, 153, 154, 155, 156,  82, 157,   4,   4,   4, 144,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 158, 159, 160,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 157, 158, 159,
       0,   0,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4, 161,   4,   4, 162,   0, 163, 164, 165,   4,   4,  93, 166,   4,
-      4,   4, 113,  32,   4,   4,   4,   4,   4, 113,  15,   4, 167,   4,  31, 168,
-      0,   0,   0, 169,   4,   4,   4, 134,   0,   1,   1, 170, 113,  99, 171,   0,
-    172, 173, 174,   0,   4,   4,   4,  88,   0,   0,   4, 104,   0,   0,   0,   0,
-      0,   0,   0,   0, 134,   4, 175,   0,   4,  23, 176,  98, 113,   4, 177,   0,
-      4,   4,   4,   4, 113,  15, 178, 160,   4, 179,   4, 111,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  98,  31,   0,   0,   0,   0,
-    180, 181,  98, 103,  99,   0,   0, 182,  98, 162,   0,   0,   4, 183,   0,   0,
-    184,  98,   0, 134, 134,   0,  74, 185,   4,  98,  98, 147,  93,   0,   0,   0,
-      4,   4,  14,   0,   4, 147,   4, 147,   4, 111,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   4, 186,   0,   0, 134, 187, 110,   0,   0,  15, 185, 103,
-    108, 188,   0,   0, 108,  22,  15,  14, 108,  67, 189, 190, 108, 147, 191,   0,
-    192, 193,   0,   0, 194, 114,  99,   0,  48,  45, 195,  56,   0,   0,   0,   0,
-      4, 104, 196,  56,   4,  22, 197,   0,   0,   0,   0,   0,   4, 133, 198,   0,
-      4,  22, 199,   0,   4, 200,   0,   0,  88,   0,   0,   0,   0,   0,   0,   0,
-      4, 193,   0,   0,   0,   4,   4, 201, 202, 203, 204,   0,   0, 205, 175, 206,
-    207, 208, 209,   4, 210,   0,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
-    211, 133,  73, 212,  22,   0,   0,   0, 213, 175, 214, 215, 216,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0, 147,   0,   0,   0,   0,   0,  46,   0,   0,
+      4,   4,   4, 160,   4,   4, 161,   0, 162, 163, 164,   4,   4,  94, 165,   4,
+      4,   4, 113,  33,   4,   4,   4,   4,   4, 113,  15,   4, 166,   4, 167, 168,
+      0,   0,   0, 169,   4,   4,   4, 145,   0,   1,   1, 170, 113, 100, 171,   0,
+    172, 173, 174,   0,   4,   4,   4,  89,   0,   0,   4, 104,   0,   0,   0,   0,
+      0,   0,   0,   0, 145,   4, 175,   0,   4,  23,  30,  99, 113,   4, 176,   0,
+      4,   4,   4,   4, 113,  15, 177, 159,   4, 178,   4, 179, 180, 181,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 103,  99, 167, 182, 183,   0,   0,
+    184, 185,  99, 103, 100,   0,   0, 186,  99, 161,   0,   0,   4, 187,   0,   0,
+    188,  99,   0, 145, 145,   0,  75, 189,   4,  99,  99, 146,  94,   0,   0,   0,
+      4,   4,  14,   0,   4, 146,   4, 146,   4, 111,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   4, 190,   0,   0, 145, 191, 110,  15,  57,  15, 189, 103,
+    108, 192,   0, 193, 108,  22,  15,  14, 108,  68, 194, 195, 108, 146, 196,   0,
+    197, 198,   0,   0, 199, 114, 100,   0,  49,  46, 200,  57,   0,   0,   0,   0,
+      4, 104, 201,  57,   4,  22, 202,   0,   0,   0,   0,   0,   4, 132, 203,   0,
+      4,  22, 204,   0,   4, 205,   0,   0,  89,   0,  68,   0,   0,   0,   0,   0,
+      4, 198,   0,   0,   0,   4,   4, 206, 207, 208, 209,   0,   0, 210, 175, 211,
+    212, 213, 214,   4, 215,  15,   4,  29,   0,   0,   0,   0,   0,   0,   0,   0,
+    216, 132,  74, 140,  22,   0,   0,   0, 217, 175, 218, 219, 220,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0, 146,   0,   0,   0,   0,   0,  47,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 162,   0,   0,   0,
-      4,   4,   4, 133,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 161,   0,   0,   0,
+      4,   4,   4, 132,   4,   4,   4,   4,   4,   4, 111,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4, 133,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  15,   4,   4, 175,
+      4, 132,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,  29,  99,   0,   0,   0,  15, 217,   4,  22, 111, 218,  22,   0,   0,   0,
+      4,  29, 100,  15,   4, 100,  15, 221,   4,  22, 111, 222,  22,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 219,   0, 166,   0,   0, 220,
+      0,   0,   4,   4,   0,   0,   0,   0,   4,   4, 223,   0, 165,   0,   0, 224,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 188,
-      4,   4,   4,   4,   4,   4,  98,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4, 192,
+      4,   4,   4,   4,   4,   4,  99,   0,  14,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 225,
+      4,   4,   4,   4,   4,   4,   4,   4,   4, 142, 226, 227,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4, 159,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4,   4, 228, 229,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      4,   4, 230,   4, 231, 232, 233,   4, 234, 235, 236,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 237, 238,  83, 230, 230, 239, 239, 216, 216, 149,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4,   4,   4,  99,   0, 221, 222,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4, 160,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4, 223, 224,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   4, 240, 241,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,  15, 221,   4, 198,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,  30,   4, 225, 226, 227,   4, 228, 229, 230,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 231, 232,  82,  30,  30, 126, 126, 211, 211, 150,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   4, 233, 234,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   4, 193,   0,   0,   0,   0,   0,   0,   0,   0,
-      4,   4,   4,   4,   4,   4, 185,   0,   4,   4, 235,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 242,
+      4,   4,   4,   4,   4,   4, 189,   0,   4,   4, 243,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    227, 236, 237, 238, 239, 240,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    233, 244, 245, 246, 247, 248,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4, 113,   0,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4, 104,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,  29,   4,   4,   4,   4,   4,   4,
     113,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4, 241,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
+      4,   4,   4,   4,   4, 249,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
-      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  73,
+      4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,  74,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
@@ -26369,58 +26896,60 @@ static RE_UINT8 re_xid_start_table_3[] = {
     255, 135,   7,   0, 255,   7,   0,   0,   0, 192, 254, 255, 255, 255,  47,   0,
      96, 192,   0, 156,   0,   0, 253, 255, 255, 255,   0,   0,   0, 224, 255, 255,
      63,   0,   2,   0,   0, 252, 255, 255, 255,   7,  48,   4, 255, 255,  63,   4,
-     16,   1,   0,   0, 255, 255, 255,   1, 255, 255, 223, 255, 255,   0,   0,   0,
-    240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,   3,   0, 254, 255,
-    225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,   3,   0,   3,  16,
-    224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,   0,   0,  28,   0,
-    224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,   3,   0,   0,   2,
-    224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0, 232, 199,  61, 214,
-     24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,   0,   0,   0,   7,
-      3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,   0,   0,   0,  64,
-      3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,   0,  64, 112, 128,
-      3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47, 127,   0,   0,   0,
-    254, 255, 255, 255, 255, 255,   5,   0, 214, 247, 255, 255, 175, 255,   5,  32,
-     95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255, 255,  31,   0,   0,
-      0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,  98, 192, 225, 255,
-      3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247, 255,  61, 127,  61,
-    255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255, 255, 255,  61, 255,
-    255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255, 255, 199, 255,   1,
-    255, 223,   3,   0, 255, 255,   3,   0, 255, 223,   1,   0, 255, 255,  15,   0,
-      0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0, 255, 255, 255, 127,
-    255,  63,  31,   0, 255,  15, 255, 255, 255,   3,   0,   0, 255, 255, 127,   0,
-    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  15,   0,   0,
+     16,   1,   0,   0, 255, 255, 255,   1, 255,   7, 255, 255, 255, 126,   0,   0,
+    255,   3,   0,   0, 240, 255, 255, 255, 255, 255, 255,  35,   0,   0,   1, 255,
+      3,   0, 254, 255, 225, 159, 249, 255, 255, 253, 197,  35,   0,  64,   0, 176,
+      3,   0,   3,  16, 224, 135, 249, 255, 255, 253, 109,   3,   0,   0,   0,  94,
+      0,   0,  28,   0, 224, 191, 251, 255, 255, 253, 237,  35,   0,   0,   1,   0,
+      3,   0,   0,   2, 224, 159, 249, 255,   0,   0,   0, 176,   3,   0,   2,   0,
+    232, 199,  61, 214,  24, 199, 255,   3, 224, 223, 253, 255, 255, 253, 255,  35,
+      0,   0,   0,  39,   3,   0,   0,   0, 225, 223, 253, 255, 255, 253, 239,  35,
+      0,   0,   0,  96,   3,   0,   6,   0, 240, 223, 253, 255, 255, 255, 255,  39,
+      0,  64, 112, 128,   3,   0,   0, 252, 224, 255, 127, 252, 255, 255, 251,  47,
+    127,   0,   0,   0, 254, 255, 255, 255, 255, 255,   5,   0, 214, 247, 255, 255,
+    175, 255,   5,  32,  95,   0,   0, 240,   1,   0,   0,   0, 255, 254, 255, 255,
+    255,  31,   0,   0,   0,  31,   0,   0, 255,   7,   0, 128,   0,   0,  63,  60,
+     98, 192, 225, 255,   3,  64,   0,   0, 191,  32, 255, 255, 255, 255, 255, 247,
+    255,  61, 127,  61, 255,  61, 255, 255, 255, 255,  61, 127,  61, 255, 127, 255,
+    255, 255,  61, 255, 255, 255, 255,   7, 255, 255,  63,  63, 255, 159, 255, 255,
+    255, 199, 255,   1, 255, 255,   3, 128, 255, 255,   3,   0, 255, 223,   1,   0,
+    255, 255,  15,   0,   0,   0, 128,  16, 255,   5, 255, 255, 255, 255,  63,   0,
+    255, 255, 255, 127, 255,  63,  31,   0, 255,  15, 255, 255, 255, 255, 127,   0,
+    255, 255,  31,   0, 128,   0,   0,   0, 224, 255, 255, 255, 224,  31,   0,   0,
     248, 255, 255, 255,   1, 192,   0, 252,  63,   0,   0,   0,  15,   0,   0,   0,
       0, 224,   0, 252, 255, 255, 255,  63, 255,   1, 255, 255, 255, 255, 255, 231,
       0, 222, 111,   4,  63,  63, 255, 170, 255, 255, 223,  95, 220,  31, 207,  15,
     255,  31, 220,  31,   0,   0,   2, 128,   0,   0, 255,  31, 132, 252,  47,  63,
-     80, 253, 255, 243, 224,  67,   0,   0, 255, 127, 255, 255,  31, 120,  12,   0,
-    255, 128,   0,   0, 127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31,
-    255, 255, 127, 224, 255, 127,   0,   0, 255, 255, 255,  31, 255,  31, 255, 255,
-      0,  12,   0,   0, 255, 127,   0, 128,   0,   0, 128, 255, 252, 255, 255, 255,
-    255, 249, 255, 255, 252,   7,   0,   0,   0,   0, 224, 255, 187, 247, 255, 255,
-      7,   0,   0,   0,   0,   0, 252, 104,  63,   0, 255, 255, 255, 255,   7,   0,
-      0, 128,   0,   0, 223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196,
-    255, 255,  98,  62,   5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0,
-    127, 127, 255, 255, 255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255,
-    255, 255, 255,  15, 255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160,
-    255, 253, 127,  95, 219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255,
+     80, 253, 255, 243, 224,  67,   0,   0,  31, 120,  12,   0, 255, 128,   0,   0,
+    127, 127, 127, 127, 224,   0,   0,   0, 254,   3,  62,  31, 255, 255, 127, 224,
+    255, 127,   0,   0, 255,  31, 255, 255,   0,  12,   0,   0, 255, 127,   0, 128,
+      0,   0, 128, 255, 252, 255, 255, 255, 255, 249, 255, 255, 255,   7, 235,   3,
+      0,   0, 252, 255, 187, 247, 255, 255,   7,   0,   0,   0,   0,   0, 252, 104,
+     63,   0, 255, 255, 255, 255, 255,  31, 255, 255,   7,   0,   0, 128,   0,   0,
+    223, 255,   0, 124, 247,  15,   0,   0, 255, 255, 127, 196, 255, 255,  98,  62,
+      5,   0,   0,  56, 255,   7,  28,   0, 126, 126, 126,   0, 127, 127, 255, 255,
+    255,   3, 255, 255,  15,   0, 255, 255, 127, 248, 255, 255, 255, 255, 255,  15,
+    255,  63, 255, 255, 255, 255, 255,   3, 127,   0, 248, 160, 255, 253, 127,  95,
+    219, 255, 255, 255,   0,   0, 248, 255, 255, 255, 252, 255, 255,   0,   0,   0,
       0,   0, 255,   3,   0,   0, 138, 170, 192, 255, 255, 255, 252, 252, 252,  28,
     255, 239, 255, 255, 127, 255, 255, 183, 255,  63, 255,  63, 255, 255,   1,   0,
-    255,   7, 255, 255,  15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,
+     15, 255,  62,   0, 255, 255,  15, 255, 255,   0, 255, 255,  15,   0, 255, 247,
+    255, 247, 183, 255, 251, 255, 251,  27, 191, 255, 255, 255, 255, 255, 253,   7,
      63, 253, 255, 255, 255, 255, 191, 145, 255, 255,  55,   0, 255, 255, 255, 192,
       1,   0, 239, 254,  31,   0,   0,   0, 255,   3,   3,   0, 128,   0, 255, 255,
-    255, 255, 255,   0, 144,   0, 255, 255, 255, 255,  71,   0,  30,   0,   0,  20,
-    255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,   0,   0,   1, 224,
-    128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,  16,   0,   0,   0,
-    255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255, 255, 255,   0, 128,
-      2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,   1, 248, 255, 255,
-    255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32, 255, 253, 255, 255,
-      0,   0, 252, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
+    255, 255, 255,   0,   0,   0,  38,   0, 144,   0, 255, 255, 255, 255,  71,   0,
+     30,   0,   0,  20, 255, 255, 251, 255, 255,  15,   0,   0, 127, 189, 255, 191,
+      0,   0,   1, 224, 128,   7,   0, 128, 176,   0,   0,   0,   0,   0,   0,  15,
+     16,   0,   0,   0, 255,   7,   0,   1,   0,   0,   0, 128, 127, 242, 111, 255,
+    255, 255,   0, 128,   2,   0,   0,   0, 255, 252, 255, 255,  10,   0,   0,   0,
+      1, 248, 255, 255, 255, 255,   7,   4,   0,   0,   1, 240, 255,   3,   0,  32,
+    255, 253, 255, 255, 127, 251, 255, 255,  64,   0,   0,   0, 191, 253, 255, 255,
     255,   3,   0,   1, 255,  63,   0,   0, 248, 255, 255, 224, 255,   7,   1,   0,
-     11,   0,   0,   0,   0,   0,   7,   0, 240,   0, 255, 255, 255,   7, 255,  31,
-    255,   1, 255,   3, 255, 255, 255, 223, 100, 222, 255, 235, 239, 255, 255, 255,
-    191, 231, 223, 223, 255, 255, 255, 123,  95, 252, 253, 255,  63, 255, 255, 255,
-    253, 255, 255, 247, 255,  31, 128,  63,   0,  64,   0,   0,  15,   8,   0,   0,
+     11,   0,   0,   0,   0,   0, 239, 111,   0,   0,   7,   0, 240,   0, 255, 255,
+    255,   7, 255,  31, 255,   1, 255,   3, 255, 255, 223, 255, 255, 255, 255, 223,
+    100, 222, 255, 235, 239, 255, 255, 255, 191, 231, 223, 223, 255, 255, 255, 123,
+     95, 252, 253, 255,  63, 255, 255, 255, 253, 255, 255, 247, 255, 127, 255, 255,
+    255,  31, 128,  63,   0,  64,   0,   0, 127, 111, 255, 127,  15,   8,   0,   0,
     150, 254, 247,  10, 132, 234, 150, 170, 150, 247, 247,  94, 255, 251, 255,  15,
     238, 251, 255,  15,   3,   0, 255, 255
 };
@@ -26539,27 +27068,27 @@ static RE_UINT8 re_all_cases_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 74, 75, 76, 77,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 78, 78,  0,  0,  0,  0,  0,
-    79, 80, 81,  0,  0, 82, 83, 84,  0,  0,  0,  0,  0,  0,  0,  0,
+    79, 80, 81,  0,  0, 82, 83, 84,  0,  0,  0, 85, 86, 87,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 85, 86, 85, 86,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 88, 89, 88, 89,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 87, 87,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 90, 90,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 88, 88,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 89, 90, 91,  0,  0,  0,  0,  0,
+     0,  0, 91, 91,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 92, 93, 94,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_all_cases_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   1,   1,   1,   1,   1,   1,   1,   1, 134,   1,   3,   1,   1,   1,   1,
+      0,   1,   1,   1,   1,   1,   1,   1,   1, 147,   1,   3,   1,   1,   1,   1,
       1,   1,   1,   4,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
       0,   1,   1,   1,   1,   1,   1,   1,   1,   2,   1,   3,   1,   1,   1,   1,
       1,   1,   1,   4,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0, 145,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 158,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   1,   1,   1,   1,   5,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,  83,
       1,   1,   1,   1,   1,   5,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
@@ -26567,19 +27096,19 @@ static RE_UINT8 re_all_cases_table_3[] = {
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-    133,  15,  16,  16,  16,  16,  16,  16,   0,  23,  23,  25,  25,  23,  23,  27,
+    146,  15,  16,  16,  16,  16,  16,  16,   0,  23,  23,  25,  25,  23,  23,  27,
      27,  23,  23,  25,  25,  23,  23,  28,  28,   0,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16,  16,  16,  16,  16,  29,  23,  23,  25,  25,  23,  23, 136,
+     16,  16,  16,  16,  16,  16,  16,  16,  29,  23,  23,  25,  25,  23,  23, 149,
      53,  30,  16,  16,  16,  16,  30,  28,  28,  31,  32,  25,  25,   0,  33,  34,
      35,  23,  23,  36,  37,  47,  38,  38,  16,  16,  51,   0,  36,  39,  49,  40,
      16,  16,  16,  16,  16,  16,  41,  28,  28,  42,   0,   0,  16,  16,  41,  43,
      43,  44,  45,  25,  25,  23,  23,  46,  16,  16,   0,   0,  16,  16,   0,  48,
-      0,   0,   0,   0, 155, 155,  24, 149, 149,  17, 156, 156,  26,  23,  23,  43,
+      0,   0,   0,   0, 168, 168,  24, 162, 162,  17, 169, 169,  26,  23,  23,  43,
      43,  23,  23,  25,  25,  23,  23,  28,  28,  23,  23,  25,  25,  33,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-      0, 150, 150,  18,  16,  16,  47,  48,  16,  16,  16,  16,  16,  16,  16,  16,
+      0, 163, 163,  18,  16,  16,  47,  48,  16,  16,  16,  16,  16,  16,  16,  16,
      49,   0,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,   0,   0,   0,   0,   0,   0,  50,  25,  25,  51,  52, 108,
     106,  23,  23,  53,  54,  55,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
@@ -26588,18 +27117,18 @@ static RE_UINT8 re_all_cases_table_3[] = {
       0, 105,  39,   0,   0,  40,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,
      41,   0, 120,  42,   0,   0,   0, 117,  41,  54,  44,  45,  55,   0,   0,   0,
       0,   0,  46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 118, 116,   0,
-      0,   0,   0,   0,   0, 142,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0, 155,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      16,  16,  16,  16,   0,   0,  16,  16,   0,   0,   0,  75,  76,  76,   0,  56,
       0,   0,   0,   0,   0,   0,  57,   0,  58,  59,  58,   0,  60,   0,  61,  62,
-      0,   1,   6,   1,   1,   7,   1,   1,   8, 142,  10,   1, 145,   1,   1,   1,
-     63,  64,   0, 151,  65,  65,  66,  65,  65,  67,  65,  65,  57,  58,  59,  58,
+      0,   1,   6,   1,   1,   7,   1,   1,   8, 155,  10,   1, 158,   1,   1,   1,
+     63,  64,   0, 164,  65,  65,  66,  65,  65,  67,  65,  65,  57,  58,  59,  58,
       0,   1,   6,   1,   1,   7,   1,   1,   8,   9,  10,   1,  11,   1,   1,   1,
-     63,  64, 151,  19,  65,  65,  66,  65,  65,  67,  65,  65,  60,  61,  62,  71,
-    138, 140,   0,   0,   0, 159, 157,  71,  16,  16,  16,  16,  16,  16,  16,  16,
+     63,  64, 164,  19,  65,  65,  66,  65,  65,  67,  65,  65,  60,  61,  62,  71,
+    151, 153,   0,   0,   0, 172, 170,  71,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-    144, 158,  74,  56, 141, 139,   0,  28,  28,  74,  16,  16,   0,  75,  76,  76,
+    157, 171,  74,  56, 154, 152,   0,  28,  28,  74,  16,  16,   0,  75,  76,  76,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
       1,   1,  12,   1,  13,   1,   1,   1,   1,   1,   1,   1,   1,   1,  14,   1,
      65,  68,  69,  65,  65,  65,  65,  65,  65,  65,  70,  65,  65,  65,  65,  65,
@@ -26632,7 +27161,7 @@ static RE_UINT8 re_all_cases_table_3[] = {
     125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
      81,  81,  81,  81,  81,  81,   0,   0,  81,  81,  81,  81,  81,  81,   0,   0,
-    146, 147, 148, 161, 162, 163, 164, 152, 154,   0,   0,   0,   0,   0,   0,   0,
+    159, 160, 161, 174, 175, 176, 177, 165, 167,   0,   0,   0,   0,   0,   0,   0,
      82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,  82,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0, 109,   0,   0,   0, 102,   0,   0,
@@ -26641,7 +27170,7 @@ static RE_UINT8 re_all_cases_table_3[] = {
      21,  21,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-     16,  16,  16,  16,  16,  16,   0,   0,   0,   0,   0, 153,   0,   0,  83,   0,
+     16,  16,  16,  16,  16,  16,   0,   0,   0,   0,   0, 166,   0,   0,  83,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
      81,  81,  81,  81,  81,  81,   0,   0,  81,  81,  81,  81,  81,  81,   0,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
@@ -26651,12 +27180,12 @@ static RE_UINT8 re_all_cases_table_3[] = {
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
      84,  84,  85,  85,  86,  86,  87,  87,  90,  90,  88,  88,  75,  75,   0,   0,
      81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,
-     81,  81,   0,  28,   0,   0,   0,   0,  81,  81,  84,  84,  28,   0, 143,   0,
+     81,  81,   0,  28,   0,   0,   0,   0,  81,  81,  84,  84,  28,   0, 156,   0,
       0,   0,   0,  28,   0,   0,   0,   0,  85,  85,  86,  86,  28,   0,   0,   0,
      81,  81,   0,   0,   0,   0,   0,   0,  81,  81,  87,  87,   0,   0,   0,   0,
      81,  81,   0,   0,   0,  89,   0,   0,  81,  81,  88,  88,  89,   0,   0,   0,
       0,   0,   0,  28,   0,   0,   0,   0,  90,  90,  75,  75,  28,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 160,   0,   0,   0, 135, 137,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 173,   0,   0,   0, 148, 150,   0,   0,   0,   0,
       0,   0,  91,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  91,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26672,17 +27201,17 @@ static RE_UINT8 re_all_cases_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,
      77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
      16,  16, 101, 102, 103,  50,  52,  28,  28,  23,  23,  25,  25, 104, 105, 106,
     107,   0,  16,  16,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0, 108, 106,
      16,  16,  16,  16,   0,   0,   0,   0,   0,   0,   0,  25,  25,  23,  23,   0,
       0,   0,  16,  16,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      80,  80,  80,  80,  80,  80,   0,  80,   0,   0,   0,   0,   0,  80,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 154,  22,  16,  16,  16,  16,
+     16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 167,  22,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26696,8 +27225,8 @@ static RE_UINT8 re_all_cases_table_3[] = {
      16,  16,  16,  16,  77,   0,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
      16,  16,  16,  16,  16,  16,  16,  16,  16,  16, 111, 112, 113, 114, 115,   0,
     116, 117, 118, 119,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
-      0,   0,  16,  16,  77, 120, 121,  28,  28,  23,  23,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     16,  16,  16,  16,  77, 120, 121,  28,  28,  23,  23,   0,   0,   0,   0,   0,
+     16,  16,   0,   0,   0,   0,  16,  16,  16,  16,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
@@ -26722,6 +27251,12 @@ static RE_UINT8 re_all_cases_table_3[] = {
     126, 126, 126, 126,   0,   0,   0,   0, 129, 129, 129, 129, 129, 129, 129, 129,
     128, 128, 128, 128, 128, 128, 128, 128, 126, 126, 126, 126, 126, 126, 126, 126,
     127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    130, 131, 132, 131, 133, 131, 132, 131, 130, 134, 135,   0, 136, 134, 135, 134,
+     59, 137, 138, 137, 139, 137, 138, 137,  59, 140, 141,   0, 142, 140, 141, 140,
+     59, 137, 138,   0, 139, 137,   0, 130, 131, 132, 131, 133, 131, 132, 131, 130,
+    134, 135,   0, 136, 134, 135, 134,  59, 137, 138, 137, 139, 137, 138, 137,  59,
+    140, 141,   0, 142, 140, 141, 140,  59, 137, 138,   0, 139, 137,   0,   0,   0,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
      60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,
@@ -26730,11 +27265,11 @@ static RE_UINT8 re_all_cases_table_3[] = {
      65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,  65,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
-    130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130, 131, 131,
-    130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130, 132, 132,
-     72,  72, 130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130,
-    131, 131, 130, 130,  98,  98, 130, 130,  99,  99, 130, 130,  98,  98, 130, 130,
-    132, 132,  72,  72,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143, 144, 144,
+    143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143, 145, 145,
+     72,  72, 143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143,
+    144, 144, 143, 143,  98,  98, 143, 143,  99,  99, 143, 143,  98,  98, 143, 143,
+    145, 145,  72,  72,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -26869,6 +27404,19 @@ static RE_AllCases re_all_cases_table_4[] = {
     {   56, {    0,     0}},
     {   88, {    0,     0}},
     {  104, {    0,     0}},
+    {  231, {    0,     0}},
+    {  233, {    0,     0}},
+    {  235, {    0,     0}},
+    {  239, {    0,     0}},
+    {  217, {    0,     0}},
+    {  219, {    0,     0}},
+    {  223, {    0,     0}},
+    {   41, {    0,     0}},
+    {   43, {    0,     0}},
+    {   47, {    0,     0}},
+    {   57, {    0,     0}},
+    {   59, {    0,     0}},
+    {   63, {    0,     0}},
     {   34, {    0,     0}},
     {   62, {    0,     0}},
     {   94, {    0,     0}},
@@ -27035,83 +27583,83 @@ static RE_UINT8 re_simple_folding_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 56, 57, 58,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 59,  0,  0,  0,  0,  0,  0,
-    60, 61,  0,  0,  0, 62, 63,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    60, 61,  0,  0,  0, 62, 63,  0,  0,  0,  0, 64, 65,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 64, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 66, 67,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 68,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 67,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 68, 69,  0,  0,  0,  0,  0,  0,
+     0,  0, 69,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 70, 71,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  18,  18,  18,  18,  18,  18,  18,  18,  66,  18,  18,  18,  18,  18,  18,
+      0,  18,  18,  18,  18,  18,  18,  18,  18,  79,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  81,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     65,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  49,
+     78,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  55,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,  67,   3,   0,   5,   0,   3,   0,  64,
-      0,  78,   1,   0,   1,   0,  78,  10,   0,  81,  80,   5,   0,   0,  36,  79,
-     77,   3,   0,  84,  85,   0,  86,  86,   1,   0,   0,   0,  84,  83,   0,  82,
-      1,   0,   1,   0,   1,   0,  70,  10,   0,  71,   0,   0,   1,   0,  70,  17,
-      0,  73,  72,   5,   0,   3,   0,  69,   1,   0,   0,   0,   1,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,  80,   3,   0,   5,   0,   3,   0,  77,
+      0,  91,   1,   0,   1,   0,  91,  10,   0,  94,  93,   5,   0,   0,  42,  92,
+     90,   3,   0,  97,  98,   0,  99,  99,   1,   0,   0,   0,  97,  96,   0,  95,
+      1,   0,   1,   0,   1,   0,  83,  10,   0,  84,   0,   0,   1,   0,  83,  17,
+      0,  86,  85,   5,   0,   3,   0,  82,   1,   0,   0,   0,   1,   0,   0,   0,
       0,   0,   0,   0,   2,   3,   0,   9,   1,   0,   4,   5,   0,   3,   0,  17,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   2,   1,   0,   1,   0,  41,  32,   1,   0,   1,   0,   1,   0,   1,   0,
-     75,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 110,   5,   0,  74, 109,   0,
-      0,   3,   0,  76,  60,  58,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      0,   2,   1,   0,   1,   0,  47,  38,   1,   0,   1,   0,   1,   0,   1,   0,
+     88,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 123,   5,   0,  87, 122,   0,
+      0,   3,   0,  89,  66,  64,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  63,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  53,
-      0,   0,   0,   0,   0,   0,  24,   0,  20,  22,  20,   0,  29,   0,  31,  30,
+      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  59,
+      0,   0,   0,   0,   0,   0,  25,   0,  20,  22,  20,   0,  35,   0,  37,  36,
       0,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     39,  39,   0,  39,  39,  39,  39,  39,  39,  39,  39,  39,   0,   0,   0,   0,
+     45,  45,   0,  45,  45,  45,  45,  45,  45,  45,  45,  45,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  14,
-     40,  44,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     46,  50,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     33,  26,   0,   0,  34,  29,   0,  10,   0,   8,   1,   0,   0,  52,  51,  51,
-     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     39,  29,   0,   0,  40,  35,   0,  10,   0,   8,   1,   0,   0,  58,  57,  57,
+     41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
      10,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   3,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     61,  61,  61,  61,  61,  61,  61,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
-    113, 113, 113, 113, 113, 113,   0, 113,   0,   0,   0,   0,   0, 113,   0,   0,
+      0,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
+     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
+     67,  67,  67,  67,  67,  67,  67,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+    126, 126, 126, 126, 126, 126,   0, 126,   0,   0,   0,   0,   0, 126,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-     89,  90,  91,  92,  93,  94,  95,  96, 130,   0,   0,   0,   0,   0,   0,   0,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
-     87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,   0,   0,  87,  87,  87,
+    102, 103, 104, 105, 106, 107, 108, 109, 143,   0,   0,   0,   0,   0,   0,   0,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   0,   0, 100, 100, 100,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,  62,   0,   0,  98,   0,
+      1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,  75,   0,   0, 111,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
@@ -27121,27 +27669,27 @@ static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  59,  59,  10,   0,  97,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  56,  56,  57,  57,  10,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  55,  55,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  54,  54,   7,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,  50,  50,  52,  52,  10,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 101,   0,   0,   0,  99, 100,   0,   0,   0,   0,
-      0,   0,  48,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  65,  65,  10,   0, 110,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  62,  62,  63,  63,  10,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  61,  61,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   6,   6,  60,  60,   7,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,  56,  56,  58,  58,  10,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 114,   0,   0,   0, 112, 113,   0,   0,   0,   0,
+      0,   0,  54,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  42,  42,  45,  45,  46,  46,  45,  45,  42,  42,
-     15,  15,  16,  16,  15,  15,  21,  21,  24,  24,  25,  25,  24,  24,  21,  21,
+      0,   0,   0,   0,   0,   0,  48,  48,  51,  51,  52,  52,  51,  51,  48,  48,
+     15,  15,  16,  16,  15,  15,  21,  21,  25,  25,  27,  27,  25,  25,  21,  21,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
-     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
-     47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,   0,
+     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
+     41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
+     53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,  53,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0, 102, 111, 103,   0,   0,  10,   0,   3,   0,   5,   0, 106, 104, 107,
-    105,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 108, 107,
+      1,   0, 115, 124, 116,   0,   0,  10,   0,   3,   0,   5,   0, 119, 117, 120,
+    118,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 121, 120,
       1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   3,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,
@@ -27151,42 +27699,46 @@ static RE_UINT8 re_simple_folding_table_3[] = {
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 128,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 122,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 141,   1,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 135,   0,   0,
       1,   0,   1,   0,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 120, 123, 121, 118, 119,   0,
-    114, 116, 115,  88,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   1,   0,  35, 117, 129,  10,   0,   3,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 133, 136, 134, 131, 132,   0,
+    127, 129, 128, 101,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,  41, 130, 142,  10,   0,   3,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-    124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
-    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-    126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
-    125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
-      0,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,   0,   0,   0,   0,   0,
-     23,  23,  23,  23,  23,  23,  23,  23,  27,  27,  27,  27,  27,  27,  27,  27,
-     23,  23,  23,  23,  23,  23,  23,  23,  37,  37,  37,  37,  37,  37,  37,  37,
-     43,  43,  43,  43,  43,  43,  43,  43,   0,   0,   0,   0,   0,   0,   0,   0,
+    140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+    138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+      0,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,   0,   0,   0,   0,   0,
+     23,  23,  23,  23,  23,  23,  23,  23,  30,  30,  30,  30,  30,  30,  30,  30,
+     23,  23,  23,  23,  23,  23,  23,  23,  43,  43,  43,  43,  43,  43,  43,  43,
+     49,  49,  49,  49,  49,  49,  49,  49,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     43,  43,  43,  43,  43,  43,  43,  43,  37,  37,  37,  37,  37,  37,  37,  37,
-     23,  23,  23,  23,  23,  23,  23,  23,  27,  27,  27,  27,  27,  27,  27,  27,
+     49,  49,  49,  49,  49,  49,  49,  49,  43,  43,  43,  43,  43,  43,  43,  43,
+     23,  23,  23,  23,  23,  23,  23,  23,  30,  30,  30,  30,  30,  30,  30,  30,
      23,  23,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,  29,
-     29,  29,  29,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
-     39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     71,  72,  73,  72,  74,  72,  73,  72,  71,  68,  69,   0,  70,  68,  69,  68,
+     22,  24,  26,  24,  28,  24,  26,  24,  22,  31,  32,   0,  34,  31,  32,  31,
+     22,  24,  26,   0,  28,  24,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,
+     35,  35,  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
+     45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,  45,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     19,  19,  21,  21,  19,  19,  25,  25,  19,  19,  21,  21,  19,  19,  28,  28,
-     19,  19,  21,  21,  19,  19,  25,  25,  19,  19,  21,  21,  19,  19,  38,  38,
-     40,  40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     19,  19,  21,  21,  19,  19,  27,  27,  19,  19,  21,  21,  19,  19,  33,  33,
+     19,  19,  21,  21,  19,  19,  27,  27,  19,  19,  21,  21,  19,  19,  44,  44,
+     46,  46,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -27194,20 +27746,21 @@ static RE_UINT16 re_simple_folding_table_4[] = {
         0,     1,     2,     3,     6,     7,     8,     9,
        11,    14,    15,    16,    19,    22,    24,    26,
        30,    31,    32,    34,    37,    38,    39,    40,
-       42,    46,    48,    56,    62,    64,    65,    67,
-       72,    74,    76,    80,    83,    88,    94,    96,
-       98,    99,   102,   104,   105,   106,   110,   112,
-      124,   127,   128,   130,   134,   140,   144,   172,
-      186,   190,   201,   202,   205,   208,   250,   252,
-      268,   345,   376,   391,   777,   805,   806,   810,
-      825,   827,   935,   958,   963,   971,   978,   982,
-      989,   991,  1002,  1007,  1011,  1015,  1023,  3136,
-     3296,  6322,  6325,  6332,  6338,  6342,  6343,  6348,
-     6372,  7175,  7745,  8513,  8654,  8943, 11785, 11801,
-    11807, 11810, 11836, 11839, 11841, 11864, 11871, 12574,
-    15776, 15840, 42286, 42287, 42294, 42311, 42433, 42436,
-    42444, 42445, 42472, 42487, 47152, 47184, 47216, 47312,
-    47620, 47688, 47811
+       41,    42,    43,    46,    47,    48,    56,    57,
+       59,    62,    63,    64,    65,    67,    72,    74,
+       76,    80,    83,    88,    94,    96,    98,    99,
+      102,   104,   105,   106,   110,   112,   124,   127,
+      128,   130,   134,   140,   144,   172,   186,   190,
+      201,   202,   205,   208,   217,   219,   223,   231,
+      233,   235,   239,   250,   252,   268,   345,   376,
+      391,   777,   805,   806,   810,   825,   827,   935,
+      958,   963,   971,   978,   982,   989,   991,  1002,
+     1007,  1011,  1015,  1023,  3136,  3296,  6322,  6325,
+     6332,  6338,  6342,  6343,  6348,  6372,  7175,  7745,
+     8513,  8654,  8943, 11785, 11801, 11807, 11810, 11836,
+    11839, 11841, 11864, 11871, 12574, 15776, 15840, 42286,
+    42287, 42294, 42311, 42433, 42436, 42444, 42445, 42472,
+    42487, 47152, 47184, 47216, 47312, 47620, 47688, 47811
 };
 
 RE_UINT32 re_get_simple_case_folding(RE_UINT32 codepoint) {
@@ -27324,117 +27877,117 @@ static RE_UINT8 re_full_folding_table_2[] = {
      0,  0,  0,  0,  0,  0,  0,  0, 61,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0, 62,  0,  0,  0,  0,  0,  0,
-    63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    63, 64,  0,  0,  0, 65, 66,  0,  0,  0,  0, 67, 68,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0, 67, 68,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0, 69, 70,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0, 69,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0, 71,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0, 70,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0, 71, 72,  0,  0,  0,  0,  0,  0,
+     0,  0, 72,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0, 73, 74,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
 };
 
 static RE_UINT8 re_full_folding_table_3[] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  18,  18,  18,  18,  18,  18,  18,  18,  80,  18,  18,  18,  18,  18,  18,
+      0,  18,  18,  18,  18,  18,  18,  18,  18,  93,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  96,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,  61,
+     18,  18,  18,  18,  18,  18,  18,   0,  18,  18,  18,  18,  18,  18,  18,  67,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     79,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  51,
-      0,   3,   0,   5,   0,   3,   0,  10,   0, 100,   1,   0,   1,   0,   1,   0,
+     92,   0,   1,   0,   1,   0,   1,   0,   0,   3,   0,   5,   0,   3,   0,  57,
+      0,   3,   0,   5,   0,   3,   0,  10,   0, 113,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,  81,   3,   0,   5,   0,   3,   0,  77,
-      0,  93,   1,   0,   1,   0,  93,  10,   0,  96,  95,   5,   0,   0,  37,  94,
-     92,   3,   0,  99, 101,   0, 102, 102,   1,   0,   0,   0,  99,  98,   0,  97,
-      1,   0,   1,   0,   1,   0,  85,  10,   0,  86,   0,   0,   1,   0,  85,  17,
-      0,  88,  87,   5,   0,   3,   0,  84,   1,   0,   0,   0,   1,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,  94,   3,   0,   5,   0,   3,   0,  90,
+      0, 106,   1,   0,   1,   0, 106,  10,   0, 109, 108,   5,   0,   0,  43, 107,
+    105,   3,   0, 112, 114,   0, 115, 115,   1,   0,   0,   0, 112, 111,   0, 110,
+      1,   0,   1,   0,   1,   0,  98,  10,   0,  99,   0,   0,   1,   0,  98,  17,
+      0, 101, 100,   5,   0,   3,   0,  97,   1,   0,   0,   0,   1,   0,   0,   0,
       0,   0,   0,   0,   2,   3,   0,   9,   1,   0,   4,   5,   0,   3,   0,  17,
       0,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     82,   2,   1,   0,   1,   0,  42,  33,   1,   0,   1,   0,   1,   0,   1,   0,
-     90,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 158,   5,   0,  89, 157,   0,
-      0,   3,   0,  91,  72,  70,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     95,   2,   1,   0,   1,   0,  48,  39,   1,   0,   1,   0,   1,   0,   1,   0,
+    103,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,   0,   0,   0,   0,   0,   0, 171,   5,   0, 102, 170,   0,
+      0,   3,   0, 104,  78,  76,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,  76,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,  89,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  57,
-      0,   0,   0,   0,   0,   0,  25,   0,  20,  22,  20,   0,  30,   0,  32,  31,
-     24,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     40,  40,   0,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,   0,   0,   0,
-     49,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,  63,
+      0,   0,   0,   0,   0,   0,  26,   0,  20,  22,  20,   0,  36,   0,  38,  37,
+     25,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
+     46,  46,   0,  46,  46,  46,  46,  46,  46,  46,  46,  46,   0,   0,   0,   0,
+     55,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  14,
-     41,  45,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+     47,  51,   0,   0,   0,  12,  13,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-     34,  27,   0,   0,  35,  30,   0,  10,   0,   8,   1,   0,   0,  55,  54,  54,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     40,  30,   0,   0,  41,  36,   0,  10,   0,   8,   1,   0,   0,  61,  60,  60,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
      10,   3,   0,   5,   0,   3,   0,  10,   0,   3,   0,   5,   0,   3,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
-     73,  73,  73,  73,  73,  73,  73,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,  74,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
+     79,  79,  79,  79,  79,  79,  79,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,  83,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-    160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-    161, 161, 161, 161, 161, 161,   0, 161,   0,   0,   0,   0,   0, 161,   0,   0,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+    174, 174, 174, 174, 174, 174,   0, 174,   0,   0,   0,   0,   0, 174,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-    105, 106, 107, 108, 109, 110, 111, 112, 178,   0,   0,   0,   0,   0,   0,   0,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
-    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,   0,   0, 103, 103, 103,
+    118, 119, 120, 121, 122, 123, 124, 125, 191,   0,   0,   0,   0,   0,   0,   0,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,   0,   0, 116, 116, 116,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0, 146, 142, 144, 141, 145,  75,   0,   0, 143,   0,
+      1,   0,   1,   0,   1,   0, 159, 155, 157, 154, 158,  88,   0,   0, 156,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   0,   0,
-    139,   0, 140,   0, 137,   0, 138,   0,   0,   6,   0,   6,   0,   6,   0,   6,
+    152,   0, 153,   0, 150,   0, 151,   0,   0,   6,   0,   6,   0,   6,   0,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   6,   6,   6,   6,   6,   6,   6,   6,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     53,  53,  53,  53,  53,  53,  53,  53,  56,  56,  56,  56,  56,  56,  56,  56,
-     62,  62,  62,  62,  62,  62,  62,  62,  64,  64,  64,  64,  64,  64,  64,  64,
-     67,  67,  67,  67,  67,  67,  67,  67,  69,  69,  69,  69,  69,  69,  69,  69,
-      0,   0,  68, 113, 118,   0, 116, 114,   6,   6,  71,  71, 117,   0, 115,   0,
-      0,   0,  63, 135, 129,   0, 134, 133,  65,  65,  66,  66, 136,   0,   0,   0,
-      0,   0, 130, 128,   0,   0, 132, 131,   6,   6,  60,  60,   0,   0,   0,   0,
-      0,   0, 123, 122, 121,   0, 120, 119,   6,   6,  59,  59,   7,   0,   0,   0,
-      0,   0,  58, 125, 125,   0, 127, 126,  52,  52,  55,  55, 124,   0,   0,   0,
-      0,   0,   0,   0,   0,   0, 149,   0,   0,   0, 147, 148,   0,   0,   0,   0,
-      0,   0,  50,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     59,  59,  59,  59,  59,  59,  59,  59,  62,  62,  62,  62,  62,  62,  62,  62,
+     68,  68,  68,  68,  68,  68,  68,  68,  70,  70,  70,  70,  70,  70,  70,  70,
+     73,  73,  73,  73,  73,  73,  73,  73,  75,  75,  75,  75,  75,  75,  75,  75,
+      0,   0,  74, 126, 131,   0, 129, 127,   6,   6,  77,  77, 130,   0, 128,   0,
+      0,   0,  69, 148, 142,   0, 147, 146,  71,  71,  72,  72, 149,   0,   0,   0,
+      0,   0, 143, 141,   0,   0, 145, 144,   6,   6,  66,  66,   0,   0,   0,   0,
+      0,   0, 136, 135, 134,   0, 133, 132,   6,   6,  65,  65,   7,   0,   0,   0,
+      0,   0,  64, 138, 138,   0, 140, 139,  58,  58,  61,  61, 137,   0,   0,   0,
+      0,   0,   0,   0,   0,   0, 162,   0,   0,   0, 160, 161,   0,   0,   0,   0,
+      0,   0,  56,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,  11,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,  43,  43,  46,  46,  47,  47,  46,  46,  43,  43,
-     15,  15,  16,  16,  15,  15,  21,  21,  25,  25,  26,  26,  25,  25,  21,  21,
+      0,   0,   0,   0,   0,   0,  49,  49,  52,  52,  53,  53,  52,  52,  49,  49,
+     15,  15,  16,  16,  15,  15,  21,  21,  26,  26,  28,  28,  26,  26,  21,  21,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,  27,
-     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
-     48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,  48,   0,
+     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
+     42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,  42,
+     54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,  54,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0, 150, 159, 151,   0,   0,  10,   0,   3,   0,   5,   0, 154, 152, 155,
-    153,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 156, 155,
+      1,   0, 163, 172, 164,   0,   0,  10,   0,   3,   0,   5,   0, 167, 165, 168,
+    166,   0,   1,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0, 169, 168,
       1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   3,   0,   0,
       0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,
@@ -27444,44 +27997,48 @@ static RE_UINT8 re_full_folding_table_3[] = {
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
       1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 176,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 170,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   5,   0, 189,   1,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   5,   0, 183,   0,   0,
       1,   0,   1,   0,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 168, 171, 169, 166, 167,   0,
-    162, 164, 163, 104,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
-      0,   0,   1,   0,  36, 165, 177,  10,   0,   3,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      1,   0,   1,   0,   1,   0,   1,   0,   1,   0, 181, 184, 182, 179, 180,   0,
+    175, 177, 176, 117,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,
+      1,   0,   1,   0,  42, 178, 190,  10,   0,   3,   0,   0,   0,   0,   0,   0,
+      1,   0,   0,   0,   0,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-    173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
-    182, 183, 180, 181, 179, 185, 184,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0, 189, 186, 187, 190, 188,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,   0,   0,   0,   0,   0,
-     23,  23,  23,  23,  23,  23,  23,  23,  28,  28,  28,  28,  28,  28,  28,  28,
-     23,  23,  23,  23,  23,  23,  23,  23,  38,  38,  38,  38,  38,  38,  38,  38,
-     44,  44,  44,  44,  44,  44,  44,  44,   0,   0,   0,   0,   0,   0,   0,   0,
+    188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+    185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+    186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+    187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+    186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+    195, 196, 193, 194, 192, 198, 197,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0, 202, 199, 200, 203, 201,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,   0,   0,   0,   0,   0,
+     23,  23,  23,  23,  23,  23,  23,  23,  31,  31,  31,  31,  31,  31,  31,  31,
+     23,  23,  23,  23,  23,  23,  23,  23,  44,  44,  44,  44,  44,  44,  44,  44,
+     50,  50,  50,  50,  50,  50,  50,  50,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     44,  44,  44,  44,  44,  44,  44,  44,  38,  38,  38,  38,  38,  38,  38,  38,
-     23,  23,  23,  23,  23,  23,  23,  23,  28,  28,  28,  28,  28,  28,  28,  28,
+     50,  50,  50,  50,  50,  50,  50,  50,  44,  44,  44,  44,  44,  44,  44,  44,
+     23,  23,  23,  23,  23,  23,  23,  23,  31,  31,  31,  31,  31,  31,  31,  31,
      23,  23,  23,  23,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,  30,
-     30,  30,  30,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
-     40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     84,  85,  86,  85,  87,  85,  86,  85,  84,  80,  81,   0,  82,  80,  81,  80,
+     22,  24,  27,  24,  29,  24,  27,  24,  22,  32,  33,   0,  35,  32,  33,  32,
+     22,  24,  27,   0,  29,  24,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,  36,
+     36,  36,  36,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
+     46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,  46,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
      18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,  18,
-     19,  19,  21,  21,  19,  19,  26,  26,  19,  19,  21,  21,  19,  19,  29,  29,
-     19,  19,  21,  21,  19,  19,  26,  26,  19,  19,  21,  21,  19,  19,  39,  39,
-     41,  41,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+     19,  19,  21,  21,  19,  19,  28,  28,  19,  19,  21,  21,  19,  19,  34,  34,
+     19,  19,  21,  21,  19,  19,  28,  28,  19,  19,  21,  21,  19,  19,  45,  45,
+     47,  47,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
 };
 
@@ -27510,12 +28067,18 @@ static RE_FullCaseFolding re_full_folding_table_4[] = {
     {{   38,     0,     0}},
     {{   39,     0,     0}},
     {{   40,     0,     0}},
+    {{   41,     0,     0}},
     {{   41,   776,   769}},
     {{   42,     0,     0}},
+    {{   43,     0,     0}},
     {{   46,     0,     0}},
+    {{   47,     0,     0}},
     {{   48,     0,     0}},
     {{   56,     0,     0}},
+    {{   57,     0,     0}},
+    {{   59,     0,     0}},
     {{   62,     0,     0}},
+    {{   63,     0,     0}},
     {{   64,     0,     0}},
     {{   65,     0,     0}},
     {{   67,     0,     0}},
@@ -27560,7 +28123,14 @@ static RE_FullCaseFolding re_full_folding_table_4[] = {
     {{  202,     0,     0}},
     {{  205,     0,     0}},
     {{  208,     0,     0}},
+    {{  217,     0,     0}},
+    {{  219,     0,     0}},
+    {{  223,     0,     0}},
     {{  226,  1410,     0}},
+    {{  231,     0,     0}},
+    {{  233,     0,     0}},
+    {{  235,     0,     0}},
+    {{  239,     0,     0}},
     {{  250,     0,     0}},
     {{  252,     0,     0}},
     {{  268,     0,     0}},
diff --git a/regex_3/_regex_unicode.h b/regex_3/_regex_unicode.h
index ea8e48ccc049a96f4ca28609fc9ec386fcf22e9d..87847c84b94a27d636668c26ab0c864430a33e48 100644
--- a/regex_3/_regex_unicode.h
+++ b/regex_3/_regex_unicode.h
@@ -193,9 +193,9 @@ typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 codepoint);
 #define RE_LBREAK_REGIONALINDICATOR 41
 #define RE_LBREAK_EMODIFIER 42
 
-extern char* re_strings[1447];
+extern char* re_strings[1472];
 extern RE_Property re_properties[173];
-extern RE_PropertyValue re_property_values[1589];
+extern RE_PropertyValue re_property_values[1619];
 extern RE_UINT16 re_expand_on_folding[104];
 extern RE_GetPropertyFunc re_get_property[94];
 
diff --git a/regex_3/regex.py b/regex_3/regex.py
index 7ea6a3d22499967939d6c895a9bf7db917c30ac1..0795a9422a6d1d3e85e2b6897da4358619ddaef2 100644
--- a/regex_3/regex.py
+++ b/regex_3/regex.py
@@ -241,7 +241,7 @@ __all__ = ["cache_all", "compile", "DEFAULT_VERSION", "escape", "findall",
   "VERSION1", "X", "VERBOSE", "W", "WORD", "error", "Regex", "__version__",
   "__doc__"]
 
-__version__ = "2.5.91"
+__version__ = "2.5.103"
 
 # --------------------------------------------------------------------
 # Public interface.
@@ -723,6 +723,10 @@ Pattern = type(_pat)
 Match = type(_pat.match(''))
 del _pat
 
+# Make Pattern public for typing annotations.
+__all__.append("Pattern")
+__all__.append("Match")
+
 # We'll define an alias for the 'compile' function so that the repr of a
 # pattern object is eval-able.
 Regex = compile
diff --git a/regex_3/test_regex.py b/regex_3/test_regex.py
index 3d7efeda34294cbc50c31e6f7b0f67bbf5699010..6d3f7740281cffd20ee763121efe4ef12a08df50 100644
--- a/regex_3/test_regex.py
+++ b/regex_3/test_regex.py
@@ -4247,6 +4247,54 @@ thing
         self.assertEqual(regex.findall(r'(?i)(\d+){i<=2:[ab]}', '123X4Y5'),
           ['123', '4', '5'])
 
+        # Git issue 403: Fuzzy matching with wrong distance (unnecessary substitutions)
+        self.assertEqual(regex.match(r'^(test){e<=5}$', 'terstin',
+          flags=regex.B).fuzzy_counts, (0, 3, 0))
+
+        # Git issue 408: regex fails with a quantified backreference but succeeds with repeated backref
+        self.assertEqual(bool(regex.match(r"(?:(x*)\1\1\1)*x$", "x" * 5)), True)
+        self.assertEqual(bool(regex.match(r"(?:(x*)\1{3})*x$", "x" * 5)), True)
+
+        # Git issue 415: Fuzzy character restrictions don't apply to insertions at "right edge"
+        self.assertEqual(regex.match(r't(?:es){s<=1:\d}t', 'te5t').group(),
+          'te5t')
+        self.assertEqual(regex.match(r't(?:es){s<=1:\d}t', 'tezt'), None)
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t', 'tes5t').group(),
+          'tes5t')
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t', 'teszt'), None)
+        self.assertEqual(regex.match(r't(?:es){i<=1:\d}t',
+          'tes5t').fuzzy_changes, ([], [3], []))
+        self.assertEqual(regex.match(r't(es){i<=1,0<e<=1}t', 'tes5t').group(),
+          'tes5t')
+        self.assertEqual(regex.match(r't(?:es){i<=1,0<e<=1:\d}t',
+          'tes5t').fuzzy_changes, ([], [3], []))
+
+        # Git issue 421: Fatal Python error: Segmentation fault
+        self.assertEqual(regex.compile("(\d+ week|\d+ days)").split("7 days"), ['', '7 days', ''])
+        self.assertEqual(regex.compile("(\d+ week|\d+ days)").split("10 days"), ['', '10 days', ''])
+
+        self.assertEqual(regex.compile("[ ]* Name[ ]*\* ").search("  Name *"), None)
+
+        self.assertEqual(regex.compile('a|\\.*pb\\.py').search('.geojs'), None)
+
+        p = regex.compile('(?<=(?:\\A|\\W|_))(\\d+ decades? ago|\\d+ minutes ago|\\d+ seconds ago|in \\d+ decades?|\\d+ months ago|in \\d+ minutes|\\d+ minute ago|in \\d+ seconds|\\d+ second ago|\\d+ years ago|in \\d+ months|\\d+ month ago|\\d+ weeks ago|\\d+ hours ago|in \\d+ minute|in \\d+ second|in \\d+ years|\\d+ year ago|in \\d+ month|in \\d+ weeks|\\d+ week ago|\\d+ days ago|in \\d+ hours|\\d+ hour ago|in \\d+ year|in \\d+ week|in \\d+ days|\\d+ day ago|in \\d+ hour|\\d+ min ago|\\d+ sec ago|\\d+ yr ago|\\d+ mo ago|\\d+ wk ago|in \\d+ day|\\d+ hr ago|in \\d+ min|in \\d+ sec|in \\d+ yr|in \\d+ mo|in \\d+ wk|in \\d+ hr)(?=(?:\\Z|\\W|_))', flags=regex.I | regex.V0)
+        self.assertEqual(p.search('1 month ago').group(), '1 month ago')
+        self.assertEqual(p.search('9 hours 1 minute ago').group(), '1 minute ago')
+        self.assertEqual(p.search('10 months 1 hour ago').group(), '1 hour ago')
+        self.assertEqual(p.search('1 month 10 hours ago').group(), '10 hours ago')
+
+        # Git issue 427: Possible bug with BESTMATCH
+        sequence ='TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCT'
+        pattern = '(?P<insert>.*)(?P<anchor>CTTCC){e<=1}(?P<umi>([ACGT]){4,6})(?P<sid>CAATACCGACTCCTCACTGTGT){e<=2}(?P<end>([ACGT]){0,6}$)'
+
+        m = regex.match(pattern, sequence, flags=regex.BESTMATCH)
+        self.assertEqual(m.span(), (0, 50))
+        self.assertEqual(m.groupdict(), {'insert': 'TTCAGACGTGTGCT', 'anchor': 'CTTCC', 'umi': 'GATCT', 'sid': 'CAATACCGACTCCTCACTGTGT', 'end': 'GTCT'})
+
+        m = regex.match(pattern, sequence, flags=regex.ENHANCEMATCH)
+        self.assertEqual(m.span(), (0, 50))
+        self.assertEqual(m.groupdict(), {'insert': 'TTCAGACGTGTGCT', 'anchor': 'CTTCC', 'umi': 'GATCT', 'sid': 'CAATACCGACTCCTCACTGTGT', 'end': 'GTCT'})
+
     def test_fuzzy_ext(self):
         self.assertEqual(bool(regex.fullmatch(r'(?r)(?:a){e<=1:[a-z]}', 'e')),
           True)
diff --git a/setup.py b/setup.py
index b50274d4de5003f8002038ad45ee06927c0421b7..9a287d86e74977d808619b6703a80262983dff3f 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ with open('README.rst') as file:
 
 setup(
     name='regex',
-    version='2020.11.13',
+    version='2021.10.8',
     description='Alternative regular expression module, to replace re.',
     long_description=long_description,
     author='Matthew Barnett',
@@ -25,11 +25,11 @@ setup(
         'Intended Audience :: Developers',
         'License :: OSI Approved :: Apache Software License',
         'Operating System :: OS Independent',
-        'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
         'Topic :: Scientific/Engineering :: Information Analysis',
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Text Processing',
diff --git a/tools/build_regex_unicode.py b/tools/build_regex_unicode.py
index 34fd68fe7cd85b72ca9be3490e2cc533fea855ff..7f376e5310faad31953b7dce67c6fa6c75007199 100644
--- a/tools/build_regex_unicode.py
+++ b/tools/build_regex_unicode.py
@@ -1,4 +1,4 @@
-#! python3.8
+#! python3.9
 # -*- coding: utf-8 -*-
 #
 # This Python script parses the Unicode data files and generates the C files
@@ -1700,7 +1700,7 @@ typedef RE_UINT32 (*RE_GetPropertyFunc)(RE_UINT32 codepoint);
         h_file.write('int re_get_full_case_folding(RE_UINT32 codepoint, RE_UINT32* folded);\n')
 
 # Whether to update the Unicode data files from the Unicode website.
-UNICODE_VERSION = '13.0.0'
+UNICODE_VERSION = '14.0.0'
 
 # The URL from which the Unicode data files can be obtained.
 unicode_data_base = 'http://www.unicode.org/Public/UNIDATA/'