Upgrade pcre to pcre2-10.40

Test: make
Change-Id: I5d7243566be5bc6b8e2a5eaf08dec2d08a565f84
diff --git a/testdata/testoutput4 b/testdata/testoutput4
index f43d940..48f3b30 100644
--- a/testdata/testoutput4
+++ b/testdata/testoutput4
@@ -1,4 +1,4 @@
-# This set of tests is for UTF support, including Unicode properties. The 
+# This set of tests is for UTF support, including Unicode properties. The
 # Unicode tests are all compatible with all versions of Perl >= 5.10, but
 # some of the property tests may differ because of different versions of
 # Unicode in use by PCRE2 and Perl.
@@ -6,7 +6,7 @@
 # WARNING: Use only / as the pattern delimiter. Although pcre2test supports
 # a number of delimiters, all those other than / give problems with the
 # perltest.sh script.
-    
+
 #newline_default lf anycrlf any
 #perltest
 
@@ -1183,35 +1183,35 @@
 /^\d*\w{4}/utf
     1234
  0: 1234
-\= Expect no match     
+\= Expect no match
     123
 No match
 
 /^[^b]*\w{4}/utf
     aaaa
  0: aaaa
-\= Expect no match     
+\= Expect no match
     aaa
 No match
 
 /^[^b]*\w{4}/i,utf
     aaaa
  0: aaaa
-\= Expect no match     
+\= Expect no match
     aaa
 No match
 
 /^\x{100}*.{4}/utf
     \x{100}\x{100}\x{100}\x{100}
  0: \x{100}\x{100}\x{100}\x{100}
-\= Expect no match     
+\= Expect no match
     \x{100}\x{100}\x{100}
 No match
 
 /^\x{100}*.{4}/i,utf
     \x{100}\x{100}\x{100}\x{100}
  0: \x{100}\x{100}\x{100}\x{100}
-\= Expect no match     
+\= Expect no match
     \x{100}\x{100}\x{100}
 No match
 
@@ -1226,113 +1226,113 @@
 /^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/utf
     #\x{10000}#\x{100}#\x{10ffff}#
  0: #\x{10000}#\x{100}#\x{10ffff}#
-    
-# Unicode property support tests 
+
+# Unicode property support tests
 
 /^\pC\pL\pM\pN\pP\pS\pZ</utf
     \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
  0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
-    \np\x{300}9!\$ < 
+    \np\x{300}9!\$ <
  0: \x{0a}p\x{300}9!$ <
-\= Expect no match     
-    ap\x{300}9!\$ < 
+\= Expect no match
+    ap\x{300}9!\$ <
 No match
-  
+
 /^\PC/utf
     X
  0: X
-\= Expect no match     
+\= Expect no match
     \x7f
 No match
-  
+
 /^\PL/utf
     9
  0: 9
-\= Expect no match     
+\= Expect no match
     \x{c0}
 No match
-  
+
 /^\PM/utf
     X
  0: X
-\= Expect no match     
+\= Expect no match
     \x{30f}
 No match
-  
+
 /^\PN/utf
     X
  0: X
-\= Expect no match     
+\= Expect no match
     \x{660}
 No match
-  
+
 /^\PP/utf
     X
  0: X
-\= Expect no match 
+\= Expect no match
     \x{66c}
 No match
-  
+
 /^\PS/utf
     X
  0: X
-\= Expect no match 
+\= Expect no match
     \x{f01}
 No match
-  
+
 /^\PZ/utf
     X
  0: X
-\= Expect no match 
+\= Expect no match
     \x{1680}
 No match
-    
+
 /^\p{Cc}/utf
     \x{017}
  0: \x{17}
-    \x{09f} 
+    \x{09f}
  0: \x{9f}
 \= Expect no match
-    \x{0600} 
+    \x{0600}
 No match
-  
+
 /^\p{Cf}/utf
     \x{601}
  0: \x{601}
 \= Expect no match
-    \x{09f} 
+    \x{09f}
 No match
-  
+
 /^\p{Cn}/utf
     \x{e0000}
  0: \x{e0000}
 \= Expect no match
-    \x{09f} 
+    \x{09f}
 No match
-  
+
 /^\p{Co}/utf
     \x{f8ff}
  0: \x{f8ff}
 \= Expect no match
-    \x{09f} 
+    \x{09f}
 No match
-  
+
 /^\p{Ll}/utf
     a
  0: a
-\= Expect no match 
+\= Expect no match
     Z
 No match
-    \x{e000}  
+    \x{e000}
 No match
-  
+
 /^\p{Lm}/utf
     \x{2b0}
  0: \x{2b0}
 \= Expect no match
-    a 
+    a
 No match
-  
+
 /^\p{Lo}/utf
     \x{1bb}
  0: \x{1bb}
@@ -1344,32 +1344,32 @@
  0: \x{4d00}
     \x{4db4}
  0: \x{4db4}
-    \x{4db5}     
+    \x{4db5}
  0: \x{4db5}
-    \x{4db6} 
+    \x{4db6}
  0: \x{4db6}
 \= Expect no match
-    a 
+    a
 No match
     \x{2b0}
 No match
-  
+
 /^\p{Lt}/utf
     \x{1c5}
  0: \x{1c5}
 \= Expect no match
-    a 
+    a
 No match
     \x{2b0}
 No match
-  
+
 /^\p{Lu}/utf
     A
  0: A
 \= Expect no match
     \x{2b0}
 No match
-  
+
 /^\p{Mc}/utf
     \x{903}
  0: \x{903}
@@ -1378,7 +1378,7 @@
 No match
     \x{300}
 No match
-       
+
 /^\p{Me}/utf
     \x{488}
  0: \x{488}
@@ -1389,7 +1389,7 @@
 No match
     \x{300}
 No match
-  
+
 /^\p{Mn}/utf
     \x{300}
  0: \x{300}
@@ -1398,7 +1398,7 @@
 No match
     \x{903}
 No match
-  
+
 /^\p{Nd}+/utf
     0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
  0: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}
@@ -1409,7 +1409,7 @@
 \= Expect no match
     X
 No match
-  
+
 /^\p{Nl}/utf
     \x{16ee}
  0: \x{16ee}
@@ -1418,7 +1418,7 @@
 No match
     \x{966}
 No match
-  
+
 /^\p{No}/utf
     \x{b2}
  0: \x{b2}
@@ -1429,7 +1429,7 @@
 No match
     \x{16ee}
 No match
-  
+
 /^\p{Pc}/utf
     \x5f
  0: _
@@ -1442,7 +1442,7 @@
 No match
     \x{58a}
 No match
-  
+
 /^\p{Pd}/utf
     -
  0: -
@@ -1453,7 +1453,7 @@
 No match
     \x{203f}
 No match
-  
+
 /^\p{Pe}/utf
     )
  0: )
@@ -1476,7 +1476,7 @@
 No match
     \x{f3c}
 No match
-  
+
 /^\p{Pf}/utf
     \x{bb}
  0: \x{bb}
@@ -1487,7 +1487,7 @@
 No match
     \x{203f}
 No match
-  
+
 /^\p{Pi}/utf
     \x{ab}
  0: \x{ab}
@@ -1498,7 +1498,7 @@
 No match
     \x{203f}
 No match
-  
+
 /^\p{Po}/utf
     !
  0: !
@@ -1509,7 +1509,7 @@
 No match
     \x{203f}
 No match
-  
+
 /^\p{Ps}/utf
     (
  0: (
@@ -1530,7 +1530,7 @@
 No match
     \x{f3b}
 No match
-  
+
 /^\p{Sk}/utf
     \x{2c2}
  0: \x{2c2}
@@ -1539,7 +1539,7 @@
 No match
     \x{9f2}
 No match
-  
+
 /^\p{Sm}+/utf
     +<|~\x{ac}\x{2044}
  0: +<|~\x{ac}\x{2044}
@@ -1548,18 +1548,18 @@
 No match
     \x{9f2}
 No match
-  
+
 /^\p{So}/utf
     \x{a6}
  0: \x{a6}
-    \x{482} 
+    \x{482}
  0: \x{482}
 \= Expect no match
     X
 No match
     \x{9f2}
 No match
-  
+
 /^\p{Zl}/utf
     \x{2028}
  0: \x{2028}
@@ -1568,7 +1568,7 @@
 No match
     \x{2029}
 No match
-  
+
 /^\p{Zp}/utf
     \x{2029}
  0: \x{2029}
@@ -1577,77 +1577,77 @@
 No match
     \x{2028}
 No match
-  
+
 /\p{Nd}+(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}AB
  1: AB
-  
+
 /\p{Nd}+?(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}
  1: \x{661}\x{662}
-  
+
 /\p{Nd}{2,}(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}AB
  1: AB
-  
+
 /\p{Nd}{2,}?(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}A
  1: \x{662}A
-  
+
 /\p{Nd}*(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}AB
  1: AB
-  
+
 /\p{Nd}*?(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}
  1: \x{660}\x{661}
-  
+
 /\p{Nd}{2}(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}A
  1: \x{662}A
-  
+
 /\p{Nd}{2,3}(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}AB
  1: AB
-  
+
 /\p{Nd}{2,3}?(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}A
  1: \x{662}A
-  
+
 /\p{Nd}?(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}
  1: \x{661}\x{662}
-  
+
 /\p{Nd}??(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}
  1: \x{660}\x{661}
-  
+
 /\p{Nd}*+(..)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}AB
  1: AB
-  
+
 /\p{Nd}*+(...)/utf
     \x{660}\x{661}\x{662}ABC
  0: \x{660}\x{661}\x{662}ABC
  1: ABC
-  
+
 /\p{Nd}*+(....)/utf
 \= Expect no match
     \x{660}\x{661}\x{662}ABC
 No match
-  
+
 /(?<=A\p{Nd})XYZ/utf
     A2XYZ
  0: XYZ
@@ -1658,18 +1658,18 @@
 \= Expect no match
     AXYZ
 No match
-    XYZ     
+    XYZ
 No match
-    
+
 /(?<!\pL)XYZ/utf
     1XYZ
  0: XYZ
-    AB=XYZ.. 
+    AB=XYZ..
  0: XYZ
-    XYZ 
+    XYZ
  0: XYZ
 \= Expect no match
-    WXYZ 
+    WXYZ
 No match
 
 /[\P{Nd}]+/utf
@@ -1685,7 +1685,7 @@
 \= Expect no match
     11111111111111111111111111111111111111111111111111111111111111111111111
 No match
-     
+
 /\P{Nd}+/utf
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1717,22 +1717,22 @@
 /\pL/utf
     a
  0: a
-    A 
+    A
  0: A
 
 /\pL/i,utf
     a
  0: a
-    A 
+    A
  0: A
-    
+
 /\p{Lu}/utf
     A
  0: A
     aZ
  0: Z
 \= Expect no match
-    abc   
+    abc
 No match
 
 /\p{Ll}/utf
@@ -1741,14 +1741,14 @@
     Az
  0: z
 \= Expect no match
-    ABC   
+    ABC
 No match
 
 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
  0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 \= Expect no match
-    a\x{391}\x{10427}\x{ff3a}\x{1fb0}   
+    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
 No match
     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
 No match
@@ -1762,7 +1762,7 @@
 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
  0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
-    a\x{391}\x{10427}\x{ff3a}\x{1fb0}   
+    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
  0: a\x{391}\x{10427}\x{ff3a}\x{1fb0}
     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
  0: A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
@@ -1794,41 +1794,41 @@
  0: \x{ff3a}
     \x{3b1}
  0: \x{3b1}
-    \x{ff5a}   
+    \x{ff5a}
  0: \x{ff5a}
-    
+
 /^(\X*)C/utf
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
  0: A\x{300}\x{301}\x{302}BC
  1: A\x{300}\x{301}\x{302}B
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
 
 /^(\X*?)C/utf
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
  0: A\x{300}\x{301}\x{302}BC
  1: A\x{300}\x{301}\x{302}B
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  0: A\x{300}\x{301}\x{302}BC
  1: A\x{300}\x{301}\x{302}B
 
 /^(\X*)(.)/utf
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
  0: A\x{300}\x{301}\x{302}BCA
  1: A\x{300}\x{301}\x{302}BC
  2: A
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
  2: C
 
 /^(\X*?)(.)/utf
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
  0: A
  1: 
  2: A
-    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
+    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
  0: A
  1: 
  2: A
@@ -1851,7 +1851,7 @@
     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
  0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}D
  1: D
-    
+
 /^\X{2,3}?(.)/utf
     A\x{300}\x{301}B\x{300}X
  0: A\x{300}\x{301}B\x{300}X
@@ -1869,25 +1869,18 @@
 /^\X/utf
     A
  0: A
-    A\x{300}BC 
+    A\x{300}BC
  0: A\x{300}
-    A\x{300}\x{301}\x{302}BC 
+    A\x{300}\x{301}\x{302}BC
  0: A\x{300}\x{301}\x{302}
-    \x{300}  
+    \x{300}
  0: \x{300}
 
 /^\p{Han}+/utf
     \x{2e81}\x{3007}\x{2f804}\x{31a0}
  0: \x{2e81}\x{3007}\x{2f804}
 \= Expect no match
-    \x{2e7f}  
-No match
-
-/^\P{Katakana}+/utf
-    \x{3105}
- 0: \x{3105}
-\= Expect no match
-    \x{30ff}  
+    \x{2e7f}
 No match
 
 /^[\p{Arabic}]/utf
@@ -1896,7 +1889,14 @@
     \x{060b}
  0: \x{60b}
 \= Expect no match
-    X\x{06e9}   
+    X\x{06e9}
+No match
+
+/^\P{Katakana}+/utf
+    \x{3105}
+ 0: \x{3105}
+\= Expect no match
+    \x{30ff}
 No match
 
 /^[\P{Yi}]/utf
@@ -1905,32 +1905,32 @@
 \= Expect no match
     \x{a014}
 No match
-    \x{a4c6}   
+    \x{a4c6}
 No match
-    
+
 /^\p{Any}X/utf
     AXYZ
  0: AX
-    \x{1234}XYZ 
+    \x{1234}XYZ
  0: \x{1234}X
 \= Expect no match
-    X  
+    X
 No match
-    
+
 /^\P{Any}X/utf
 \= Expect no match
     AX
 No match
-    
+
 /^\p{Any}?X/utf
     XYZ
  0: X
     AXYZ
  0: AX
-    \x{1234}XYZ 
+    \x{1234}XYZ
  0: \x{1234}X
 \= Expect no match
-    ABXYZ   
+    ABXYZ
 No match
 
 /^\P{Any}?X/utf
@@ -1939,9 +1939,9 @@
 \= Expect no match
     AXYZ
 No match
-    \x{1234}XYZ 
+    \x{1234}XYZ
 No match
-    ABXYZ   
+    ABXYZ
 No match
 
 /^\p{Any}+X/utf
@@ -1990,26 +1990,26 @@
 /^[\p{Any}]X/utf
     AXYZ
  0: AX
-    \x{1234}XYZ 
+    \x{1234}XYZ
  0: \x{1234}X
 \= Expect no match
-    X  
+    X
 No match
-    
+
 /^[\P{Any}]X/utf
 \= Expect no match
     AX
 No match
-    
+
 /^[\p{Any}]?X/utf
     XYZ
  0: X
     AXYZ
  0: AX
-    \x{1234}XYZ 
+    \x{1234}XYZ
  0: \x{1234}X
 \= Expect no match
-    ABXYZ   
+    ABXYZ
 No match
 
 /^[\P{Any}]?X/utf
@@ -2018,9 +2018,9 @@
 \= Expect no match
     AXYZ
 No match
-    \x{1234}XYZ 
+    \x{1234}XYZ
 No match
-    ABXYZ   
+    ABXYZ
 No match
 
 /^[\p{Any}]+X/utf
@@ -2069,20 +2069,20 @@
 /^\p{Any}{3,5}?/utf
     abcdefgh
  0: abc
-    \x{1234}\n\r\x{3456}xyz 
+    \x{1234}\n\r\x{3456}xyz
  0: \x{1234}\x{0a}\x{0d}
 
 /^\p{Any}{3,5}/utf
     abcdefgh
  0: abcde
-    \x{1234}\n\r\x{3456}xyz 
+    \x{1234}\n\r\x{3456}xyz
  0: \x{1234}\x{0a}\x{0d}\x{3456}x
 
 /^\P{Any}{3,5}?/utf
 \= Expect no match
     abcdefgh
 No match
-    \x{1234}\n\r\x{3456}xyz 
+    \x{1234}\n\r\x{3456}xyz
 No match
 
 /^\p{L&}X/utf
@@ -2097,7 +2097,7 @@
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^[\p{L&}]X/utf
@@ -2112,7 +2112,7 @@
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^\p{L&}+X/utf
@@ -2120,18 +2120,18 @@
  0: AX
     aXY
  0: aX
-    AbcdeXyz 
+    AbcdeXyz
  0: AbcdeX
     \x{1c5}AbXY
  0: \x{1c5}AbX
-    abcDEXypqreXlmn 
+    abcDEXypqreXlmn
  0: abcDEXypqreX
 \= Expect no match
     \x{1bb}XY
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^[\p{L&}]+X/utf
@@ -2139,18 +2139,18 @@
  0: AX
     aXY
  0: aX
-    AbcdeXyz 
+    AbcdeXyz
  0: AbcdeX
     \x{1c5}AbXY
  0: \x{1c5}AbX
-    abcDEXypqreXlmn 
+    abcDEXypqreXlmn
  0: abcDEXypqreX
 \= Expect no match
     \x{1bb}XY
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^\p{L&}+?X/utf
@@ -2158,18 +2158,18 @@
  0: AX
     aXY
  0: aX
-    AbcdeXyz 
+    AbcdeXyz
  0: AbcdeX
     \x{1c5}AbXY
  0: \x{1c5}AbX
-    abcDEXypqreXlmn 
+    abcDEXypqreXlmn
  0: abcDEX
 \= Expect no match
     \x{1bb}XY
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^[\p{L&}]+?X/utf
@@ -2177,18 +2177,18 @@
  0: AX
     aXY
  0: aX
-    AbcdeXyz 
+    AbcdeXyz
  0: AbcdeX
     \x{1c5}AbXY
  0: \x{1c5}AbX
-    abcDEXypqreXlmn 
+    abcDEXypqreXlmn
  0: abcDEX
 \= Expect no match
     \x{1bb}XY
 No match
     \x{2b0}XY
 No match
-    !XY      
+    !XY
 No match
 
 /^\P{L&}X/utf
@@ -2201,7 +2201,7 @@
 \= Expect no match
     \x{1c5}XY
 No match
-    AXY      
+    AXY
 No match
 
 /^[\P{L&}]X/utf
@@ -2214,7 +2214,7 @@
 \= Expect no match
     \x{1c5}XY
 No match
-    AXY      
+    AXY
 No match
 
 /^(\p{Z}[^\p{C}\p{Z}]+)*$/
@@ -2223,7 +2223,7 @@
  1: \xa0!
 
 /^[\pL](abc)(?1)/
-    AabcabcYZ    
+    AabcabcYZ
  0: Aabcabc
  1: abc
 
@@ -2238,7 +2238,7 @@
  0: \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
 
 # Check property support in non-UTF mode
- 
+
 /\p{L}{4}/
     123abcdefg
  0: abcd
@@ -2249,15 +2249,15 @@
 \= Expect no match
     \x8aBCD
 No match
-  
+
 /\X?\d/
 \= Expect no match
-    \x8aBCD 
+    \x8aBCD
 No match
 
 /\P{L}?\d/
 \= Expect no match
-    \x8aBCD 
+    \x8aBCD
 No match
 
 /[\PPP\x8a]{1,}\x80/
@@ -2267,54 +2267,54 @@
 /^[\p{Arabic}]/utf
     \x{604}
  0: \x{604}
-    \x{60e} 
+    \x{60e}
  0: \x{60e}
-    \x{656} 
+    \x{656}
  0: \x{656}
-    \x{657} 
+    \x{657}
  0: \x{657}
-    \x{658} 
+    \x{658}
  0: \x{658}
-    \x{659} 
+    \x{659}
  0: \x{659}
-    \x{65a} 
+    \x{65a}
  0: \x{65a}
-    \x{65b} 
+    \x{65b}
  0: \x{65b}
-    \x{65c} 
+    \x{65c}
  0: \x{65c}
-    \x{65d} 
+    \x{65d}
  0: \x{65d}
-    \x{65e} 
+    \x{65e}
  0: \x{65e}
     \x{65f}
  0: \x{65f}
-    \x{66a} 
+    \x{66a}
  0: \x{66a}
-    \x{6e9} 
+    \x{6e9}
  0: \x{6e9}
     \x{6ef}
  0: \x{6ef}
-    \x{6fa}  
+    \x{6fa}
  0: \x{6fa}
 
 /^\p{Cyrillic}/utf
-    \x{1d2b} 
+    \x{1d2b}
  0: \x{1d2b}
-    
+
 /^\p{Common}/utf
     \x{2116}
  0: \x{2116}
-    \x{1D183}  
+    \x{1D183}
  0: \x{1d183}
 
 /^\p{Inherited}/utf
-    \x{200c} 
+    \x{200c}
  0: \x{200c}
 \= Expect no match
     \x{64a}
 No match
-    \x{656}     
+    \x{656}
 No match
 
 /^\p{Shavian}/utf
@@ -2322,13 +2322,13 @@
  0: \x{10450}
     \x{1047f}
  0: \x{1047f}
-    
+
 /^\p{Deseret}/utf
     \x{10400}
  0: \x{10400}
     \x{1044f}
  0: \x{1044f}
-    
+
 /^\p{Osmanya}/utf
     \x{10480}
  0: \x{10480}
@@ -2343,8 +2343,48 @@
 No match
     \x{1049f}
 No match
-    \x{104aa}           
+    \x{104aa}
 No match
+    
+/\p{katakana}/utf
+    \x{30a1}
+ 0: \x{30a1}
+    \x{3001} 
+ 0: \x{3001}
+
+/\p{scx:katakana}/utf
+    \x{30a1}
+ 0: \x{30a1}
+    \x{3001} 
+ 0: \x{3001}
+    
+/\p{script extensions:katakana}/utf
+    \x{30a1}
+ 0: \x{30a1}
+    \x{3001} 
+ 0: \x{3001}
+    
+/\p{sc:katakana}/utf
+    \x{30a1}
+ 0: \x{30a1}
+\= Expect no match     
+    \x{3001} 
+No match
+    
+/\p{script:katakana}/utf
+    \x{30a1}
+ 0: \x{30a1}
+\= Expect no match     
+    \x{3001}
+No match
+    
+/\p{sc:katakana}{3,}/utf
+    \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
+ 0: \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}
+
+/\p{sc:katakana}{3,}?/utf
+    \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
+ 0: \x{30a1}\x{30fa}\x{32d0}
 
 /\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/utf
     \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
@@ -2353,14 +2393,14 @@
 /\x{a77d}\x{1d79}/i,utf
     \x{a77d}\x{1d79}
  0: \x{a77d}\x{1d79}
-    \x{1d79}\x{a77d} 
+    \x{1d79}\x{a77d}
  0: \x{1d79}\x{a77d}
 
 /\x{a77d}\x{1d79}/utf
     \x{a77d}\x{1d79}
  0: \x{a77d}\x{1d79}
-\= Expect no match 
-    \x{1d79}\x{a77d} 
+\= Expect no match
+    \x{1d79}\x{a77d}
 No match
 
 /(A)\1/i,utf
@@ -2390,7 +2430,7 @@
     \x{10b}\x{10a}
  0: \x{10b}\x{10a}
  1: \x{10b}
-    
+
 # The next two tests are for property support in non-UTF mode
 
 /(?:\p{Lu}|\x20)+/
@@ -2412,29 +2452,29 @@
 /^[[:xdigit:]]*/utf,ucp
     1a\x{660}\x{bef}\x{16ee}
  0: 1a
-  
+
 /^\d+/utf,ucp
     1\x{660}\x{bef}\x{16ee}
  0: 1\x{660}\x{bef}
-  
+
 /^[[:digit:]]+/utf,ucp
     1\x{660}\x{bef}\x{16ee}
  0: 1\x{660}\x{bef}
 
 /^>\s+/utf,ucp
-    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
+    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
  0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
-  
+
 /^>\pZ+/utf,ucp
-    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
+    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
  0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}
-  
+
 /^>[[:space:]]*/utf,ucp
-    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
+    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
  0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
 
 /^>[[:blank:]]*/utf,ucp
-    >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028} 
+    >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
  0: > \x{a0}\x{1680}\x{2000}\x{202f}\x{09}
 
 /^[[:alpha:]]*/utf,ucp
@@ -2446,7 +2486,7 @@
  0: Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
 
 /^[[:cntrl:]]*/utf,ucp
-    \x{0}\x{09}\x{1f}\x{7f}\x{9f} 
+    \x{0}\x{09}\x{1f}\x{7f}\x{9f}
  0: \x{00}\x{09}\x{1f}\x{7f}\x{9f}
 
 /^[[:graph:]]*/utf,ucp
@@ -2463,28 +2503,28 @@
 
 /\p{Zs}*?\R/
 \= Expect no match
-    a\xFCb   
+    a\xFCb
 No match
 
 /\p{Zs}*\R/
-\= Expect no match 
-    a\xFCb   
+\= Expect no match
+    a\xFCb
 No match
 
 /ⱥ/i,utf

  0: \x{2c65}
-    Ⱥx 
+    Ⱥx
  0: \x{23a}
-    Ⱥ 
+    Ⱥ
  0: \x{23a}
 
 /[ⱥ]/i,utf

  0: \x{2c65}
-    Ⱥx 
+    Ⱥx
  0: \x{23a}
-    Ⱥ 
+    Ⱥ
  0: \x{23a}
 
 /Ⱥ/i,utf
@@ -2492,8 +2532,8 @@
  0: \x{23a}

  0: \x{2c65}
-    
-# These are tests for extended grapheme clusters  
+
+# These are tests for extended grapheme clusters
 
 /^\X/utf,aftertext
     G\x{34e}\x{34e}X
@@ -2511,7 +2551,7 @@
     \x{1100}\x{34e}X
  0: \x{1100}\x{34e}
  0+ X
-    \x{1b04}\x{1b04}X 
+    \x{1b04}\x{1b04}X
  0: \x{1b04}\x{1b04}
  0+ X
     *These match up to the roman letters
@@ -2631,12 +2671,12 @@
     *There are no Prepend characters, so we can't test Prepend, CR
  0: *
  0+ There are no Prepend characters, so we can't test Prepend, CR
-    
+
 /^(?>\X{2})X/utf,aftertext
     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
  0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
  0+ 
-    
+
 /^\X{2,4}X/utf,aftertext
     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
  0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
@@ -2688,21 +2728,21 @@
  0: \x{1e9e}\x{df}
 
 /\x{1f88}+/i,utf
-    \x{1f88}\x{1f80} 
+    \x{1f88}\x{1f80}
  0: \x{1f88}\x{1f80}
 
 /[z\x{1f88}]+/i,utf
-    \x{1f88}\x{1f80} 
+    \x{1f88}\x{1f80}
  0: \x{1f88}\x{1f80}
-    
+
 # Check a reference with more than one other case
 
-/^(\x{00b5})\1{2}$/i,utf        
-    \x{00b5}\x{039c}\x{03bc} 
+/^(\x{00b5})\1{2}$/i,utf
+    \x{00b5}\x{039c}\x{03bc}
  0: \x{b5}\x{39c}\x{3bc}
  1: \x{b5}
-    
-# Characters with more than one other case; test in classes 
+
+# Characters with more than one other case; test in classes
 
 /[z\x{00b5}]+/i,utf
     \x{00b5}\x{039c}\x{03bc}
@@ -2845,15 +2885,15 @@
  0: \x{39a}\x{3ba}\x{3f0}
 
 /[z\x{03a0}]+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 /[z\x{03c0}]+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 /[z\x{03d6}]+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 /[z\x{03a1}]+/i,utf
@@ -2881,15 +2921,15 @@
  0: \x{3a3}\x{3c2}\x{3c3}
 
 /[z\x{03a6}]+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 /[z\x{03c6}]+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 /[z\x{03d5}]+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 /[z\x{03c9}]+/i,utf
@@ -2916,7 +2956,7 @@
     \x{1e60}\x{1e61}\x{1e9b}
  0: \x{1e60}\x{1e61}\x{1e9b}
 
-# Perl 5.12.4 gets these wrong, but 5.15.3 is OK 
+# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
 
 /[z\x{004b}]+/i,utf
     \x{004b}\x{006b}\x{212a}
@@ -2941,8 +2981,8 @@
 /[z\x{017f}]+/i,utf
     \x{0053}\x{0073}\x{017f}
  0: Ss\x{17f}
-    
-# --------------------------------------  
+
+# --------------------------------------
 
 /(ΣΆΜΟΣ) \1/i,utf
     ΣΆΜΟΣ ΣΆΜΟΣ
@@ -2957,7 +2997,7 @@
     σάμος σάμοσ
  0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
  1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
-    σάμος ΣΆΜΟΣ  
+    σάμος ΣΆΜΟΣ
  0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
  1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
 
@@ -2974,7 +3014,7 @@
     σάμος σάμοσ
  0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
  1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
-    σάμος ΣΆΜΟΣ  
+    σάμος ΣΆΜΟΣ
  0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
  1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
 
@@ -2986,7 +3026,7 @@
  0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
  1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
 
-# Perl matches these 
+# Perl matches these
 
 /\x{00b5}+/i,utf
     \x{00b5}\x{039c}\x{03bc}
@@ -3094,7 +3134,7 @@
 /\x{03d0}+/i,utf
     \x{0392}\x{03b2}\x{03d0}
  0: \x{392}\x{3b2}\x{3d0}
-    
+
 
 /\x{0395}+/i,utf
     \x{0395}\x{03b5}\x{03f5}
@@ -3124,7 +3164,7 @@
 /\x{03f4}+/i,utf
     \x{0398}\x{03b8}\x{03d1}\x{03f4}
  0: \x{398}\x{3b8}\x{3d1}\x{3f4}
-    
+
 
 /\x{039a}+/i,utf
     \x{039a}\x{03ba}\x{03f0}
@@ -3137,18 +3177,18 @@
 /\x{03f0}+/i,utf
     \x{039a}\x{03ba}\x{03f0}
  0: \x{39a}\x{3ba}\x{3f0}
-    
+
 
 /\x{03a0}+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 /\x{03c0}+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 /\x{03d6}+/i,utf
-    \x{03a0}\x{03c0}\x{03d6} 
+    \x{03a0}\x{03c0}\x{03d6}
  0: \x{3a0}\x{3c0}\x{3d6}
 
 
@@ -3176,18 +3216,18 @@
 /\x{03c3}+/i,utf
     \x{03A3}\x{03C2}\x{03C3}
  0: \x{3a3}\x{3c2}\x{3c3}
-    
+
 
 /\x{03a6}+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 /\x{03c6}+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 /\x{03d5}+/i,utf
-    \x{03a6}\x{03c6}\x{03d5} 
+    \x{03a6}\x{03c6}\x{03d5}
  0: \x{3a6}\x{3c6}\x{3d5}
 
 
@@ -3202,7 +3242,7 @@
 /\x{2126}+/i,utf
     \x{03c9}\x{03a9}\x{2126}
  0: \x{3c9}\x{3a9}\x{2126}
-    
+
 
 /\x{1e60}+/i,utf
     \x{1e60}\x{1e61}\x{1e9b}
@@ -3215,7 +3255,7 @@
 /\x{1e9b}+/i,utf
     \x{1e60}\x{1e61}\x{1e9b}
  0: \x{1e60}\x{1e61}\x{1e9b}
-    
+
 
 /\x{1e9e}+/i,utf
     \x{1e9e}\x{00df}
@@ -3224,17 +3264,17 @@
 /\x{00df}+/i,utf
     \x{1e9e}\x{00df}
  0: \x{1e9e}\x{df}
-    
+
 
 /\x{1f88}+/i,utf
-    \x{1f88}\x{1f80} 
+    \x{1f88}\x{1f80}
  0: \x{1f88}\x{1f80}
 
 /\x{1f80}+/i,utf
-    \x{1f88}\x{1f80} 
+    \x{1f88}\x{1f80}
  0: \x{1f88}\x{1f80}
 
-# Perl 5.12.4 gets these wrong, but 5.15.3 is OK 
+# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
 
 /\x{004b}+/i,utf
     \x{004b}\x{006b}\x{212a}
@@ -3265,14 +3305,14 @@
     1234
  0: 1234
 \= Expect no match
-    123 
+    123
 No match
 
 /^\X*\w{4}/utf
     1234
  0: 1234
 \= Expect no match
-    123  
+    123
 No match
 
 /^A\s+Z/utf,ucp
@@ -3349,7 +3389,7 @@
 No match
     \x{e001f}
 No match
-    \x{e0080} 
+    \x{e0080}
 No match
 
 /^[[:print:]]+$/utf,ucp
@@ -3357,9 +3397,9 @@
  0: Space: \x{a0}
     \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
  0: \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
-    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a} 
+    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
  0: \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
-    \x{202f}\x{205f} 
+    \x{202f}\x{205f}
  0: \x{202f}\x{205f}
     \x{3000}
  0: \x{3000}
@@ -3414,7 +3454,7 @@
 No match
     \x{e001f}
 No match
-    \x{e0080} 
+    \x{e0080}
 No match
 
 /^[[:punct:]]+$/utf,ucp
@@ -3422,12 +3462,12 @@
  0: $+<=>^`|~
     !\"#%&'()*,-./:;?@[\\]_{}
  0: !"#%&'()*,-./:;?@[\]_{}
-    \x{a1}\x{a7}  
+    \x{a1}\x{a7}
  0: \x{a1}\x{a7}
-    \x{37e} 
+    \x{37e}
  0: \x{37e}
 \= Expect no match
-    abcde  
+    abcde
 No match
 
 /^[[:^graph:]]+$/utf,ucp
@@ -3481,9 +3521,9 @@
 No match
     \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
 No match
-    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a} 
+    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
 No match
-    \x{202f}\x{205f} 
+    \x{202f}\x{205f}
 No match
     \x{3000}
 No match
@@ -3523,22 +3563,22 @@
 No match
 
 /^[[:^punct:]]+$/utf,ucp
-    abcde  
+    abcde
  0: abcde
 \= Expect no match
     \$+<=>^`|~
 No match
     !\"#%&'()*,-./:;?@[\\]_{}
 No match
-    \x{a1}\x{a7}  
+    \x{a1}\x{a7}
 No match
-    \x{37e} 
+    \x{37e}
 No match
 
 /[RST]+/i,utf,ucp
     Ss\x{17f}
  0: Ss\x{17f}
-    
+
 /[R-T]+/i,utf,ucp
     Ss\x{17f}
  0: Ss\x{17f}
@@ -3550,8 +3590,8 @@
 /^s?c/im,utf
     scat
  0: sc
-    
-# The next four tests are for repeated caseless back references when the 
+
+# The next four tests are for repeated caseless back references when the
 # code unit length of the matched text is different to that of the original
 # group in the UTF-8 case.
 
@@ -3607,7 +3647,7 @@
  0: x
 
 /[[:punct:]]/utf,ucp
-    \x{b4} 
+    \x{b4}
 No match
 
 /[[:^ascii:]]/utf,ucp
@@ -3619,12 +3659,12 @@
  0: \x{300}
     \x{37e}
  0: \x{37e}
-\= Expect no match     
+\= Expect no match
     aa
 No match
     99
 No match
-    
+
 /[[:^ascii:]\w]/utf,ucp
     aa
  0: a
@@ -3662,7 +3702,7 @@
  0: \x{100}
     \x{200}
  0: \x{200}
-\= Expect no match     
+\= Expect no match
     aa
 No match
     99
@@ -3692,7 +3732,7 @@
 /(?=.*b)\pL/
     11bb
  0: b
-    
+
 /(?(?=.*b)(?=.*b)\pL|.*c)/
     11bb
  0: b
@@ -3704,10 +3744,10 @@
 /^\x{123}+?$/i,utf,no_auto_possess
     \x{123}\x{122}\x{123}
  0: \x{123}\x{122}\x{123}
-\= Expect no match     
+\= Expect no match
     \x{123}\x{124}\x{123}
 No match
-    
+
 /\N{U+1234}/utf
     \x{1234}
  0: \x{1234}
@@ -3715,7 +3755,7 @@
 /[\N{U+1234}]/utf
     \x{1234}
  0: \x{1234}
-    
+
 # Test the full list of Unicode "Pattern White Space" characters that are to
 # be ignored by /x. The pattern lines below may show up oddly in text editors
 # or when listed to the screen. Note that characters such as U+2002, which are
@@ -3731,8 +3771,8 @@
 \= Expect no match
     AB
 No match
-    
-# ------- 
+
+# -------
 
 /[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
     \x{99}\x{99}\x{99}
@@ -3745,7 +3785,7 @@
 /[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
     \x{99}\x{99}\x{99}
  0: \x{99}\x{99}\x{99}
-    
+
 # Script run tests
 
 /^(*script_run:.{4})/utf
@@ -3767,7 +3807,7 @@
  0: \x{3105}\x{2e80}\x{2e80}\x{3105}
     \x{0300}cd!                        Inherited Latin Latin Common
  0: \x{300}cd!
-    \x{0391}12\x{03a9}                 Greek Common-digits Greek 
+    \x{0391}12\x{03a9}                 Greek Common-digits Greek
  0: \x{391}12\x{3a9}
     \x{0400}12\x{fe2f}                 Cyrillic Common-digits Cyrillic
  0: \x{400}12\x{fe2f}
@@ -3791,7 +3831,7 @@
  0: \x{980}\x{9e6}\x{9e7}\x{993}
     !cde                               Common Latin Latin Latin
  0: !cde
-    A..B                               Latin Common Common Latin 
+    A..B                               Latin Common Common Latin
  0: A..B
     0abc                               Ascii-digit Latin Latin Latin
  0: 0abc
@@ -3808,13 +3848,13 @@
 No match
     \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
 No match
-    \x{0391}\x{09e6}\x{09e7}\x{03a9}   Greek Bengali digits Greek 
+    \x{0391}\x{09e6}\x{09e7}\x{03a9}   Greek Bengali digits Greek
 No match
     \x{0600}7\x{0669}\x{1eef1}         Arabic ascii-digit Arabic-digit Arabic
 No match
     \x{0600}\x{0669}7\x{1eef1}         Arabic Arabic-digit ascii-digit Arabic
 No match
-    A5\x{ff19}B                        Latin Common-ascii/notascii-digits Latin 
+    A5\x{ff19}B                        Latin Common-ascii/notascii-digits Latin
 No match
     \x{0300}cd\x{0391}                 Inherited Latin Latin Greek
 No match
@@ -3826,7 +3866,7 @@
 No match
     \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
 No match
-    
+
 /^(*sr:.{4}|..)/utf
     \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
  0: \x{2e80}\x{3105}
@@ -3858,7 +3898,7 @@
 /^(*sr:\x{2e80}*)\x{2e80}/utf
     \x{2e80}\x{2e80}\x{3105}           Han Han Bopomofo
  0: \x{2e80}\x{2e80}
-    
+
 /^(*sr:.*)Test/utf
     Test script run on an empty string
  0: Test
@@ -3876,7 +3916,7 @@
 \= Expect no match
     \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
 No match
-    
+
 /^(*sr:\S*)/utf
     \x{1cf4}\x{20f0}\x{900}\x{11305}   [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Gran
  0: \x{1cf4}\x{20f0}\x{900}
@@ -3890,7 +3930,7 @@
  0: \x{20f0}ABC
     XYZ\x{20f0}ABC                     Lat [Dev,Gran,Lat] Lat
  0: XYZ\x{20f0}ABC
-    \x{a36}\x{a33}\x{900}              [Dev,...] [Dev,...] Dev  
+    \x{a36}\x{a33}\x{900}              [Dev,...] [Dev,...] Dev
  0: \x{a36}\x{a33}
     \x{3001}\x{2e80}\x{3041}\x{30a1}   [Bopo, Han, etc] Han Hira Kata
  0: \x{3001}\x{2e80}\x{3041}\x{30a1}
@@ -3960,7 +4000,7 @@
  0: \x{102e0}\x{6d4}
     \x{102e0}\x{06d4}\x{10d30}     [Arabic Coptic] [Arab Rohingya] Rohingya
  0: \x{102e0}\x{6d4}
-    
+
 # Test loop breaking for empty string match
 
 /^(*sr:A|)*BCD/utf
@@ -3968,16 +4008,16 @@
  0: AABCD
     ABCD
  0: ABCD
-    BCD 
+    BCD
  0: BCD
-    
-# The use of (*ACCEPT) breaks script run checking 
+
+# The use of (*ACCEPT) breaks script run checking
 
 /^(*sr:.*(*ACCEPT)ZZ)/utf
     \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
  0: \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
 
-# ------- 
+# -------
 
 # Test group names containing non-ASCII letters and digits
 
@@ -4021,15 +4061,408 @@
  0: \xf3aaa\xe4\xea\xeb\xfea
 
 /Я/i,utf
-    \x{42f} 
+    \x{42f}
  0: \x{42f}
-    \x{44f} 
+    \x{44f}
  0: \x{44f}
 
 /(?=Я)/i,utf
-    \x{42f} 
+    \x{42f}
  0: 
-    \x{44f} 
+    \x{44f}
  0: 
 
+# -----------------------------------------------------------------------------
+# Tests for bidi control and bidi class properties.
+
+/\p{ bidi_control }/utf
+    -->\x{202c}<--
+ 0: \x{202c}
+
+/\p{bidicontrol}+/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/\p{bidic}+?/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}
+
+/\p{bidi_control}++/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidi_c}]/utf
+    -->\x{202c}<--
+ 0: \x{202c}
+
+/[\p{bidicontrol}]+/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidicontrol}]+?/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}
+
+/[\p{bidicontrol}]++/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: \x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: \x{2066}\x{2067}\x{2068}\x{2069}
+
+/[\p{bidicontrol}<>]+/utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: >\x{61c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: >\x{2066}\x{2067}\x{2068}\x{2069}<
+
+/\P{bidicontrol}+/g,utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: -->
+ 0: <--
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: -->
+ 0: <--
+
+/\p{^bidicontrol}+/g,utf
+    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
+ 0: -->
+ 0: <--
+    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
+ 0: -->
+ 0: <--
+
+/\p{bidi class = al}/utf
+    -->\x{061D}<--
+ 0: \x{61d}
+
+/\p{bc = al}+/utf
+    -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}\x{61e}\x{61f}
+
+/\p{bidi_class : AL}+?/utf
+    -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}
+
+/\p{Bidi_Class : AL}++/utf
+    -->\x{061D}\x{061e}\x{061f}<--
+ 0: \x{61d}\x{61e}\x{61f}
+
+/\p{b_c = aN}+/utf
+    -->\x{061D}\x{0602}\x{0604}\x{061f}<--
+ 0: \x{602}\x{604}
+
+/\p{bidi class = B}+/utf
+    -->\x{0a}\x{0d}\x{01c}\x{01e}\x{085}\x{2029}<--
+ 0: \x{0a}\x{0d}\x{1c}\x{1e}\x{85}\x{2029}
+
+/\p{bidi class:BN}+/utf
+    -->\x{0}\x{08}\x{200c}\x{fffe}\x{dfffe}\x{10ffff}<--
+ 0: \x{00}\x{08}\x{200c}\x{fffe}\x{dfffe}\x{10ffff}
+
+/\p{bidiclass:cs}+/utf
+    -->,.\x{060c}\x{ff1a}<--
+ 0: ,.\x{60c}\x{ff1a}
+
+/\p{bidiclass:En}+/utf
+    -->09\x{b2}\x{2074}\x{1fbf9}<--
+ 0: 09\x{b2}\x{2074}\x{1fbf9}
+
+/\p{bidiclass:es}+/utf
+    ==>+-\x{207a}\x{ff0d}<==
+ 0: +-\x{207a}\x{ff0d}
+
+/\p{bidiclass:et}+/utf
+    -->#\{24}%\x{a2}\x{A838}\x{1e2ff}<--
+ 0: #
+
+/\p{bidiclass:FSI}+/utf
+    -->\x{2068}<--
+ 0: \x{2068}
+
+/\p{bidi class:L}+/utf
+    -->ABC<--
+ 0: ABC
+
+/\P{bidi class:L}+/utf
+    -->ABC<--
+ 0: -->
+
+/\p{bidi class:LRE}+\p{bidiclass=lri}*\p{bidiclass:lro}/utf
+    -->\x{202a}\x{2066}\x{202d}<--
+ 0: \x{202a}\x{2066}\x{202d}
+
+/\p{bidi class:NSM}+/utf
+    -->\x{9bc}\x{a71}\x{e31}<--
+ 0: \x{9bc}\x{a71}\x{e31}
+
+/\p{bidi class:ON}+/utf
+    -->\x{21}'()*;@\x{384}\x{2039}<=-
+ 0: >!'()*;@\x{384}\x{2039}<=
+
+/\p{bidiclass:pdf}\p{bidiclass:pdi}/utf
+    -->\x{202c}\x{2069}<--
+ 0: \x{202c}\x{2069}
+
+/\p{bidi class:R}+/utf
+    -->\x{590}\x{5c6}\x{200f}\x{10805}<--
+ 0: \x{590}\x{5c6}\x{200f}\x{10805}
+
+/\p{bidi class:RLE}+\p{bidi class:RLI}*\p{bidi class:RLO}+/utf
+    -->\x{202b}\x{2067}\x{202e}<--
+ 0: \x{202b}\x{2067}\x{202e}
+
+/\p{bidi class:S}+\p{bidiclass:WS}+/utf
+    -->\x{9}\x{b}\x{1f}  \x{c} \x{2000} \x{3000}<--
+ 0: \x{09}\x{0b}\x{1f}  \x{0c} \x{2000} \x{3000}
+
+# -----------------------------------------------------------------------------
+
+/[\p{taml}\p{sc:ugar}]+/utf
+    \x{0b82}\x{10380}
+ 0: \x{b82}\x{10380}
+
+/^[\p{sc:Arabic}]/utf
+\= Expect no match
+    \x{650}
+No match
+    \x{651}  
+No match
+    \x{652}  
+No match
+    \x{653}  
+No match
+    \x{654} 
+No match
+    \x{655} 
+No match
+    
+# -----------------------------------------------------------------------------
+# Tests for newly-added Boolean Properties
+
+/\p{ahex}\p{asciihexdigit}/utf
+    >4F<
+ 0: 4F
+
+/\p{alpha}\p{alphabetic}/g,utf
+    >AB<>\x{148}\x{1234}
+ 0: AB
+ 0: \x{148}\x{1234}
+    
+/\p{ascii}\p{ascii}/g,utf
+    >AB<>\x{148}\x{1234}
+ 0: >A
+ 0: B<
+ 
+/\p{Bidi_C}\p{bidicontrol}/g,utf
+    >\x{202d}\x{2069}<
+ 0: \x{202d}\x{2069}
+
+/\p{Bidi_M}\p{bidimirrored}/g,utf
+    >\x{202d}\x{2069}<>\x{298b}\x{bb}<
+ 0: <>
+ 0: \x{298b}\x{bb}
+    
+/\p{cased}\p{cased}/g,utf
+    >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+ 
+/\p{caseignorable}\p{ci}/g,utf
+    >AN<>\x{60}\x{859}<
+ 0: `\x{859}
+ 
+/\p{changeswhencasefolded}\p{cwcf}/g,utf
+    >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+ 
+/\p{changeswhencasemapped}\p{cwcm}/g,utf
+    >AN<>\x{149}\x{120}<
+ 0: AN
+ 0: \x{149}\x{120}
+ 
+/\p{changeswhenlowercased}\p{cwl}/g,utf
+    >AN<>\x{149}\x{120}<>yz<
+ 0: AN
+
+/\p{changeswhenuppercased}\p{cwu}/g,utf
+    >AN<>\x{149}\x{120}<>yz<
+ 0: yz
+
+/\p{changeswhentitlecased}\p{cwt}/g,utf
+    >AN<>\x{149}\x{120}<>yz<
+ 0: yz
+
+/\p{dash}\p{dash}/g,utf
+    >\x{2d}\x{1400}<>yz<
+ 0: -\x{1400}
+    
+/\p{defaultignorablecodepoint}\p{di}/g,utf
+    >AN<>\x{ad}\x{e0fff}<>yz<
+ 0: \x{ad}\x{e0fff}
+ 
+/\p{deprecated}\p{dep}/g,utf
+    >AN<>\x{149}\x{e0001}<>yz<
+ 0: \x{149}\x{e0001}
+ 
+/\p{diacritic}\p{dia}/g,utf
+    >AN<>\x{f84}\x{5e}<>yz<
+ 0: \x{f84}^
+
+/\p{emojicomponent}\p{ecomp}/g,utf
+    >AN<>\x{200d}\x{e007f}<>yz<
+ 0: \x{200d}\x{e007f}
+
+/\p{emojimodifier}\p{emod}/g,utf
+    >AN<>\x{1f3fb}\x{1f3ff}<>yz<
+ 0: \x{1f3fb}\x{1f3ff}
+    
+/\p{emojipresentation}\p{epres}/g,utf
+    >AN<>\x{2653}\x{1f6d2}<>yz<
+ 0: \x{2653}\x{1f6d2}
+ 
+/\p{extender}\p{ext}/g,utf
+    >AN<>\x{1e944}\x{b7}<>yz<
+ 0: \x{1e944}\x{b7}
+
+/\p{extendedpictographic}\p{extpict}/g,utf
+    >AN<>\x{26cf}\x{ae}<>yz<
+ 0: \x{26cf}\x{ae}
+    
+/\p{graphemebase}\p{grbase}/g,utf
+    >AN<>\x{10f}\x{60}<>yz<
+ 0: >A
+ 0: N<
+ 0: >\x{10f}
+ 0: `<
+ 0: >y
+ 0: z<
+
+/\p{graphemeextend}\p{grext}/g,utf
+    >AN<>\x{300}\x{b44}<>yz<
+ 0: \x{300}\x{b44}
+
+/\p{hexdigit}\p{hex}/g,utf
+    >AF23<>\x{ff46}\x{ff10}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{ff46}\x{ff10}
+ 
+/\p{idcontinue}\p{idc}/g,utf
+    >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{146}z
+ 0: yz
+
+/\p{ideographic}\p{ideo}/g,utf
+    >AF23<>\x{30000}\x{3006}<>yz<
+ 0: \x{30000}\x{3006}
+
+/\p{idstart}\p{ids}/g,utf
+    >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+ 0: \x{146}z
+ 0: yz
+
+/\p{idsbinaryoperator}\p{idsb}/g,utf
+    >AF23<>\x{2ff0}\x{2ffb}<>yz<\x{2ff2}\x{2ff1}
+ 0: \x{2ff0}\x{2ffb}
+
+/\p{idstrinaryoperator}\p{idst}/g,utf
+    >AF23<>\x{2ff2}\x{2ff3}<>yz<
+ 0: \x{2ff2}\x{2ff3}
+
+/\p{Join Control}\p{joinc}/g,utf
+    >AF23<>\x{200c}\x{200d}<>yz<
+ 0: \x{200c}\x{200d}
+
+/\p{logical_order_exception}\p{loe}/g,utf
+    >AF23<>\x{e40}\x{aabc}<>yz<
+ 0: \x{e40}\x{aabc}
+
+/\p{Lowercase}\p{lower}/g,utf
+    >AF23<>\x{146}\x{7a}<>yz<
+ 0: \x{146}z
+ 0: yz
+
+/\p{math}\p{math}/g,utf
+    >AF23<>\x{2215}\x{2b}<>yz<
+ 0: <>
+ 0: \x{2215}+
+ 0: <>
+    
+/\p{Non Character Code Point}\p{nchar}/g,utf
+    >AF23<>\x{10ffff}\x{fdd0}<>yz<
+ 0: \x{10ffff}\x{fdd0}
+ 
+/\p{patternsyntax}\p{patsyn}/g,utf
+    >AF23<>\x{21cd}\x{21}<>yz<
+ 0: <>
+ 0: \x{21cd}!
+ 0: <>
+
+/\p{patternwhitespace}\p{patws}/g,utf
+    >AF23<>\x{2029}\x{85}<>yz<
+ 0: \x{2029}\x{85}
+
+/\p{prependedconcatenationmark}\p{pcm}/g,utf
+    >AF23<>\x{600}\x{110cd}<>yz<
+ 0: \x{600}\x{110cd}
+
+/\p{quotationmark}\p{qmark}/g,utf
+    >AF23<>\x{ff63}\x{22}<>yz<
+ 0: \x{ff63}"
+
+/\p{radical}\p{radical}/g,utf
+    >AF23<>\x{2fd5}\x{2e80}<>yz<
+ 0: \x{2fd5}\x{2e80}
+
+/\p{regionalindicator}\p{ri}/g,utf
+    >AF23<>\x{1f1e6}\x{1f1ff}<>yz<
+ 0: \x{1f1e6}\x{1f1ff}
+
+/=\p{whitespace}\p{space}\p{wspace}=/g,utf
+    >AF23<=\x{d}\x{1680}\x{3000}=>yz<
+ 0: =\x{0d}\x{1680}\x{3000}=
+
+/\p{sentenceterminal}\p{sterm}/g,utf
+    >AF23<>\x{1da88}\x{2e}<>yz<
+ 0: \x{1da88}.
+
+/\p{terminalpunctuation}\p{term}/g,utf
+    >AF23<>\x{1da88}\x{2e}<>yz<
+ 0: \x{1da88}.
+
+/\p{unified ideograph}\p{uideo}/g,utf
+    >AF23<>\x{30000}\x{3400}<>yz<
+ 0: \x{30000}\x{3400}
+
+/\p{UPPERcase}\p{upper}/g,utf
+    >AF23<>\x{146}\x{7a}<>yz<
+ 0: AF
+
+/\p{variationselector}\p{vs}/g,utf
+    >AF23<>\x{180b}\x{e01ef}<>yz<
+ 0: \x{180b}\x{e01ef}
+
+/\p{xidcontinue}\p{xidc}/g,utf
+    >AF23<>\x{146}\x{30}<>yz<
+ 0: AF
+ 0: 23
+ 0: \x{146}0
+ 0: yz
+
+# -----------------------------------------------------------------------------
+
 # End of testinput4