some deletions
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / regexpp / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/regexpp/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/regexpp/index.js
deleted file mode 100644 (file)
index 71e5c98..0000000
+++ /dev/null
@@ -1,7078 +0,0 @@
-/*! @author Toru Nagashima <https://github.com/mysticatea> */
-'use strict';
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-
-
-var ast = /*#__PURE__*/Object.freeze({
-
-});
-
-function isIdStart(cp) {
-    if (cp < 0x41)
-        return false;
-    if (cp < 0x5b)
-        return true;
-    if (cp < 0x61)
-        return false;
-    if (cp < 0x7b)
-        return true;
-    return isLargeIdStart(cp);
-}
-function isIdContinue(cp) {
-    if (cp < 0x30)
-        return false;
-    if (cp < 0x3a)
-        return true;
-    if (cp < 0x41)
-        return false;
-    if (cp < 0x5b)
-        return true;
-    if (cp === 0x5f)
-        return true;
-    if (cp < 0x61)
-        return false;
-    if (cp < 0x7b)
-        return true;
-    return isLargeIdStart(cp) || isLargeIdContinue(cp);
-}
-function isLargeIdStart(cp) {
-    if (cp < 0x30a1) {
-        if (cp < 0xec0) {
-            if (cp < 0xa35) {
-                if (cp < 0x6e5) {
-                    if (cp < 0x37a) {
-                        if (cp < 0x294) {
-                            if (cp < 0xf8) {
-                                if (cp === 0xaa)
-                                    return true;
-                                if (cp === 0xb5)
-                                    return true;
-                                if (cp === 0xba)
-                                    return true;
-                                if (cp < 0xc0)
-                                    return false;
-                                if (cp < 0xd7)
-                                    return true;
-                                if (cp < 0xd8)
-                                    return false;
-                                if (cp < 0xf7)
-                                    return true;
-                                return false;
-                            }
-                            if (cp < 0x1bb)
-                                return true;
-                            if (cp === 0x1bb)
-                                return true;
-                            if (cp < 0x1bc)
-                                return false;
-                            if (cp < 0x1c0)
-                                return true;
-                            if (cp < 0x1c0)
-                                return false;
-                            if (cp < 0x1c4)
-                                return true;
-                            if (cp < 0x1c4)
-                                return false;
-                            if (cp < 0x294)
-                                return true;
-                            return false;
-                        }
-                        if (cp < 0x2ec) {
-                            if (cp === 0x294)
-                                return true;
-                            if (cp < 0x295)
-                                return false;
-                            if (cp < 0x2b0)
-                                return true;
-                            if (cp < 0x2b0)
-                                return false;
-                            if (cp < 0x2c2)
-                                return true;
-                            if (cp < 0x2c6)
-                                return false;
-                            if (cp < 0x2d2)
-                                return true;
-                            if (cp < 0x2e0)
-                                return false;
-                            if (cp < 0x2e5)
-                                return true;
-                            return false;
-                        }
-                        if (cp === 0x2ec)
-                            return true;
-                        if (cp === 0x2ee)
-                            return true;
-                        if (cp < 0x370)
-                            return false;
-                        if (cp < 0x374)
-                            return true;
-                        if (cp === 0x374)
-                            return true;
-                        if (cp < 0x376)
-                            return false;
-                        if (cp < 0x378)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x531) {
-                        if (cp < 0x38c) {
-                            if (cp === 0x37a)
-                                return true;
-                            if (cp < 0x37b)
-                                return false;
-                            if (cp < 0x37e)
-                                return true;
-                            if (cp === 0x37f)
-                                return true;
-                            if (cp === 0x386)
-                                return true;
-                            if (cp < 0x388)
-                                return false;
-                            if (cp < 0x38b)
-                                return true;
-                            return false;
-                        }
-                        if (cp === 0x38c)
-                            return true;
-                        if (cp < 0x38e)
-                            return false;
-                        if (cp < 0x3a2)
-                            return true;
-                        if (cp < 0x3a3)
-                            return false;
-                        if (cp < 0x3f6)
-                            return true;
-                        if (cp < 0x3f7)
-                            return false;
-                        if (cp < 0x482)
-                            return true;
-                        if (cp < 0x48a)
-                            return false;
-                        if (cp < 0x530)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x620) {
-                        if (cp < 0x531)
-                            return false;
-                        if (cp < 0x557)
-                            return true;
-                        if (cp === 0x559)
-                            return true;
-                        if (cp < 0x560)
-                            return false;
-                        if (cp < 0x589)
-                            return true;
-                        if (cp < 0x5d0)
-                            return false;
-                        if (cp < 0x5eb)
-                            return true;
-                        if (cp < 0x5ef)
-                            return false;
-                        if (cp < 0x5f3)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x640)
-                        return true;
-                    if (cp === 0x640)
-                        return true;
-                    if (cp < 0x641)
-                        return false;
-                    if (cp < 0x64b)
-                        return true;
-                    if (cp < 0x66e)
-                        return false;
-                    if (cp < 0x670)
-                        return true;
-                    if (cp < 0x671)
-                        return false;
-                    if (cp < 0x6d4)
-                        return true;
-                    if (cp === 0x6d5)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x950) {
-                    if (cp < 0x7fa) {
-                        if (cp < 0x712) {
-                            if (cp < 0x6e5)
-                                return false;
-                            if (cp < 0x6e7)
-                                return true;
-                            if (cp < 0x6ee)
-                                return false;
-                            if (cp < 0x6f0)
-                                return true;
-                            if (cp < 0x6fa)
-                                return false;
-                            if (cp < 0x6fd)
-                                return true;
-                            if (cp === 0x6ff)
-                                return true;
-                            if (cp === 0x710)
-                                return true;
-                            return false;
-                        }
-                        if (cp < 0x730)
-                            return true;
-                        if (cp < 0x74d)
-                            return false;
-                        if (cp < 0x7a6)
-                            return true;
-                        if (cp === 0x7b1)
-                            return true;
-                        if (cp < 0x7ca)
-                            return false;
-                        if (cp < 0x7eb)
-                            return true;
-                        if (cp < 0x7f4)
-                            return false;
-                        if (cp < 0x7f6)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x840) {
-                        if (cp === 0x7fa)
-                            return true;
-                        if (cp < 0x800)
-                            return false;
-                        if (cp < 0x816)
-                            return true;
-                        if (cp === 0x81a)
-                            return true;
-                        if (cp === 0x824)
-                            return true;
-                        if (cp === 0x828)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x859)
-                        return true;
-                    if (cp < 0x860)
-                        return false;
-                    if (cp < 0x86b)
-                        return true;
-                    if (cp < 0x8a0)
-                        return false;
-                    if (cp < 0x8b5)
-                        return true;
-                    if (cp < 0x8b6)
-                        return false;
-                    if (cp < 0x8be)
-                        return true;
-                    if (cp < 0x904)
-                        return false;
-                    if (cp < 0x93a)
-                        return true;
-                    if (cp === 0x93d)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x9bd) {
-                    if (cp < 0x98f) {
-                        if (cp === 0x950)
-                            return true;
-                        if (cp < 0x958)
-                            return false;
-                        if (cp < 0x962)
-                            return true;
-                        if (cp === 0x971)
-                            return true;
-                        if (cp < 0x972)
-                            return false;
-                        if (cp < 0x981)
-                            return true;
-                        if (cp < 0x985)
-                            return false;
-                        if (cp < 0x98d)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x991)
-                        return true;
-                    if (cp < 0x993)
-                        return false;
-                    if (cp < 0x9a9)
-                        return true;
-                    if (cp < 0x9aa)
-                        return false;
-                    if (cp < 0x9b1)
-                        return true;
-                    if (cp === 0x9b2)
-                        return true;
-                    if (cp < 0x9b6)
-                        return false;
-                    if (cp < 0x9ba)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x9fc) {
-                    if (cp === 0x9bd)
-                        return true;
-                    if (cp === 0x9ce)
-                        return true;
-                    if (cp < 0x9dc)
-                        return false;
-                    if (cp < 0x9de)
-                        return true;
-                    if (cp < 0x9df)
-                        return false;
-                    if (cp < 0x9e2)
-                        return true;
-                    if (cp < 0x9f0)
-                        return false;
-                    if (cp < 0x9f2)
-                        return true;
-                    return false;
-                }
-                if (cp === 0x9fc)
-                    return true;
-                if (cp < 0xa05)
-                    return false;
-                if (cp < 0xa0b)
-                    return true;
-                if (cp < 0xa0f)
-                    return false;
-                if (cp < 0xa11)
-                    return true;
-                if (cp < 0xa13)
-                    return false;
-                if (cp < 0xa29)
-                    return true;
-                if (cp < 0xa2a)
-                    return false;
-                if (cp < 0xa31)
-                    return true;
-                if (cp < 0xa32)
-                    return false;
-                if (cp < 0xa34)
-                    return true;
-                return false;
-            }
-            if (cp < 0xc60) {
-                if (cp < 0xb3d) {
-                    if (cp < 0xab5) {
-                        if (cp < 0xa85) {
-                            if (cp < 0xa35)
-                                return false;
-                            if (cp < 0xa37)
-                                return true;
-                            if (cp < 0xa38)
-                                return false;
-                            if (cp < 0xa3a)
-                                return true;
-                            if (cp < 0xa59)
-                                return false;
-                            if (cp < 0xa5d)
-                                return true;
-                            if (cp === 0xa5e)
-                                return true;
-                            if (cp < 0xa72)
-                                return false;
-                            if (cp < 0xa75)
-                                return true;
-                            return false;
-                        }
-                        if (cp < 0xa8e)
-                            return true;
-                        if (cp < 0xa8f)
-                            return false;
-                        if (cp < 0xa92)
-                            return true;
-                        if (cp < 0xa93)
-                            return false;
-                        if (cp < 0xaa9)
-                            return true;
-                        if (cp < 0xaaa)
-                            return false;
-                        if (cp < 0xab1)
-                            return true;
-                        if (cp < 0xab2)
-                            return false;
-                        if (cp < 0xab4)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xb05) {
-                        if (cp < 0xab5)
-                            return false;
-                        if (cp < 0xaba)
-                            return true;
-                        if (cp === 0xabd)
-                            return true;
-                        if (cp === 0xad0)
-                            return true;
-                        if (cp < 0xae0)
-                            return false;
-                        if (cp < 0xae2)
-                            return true;
-                        if (cp === 0xaf9)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xb0d)
-                        return true;
-                    if (cp < 0xb0f)
-                        return false;
-                    if (cp < 0xb11)
-                        return true;
-                    if (cp < 0xb13)
-                        return false;
-                    if (cp < 0xb29)
-                        return true;
-                    if (cp < 0xb2a)
-                        return false;
-                    if (cp < 0xb31)
-                        return true;
-                    if (cp < 0xb32)
-                        return false;
-                    if (cp < 0xb34)
-                        return true;
-                    if (cp < 0xb35)
-                        return false;
-                    if (cp < 0xb3a)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xb9e) {
-                    if (cp < 0xb85) {
-                        if (cp === 0xb3d)
-                            return true;
-                        if (cp < 0xb5c)
-                            return false;
-                        if (cp < 0xb5e)
-                            return true;
-                        if (cp < 0xb5f)
-                            return false;
-                        if (cp < 0xb62)
-                            return true;
-                        if (cp === 0xb71)
-                            return true;
-                        if (cp === 0xb83)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xb8b)
-                        return true;
-                    if (cp < 0xb8e)
-                        return false;
-                    if (cp < 0xb91)
-                        return true;
-                    if (cp < 0xb92)
-                        return false;
-                    if (cp < 0xb96)
-                        return true;
-                    if (cp < 0xb99)
-                        return false;
-                    if (cp < 0xb9b)
-                        return true;
-                    if (cp === 0xb9c)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xc05) {
-                    if (cp < 0xb9e)
-                        return false;
-                    if (cp < 0xba0)
-                        return true;
-                    if (cp < 0xba3)
-                        return false;
-                    if (cp < 0xba5)
-                        return true;
-                    if (cp < 0xba8)
-                        return false;
-                    if (cp < 0xbab)
-                        return true;
-                    if (cp < 0xbae)
-                        return false;
-                    if (cp < 0xbba)
-                        return true;
-                    if (cp === 0xbd0)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xc0d)
-                    return true;
-                if (cp < 0xc0e)
-                    return false;
-                if (cp < 0xc11)
-                    return true;
-                if (cp < 0xc12)
-                    return false;
-                if (cp < 0xc29)
-                    return true;
-                if (cp < 0xc2a)
-                    return false;
-                if (cp < 0xc3a)
-                    return true;
-                if (cp === 0xc3d)
-                    return true;
-                if (cp < 0xc58)
-                    return false;
-                if (cp < 0xc5b)
-                    return true;
-                return false;
-            }
-            if (cp < 0xdb3) {
-                if (cp < 0xcf1) {
-                    if (cp < 0xcaa) {
-                        if (cp < 0xc60)
-                            return false;
-                        if (cp < 0xc62)
-                            return true;
-                        if (cp === 0xc80)
-                            return true;
-                        if (cp < 0xc85)
-                            return false;
-                        if (cp < 0xc8d)
-                            return true;
-                        if (cp < 0xc8e)
-                            return false;
-                        if (cp < 0xc91)
-                            return true;
-                        if (cp < 0xc92)
-                            return false;
-                        if (cp < 0xca9)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xcb4)
-                        return true;
-                    if (cp < 0xcb5)
-                        return false;
-                    if (cp < 0xcba)
-                        return true;
-                    if (cp === 0xcbd)
-                        return true;
-                    if (cp === 0xcde)
-                        return true;
-                    if (cp < 0xce0)
-                        return false;
-                    if (cp < 0xce2)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xd4e) {
-                    if (cp < 0xcf1)
-                        return false;
-                    if (cp < 0xcf3)
-                        return true;
-                    if (cp < 0xd05)
-                        return false;
-                    if (cp < 0xd0d)
-                        return true;
-                    if (cp < 0xd0e)
-                        return false;
-                    if (cp < 0xd11)
-                        return true;
-                    if (cp < 0xd12)
-                        return false;
-                    if (cp < 0xd3b)
-                        return true;
-                    if (cp === 0xd3d)
-                        return true;
-                    return false;
-                }
-                if (cp === 0xd4e)
-                    return true;
-                if (cp < 0xd54)
-                    return false;
-                if (cp < 0xd57)
-                    return true;
-                if (cp < 0xd5f)
-                    return false;
-                if (cp < 0xd62)
-                    return true;
-                if (cp < 0xd7a)
-                    return false;
-                if (cp < 0xd80)
-                    return true;
-                if (cp < 0xd85)
-                    return false;
-                if (cp < 0xd97)
-                    return true;
-                if (cp < 0xd9a)
-                    return false;
-                if (cp < 0xdb2)
-                    return true;
-                return false;
-            }
-            if (cp < 0xe8a) {
-                if (cp < 0xe40) {
-                    if (cp < 0xdb3)
-                        return false;
-                    if (cp < 0xdbc)
-                        return true;
-                    if (cp === 0xdbd)
-                        return true;
-                    if (cp < 0xdc0)
-                        return false;
-                    if (cp < 0xdc7)
-                        return true;
-                    if (cp < 0xe01)
-                        return false;
-                    if (cp < 0xe31)
-                        return true;
-                    if (cp < 0xe32)
-                        return false;
-                    if (cp < 0xe34)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xe46)
-                    return true;
-                if (cp === 0xe46)
-                    return true;
-                if (cp < 0xe81)
-                    return false;
-                if (cp < 0xe83)
-                    return true;
-                if (cp === 0xe84)
-                    return true;
-                if (cp < 0xe87)
-                    return false;
-                if (cp < 0xe89)
-                    return true;
-                return false;
-            }
-            if (cp < 0xea5) {
-                if (cp === 0xe8a)
-                    return true;
-                if (cp === 0xe8d)
-                    return true;
-                if (cp < 0xe94)
-                    return false;
-                if (cp < 0xe98)
-                    return true;
-                if (cp < 0xe99)
-                    return false;
-                if (cp < 0xea0)
-                    return true;
-                if (cp < 0xea1)
-                    return false;
-                if (cp < 0xea4)
-                    return true;
-                return false;
-            }
-            if (cp === 0xea5)
-                return true;
-            if (cp === 0xea7)
-                return true;
-            if (cp < 0xeaa)
-                return false;
-            if (cp < 0xeac)
-                return true;
-            if (cp < 0xead)
-                return false;
-            if (cp < 0xeb1)
-                return true;
-            if (cp < 0xeb2)
-                return false;
-            if (cp < 0xeb4)
-                return true;
-            if (cp === 0xebd)
-                return true;
-            return false;
-        }
-        if (cp < 0x1ce9) {
-            if (cp < 0x166f) {
-                if (cp < 0x10fd) {
-                    if (cp < 0x105a) {
-                        if (cp < 0xf49) {
-                            if (cp < 0xec0)
-                                return false;
-                            if (cp < 0xec5)
-                                return true;
-                            if (cp === 0xec6)
-                                return true;
-                            if (cp < 0xedc)
-                                return false;
-                            if (cp < 0xee0)
-                                return true;
-                            if (cp === 0xf00)
-                                return true;
-                            if (cp < 0xf40)
-                                return false;
-                            if (cp < 0xf48)
-                                return true;
-                            return false;
-                        }
-                        if (cp < 0xf6d)
-                            return true;
-                        if (cp < 0xf88)
-                            return false;
-                        if (cp < 0xf8d)
-                            return true;
-                        if (cp < 0x1000)
-                            return false;
-                        if (cp < 0x102b)
-                            return true;
-                        if (cp === 0x103f)
-                            return true;
-                        if (cp < 0x1050)
-                            return false;
-                        if (cp < 0x1056)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x108e) {
-                        if (cp < 0x105a)
-                            return false;
-                        if (cp < 0x105e)
-                            return true;
-                        if (cp === 0x1061)
-                            return true;
-                        if (cp < 0x1065)
-                            return false;
-                        if (cp < 0x1067)
-                            return true;
-                        if (cp < 0x106e)
-                            return false;
-                        if (cp < 0x1071)
-                            return true;
-                        if (cp < 0x1075)
-                            return false;
-                        if (cp < 0x1082)
-                            return true;
-                        return false;
-                    }
-                    if (cp === 0x108e)
-                        return true;
-                    if (cp < 0x10a0)
-                        return false;
-                    if (cp < 0x10c6)
-                        return true;
-                    if (cp === 0x10c7)
-                        return true;
-                    if (cp === 0x10cd)
-                        return true;
-                    if (cp < 0x10d0)
-                        return false;
-                    if (cp < 0x10fb)
-                        return true;
-                    if (cp === 0x10fc)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x12b8) {
-                    if (cp < 0x125a) {
-                        if (cp < 0x10fd)
-                            return false;
-                        if (cp < 0x1100)
-                            return true;
-                        if (cp < 0x1100)
-                            return false;
-                        if (cp < 0x1249)
-                            return true;
-                        if (cp < 0x124a)
-                            return false;
-                        if (cp < 0x124e)
-                            return true;
-                        if (cp < 0x1250)
-                            return false;
-                        if (cp < 0x1257)
-                            return true;
-                        if (cp === 0x1258)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x125e)
-                        return true;
-                    if (cp < 0x1260)
-                        return false;
-                    if (cp < 0x1289)
-                        return true;
-                    if (cp < 0x128a)
-                        return false;
-                    if (cp < 0x128e)
-                        return true;
-                    if (cp < 0x1290)
-                        return false;
-                    if (cp < 0x12b1)
-                        return true;
-                    if (cp < 0x12b2)
-                        return false;
-                    if (cp < 0x12b6)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1312) {
-                    if (cp < 0x12b8)
-                        return false;
-                    if (cp < 0x12bf)
-                        return true;
-                    if (cp === 0x12c0)
-                        return true;
-                    if (cp < 0x12c2)
-                        return false;
-                    if (cp < 0x12c6)
-                        return true;
-                    if (cp < 0x12c8)
-                        return false;
-                    if (cp < 0x12d7)
-                        return true;
-                    if (cp < 0x12d8)
-                        return false;
-                    if (cp < 0x1311)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1316)
-                    return true;
-                if (cp < 0x1318)
-                    return false;
-                if (cp < 0x135b)
-                    return true;
-                if (cp < 0x1380)
-                    return false;
-                if (cp < 0x1390)
-                    return true;
-                if (cp < 0x13a0)
-                    return false;
-                if (cp < 0x13f6)
-                    return true;
-                if (cp < 0x13f8)
-                    return false;
-                if (cp < 0x13fe)
-                    return true;
-                if (cp < 0x1401)
-                    return false;
-                if (cp < 0x166d)
-                    return true;
-                return false;
-            }
-            if (cp < 0x18b0) {
-                if (cp < 0x176e) {
-                    if (cp < 0x1700) {
-                        if (cp < 0x166f)
-                            return false;
-                        if (cp < 0x1680)
-                            return true;
-                        if (cp < 0x1681)
-                            return false;
-                        if (cp < 0x169b)
-                            return true;
-                        if (cp < 0x16a0)
-                            return false;
-                        if (cp < 0x16eb)
-                            return true;
-                        if (cp < 0x16ee)
-                            return false;
-                        if (cp < 0x16f1)
-                            return true;
-                        if (cp < 0x16f1)
-                            return false;
-                        if (cp < 0x16f9)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x170d)
-                        return true;
-                    if (cp < 0x170e)
-                        return false;
-                    if (cp < 0x1712)
-                        return true;
-                    if (cp < 0x1720)
-                        return false;
-                    if (cp < 0x1732)
-                        return true;
-                    if (cp < 0x1740)
-                        return false;
-                    if (cp < 0x1752)
-                        return true;
-                    if (cp < 0x1760)
-                        return false;
-                    if (cp < 0x176d)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1843) {
-                    if (cp < 0x176e)
-                        return false;
-                    if (cp < 0x1771)
-                        return true;
-                    if (cp < 0x1780)
-                        return false;
-                    if (cp < 0x17b4)
-                        return true;
-                    if (cp === 0x17d7)
-                        return true;
-                    if (cp === 0x17dc)
-                        return true;
-                    if (cp < 0x1820)
-                        return false;
-                    if (cp < 0x1843)
-                        return true;
-                    return false;
-                }
-                if (cp === 0x1843)
-                    return true;
-                if (cp < 0x1844)
-                    return false;
-                if (cp < 0x1879)
-                    return true;
-                if (cp < 0x1880)
-                    return false;
-                if (cp < 0x1885)
-                    return true;
-                if (cp < 0x1885)
-                    return false;
-                if (cp < 0x1887)
-                    return true;
-                if (cp < 0x1887)
-                    return false;
-                if (cp < 0x18a9)
-                    return true;
-                if (cp === 0x18aa)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1b45) {
-                if (cp < 0x19b0) {
-                    if (cp < 0x18b0)
-                        return false;
-                    if (cp < 0x18f6)
-                        return true;
-                    if (cp < 0x1900)
-                        return false;
-                    if (cp < 0x191f)
-                        return true;
-                    if (cp < 0x1950)
-                        return false;
-                    if (cp < 0x196e)
-                        return true;
-                    if (cp < 0x1970)
-                        return false;
-                    if (cp < 0x1975)
-                        return true;
-                    if (cp < 0x1980)
-                        return false;
-                    if (cp < 0x19ac)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x19ca)
-                    return true;
-                if (cp < 0x1a00)
-                    return false;
-                if (cp < 0x1a17)
-                    return true;
-                if (cp < 0x1a20)
-                    return false;
-                if (cp < 0x1a55)
-                    return true;
-                if (cp === 0x1aa7)
-                    return true;
-                if (cp < 0x1b05)
-                    return false;
-                if (cp < 0x1b34)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1c4d) {
-                if (cp < 0x1b45)
-                    return false;
-                if (cp < 0x1b4c)
-                    return true;
-                if (cp < 0x1b83)
-                    return false;
-                if (cp < 0x1ba1)
-                    return true;
-                if (cp < 0x1bae)
-                    return false;
-                if (cp < 0x1bb0)
-                    return true;
-                if (cp < 0x1bba)
-                    return false;
-                if (cp < 0x1be6)
-                    return true;
-                if (cp < 0x1c00)
-                    return false;
-                if (cp < 0x1c24)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1c50)
-                return true;
-            if (cp < 0x1c5a)
-                return false;
-            if (cp < 0x1c78)
-                return true;
-            if (cp < 0x1c78)
-                return false;
-            if (cp < 0x1c7e)
-                return true;
-            if (cp < 0x1c80)
-                return false;
-            if (cp < 0x1c89)
-                return true;
-            if (cp < 0x1c90)
-                return false;
-            if (cp < 0x1cbb)
-                return true;
-            if (cp < 0x1cbd)
-                return false;
-            if (cp < 0x1cc0)
-                return true;
-            return false;
-        }
-        if (cp < 0x212f) {
-            if (cp < 0x1fc2) {
-                if (cp < 0x1f18) {
-                    if (cp < 0x1d6b) {
-                        if (cp < 0x1ce9)
-                            return false;
-                        if (cp < 0x1ced)
-                            return true;
-                        if (cp < 0x1cee)
-                            return false;
-                        if (cp < 0x1cf2)
-                            return true;
-                        if (cp < 0x1cf5)
-                            return false;
-                        if (cp < 0x1cf7)
-                            return true;
-                        if (cp < 0x1d00)
-                            return false;
-                        if (cp < 0x1d2c)
-                            return true;
-                        if (cp < 0x1d2c)
-                            return false;
-                        if (cp < 0x1d6b)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x1d78)
-                        return true;
-                    if (cp === 0x1d78)
-                        return true;
-                    if (cp < 0x1d79)
-                        return false;
-                    if (cp < 0x1d9b)
-                        return true;
-                    if (cp < 0x1d9b)
-                        return false;
-                    if (cp < 0x1dc0)
-                        return true;
-                    if (cp < 0x1e00)
-                        return false;
-                    if (cp < 0x1f16)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1f5b) {
-                    if (cp < 0x1f18)
-                        return false;
-                    if (cp < 0x1f1e)
-                        return true;
-                    if (cp < 0x1f20)
-                        return false;
-                    if (cp < 0x1f46)
-                        return true;
-                    if (cp < 0x1f48)
-                        return false;
-                    if (cp < 0x1f4e)
-                        return true;
-                    if (cp < 0x1f50)
-                        return false;
-                    if (cp < 0x1f58)
-                        return true;
-                    if (cp === 0x1f59)
-                        return true;
-                    return false;
-                }
-                if (cp === 0x1f5b)
-                    return true;
-                if (cp === 0x1f5d)
-                    return true;
-                if (cp < 0x1f5f)
-                    return false;
-                if (cp < 0x1f7e)
-                    return true;
-                if (cp < 0x1f80)
-                    return false;
-                if (cp < 0x1fb5)
-                    return true;
-                if (cp < 0x1fb6)
-                    return false;
-                if (cp < 0x1fbd)
-                    return true;
-                if (cp === 0x1fbe)
-                    return true;
-                return false;
-            }
-            if (cp < 0x2102) {
-                if (cp < 0x1ff2) {
-                    if (cp < 0x1fc2)
-                        return false;
-                    if (cp < 0x1fc5)
-                        return true;
-                    if (cp < 0x1fc6)
-                        return false;
-                    if (cp < 0x1fcd)
-                        return true;
-                    if (cp < 0x1fd0)
-                        return false;
-                    if (cp < 0x1fd4)
-                        return true;
-                    if (cp < 0x1fd6)
-                        return false;
-                    if (cp < 0x1fdc)
-                        return true;
-                    if (cp < 0x1fe0)
-                        return false;
-                    if (cp < 0x1fed)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1ff5)
-                    return true;
-                if (cp < 0x1ff6)
-                    return false;
-                if (cp < 0x1ffd)
-                    return true;
-                if (cp === 0x2071)
-                    return true;
-                if (cp === 0x207f)
-                    return true;
-                if (cp < 0x2090)
-                    return false;
-                if (cp < 0x209d)
-                    return true;
-                return false;
-            }
-            if (cp < 0x2119) {
-                if (cp === 0x2102)
-                    return true;
-                if (cp === 0x2107)
-                    return true;
-                if (cp < 0x210a)
-                    return false;
-                if (cp < 0x2114)
-                    return true;
-                if (cp === 0x2115)
-                    return true;
-                if (cp === 0x2118)
-                    return true;
-                return false;
-            }
-            if (cp < 0x211e)
-                return true;
-            if (cp === 0x2124)
-                return true;
-            if (cp === 0x2126)
-                return true;
-            if (cp === 0x2128)
-                return true;
-            if (cp < 0x212a)
-                return false;
-            if (cp < 0x212e)
-                return true;
-            if (cp === 0x212e)
-                return true;
-            return false;
-        }
-        if (cp < 0x2d80) {
-            if (cp < 0x2c30) {
-                if (cp < 0x214e) {
-                    if (cp < 0x212f)
-                        return false;
-                    if (cp < 0x2135)
-                        return true;
-                    if (cp < 0x2135)
-                        return false;
-                    if (cp < 0x2139)
-                        return true;
-                    if (cp === 0x2139)
-                        return true;
-                    if (cp < 0x213c)
-                        return false;
-                    if (cp < 0x2140)
-                        return true;
-                    if (cp < 0x2145)
-                        return false;
-                    if (cp < 0x214a)
-                        return true;
-                    return false;
-                }
-                if (cp === 0x214e)
-                    return true;
-                if (cp < 0x2160)
-                    return false;
-                if (cp < 0x2183)
-                    return true;
-                if (cp < 0x2183)
-                    return false;
-                if (cp < 0x2185)
-                    return true;
-                if (cp < 0x2185)
-                    return false;
-                if (cp < 0x2189)
-                    return true;
-                if (cp < 0x2c00)
-                    return false;
-                if (cp < 0x2c2f)
-                    return true;
-                return false;
-            }
-            if (cp < 0x2cf2) {
-                if (cp < 0x2c30)
-                    return false;
-                if (cp < 0x2c5f)
-                    return true;
-                if (cp < 0x2c60)
-                    return false;
-                if (cp < 0x2c7c)
-                    return true;
-                if (cp < 0x2c7c)
-                    return false;
-                if (cp < 0x2c7e)
-                    return true;
-                if (cp < 0x2c7e)
-                    return false;
-                if (cp < 0x2ce5)
-                    return true;
-                if (cp < 0x2ceb)
-                    return false;
-                if (cp < 0x2cef)
-                    return true;
-                return false;
-            }
-            if (cp < 0x2cf4)
-                return true;
-            if (cp < 0x2d00)
-                return false;
-            if (cp < 0x2d26)
-                return true;
-            if (cp === 0x2d27)
-                return true;
-            if (cp === 0x2d2d)
-                return true;
-            if (cp < 0x2d30)
-                return false;
-            if (cp < 0x2d68)
-                return true;
-            if (cp === 0x2d6f)
-                return true;
-            return false;
-        }
-        if (cp < 0x3006) {
-            if (cp < 0x2dc0) {
-                if (cp < 0x2d80)
-                    return false;
-                if (cp < 0x2d97)
-                    return true;
-                if (cp < 0x2da0)
-                    return false;
-                if (cp < 0x2da7)
-                    return true;
-                if (cp < 0x2da8)
-                    return false;
-                if (cp < 0x2daf)
-                    return true;
-                if (cp < 0x2db0)
-                    return false;
-                if (cp < 0x2db7)
-                    return true;
-                if (cp < 0x2db8)
-                    return false;
-                if (cp < 0x2dbf)
-                    return true;
-                return false;
-            }
-            if (cp < 0x2dc7)
-                return true;
-            if (cp < 0x2dc8)
-                return false;
-            if (cp < 0x2dcf)
-                return true;
-            if (cp < 0x2dd0)
-                return false;
-            if (cp < 0x2dd7)
-                return true;
-            if (cp < 0x2dd8)
-                return false;
-            if (cp < 0x2ddf)
-                return true;
-            if (cp === 0x3005)
-                return true;
-            return false;
-        }
-        if (cp < 0x303b) {
-            if (cp === 0x3006)
-                return true;
-            if (cp === 0x3007)
-                return true;
-            if (cp < 0x3021)
-                return false;
-            if (cp < 0x302a)
-                return true;
-            if (cp < 0x3031)
-                return false;
-            if (cp < 0x3036)
-                return true;
-            if (cp < 0x3038)
-                return false;
-            if (cp < 0x303b)
-                return true;
-            return false;
-        }
-        if (cp === 0x303b)
-            return true;
-        if (cp === 0x303c)
-            return true;
-        if (cp < 0x3041)
-            return false;
-        if (cp < 0x3097)
-            return true;
-        if (cp < 0x309b)
-            return false;
-        if (cp < 0x309d)
-            return true;
-        if (cp < 0x309d)
-            return false;
-        if (cp < 0x309f)
-            return true;
-        if (cp === 0x309f)
-            return true;
-        return false;
-    }
-    if (cp < 0x10b60) {
-        if (cp < 0xd7b0) {
-            if (cp < 0xa882) {
-                if (cp < 0xa67f) {
-                    if (cp < 0xa015) {
-                        if (cp < 0x31a0) {
-                            if (cp < 0x30a1)
-                                return false;
-                            if (cp < 0x30fb)
-                                return true;
-                            if (cp < 0x30fc)
-                                return false;
-                            if (cp < 0x30ff)
-                                return true;
-                            if (cp === 0x30ff)
-                                return true;
-                            if (cp < 0x3105)
-                                return false;
-                            if (cp < 0x3130)
-                                return true;
-                            if (cp < 0x3131)
-                                return false;
-                            if (cp < 0x318f)
-                                return true;
-                            return false;
-                        }
-                        if (cp < 0x31bb)
-                            return true;
-                        if (cp < 0x31f0)
-                            return false;
-                        if (cp < 0x3200)
-                            return true;
-                        if (cp < 0x3400)
-                            return false;
-                        if (cp < 0x4db6)
-                            return true;
-                        if (cp < 0x4e00)
-                            return false;
-                        if (cp < 0x9ff0)
-                            return true;
-                        if (cp < 0xa000)
-                            return false;
-                        if (cp < 0xa015)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xa60c) {
-                        if (cp === 0xa015)
-                            return true;
-                        if (cp < 0xa016)
-                            return false;
-                        if (cp < 0xa48d)
-                            return true;
-                        if (cp < 0xa4d0)
-                            return false;
-                        if (cp < 0xa4f8)
-                            return true;
-                        if (cp < 0xa4f8)
-                            return false;
-                        if (cp < 0xa4fe)
-                            return true;
-                        if (cp < 0xa500)
-                            return false;
-                        if (cp < 0xa60c)
-                            return true;
-                        return false;
-                    }
-                    if (cp === 0xa60c)
-                        return true;
-                    if (cp < 0xa610)
-                        return false;
-                    if (cp < 0xa620)
-                        return true;
-                    if (cp < 0xa62a)
-                        return false;
-                    if (cp < 0xa62c)
-                        return true;
-                    if (cp < 0xa640)
-                        return false;
-                    if (cp < 0xa66e)
-                        return true;
-                    if (cp === 0xa66e)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa78b) {
-                    if (cp < 0xa717) {
-                        if (cp === 0xa67f)
-                            return true;
-                        if (cp < 0xa680)
-                            return false;
-                        if (cp < 0xa69c)
-                            return true;
-                        if (cp < 0xa69c)
-                            return false;
-                        if (cp < 0xa69e)
-                            return true;
-                        if (cp < 0xa6a0)
-                            return false;
-                        if (cp < 0xa6e6)
-                            return true;
-                        if (cp < 0xa6e6)
-                            return false;
-                        if (cp < 0xa6f0)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xa720)
-                        return true;
-                    if (cp < 0xa722)
-                        return false;
-                    if (cp < 0xa770)
-                        return true;
-                    if (cp === 0xa770)
-                        return true;
-                    if (cp < 0xa771)
-                        return false;
-                    if (cp < 0xa788)
-                        return true;
-                    if (cp === 0xa788)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa7fa) {
-                    if (cp < 0xa78b)
-                        return false;
-                    if (cp < 0xa78f)
-                        return true;
-                    if (cp === 0xa78f)
-                        return true;
-                    if (cp < 0xa790)
-                        return false;
-                    if (cp < 0xa7ba)
-                        return true;
-                    if (cp === 0xa7f7)
-                        return true;
-                    if (cp < 0xa7f8)
-                        return false;
-                    if (cp < 0xa7fa)
-                        return true;
-                    return false;
-                }
-                if (cp === 0xa7fa)
-                    return true;
-                if (cp < 0xa7fb)
-                    return false;
-                if (cp < 0xa802)
-                    return true;
-                if (cp < 0xa803)
-                    return false;
-                if (cp < 0xa806)
-                    return true;
-                if (cp < 0xa807)
-                    return false;
-                if (cp < 0xa80b)
-                    return true;
-                if (cp < 0xa80c)
-                    return false;
-                if (cp < 0xa823)
-                    return true;
-                if (cp < 0xa840)
-                    return false;
-                if (cp < 0xa874)
-                    return true;
-                return false;
-            }
-            if (cp < 0xaab1) {
-                if (cp < 0xa9e6) {
-                    if (cp < 0xa930) {
-                        if (cp < 0xa882)
-                            return false;
-                        if (cp < 0xa8b4)
-                            return true;
-                        if (cp < 0xa8f2)
-                            return false;
-                        if (cp < 0xa8f8)
-                            return true;
-                        if (cp === 0xa8fb)
-                            return true;
-                        if (cp < 0xa8fd)
-                            return false;
-                        if (cp < 0xa8ff)
-                            return true;
-                        if (cp < 0xa90a)
-                            return false;
-                        if (cp < 0xa926)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xa947)
-                        return true;
-                    if (cp < 0xa960)
-                        return false;
-                    if (cp < 0xa97d)
-                        return true;
-                    if (cp < 0xa984)
-                        return false;
-                    if (cp < 0xa9b3)
-                        return true;
-                    if (cp === 0xa9cf)
-                        return true;
-                    if (cp < 0xa9e0)
-                        return false;
-                    if (cp < 0xa9e5)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xaa44) {
-                    if (cp === 0xa9e6)
-                        return true;
-                    if (cp < 0xa9e7)
-                        return false;
-                    if (cp < 0xa9f0)
-                        return true;
-                    if (cp < 0xa9fa)
-                        return false;
-                    if (cp < 0xa9ff)
-                        return true;
-                    if (cp < 0xaa00)
-                        return false;
-                    if (cp < 0xaa29)
-                        return true;
-                    if (cp < 0xaa40)
-                        return false;
-                    if (cp < 0xaa43)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xaa4c)
-                    return true;
-                if (cp < 0xaa60)
-                    return false;
-                if (cp < 0xaa70)
-                    return true;
-                if (cp === 0xaa70)
-                    return true;
-                if (cp < 0xaa71)
-                    return false;
-                if (cp < 0xaa77)
-                    return true;
-                if (cp === 0xaa7a)
-                    return true;
-                if (cp < 0xaa7e)
-                    return false;
-                if (cp < 0xaab0)
-                    return true;
-                return false;
-            }
-            if (cp < 0xab01) {
-                if (cp < 0xaadb) {
-                    if (cp === 0xaab1)
-                        return true;
-                    if (cp < 0xaab5)
-                        return false;
-                    if (cp < 0xaab7)
-                        return true;
-                    if (cp < 0xaab9)
-                        return false;
-                    if (cp < 0xaabe)
-                        return true;
-                    if (cp === 0xaac0)
-                        return true;
-                    if (cp === 0xaac2)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xaadd)
-                    return true;
-                if (cp === 0xaadd)
-                    return true;
-                if (cp < 0xaae0)
-                    return false;
-                if (cp < 0xaaeb)
-                    return true;
-                if (cp === 0xaaf2)
-                    return true;
-                if (cp < 0xaaf3)
-                    return false;
-                if (cp < 0xaaf5)
-                    return true;
-                return false;
-            }
-            if (cp < 0xab30) {
-                if (cp < 0xab01)
-                    return false;
-                if (cp < 0xab07)
-                    return true;
-                if (cp < 0xab09)
-                    return false;
-                if (cp < 0xab0f)
-                    return true;
-                if (cp < 0xab11)
-                    return false;
-                if (cp < 0xab17)
-                    return true;
-                if (cp < 0xab20)
-                    return false;
-                if (cp < 0xab27)
-                    return true;
-                if (cp < 0xab28)
-                    return false;
-                if (cp < 0xab2f)
-                    return true;
-                return false;
-            }
-            if (cp < 0xab5b)
-                return true;
-            if (cp < 0xab5c)
-                return false;
-            if (cp < 0xab60)
-                return true;
-            if (cp < 0xab60)
-                return false;
-            if (cp < 0xab66)
-                return true;
-            if (cp < 0xab70)
-                return false;
-            if (cp < 0xabc0)
-                return true;
-            if (cp < 0xabc0)
-                return false;
-            if (cp < 0xabe3)
-                return true;
-            if (cp < 0xac00)
-                return false;
-            if (cp < 0xd7a4)
-                return true;
-            return false;
-        }
-        if (cp < 0x1032d) {
-            if (cp < 0xff41) {
-                if (cp < 0xfb3e) {
-                    if (cp < 0xfb13) {
-                        if (cp < 0xd7b0)
-                            return false;
-                        if (cp < 0xd7c7)
-                            return true;
-                        if (cp < 0xd7cb)
-                            return false;
-                        if (cp < 0xd7fc)
-                            return true;
-                        if (cp < 0xf900)
-                            return false;
-                        if (cp < 0xfa6e)
-                            return true;
-                        if (cp < 0xfa70)
-                            return false;
-                        if (cp < 0xfada)
-                            return true;
-                        if (cp < 0xfb00)
-                            return false;
-                        if (cp < 0xfb07)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xfb18)
-                        return true;
-                    if (cp === 0xfb1d)
-                        return true;
-                    if (cp < 0xfb1f)
-                        return false;
-                    if (cp < 0xfb29)
-                        return true;
-                    if (cp < 0xfb2a)
-                        return false;
-                    if (cp < 0xfb37)
-                        return true;
-                    if (cp < 0xfb38)
-                        return false;
-                    if (cp < 0xfb3d)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xfd50) {
-                    if (cp === 0xfb3e)
-                        return true;
-                    if (cp < 0xfb40)
-                        return false;
-                    if (cp < 0xfb42)
-                        return true;
-                    if (cp < 0xfb43)
-                        return false;
-                    if (cp < 0xfb45)
-                        return true;
-                    if (cp < 0xfb46)
-                        return false;
-                    if (cp < 0xfbb2)
-                        return true;
-                    if (cp < 0xfbd3)
-                        return false;
-                    if (cp < 0xfd3e)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xfd90)
-                    return true;
-                if (cp < 0xfd92)
-                    return false;
-                if (cp < 0xfdc8)
-                    return true;
-                if (cp < 0xfdf0)
-                    return false;
-                if (cp < 0xfdfc)
-                    return true;
-                if (cp < 0xfe70)
-                    return false;
-                if (cp < 0xfe75)
-                    return true;
-                if (cp < 0xfe76)
-                    return false;
-                if (cp < 0xfefd)
-                    return true;
-                if (cp < 0xff21)
-                    return false;
-                if (cp < 0xff3b)
-                    return true;
-                return false;
-            }
-            if (cp < 0x10000) {
-                if (cp < 0xffa0) {
-                    if (cp < 0xff41)
-                        return false;
-                    if (cp < 0xff5b)
-                        return true;
-                    if (cp < 0xff66)
-                        return false;
-                    if (cp < 0xff70)
-                        return true;
-                    if (cp === 0xff70)
-                        return true;
-                    if (cp < 0xff71)
-                        return false;
-                    if (cp < 0xff9e)
-                        return true;
-                    if (cp < 0xff9e)
-                        return false;
-                    if (cp < 0xffa0)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xffbf)
-                    return true;
-                if (cp < 0xffc2)
-                    return false;
-                if (cp < 0xffc8)
-                    return true;
-                if (cp < 0xffca)
-                    return false;
-                if (cp < 0xffd0)
-                    return true;
-                if (cp < 0xffd2)
-                    return false;
-                if (cp < 0xffd8)
-                    return true;
-                if (cp < 0xffda)
-                    return false;
-                if (cp < 0xffdd)
-                    return true;
-                return false;
-            }
-            if (cp < 0x10050) {
-                if (cp < 0x10000)
-                    return false;
-                if (cp < 0x1000c)
-                    return true;
-                if (cp < 0x1000d)
-                    return false;
-                if (cp < 0x10027)
-                    return true;
-                if (cp < 0x10028)
-                    return false;
-                if (cp < 0x1003b)
-                    return true;
-                if (cp < 0x1003c)
-                    return false;
-                if (cp < 0x1003e)
-                    return true;
-                if (cp < 0x1003f)
-                    return false;
-                if (cp < 0x1004e)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1005e)
-                return true;
-            if (cp < 0x10080)
-                return false;
-            if (cp < 0x100fb)
-                return true;
-            if (cp < 0x10140)
-                return false;
-            if (cp < 0x10175)
-                return true;
-            if (cp < 0x10280)
-                return false;
-            if (cp < 0x1029d)
-                return true;
-            if (cp < 0x102a0)
-                return false;
-            if (cp < 0x102d1)
-                return true;
-            if (cp < 0x10300)
-                return false;
-            if (cp < 0x10320)
-                return true;
-            return false;
-        }
-        if (cp < 0x10837) {
-            if (cp < 0x10450) {
-                if (cp < 0x10380) {
-                    if (cp < 0x1032d)
-                        return false;
-                    if (cp < 0x10341)
-                        return true;
-                    if (cp === 0x10341)
-                        return true;
-                    if (cp < 0x10342)
-                        return false;
-                    if (cp < 0x1034a)
-                        return true;
-                    if (cp === 0x1034a)
-                        return true;
-                    if (cp < 0x10350)
-                        return false;
-                    if (cp < 0x10376)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1039e)
-                    return true;
-                if (cp < 0x103a0)
-                    return false;
-                if (cp < 0x103c4)
-                    return true;
-                if (cp < 0x103c8)
-                    return false;
-                if (cp < 0x103d0)
-                    return true;
-                if (cp < 0x103d1)
-                    return false;
-                if (cp < 0x103d6)
-                    return true;
-                if (cp < 0x10400)
-                    return false;
-                if (cp < 0x10450)
-                    return true;
-                return false;
-            }
-            if (cp < 0x10600) {
-                if (cp < 0x10450)
-                    return false;
-                if (cp < 0x1049e)
-                    return true;
-                if (cp < 0x104b0)
-                    return false;
-                if (cp < 0x104d4)
-                    return true;
-                if (cp < 0x104d8)
-                    return false;
-                if (cp < 0x104fc)
-                    return true;
-                if (cp < 0x10500)
-                    return false;
-                if (cp < 0x10528)
-                    return true;
-                if (cp < 0x10530)
-                    return false;
-                if (cp < 0x10564)
-                    return true;
-                return false;
-            }
-            if (cp < 0x10737)
-                return true;
-            if (cp < 0x10740)
-                return false;
-            if (cp < 0x10756)
-                return true;
-            if (cp < 0x10760)
-                return false;
-            if (cp < 0x10768)
-                return true;
-            if (cp < 0x10800)
-                return false;
-            if (cp < 0x10806)
-                return true;
-            if (cp === 0x10808)
-                return true;
-            if (cp < 0x1080a)
-                return false;
-            if (cp < 0x10836)
-                return true;
-            return false;
-        }
-        if (cp < 0x109be) {
-            if (cp < 0x108e0) {
-                if (cp < 0x10837)
-                    return false;
-                if (cp < 0x10839)
-                    return true;
-                if (cp === 0x1083c)
-                    return true;
-                if (cp < 0x1083f)
-                    return false;
-                if (cp < 0x10856)
-                    return true;
-                if (cp < 0x10860)
-                    return false;
-                if (cp < 0x10877)
-                    return true;
-                if (cp < 0x10880)
-                    return false;
-                if (cp < 0x1089f)
-                    return true;
-                return false;
-            }
-            if (cp < 0x108f3)
-                return true;
-            if (cp < 0x108f4)
-                return false;
-            if (cp < 0x108f6)
-                return true;
-            if (cp < 0x10900)
-                return false;
-            if (cp < 0x10916)
-                return true;
-            if (cp < 0x10920)
-                return false;
-            if (cp < 0x1093a)
-                return true;
-            if (cp < 0x10980)
-                return false;
-            if (cp < 0x109b8)
-                return true;
-            return false;
-        }
-        if (cp < 0x10a60) {
-            if (cp < 0x109be)
-                return false;
-            if (cp < 0x109c0)
-                return true;
-            if (cp === 0x10a00)
-                return true;
-            if (cp < 0x10a10)
-                return false;
-            if (cp < 0x10a14)
-                return true;
-            if (cp < 0x10a15)
-                return false;
-            if (cp < 0x10a18)
-                return true;
-            if (cp < 0x10a19)
-                return false;
-            if (cp < 0x10a36)
-                return true;
-            return false;
-        }
-        if (cp < 0x10a7d)
-            return true;
-        if (cp < 0x10a80)
-            return false;
-        if (cp < 0x10a9d)
-            return true;
-        if (cp < 0x10ac0)
-            return false;
-        if (cp < 0x10ac8)
-            return true;
-        if (cp < 0x10ac9)
-            return false;
-        if (cp < 0x10ae5)
-            return true;
-        if (cp < 0x10b00)
-            return false;
-        if (cp < 0x10b36)
-            return true;
-        if (cp < 0x10b40)
-            return false;
-        if (cp < 0x10b56)
-            return true;
-        return false;
-    }
-    if (cp < 0x16e40) {
-        if (cp < 0x11580) {
-            if (cp < 0x11213) {
-                if (cp < 0x11083) {
-                    if (cp < 0x10d00) {
-                        if (cp < 0x10b60)
-                            return false;
-                        if (cp < 0x10b73)
-                            return true;
-                        if (cp < 0x10b80)
-                            return false;
-                        if (cp < 0x10b92)
-                            return true;
-                        if (cp < 0x10c00)
-                            return false;
-                        if (cp < 0x10c49)
-                            return true;
-                        if (cp < 0x10c80)
-                            return false;
-                        if (cp < 0x10cb3)
-                            return true;
-                        if (cp < 0x10cc0)
-                            return false;
-                        if (cp < 0x10cf3)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x10d24)
-                        return true;
-                    if (cp < 0x10f00)
-                        return false;
-                    if (cp < 0x10f1d)
-                        return true;
-                    if (cp === 0x10f27)
-                        return true;
-                    if (cp < 0x10f30)
-                        return false;
-                    if (cp < 0x10f46)
-                        return true;
-                    if (cp < 0x11003)
-                        return false;
-                    if (cp < 0x11038)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x11176) {
-                    if (cp < 0x11083)
-                        return false;
-                    if (cp < 0x110b0)
-                        return true;
-                    if (cp < 0x110d0)
-                        return false;
-                    if (cp < 0x110e9)
-                        return true;
-                    if (cp < 0x11103)
-                        return false;
-                    if (cp < 0x11127)
-                        return true;
-                    if (cp === 0x11144)
-                        return true;
-                    if (cp < 0x11150)
-                        return false;
-                    if (cp < 0x11173)
-                        return true;
-                    return false;
-                }
-                if (cp === 0x11176)
-                    return true;
-                if (cp < 0x11183)
-                    return false;
-                if (cp < 0x111b3)
-                    return true;
-                if (cp < 0x111c1)
-                    return false;
-                if (cp < 0x111c5)
-                    return true;
-                if (cp === 0x111da)
-                    return true;
-                if (cp === 0x111dc)
-                    return true;
-                if (cp < 0x11200)
-                    return false;
-                if (cp < 0x11212)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1132a) {
-                if (cp < 0x1129f) {
-                    if (cp < 0x11213)
-                        return false;
-                    if (cp < 0x1122c)
-                        return true;
-                    if (cp < 0x11280)
-                        return false;
-                    if (cp < 0x11287)
-                        return true;
-                    if (cp === 0x11288)
-                        return true;
-                    if (cp < 0x1128a)
-                        return false;
-                    if (cp < 0x1128e)
-                        return true;
-                    if (cp < 0x1128f)
-                        return false;
-                    if (cp < 0x1129e)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x112a9)
-                    return true;
-                if (cp < 0x112b0)
-                    return false;
-                if (cp < 0x112df)
-                    return true;
-                if (cp < 0x11305)
-                    return false;
-                if (cp < 0x1130d)
-                    return true;
-                if (cp < 0x1130f)
-                    return false;
-                if (cp < 0x11311)
-                    return true;
-                if (cp < 0x11313)
-                    return false;
-                if (cp < 0x11329)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1135d) {
-                if (cp < 0x1132a)
-                    return false;
-                if (cp < 0x11331)
-                    return true;
-                if (cp < 0x11332)
-                    return false;
-                if (cp < 0x11334)
-                    return true;
-                if (cp < 0x11335)
-                    return false;
-                if (cp < 0x1133a)
-                    return true;
-                if (cp === 0x1133d)
-                    return true;
-                if (cp === 0x11350)
-                    return true;
-                return false;
-            }
-            if (cp < 0x11362)
-                return true;
-            if (cp < 0x11400)
-                return false;
-            if (cp < 0x11435)
-                return true;
-            if (cp < 0x11447)
-                return false;
-            if (cp < 0x1144b)
-                return true;
-            if (cp < 0x11480)
-                return false;
-            if (cp < 0x114b0)
-                return true;
-            if (cp < 0x114c4)
-                return false;
-            if (cp < 0x114c6)
-                return true;
-            if (cp === 0x114c7)
-                return true;
-            return false;
-        }
-        if (cp < 0x11d00) {
-            if (cp < 0x11a0b) {
-                if (cp < 0x11700) {
-                    if (cp < 0x11580)
-                        return false;
-                    if (cp < 0x115af)
-                        return true;
-                    if (cp < 0x115d8)
-                        return false;
-                    if (cp < 0x115dc)
-                        return true;
-                    if (cp < 0x11600)
-                        return false;
-                    if (cp < 0x11630)
-                        return true;
-                    if (cp === 0x11644)
-                        return true;
-                    if (cp < 0x11680)
-                        return false;
-                    if (cp < 0x116ab)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1171b)
-                    return true;
-                if (cp < 0x11800)
-                    return false;
-                if (cp < 0x1182c)
-                    return true;
-                if (cp < 0x118a0)
-                    return false;
-                if (cp < 0x118e0)
-                    return true;
-                if (cp === 0x118ff)
-                    return true;
-                if (cp === 0x11a00)
-                    return true;
-                return false;
-            }
-            if (cp < 0x11a9d) {
-                if (cp < 0x11a0b)
-                    return false;
-                if (cp < 0x11a33)
-                    return true;
-                if (cp === 0x11a3a)
-                    return true;
-                if (cp === 0x11a50)
-                    return true;
-                if (cp < 0x11a5c)
-                    return false;
-                if (cp < 0x11a84)
-                    return true;
-                if (cp < 0x11a86)
-                    return false;
-                if (cp < 0x11a8a)
-                    return true;
-                return false;
-            }
-            if (cp === 0x11a9d)
-                return true;
-            if (cp < 0x11ac0)
-                return false;
-            if (cp < 0x11af9)
-                return true;
-            if (cp < 0x11c00)
-                return false;
-            if (cp < 0x11c09)
-                return true;
-            if (cp < 0x11c0a)
-                return false;
-            if (cp < 0x11c2f)
-                return true;
-            if (cp === 0x11c40)
-                return true;
-            if (cp < 0x11c72)
-                return false;
-            if (cp < 0x11c90)
-                return true;
-            return false;
-        }
-        if (cp < 0x12400) {
-            if (cp < 0x11d67) {
-                if (cp < 0x11d00)
-                    return false;
-                if (cp < 0x11d07)
-                    return true;
-                if (cp < 0x11d08)
-                    return false;
-                if (cp < 0x11d0a)
-                    return true;
-                if (cp < 0x11d0b)
-                    return false;
-                if (cp < 0x11d31)
-                    return true;
-                if (cp === 0x11d46)
-                    return true;
-                if (cp < 0x11d60)
-                    return false;
-                if (cp < 0x11d66)
-                    return true;
-                return false;
-            }
-            if (cp < 0x11d69)
-                return true;
-            if (cp < 0x11d6a)
-                return false;
-            if (cp < 0x11d8a)
-                return true;
-            if (cp === 0x11d98)
-                return true;
-            if (cp < 0x11ee0)
-                return false;
-            if (cp < 0x11ef3)
-                return true;
-            if (cp < 0x12000)
-                return false;
-            if (cp < 0x1239a)
-                return true;
-            return false;
-        }
-        if (cp < 0x16a40) {
-            if (cp < 0x12400)
-                return false;
-            if (cp < 0x1246f)
-                return true;
-            if (cp < 0x12480)
-                return false;
-            if (cp < 0x12544)
-                return true;
-            if (cp < 0x13000)
-                return false;
-            if (cp < 0x1342f)
-                return true;
-            if (cp < 0x14400)
-                return false;
-            if (cp < 0x14647)
-                return true;
-            if (cp < 0x16800)
-                return false;
-            if (cp < 0x16a39)
-                return true;
-            return false;
-        }
-        if (cp < 0x16a5f)
-            return true;
-        if (cp < 0x16ad0)
-            return false;
-        if (cp < 0x16aee)
-            return true;
-        if (cp < 0x16b00)
-            return false;
-        if (cp < 0x16b30)
-            return true;
-        if (cp < 0x16b40)
-            return false;
-        if (cp < 0x16b44)
-            return true;
-        if (cp < 0x16b63)
-            return false;
-        if (cp < 0x16b78)
-            return true;
-        if (cp < 0x16b7d)
-            return false;
-        if (cp < 0x16b90)
-            return true;
-        return false;
-    }
-    if (cp < 0x1d7c4) {
-        if (cp < 0x1d4bd) {
-            if (cp < 0x1bc70) {
-                if (cp < 0x17000) {
-                    if (cp < 0x16e40)
-                        return false;
-                    if (cp < 0x16e80)
-                        return true;
-                    if (cp < 0x16f00)
-                        return false;
-                    if (cp < 0x16f45)
-                        return true;
-                    if (cp === 0x16f50)
-                        return true;
-                    if (cp < 0x16f93)
-                        return false;
-                    if (cp < 0x16fa0)
-                        return true;
-                    if (cp < 0x16fe0)
-                        return false;
-                    if (cp < 0x16fe2)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x187f2)
-                    return true;
-                if (cp < 0x18800)
-                    return false;
-                if (cp < 0x18af3)
-                    return true;
-                if (cp < 0x1b000)
-                    return false;
-                if (cp < 0x1b11f)
-                    return true;
-                if (cp < 0x1b170)
-                    return false;
-                if (cp < 0x1b2fc)
-                    return true;
-                if (cp < 0x1bc00)
-                    return false;
-                if (cp < 0x1bc6b)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1d49e) {
-                if (cp < 0x1bc70)
-                    return false;
-                if (cp < 0x1bc7d)
-                    return true;
-                if (cp < 0x1bc80)
-                    return false;
-                if (cp < 0x1bc89)
-                    return true;
-                if (cp < 0x1bc90)
-                    return false;
-                if (cp < 0x1bc9a)
-                    return true;
-                if (cp < 0x1d400)
-                    return false;
-                if (cp < 0x1d455)
-                    return true;
-                if (cp < 0x1d456)
-                    return false;
-                if (cp < 0x1d49d)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1d4a0)
-                return true;
-            if (cp === 0x1d4a2)
-                return true;
-            if (cp < 0x1d4a5)
-                return false;
-            if (cp < 0x1d4a7)
-                return true;
-            if (cp < 0x1d4a9)
-                return false;
-            if (cp < 0x1d4ad)
-                return true;
-            if (cp < 0x1d4ae)
-                return false;
-            if (cp < 0x1d4ba)
-                return true;
-            if (cp === 0x1d4bb)
-                return true;
-            return false;
-        }
-        if (cp < 0x1d552) {
-            if (cp < 0x1d51e) {
-                if (cp < 0x1d4bd)
-                    return false;
-                if (cp < 0x1d4c4)
-                    return true;
-                if (cp < 0x1d4c5)
-                    return false;
-                if (cp < 0x1d506)
-                    return true;
-                if (cp < 0x1d507)
-                    return false;
-                if (cp < 0x1d50b)
-                    return true;
-                if (cp < 0x1d50d)
-                    return false;
-                if (cp < 0x1d515)
-                    return true;
-                if (cp < 0x1d516)
-                    return false;
-                if (cp < 0x1d51d)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1d53a)
-                return true;
-            if (cp < 0x1d53b)
-                return false;
-            if (cp < 0x1d53f)
-                return true;
-            if (cp < 0x1d540)
-                return false;
-            if (cp < 0x1d545)
-                return true;
-            if (cp === 0x1d546)
-                return true;
-            if (cp < 0x1d54a)
-                return false;
-            if (cp < 0x1d551)
-                return true;
-            return false;
-        }
-        if (cp < 0x1d716) {
-            if (cp < 0x1d552)
-                return false;
-            if (cp < 0x1d6a6)
-                return true;
-            if (cp < 0x1d6a8)
-                return false;
-            if (cp < 0x1d6c1)
-                return true;
-            if (cp < 0x1d6c2)
-                return false;
-            if (cp < 0x1d6db)
-                return true;
-            if (cp < 0x1d6dc)
-                return false;
-            if (cp < 0x1d6fb)
-                return true;
-            if (cp < 0x1d6fc)
-                return false;
-            if (cp < 0x1d715)
-                return true;
-            return false;
-        }
-        if (cp < 0x1d735)
-            return true;
-        if (cp < 0x1d736)
-            return false;
-        if (cp < 0x1d74f)
-            return true;
-        if (cp < 0x1d750)
-            return false;
-        if (cp < 0x1d76f)
-            return true;
-        if (cp < 0x1d770)
-            return false;
-        if (cp < 0x1d789)
-            return true;
-        if (cp < 0x1d78a)
-            return false;
-        if (cp < 0x1d7a9)
-            return true;
-        if (cp < 0x1d7aa)
-            return false;
-        if (cp < 0x1d7c3)
-            return true;
-        return false;
-    }
-    if (cp < 0x1ee5b) {
-        if (cp < 0x1ee39) {
-            if (cp < 0x1ee21) {
-                if (cp < 0x1d7c4)
-                    return false;
-                if (cp < 0x1d7cc)
-                    return true;
-                if (cp < 0x1e800)
-                    return false;
-                if (cp < 0x1e8c5)
-                    return true;
-                if (cp < 0x1e900)
-                    return false;
-                if (cp < 0x1e944)
-                    return true;
-                if (cp < 0x1ee00)
-                    return false;
-                if (cp < 0x1ee04)
-                    return true;
-                if (cp < 0x1ee05)
-                    return false;
-                if (cp < 0x1ee20)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1ee23)
-                return true;
-            if (cp === 0x1ee24)
-                return true;
-            if (cp === 0x1ee27)
-                return true;
-            if (cp < 0x1ee29)
-                return false;
-            if (cp < 0x1ee33)
-                return true;
-            if (cp < 0x1ee34)
-                return false;
-            if (cp < 0x1ee38)
-                return true;
-            return false;
-        }
-        if (cp < 0x1ee4b) {
-            if (cp === 0x1ee39)
-                return true;
-            if (cp === 0x1ee3b)
-                return true;
-            if (cp === 0x1ee42)
-                return true;
-            if (cp === 0x1ee47)
-                return true;
-            if (cp === 0x1ee49)
-                return true;
-            return false;
-        }
-        if (cp === 0x1ee4b)
-            return true;
-        if (cp < 0x1ee4d)
-            return false;
-        if (cp < 0x1ee50)
-            return true;
-        if (cp < 0x1ee51)
-            return false;
-        if (cp < 0x1ee53)
-            return true;
-        if (cp === 0x1ee54)
-            return true;
-        if (cp === 0x1ee57)
-            return true;
-        if (cp === 0x1ee59)
-            return true;
-        return false;
-    }
-    if (cp < 0x1ee80) {
-        if (cp < 0x1ee67) {
-            if (cp === 0x1ee5b)
-                return true;
-            if (cp === 0x1ee5d)
-                return true;
-            if (cp === 0x1ee5f)
-                return true;
-            if (cp < 0x1ee61)
-                return false;
-            if (cp < 0x1ee63)
-                return true;
-            if (cp === 0x1ee64)
-                return true;
-            return false;
-        }
-        if (cp < 0x1ee6b)
-            return true;
-        if (cp < 0x1ee6c)
-            return false;
-        if (cp < 0x1ee73)
-            return true;
-        if (cp < 0x1ee74)
-            return false;
-        if (cp < 0x1ee78)
-            return true;
-        if (cp < 0x1ee79)
-            return false;
-        if (cp < 0x1ee7d)
-            return true;
-        if (cp === 0x1ee7e)
-            return true;
-        return false;
-    }
-    if (cp < 0x20000) {
-        if (cp < 0x1ee80)
-            return false;
-        if (cp < 0x1ee8a)
-            return true;
-        if (cp < 0x1ee8b)
-            return false;
-        if (cp < 0x1ee9c)
-            return true;
-        if (cp < 0x1eea1)
-            return false;
-        if (cp < 0x1eea4)
-            return true;
-        if (cp < 0x1eea5)
-            return false;
-        if (cp < 0x1eeaa)
-            return true;
-        if (cp < 0x1eeab)
-            return false;
-        if (cp < 0x1eebc)
-            return true;
-        return false;
-    }
-    if (cp < 0x2a6d7)
-        return true;
-    if (cp < 0x2a700)
-        return false;
-    if (cp < 0x2b735)
-        return true;
-    if (cp < 0x2b740)
-        return false;
-    if (cp < 0x2b81e)
-        return true;
-    if (cp < 0x2b820)
-        return false;
-    if (cp < 0x2cea2)
-        return true;
-    if (cp < 0x2ceb0)
-        return false;
-    if (cp < 0x2ebe1)
-        return true;
-    if (cp < 0x2f800)
-        return false;
-    if (cp < 0x2fa1e)
-        return true;
-    return false;
-}
-function isLargeIdContinue(cp) {
-    if (cp < 0x1cd0) {
-        if (cp < 0xd82) {
-            if (cp < 0xa83) {
-                if (cp < 0x93b) {
-                    if (cp < 0x6ea) {
-                        if (cp < 0x5c7) {
-                            if (cp === 0xb7)
-                                return true;
-                            if (cp < 0x300)
-                                return false;
-                            if (cp < 0x370)
-                                return true;
-                            if (cp === 0x387)
-                                return true;
-                            if (cp < 0x483)
-                                return false;
-                            if (cp < 0x488)
-                                return true;
-                            if (cp < 0x591)
-                                return false;
-                            if (cp < 0x5be)
-                                return true;
-                            if (cp === 0x5bf)
-                                return true;
-                            if (cp < 0x5c1)
-                                return false;
-                            if (cp < 0x5c3)
-                                return true;
-                            if (cp < 0x5c4)
-                                return false;
-                            if (cp < 0x5c6)
-                                return true;
-                            return false;
-                        }
-                        if (cp === 0x5c7)
-                            return true;
-                        if (cp < 0x610)
-                            return false;
-                        if (cp < 0x61b)
-                            return true;
-                        if (cp < 0x64b)
-                            return false;
-                        if (cp < 0x660)
-                            return true;
-                        if (cp < 0x660)
-                            return false;
-                        if (cp < 0x66a)
-                            return true;
-                        if (cp === 0x670)
-                            return true;
-                        if (cp < 0x6d6)
-                            return false;
-                        if (cp < 0x6dd)
-                            return true;
-                        if (cp < 0x6df)
-                            return false;
-                        if (cp < 0x6e5)
-                            return true;
-                        if (cp < 0x6e7)
-                            return false;
-                        if (cp < 0x6e9)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x816) {
-                        if (cp < 0x6ea)
-                            return false;
-                        if (cp < 0x6ee)
-                            return true;
-                        if (cp < 0x6f0)
-                            return false;
-                        if (cp < 0x6fa)
-                            return true;
-                        if (cp === 0x711)
-                            return true;
-                        if (cp < 0x730)
-                            return false;
-                        if (cp < 0x74b)
-                            return true;
-                        if (cp < 0x7a6)
-                            return false;
-                        if (cp < 0x7b1)
-                            return true;
-                        if (cp < 0x7c0)
-                            return false;
-                        if (cp < 0x7ca)
-                            return true;
-                        if (cp < 0x7eb)
-                            return false;
-                        if (cp < 0x7f4)
-                            return true;
-                        if (cp === 0x7fd)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x81a)
-                        return true;
-                    if (cp < 0x81b)
-                        return false;
-                    if (cp < 0x824)
-                        return true;
-                    if (cp < 0x825)
-                        return false;
-                    if (cp < 0x828)
-                        return true;
-                    if (cp < 0x829)
-                        return false;
-                    if (cp < 0x82e)
-                        return true;
-                    if (cp < 0x859)
-                        return false;
-                    if (cp < 0x85c)
-                        return true;
-                    if (cp < 0x8d3)
-                        return false;
-                    if (cp < 0x8e2)
-                        return true;
-                    if (cp < 0x8e3)
-                        return false;
-                    if (cp < 0x903)
-                        return true;
-                    if (cp === 0x903)
-                        return true;
-                    if (cp === 0x93a)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x9cd) {
-                    if (cp < 0x962) {
-                        if (cp === 0x93b)
-                            return true;
-                        if (cp === 0x93c)
-                            return true;
-                        if (cp < 0x93e)
-                            return false;
-                        if (cp < 0x941)
-                            return true;
-                        if (cp < 0x941)
-                            return false;
-                        if (cp < 0x949)
-                            return true;
-                        if (cp < 0x949)
-                            return false;
-                        if (cp < 0x94d)
-                            return true;
-                        if (cp === 0x94d)
-                            return true;
-                        if (cp < 0x94e)
-                            return false;
-                        if (cp < 0x950)
-                            return true;
-                        if (cp < 0x951)
-                            return false;
-                        if (cp < 0x958)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x964)
-                        return true;
-                    if (cp < 0x966)
-                        return false;
-                    if (cp < 0x970)
-                        return true;
-                    if (cp === 0x981)
-                        return true;
-                    if (cp < 0x982)
-                        return false;
-                    if (cp < 0x984)
-                        return true;
-                    if (cp === 0x9bc)
-                        return true;
-                    if (cp < 0x9be)
-                        return false;
-                    if (cp < 0x9c1)
-                        return true;
-                    if (cp < 0x9c1)
-                        return false;
-                    if (cp < 0x9c5)
-                        return true;
-                    if (cp < 0x9c7)
-                        return false;
-                    if (cp < 0x9c9)
-                        return true;
-                    if (cp < 0x9cb)
-                        return false;
-                    if (cp < 0x9cd)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa3e) {
-                    if (cp === 0x9cd)
-                        return true;
-                    if (cp === 0x9d7)
-                        return true;
-                    if (cp < 0x9e2)
-                        return false;
-                    if (cp < 0x9e4)
-                        return true;
-                    if (cp < 0x9e6)
-                        return false;
-                    if (cp < 0x9f0)
-                        return true;
-                    if (cp === 0x9fe)
-                        return true;
-                    if (cp < 0xa01)
-                        return false;
-                    if (cp < 0xa03)
-                        return true;
-                    if (cp === 0xa03)
-                        return true;
-                    if (cp === 0xa3c)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa41)
-                    return true;
-                if (cp < 0xa41)
-                    return false;
-                if (cp < 0xa43)
-                    return true;
-                if (cp < 0xa47)
-                    return false;
-                if (cp < 0xa49)
-                    return true;
-                if (cp < 0xa4b)
-                    return false;
-                if (cp < 0xa4e)
-                    return true;
-                if (cp === 0xa51)
-                    return true;
-                if (cp < 0xa66)
-                    return false;
-                if (cp < 0xa70)
-                    return true;
-                if (cp < 0xa70)
-                    return false;
-                if (cp < 0xa72)
-                    return true;
-                if (cp === 0xa75)
-                    return true;
-                if (cp < 0xa81)
-                    return false;
-                if (cp < 0xa83)
-                    return true;
-                return false;
-            }
-            if (cp < 0xc00) {
-                if (cp < 0xb41) {
-                    if (cp < 0xae2) {
-                        if (cp === 0xa83)
-                            return true;
-                        if (cp === 0xabc)
-                            return true;
-                        if (cp < 0xabe)
-                            return false;
-                        if (cp < 0xac1)
-                            return true;
-                        if (cp < 0xac1)
-                            return false;
-                        if (cp < 0xac6)
-                            return true;
-                        if (cp < 0xac7)
-                            return false;
-                        if (cp < 0xac9)
-                            return true;
-                        if (cp === 0xac9)
-                            return true;
-                        if (cp < 0xacb)
-                            return false;
-                        if (cp < 0xacd)
-                            return true;
-                        if (cp === 0xacd)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0xae4)
-                        return true;
-                    if (cp < 0xae6)
-                        return false;
-                    if (cp < 0xaf0)
-                        return true;
-                    if (cp < 0xafa)
-                        return false;
-                    if (cp < 0xb00)
-                        return true;
-                    if (cp === 0xb01)
-                        return true;
-                    if (cp < 0xb02)
-                        return false;
-                    if (cp < 0xb04)
-                        return true;
-                    if (cp === 0xb3c)
-                        return true;
-                    if (cp === 0xb3e)
-                        return true;
-                    if (cp === 0xb3f)
-                        return true;
-                    if (cp === 0xb40)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xb82) {
-                    if (cp < 0xb41)
-                        return false;
-                    if (cp < 0xb45)
-                        return true;
-                    if (cp < 0xb47)
-                        return false;
-                    if (cp < 0xb49)
-                        return true;
-                    if (cp < 0xb4b)
-                        return false;
-                    if (cp < 0xb4d)
-                        return true;
-                    if (cp === 0xb4d)
-                        return true;
-                    if (cp === 0xb56)
-                        return true;
-                    if (cp === 0xb57)
-                        return true;
-                    if (cp < 0xb62)
-                        return false;
-                    if (cp < 0xb64)
-                        return true;
-                    if (cp < 0xb66)
-                        return false;
-                    if (cp < 0xb70)
-                        return true;
-                    return false;
-                }
-                if (cp === 0xb82)
-                    return true;
-                if (cp < 0xbbe)
-                    return false;
-                if (cp < 0xbc0)
-                    return true;
-                if (cp === 0xbc0)
-                    return true;
-                if (cp < 0xbc1)
-                    return false;
-                if (cp < 0xbc3)
-                    return true;
-                if (cp < 0xbc6)
-                    return false;
-                if (cp < 0xbc9)
-                    return true;
-                if (cp < 0xbca)
-                    return false;
-                if (cp < 0xbcd)
-                    return true;
-                if (cp === 0xbcd)
-                    return true;
-                if (cp === 0xbd7)
-                    return true;
-                if (cp < 0xbe6)
-                    return false;
-                if (cp < 0xbf0)
-                    return true;
-                return false;
-            }
-            if (cp < 0xcc7) {
-                if (cp < 0xc62) {
-                    if (cp === 0xc00)
-                        return true;
-                    if (cp < 0xc01)
-                        return false;
-                    if (cp < 0xc04)
-                        return true;
-                    if (cp === 0xc04)
-                        return true;
-                    if (cp < 0xc3e)
-                        return false;
-                    if (cp < 0xc41)
-                        return true;
-                    if (cp < 0xc41)
-                        return false;
-                    if (cp < 0xc45)
-                        return true;
-                    if (cp < 0xc46)
-                        return false;
-                    if (cp < 0xc49)
-                        return true;
-                    if (cp < 0xc4a)
-                        return false;
-                    if (cp < 0xc4e)
-                        return true;
-                    if (cp < 0xc55)
-                        return false;
-                    if (cp < 0xc57)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xc64)
-                    return true;
-                if (cp < 0xc66)
-                    return false;
-                if (cp < 0xc70)
-                    return true;
-                if (cp === 0xc81)
-                    return true;
-                if (cp < 0xc82)
-                    return false;
-                if (cp < 0xc84)
-                    return true;
-                if (cp === 0xcbc)
-                    return true;
-                if (cp === 0xcbe)
-                    return true;
-                if (cp === 0xcbf)
-                    return true;
-                if (cp < 0xcc0)
-                    return false;
-                if (cp < 0xcc5)
-                    return true;
-                if (cp === 0xcc6)
-                    return true;
-                return false;
-            }
-            if (cp < 0xd3b) {
-                if (cp < 0xcc7)
-                    return false;
-                if (cp < 0xcc9)
-                    return true;
-                if (cp < 0xcca)
-                    return false;
-                if (cp < 0xccc)
-                    return true;
-                if (cp < 0xccc)
-                    return false;
-                if (cp < 0xcce)
-                    return true;
-                if (cp < 0xcd5)
-                    return false;
-                if (cp < 0xcd7)
-                    return true;
-                if (cp < 0xce2)
-                    return false;
-                if (cp < 0xce4)
-                    return true;
-                if (cp < 0xce6)
-                    return false;
-                if (cp < 0xcf0)
-                    return true;
-                if (cp < 0xd00)
-                    return false;
-                if (cp < 0xd02)
-                    return true;
-                if (cp < 0xd02)
-                    return false;
-                if (cp < 0xd04)
-                    return true;
-                return false;
-            }
-            if (cp < 0xd3d)
-                return true;
-            if (cp < 0xd3e)
-                return false;
-            if (cp < 0xd41)
-                return true;
-            if (cp < 0xd41)
-                return false;
-            if (cp < 0xd45)
-                return true;
-            if (cp < 0xd46)
-                return false;
-            if (cp < 0xd49)
-                return true;
-            if (cp < 0xd4a)
-                return false;
-            if (cp < 0xd4d)
-                return true;
-            if (cp === 0xd4d)
-                return true;
-            if (cp === 0xd57)
-                return true;
-            if (cp < 0xd62)
-                return false;
-            if (cp < 0xd64)
-                return true;
-            if (cp < 0xd66)
-                return false;
-            if (cp < 0xd70)
-                return true;
-            return false;
-        }
-        if (cp < 0x17e0) {
-            if (cp < 0x1038) {
-                if (cp < 0xf18) {
-                    if (cp < 0xe31) {
-                        if (cp < 0xd82)
-                            return false;
-                        if (cp < 0xd84)
-                            return true;
-                        if (cp === 0xdca)
-                            return true;
-                        if (cp < 0xdcf)
-                            return false;
-                        if (cp < 0xdd2)
-                            return true;
-                        if (cp < 0xdd2)
-                            return false;
-                        if (cp < 0xdd5)
-                            return true;
-                        if (cp === 0xdd6)
-                            return true;
-                        if (cp < 0xdd8)
-                            return false;
-                        if (cp < 0xde0)
-                            return true;
-                        if (cp < 0xde6)
-                            return false;
-                        if (cp < 0xdf0)
-                            return true;
-                        if (cp < 0xdf2)
-                            return false;
-                        if (cp < 0xdf4)
-                            return true;
-                        return false;
-                    }
-                    if (cp === 0xe31)
-                        return true;
-                    if (cp < 0xe34)
-                        return false;
-                    if (cp < 0xe3b)
-                        return true;
-                    if (cp < 0xe47)
-                        return false;
-                    if (cp < 0xe4f)
-                        return true;
-                    if (cp < 0xe50)
-                        return false;
-                    if (cp < 0xe5a)
-                        return true;
-                    if (cp === 0xeb1)
-                        return true;
-                    if (cp < 0xeb4)
-                        return false;
-                    if (cp < 0xeba)
-                        return true;
-                    if (cp < 0xebb)
-                        return false;
-                    if (cp < 0xebd)
-                        return true;
-                    if (cp < 0xec8)
-                        return false;
-                    if (cp < 0xece)
-                        return true;
-                    if (cp < 0xed0)
-                        return false;
-                    if (cp < 0xeda)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xf80) {
-                    if (cp < 0xf18)
-                        return false;
-                    if (cp < 0xf1a)
-                        return true;
-                    if (cp < 0xf20)
-                        return false;
-                    if (cp < 0xf2a)
-                        return true;
-                    if (cp === 0xf35)
-                        return true;
-                    if (cp === 0xf37)
-                        return true;
-                    if (cp === 0xf39)
-                        return true;
-                    if (cp < 0xf3e)
-                        return false;
-                    if (cp < 0xf40)
-                        return true;
-                    if (cp < 0xf71)
-                        return false;
-                    if (cp < 0xf7f)
-                        return true;
-                    if (cp === 0xf7f)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xf85)
-                    return true;
-                if (cp < 0xf86)
-                    return false;
-                if (cp < 0xf88)
-                    return true;
-                if (cp < 0xf8d)
-                    return false;
-                if (cp < 0xf98)
-                    return true;
-                if (cp < 0xf99)
-                    return false;
-                if (cp < 0xfbd)
-                    return true;
-                if (cp === 0xfc6)
-                    return true;
-                if (cp < 0x102b)
-                    return false;
-                if (cp < 0x102d)
-                    return true;
-                if (cp < 0x102d)
-                    return false;
-                if (cp < 0x1031)
-                    return true;
-                if (cp === 0x1031)
-                    return true;
-                if (cp < 0x1032)
-                    return false;
-                if (cp < 0x1038)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1090) {
-                if (cp < 0x1062) {
-                    if (cp === 0x1038)
-                        return true;
-                    if (cp < 0x1039)
-                        return false;
-                    if (cp < 0x103b)
-                        return true;
-                    if (cp < 0x103b)
-                        return false;
-                    if (cp < 0x103d)
-                        return true;
-                    if (cp < 0x103d)
-                        return false;
-                    if (cp < 0x103f)
-                        return true;
-                    if (cp < 0x1040)
-                        return false;
-                    if (cp < 0x104a)
-                        return true;
-                    if (cp < 0x1056)
-                        return false;
-                    if (cp < 0x1058)
-                        return true;
-                    if (cp < 0x1058)
-                        return false;
-                    if (cp < 0x105a)
-                        return true;
-                    if (cp < 0x105e)
-                        return false;
-                    if (cp < 0x1061)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1065)
-                    return true;
-                if (cp < 0x1067)
-                    return false;
-                if (cp < 0x106e)
-                    return true;
-                if (cp < 0x1071)
-                    return false;
-                if (cp < 0x1075)
-                    return true;
-                if (cp === 0x1082)
-                    return true;
-                if (cp < 0x1083)
-                    return false;
-                if (cp < 0x1085)
-                    return true;
-                if (cp < 0x1085)
-                    return false;
-                if (cp < 0x1087)
-                    return true;
-                if (cp < 0x1087)
-                    return false;
-                if (cp < 0x108d)
-                    return true;
-                if (cp === 0x108d)
-                    return true;
-                if (cp === 0x108f)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1772) {
-                if (cp < 0x1090)
-                    return false;
-                if (cp < 0x109a)
-                    return true;
-                if (cp < 0x109a)
-                    return false;
-                if (cp < 0x109d)
-                    return true;
-                if (cp === 0x109d)
-                    return true;
-                if (cp < 0x135d)
-                    return false;
-                if (cp < 0x1360)
-                    return true;
-                if (cp < 0x1369)
-                    return false;
-                if (cp < 0x1372)
-                    return true;
-                if (cp < 0x1712)
-                    return false;
-                if (cp < 0x1715)
-                    return true;
-                if (cp < 0x1732)
-                    return false;
-                if (cp < 0x1735)
-                    return true;
-                if (cp < 0x1752)
-                    return false;
-                if (cp < 0x1754)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1774)
-                return true;
-            if (cp < 0x17b4)
-                return false;
-            if (cp < 0x17b6)
-                return true;
-            if (cp === 0x17b6)
-                return true;
-            if (cp < 0x17b7)
-                return false;
-            if (cp < 0x17be)
-                return true;
-            if (cp < 0x17be)
-                return false;
-            if (cp < 0x17c6)
-                return true;
-            if (cp === 0x17c6)
-                return true;
-            if (cp < 0x17c7)
-                return false;
-            if (cp < 0x17c9)
-                return true;
-            if (cp < 0x17c9)
-                return false;
-            if (cp < 0x17d4)
-                return true;
-            if (cp === 0x17dd)
-                return true;
-            return false;
-        }
-        if (cp < 0x1b04) {
-            if (cp < 0x1a1b) {
-                if (cp < 0x1930) {
-                    if (cp < 0x17e0)
-                        return false;
-                    if (cp < 0x17ea)
-                        return true;
-                    if (cp < 0x180b)
-                        return false;
-                    if (cp < 0x180e)
-                        return true;
-                    if (cp < 0x1810)
-                        return false;
-                    if (cp < 0x181a)
-                        return true;
-                    if (cp === 0x18a9)
-                        return true;
-                    if (cp < 0x1920)
-                        return false;
-                    if (cp < 0x1923)
-                        return true;
-                    if (cp < 0x1923)
-                        return false;
-                    if (cp < 0x1927)
-                        return true;
-                    if (cp < 0x1927)
-                        return false;
-                    if (cp < 0x1929)
-                        return true;
-                    if (cp < 0x1929)
-                        return false;
-                    if (cp < 0x192c)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x1932)
-                    return true;
-                if (cp === 0x1932)
-                    return true;
-                if (cp < 0x1933)
-                    return false;
-                if (cp < 0x1939)
-                    return true;
-                if (cp < 0x1939)
-                    return false;
-                if (cp < 0x193c)
-                    return true;
-                if (cp < 0x1946)
-                    return false;
-                if (cp < 0x1950)
-                    return true;
-                if (cp < 0x19d0)
-                    return false;
-                if (cp < 0x19da)
-                    return true;
-                if (cp === 0x19da)
-                    return true;
-                if (cp < 0x1a17)
-                    return false;
-                if (cp < 0x1a19)
-                    return true;
-                if (cp < 0x1a19)
-                    return false;
-                if (cp < 0x1a1b)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1a63) {
-                if (cp === 0x1a1b)
-                    return true;
-                if (cp === 0x1a55)
-                    return true;
-                if (cp === 0x1a56)
-                    return true;
-                if (cp === 0x1a57)
-                    return true;
-                if (cp < 0x1a58)
-                    return false;
-                if (cp < 0x1a5f)
-                    return true;
-                if (cp === 0x1a60)
-                    return true;
-                if (cp === 0x1a61)
-                    return true;
-                if (cp === 0x1a62)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1a65)
-                return true;
-            if (cp < 0x1a65)
-                return false;
-            if (cp < 0x1a6d)
-                return true;
-            if (cp < 0x1a6d)
-                return false;
-            if (cp < 0x1a73)
-                return true;
-            if (cp < 0x1a73)
-                return false;
-            if (cp < 0x1a7d)
-                return true;
-            if (cp === 0x1a7f)
-                return true;
-            if (cp < 0x1a80)
-                return false;
-            if (cp < 0x1a8a)
-                return true;
-            if (cp < 0x1a90)
-                return false;
-            if (cp < 0x1a9a)
-                return true;
-            if (cp < 0x1ab0)
-                return false;
-            if (cp < 0x1abe)
-                return true;
-            if (cp < 0x1b00)
-                return false;
-            if (cp < 0x1b04)
-                return true;
-            return false;
-        }
-        if (cp < 0x1baa) {
-            if (cp < 0x1b43) {
-                if (cp === 0x1b04)
-                    return true;
-                if (cp === 0x1b34)
-                    return true;
-                if (cp === 0x1b35)
-                    return true;
-                if (cp < 0x1b36)
-                    return false;
-                if (cp < 0x1b3b)
-                    return true;
-                if (cp === 0x1b3b)
-                    return true;
-                if (cp === 0x1b3c)
-                    return true;
-                if (cp < 0x1b3d)
-                    return false;
-                if (cp < 0x1b42)
-                    return true;
-                if (cp === 0x1b42)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1b45)
-                return true;
-            if (cp < 0x1b50)
-                return false;
-            if (cp < 0x1b5a)
-                return true;
-            if (cp < 0x1b6b)
-                return false;
-            if (cp < 0x1b74)
-                return true;
-            if (cp < 0x1b80)
-                return false;
-            if (cp < 0x1b82)
-                return true;
-            if (cp === 0x1b82)
-                return true;
-            if (cp === 0x1ba1)
-                return true;
-            if (cp < 0x1ba2)
-                return false;
-            if (cp < 0x1ba6)
-                return true;
-            if (cp < 0x1ba6)
-                return false;
-            if (cp < 0x1ba8)
-                return true;
-            if (cp < 0x1ba8)
-                return false;
-            if (cp < 0x1baa)
-                return true;
-            return false;
-        }
-        if (cp < 0x1bee) {
-            if (cp === 0x1baa)
-                return true;
-            if (cp < 0x1bab)
-                return false;
-            if (cp < 0x1bae)
-                return true;
-            if (cp < 0x1bb0)
-                return false;
-            if (cp < 0x1bba)
-                return true;
-            if (cp === 0x1be6)
-                return true;
-            if (cp === 0x1be7)
-                return true;
-            if (cp < 0x1be8)
-                return false;
-            if (cp < 0x1bea)
-                return true;
-            if (cp < 0x1bea)
-                return false;
-            if (cp < 0x1bed)
-                return true;
-            if (cp === 0x1bed)
-                return true;
-            return false;
-        }
-        if (cp === 0x1bee)
-            return true;
-        if (cp < 0x1bef)
-            return false;
-        if (cp < 0x1bf2)
-            return true;
-        if (cp < 0x1bf2)
-            return false;
-        if (cp < 0x1bf4)
-            return true;
-        if (cp < 0x1c24)
-            return false;
-        if (cp < 0x1c2c)
-            return true;
-        if (cp < 0x1c2c)
-            return false;
-        if (cp < 0x1c34)
-            return true;
-        if (cp < 0x1c34)
-            return false;
-        if (cp < 0x1c36)
-            return true;
-        if (cp < 0x1c36)
-            return false;
-        if (cp < 0x1c38)
-            return true;
-        if (cp < 0x1c40)
-            return false;
-        if (cp < 0x1c4a)
-            return true;
-        if (cp < 0x1c50)
-            return false;
-        if (cp < 0x1c5a)
-            return true;
-        return false;
-    }
-    if (cp < 0x1123e) {
-        if (cp < 0xaab7) {
-            if (cp < 0xa8b4) {
-                if (cp < 0x2d7f) {
-                    if (cp < 0x1cf8) {
-                        if (cp < 0x1cd0)
-                            return false;
-                        if (cp < 0x1cd3)
-                            return true;
-                        if (cp < 0x1cd4)
-                            return false;
-                        if (cp < 0x1ce1)
-                            return true;
-                        if (cp === 0x1ce1)
-                            return true;
-                        if (cp < 0x1ce2)
-                            return false;
-                        if (cp < 0x1ce9)
-                            return true;
-                        if (cp === 0x1ced)
-                            return true;
-                        if (cp < 0x1cf2)
-                            return false;
-                        if (cp < 0x1cf4)
-                            return true;
-                        if (cp === 0x1cf4)
-                            return true;
-                        if (cp === 0x1cf7)
-                            return true;
-                        return false;
-                    }
-                    if (cp < 0x1cfa)
-                        return true;
-                    if (cp < 0x1dc0)
-                        return false;
-                    if (cp < 0x1dfa)
-                        return true;
-                    if (cp < 0x1dfb)
-                        return false;
-                    if (cp < 0x1e00)
-                        return true;
-                    if (cp < 0x203f)
-                        return false;
-                    if (cp < 0x2041)
-                        return true;
-                    if (cp === 0x2054)
-                        return true;
-                    if (cp < 0x20d0)
-                        return false;
-                    if (cp < 0x20dd)
-                        return true;
-                    if (cp === 0x20e1)
-                        return true;
-                    if (cp < 0x20e5)
-                        return false;
-                    if (cp < 0x20f1)
-                        return true;
-                    if (cp < 0x2cef)
-                        return false;
-                    if (cp < 0x2cf2)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa69e) {
-                    if (cp === 0x2d7f)
-                        return true;
-                    if (cp < 0x2de0)
-                        return false;
-                    if (cp < 0x2e00)
-                        return true;
-                    if (cp < 0x302a)
-                        return false;
-                    if (cp < 0x302e)
-                        return true;
-                    if (cp < 0x302e)
-                        return false;
-                    if (cp < 0x3030)
-                        return true;
-                    if (cp < 0x3099)
-                        return false;
-                    if (cp < 0x309b)
-                        return true;
-                    if (cp < 0xa620)
-                        return false;
-                    if (cp < 0xa62a)
-                        return true;
-                    if (cp === 0xa66f)
-                        return true;
-                    if (cp < 0xa674)
-                        return false;
-                    if (cp < 0xa67e)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa6a0)
-                    return true;
-                if (cp < 0xa6f0)
-                    return false;
-                if (cp < 0xa6f2)
-                    return true;
-                if (cp === 0xa802)
-                    return true;
-                if (cp === 0xa806)
-                    return true;
-                if (cp === 0xa80b)
-                    return true;
-                if (cp < 0xa823)
-                    return false;
-                if (cp < 0xa825)
-                    return true;
-                if (cp < 0xa825)
-                    return false;
-                if (cp < 0xa827)
-                    return true;
-                if (cp === 0xa827)
-                    return true;
-                if (cp < 0xa880)
-                    return false;
-                if (cp < 0xa882)
-                    return true;
-                return false;
-            }
-            if (cp < 0xa9d0) {
-                if (cp < 0xa952) {
-                    if (cp < 0xa8b4)
-                        return false;
-                    if (cp < 0xa8c4)
-                        return true;
-                    if (cp < 0xa8c4)
-                        return false;
-                    if (cp < 0xa8c6)
-                        return true;
-                    if (cp < 0xa8d0)
-                        return false;
-                    if (cp < 0xa8da)
-                        return true;
-                    if (cp < 0xa8e0)
-                        return false;
-                    if (cp < 0xa8f2)
-                        return true;
-                    if (cp === 0xa8ff)
-                        return true;
-                    if (cp < 0xa900)
-                        return false;
-                    if (cp < 0xa90a)
-                        return true;
-                    if (cp < 0xa926)
-                        return false;
-                    if (cp < 0xa92e)
-                        return true;
-                    if (cp < 0xa947)
-                        return false;
-                    if (cp < 0xa952)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xa954)
-                    return true;
-                if (cp < 0xa980)
-                    return false;
-                if (cp < 0xa983)
-                    return true;
-                if (cp === 0xa983)
-                    return true;
-                if (cp === 0xa9b3)
-                    return true;
-                if (cp < 0xa9b4)
-                    return false;
-                if (cp < 0xa9b6)
-                    return true;
-                if (cp < 0xa9b6)
-                    return false;
-                if (cp < 0xa9ba)
-                    return true;
-                if (cp < 0xa9ba)
-                    return false;
-                if (cp < 0xa9bc)
-                    return true;
-                if (cp === 0xa9bc)
-                    return true;
-                if (cp < 0xa9bd)
-                    return false;
-                if (cp < 0xa9c1)
-                    return true;
-                return false;
-            }
-            if (cp < 0xaa43) {
-                if (cp < 0xa9d0)
-                    return false;
-                if (cp < 0xa9da)
-                    return true;
-                if (cp === 0xa9e5)
-                    return true;
-                if (cp < 0xa9f0)
-                    return false;
-                if (cp < 0xa9fa)
-                    return true;
-                if (cp < 0xaa29)
-                    return false;
-                if (cp < 0xaa2f)
-                    return true;
-                if (cp < 0xaa2f)
-                    return false;
-                if (cp < 0xaa31)
-                    return true;
-                if (cp < 0xaa31)
-                    return false;
-                if (cp < 0xaa33)
-                    return true;
-                if (cp < 0xaa33)
-                    return false;
-                if (cp < 0xaa35)
-                    return true;
-                if (cp < 0xaa35)
-                    return false;
-                if (cp < 0xaa37)
-                    return true;
-                return false;
-            }
-            if (cp === 0xaa43)
-                return true;
-            if (cp === 0xaa4c)
-                return true;
-            if (cp === 0xaa4d)
-                return true;
-            if (cp < 0xaa50)
-                return false;
-            if (cp < 0xaa5a)
-                return true;
-            if (cp === 0xaa7b)
-                return true;
-            if (cp === 0xaa7c)
-                return true;
-            if (cp === 0xaa7d)
-                return true;
-            if (cp === 0xaab0)
-                return true;
-            if (cp < 0xaab2)
-                return false;
-            if (cp < 0xaab5)
-                return true;
-            return false;
-        }
-        if (cp < 0x10d30) {
-            if (cp < 0xfe00) {
-                if (cp < 0xabe3) {
-                    if (cp < 0xaab7)
-                        return false;
-                    if (cp < 0xaab9)
-                        return true;
-                    if (cp < 0xaabe)
-                        return false;
-                    if (cp < 0xaac0)
-                        return true;
-                    if (cp === 0xaac1)
-                        return true;
-                    if (cp === 0xaaeb)
-                        return true;
-                    if (cp < 0xaaec)
-                        return false;
-                    if (cp < 0xaaee)
-                        return true;
-                    if (cp < 0xaaee)
-                        return false;
-                    if (cp < 0xaaf0)
-                        return true;
-                    if (cp === 0xaaf5)
-                        return true;
-                    if (cp === 0xaaf6)
-                        return true;
-                    return false;
-                }
-                if (cp < 0xabe5)
-                    return true;
-                if (cp === 0xabe5)
-                    return true;
-                if (cp < 0xabe6)
-                    return false;
-                if (cp < 0xabe8)
-                    return true;
-                if (cp === 0xabe8)
-                    return true;
-                if (cp < 0xabe9)
-                    return false;
-                if (cp < 0xabeb)
-                    return true;
-                if (cp === 0xabec)
-                    return true;
-                if (cp === 0xabed)
-                    return true;
-                if (cp < 0xabf0)
-                    return false;
-                if (cp < 0xabfa)
-                    return true;
-                if (cp === 0xfb1e)
-                    return true;
-                return false;
-            }
-            if (cp < 0x10376) {
-                if (cp < 0xfe00)
-                    return false;
-                if (cp < 0xfe10)
-                    return true;
-                if (cp < 0xfe20)
-                    return false;
-                if (cp < 0xfe30)
-                    return true;
-                if (cp < 0xfe33)
-                    return false;
-                if (cp < 0xfe35)
-                    return true;
-                if (cp < 0xfe4d)
-                    return false;
-                if (cp < 0xfe50)
-                    return true;
-                if (cp < 0xff10)
-                    return false;
-                if (cp < 0xff1a)
-                    return true;
-                if (cp === 0xff3f)
-                    return true;
-                if (cp === 0x101fd)
-                    return true;
-                if (cp === 0x102e0)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1037b)
-                return true;
-            if (cp < 0x104a0)
-                return false;
-            if (cp < 0x104aa)
-                return true;
-            if (cp < 0x10a01)
-                return false;
-            if (cp < 0x10a04)
-                return true;
-            if (cp < 0x10a05)
-                return false;
-            if (cp < 0x10a07)
-                return true;
-            if (cp < 0x10a0c)
-                return false;
-            if (cp < 0x10a10)
-                return true;
-            if (cp < 0x10a38)
-                return false;
-            if (cp < 0x10a3b)
-                return true;
-            if (cp === 0x10a3f)
-                return true;
-            if (cp < 0x10ae5)
-                return false;
-            if (cp < 0x10ae7)
-                return true;
-            if (cp < 0x10d24)
-                return false;
-            if (cp < 0x10d28)
-                return true;
-            return false;
-        }
-        if (cp < 0x1112d) {
-            if (cp < 0x11082) {
-                if (cp < 0x10d30)
-                    return false;
-                if (cp < 0x10d3a)
-                    return true;
-                if (cp < 0x10f46)
-                    return false;
-                if (cp < 0x10f51)
-                    return true;
-                if (cp === 0x11000)
-                    return true;
-                if (cp === 0x11001)
-                    return true;
-                if (cp === 0x11002)
-                    return true;
-                if (cp < 0x11038)
-                    return false;
-                if (cp < 0x11047)
-                    return true;
-                if (cp < 0x11066)
-                    return false;
-                if (cp < 0x11070)
-                    return true;
-                if (cp < 0x1107f)
-                    return false;
-                if (cp < 0x11082)
-                    return true;
-                return false;
-            }
-            if (cp === 0x11082)
-                return true;
-            if (cp < 0x110b0)
-                return false;
-            if (cp < 0x110b3)
-                return true;
-            if (cp < 0x110b3)
-                return false;
-            if (cp < 0x110b7)
-                return true;
-            if (cp < 0x110b7)
-                return false;
-            if (cp < 0x110b9)
-                return true;
-            if (cp < 0x110b9)
-                return false;
-            if (cp < 0x110bb)
-                return true;
-            if (cp < 0x110f0)
-                return false;
-            if (cp < 0x110fa)
-                return true;
-            if (cp < 0x11100)
-                return false;
-            if (cp < 0x11103)
-                return true;
-            if (cp < 0x11127)
-                return false;
-            if (cp < 0x1112c)
-                return true;
-            if (cp === 0x1112c)
-                return true;
-            return false;
-        }
-        if (cp < 0x111bf) {
-            if (cp < 0x1112d)
-                return false;
-            if (cp < 0x11135)
-                return true;
-            if (cp < 0x11136)
-                return false;
-            if (cp < 0x11140)
-                return true;
-            if (cp < 0x11145)
-                return false;
-            if (cp < 0x11147)
-                return true;
-            if (cp === 0x11173)
-                return true;
-            if (cp < 0x11180)
-                return false;
-            if (cp < 0x11182)
-                return true;
-            if (cp === 0x11182)
-                return true;
-            if (cp < 0x111b3)
-                return false;
-            if (cp < 0x111b6)
-                return true;
-            if (cp < 0x111b6)
-                return false;
-            if (cp < 0x111bf)
-                return true;
-            return false;
-        }
-        if (cp < 0x111c1)
-            return true;
-        if (cp < 0x111c9)
-            return false;
-        if (cp < 0x111cd)
-            return true;
-        if (cp < 0x111d0)
-            return false;
-        if (cp < 0x111da)
-            return true;
-        if (cp < 0x1122c)
-            return false;
-        if (cp < 0x1122f)
-            return true;
-        if (cp < 0x1122f)
-            return false;
-        if (cp < 0x11232)
-            return true;
-        if (cp < 0x11232)
-            return false;
-        if (cp < 0x11234)
-            return true;
-        if (cp === 0x11234)
-            return true;
-        if (cp === 0x11235)
-            return true;
-        if (cp < 0x11236)
-            return false;
-        if (cp < 0x11238)
-            return true;
-        return false;
-    }
-    if (cp < 0x11a33) {
-        if (cp < 0x115af) {
-            if (cp < 0x11435) {
-                if (cp < 0x1133e) {
-                    if (cp === 0x1123e)
-                        return true;
-                    if (cp === 0x112df)
-                        return true;
-                    if (cp < 0x112e0)
-                        return false;
-                    if (cp < 0x112e3)
-                        return true;
-                    if (cp < 0x112e3)
-                        return false;
-                    if (cp < 0x112eb)
-                        return true;
-                    if (cp < 0x112f0)
-                        return false;
-                    if (cp < 0x112fa)
-                        return true;
-                    if (cp < 0x11300)
-                        return false;
-                    if (cp < 0x11302)
-                        return true;
-                    if (cp < 0x11302)
-                        return false;
-                    if (cp < 0x11304)
-                        return true;
-                    if (cp < 0x1133b)
-                        return false;
-                    if (cp < 0x1133d)
-                        return true;
-                    return false;
-                }
-                if (cp < 0x11340)
-                    return true;
-                if (cp === 0x11340)
-                    return true;
-                if (cp < 0x11341)
-                    return false;
-                if (cp < 0x11345)
-                    return true;
-                if (cp < 0x11347)
-                    return false;
-                if (cp < 0x11349)
-                    return true;
-                if (cp < 0x1134b)
-                    return false;
-                if (cp < 0x1134e)
-                    return true;
-                if (cp === 0x11357)
-                    return true;
-                if (cp < 0x11362)
-                    return false;
-                if (cp < 0x11364)
-                    return true;
-                if (cp < 0x11366)
-                    return false;
-                if (cp < 0x1136d)
-                    return true;
-                if (cp < 0x11370)
-                    return false;
-                if (cp < 0x11375)
-                    return true;
-                return false;
-            }
-            if (cp < 0x114b0) {
-                if (cp < 0x11435)
-                    return false;
-                if (cp < 0x11438)
-                    return true;
-                if (cp < 0x11438)
-                    return false;
-                if (cp < 0x11440)
-                    return true;
-                if (cp < 0x11440)
-                    return false;
-                if (cp < 0x11442)
-                    return true;
-                if (cp < 0x11442)
-                    return false;
-                if (cp < 0x11445)
-                    return true;
-                if (cp === 0x11445)
-                    return true;
-                if (cp === 0x11446)
-                    return true;
-                if (cp < 0x11450)
-                    return false;
-                if (cp < 0x1145a)
-                    return true;
-                if (cp === 0x1145e)
-                    return true;
-                return false;
-            }
-            if (cp < 0x114b3)
-                return true;
-            if (cp < 0x114b3)
-                return false;
-            if (cp < 0x114b9)
-                return true;
-            if (cp === 0x114b9)
-                return true;
-            if (cp === 0x114ba)
-                return true;
-            if (cp < 0x114bb)
-                return false;
-            if (cp < 0x114bf)
-                return true;
-            if (cp < 0x114bf)
-                return false;
-            if (cp < 0x114c1)
-                return true;
-            if (cp === 0x114c1)
-                return true;
-            if (cp < 0x114c2)
-                return false;
-            if (cp < 0x114c4)
-                return true;
-            if (cp < 0x114d0)
-                return false;
-            if (cp < 0x114da)
-                return true;
-            return false;
-        }
-        if (cp < 0x116ae) {
-            if (cp < 0x11633) {
-                if (cp < 0x115af)
-                    return false;
-                if (cp < 0x115b2)
-                    return true;
-                if (cp < 0x115b2)
-                    return false;
-                if (cp < 0x115b6)
-                    return true;
-                if (cp < 0x115b8)
-                    return false;
-                if (cp < 0x115bc)
-                    return true;
-                if (cp < 0x115bc)
-                    return false;
-                if (cp < 0x115be)
-                    return true;
-                if (cp === 0x115be)
-                    return true;
-                if (cp < 0x115bf)
-                    return false;
-                if (cp < 0x115c1)
-                    return true;
-                if (cp < 0x115dc)
-                    return false;
-                if (cp < 0x115de)
-                    return true;
-                if (cp < 0x11630)
-                    return false;
-                if (cp < 0x11633)
-                    return true;
-                return false;
-            }
-            if (cp < 0x1163b)
-                return true;
-            if (cp < 0x1163b)
-                return false;
-            if (cp < 0x1163d)
-                return true;
-            if (cp === 0x1163d)
-                return true;
-            if (cp === 0x1163e)
-                return true;
-            if (cp < 0x1163f)
-                return false;
-            if (cp < 0x11641)
-                return true;
-            if (cp < 0x11650)
-                return false;
-            if (cp < 0x1165a)
-                return true;
-            if (cp === 0x116ab)
-                return true;
-            if (cp === 0x116ac)
-                return true;
-            if (cp === 0x116ad)
-                return true;
-            return false;
-        }
-        if (cp < 0x11726) {
-            if (cp < 0x116ae)
-                return false;
-            if (cp < 0x116b0)
-                return true;
-            if (cp < 0x116b0)
-                return false;
-            if (cp < 0x116b6)
-                return true;
-            if (cp === 0x116b6)
-                return true;
-            if (cp === 0x116b7)
-                return true;
-            if (cp < 0x116c0)
-                return false;
-            if (cp < 0x116ca)
-                return true;
-            if (cp < 0x1171d)
-                return false;
-            if (cp < 0x11720)
-                return true;
-            if (cp < 0x11720)
-                return false;
-            if (cp < 0x11722)
-                return true;
-            if (cp < 0x11722)
-                return false;
-            if (cp < 0x11726)
-                return true;
-            return false;
-        }
-        if (cp === 0x11726)
-            return true;
-        if (cp < 0x11727)
-            return false;
-        if (cp < 0x1172c)
-            return true;
-        if (cp < 0x11730)
-            return false;
-        if (cp < 0x1173a)
-            return true;
-        if (cp < 0x1182c)
-            return false;
-        if (cp < 0x1182f)
-            return true;
-        if (cp < 0x1182f)
-            return false;
-        if (cp < 0x11838)
-            return true;
-        if (cp === 0x11838)
-            return true;
-        if (cp < 0x11839)
-            return false;
-        if (cp < 0x1183b)
-            return true;
-        if (cp < 0x118e0)
-            return false;
-        if (cp < 0x118ea)
-            return true;
-        if (cp < 0x11a01)
-            return false;
-        if (cp < 0x11a0b)
-            return true;
-        return false;
-    }
-    if (cp < 0x11d97) {
-        if (cp < 0x11ca9) {
-            if (cp < 0x11a97) {
-                if (cp < 0x11a33)
-                    return false;
-                if (cp < 0x11a39)
-                    return true;
-                if (cp === 0x11a39)
-                    return true;
-                if (cp < 0x11a3b)
-                    return false;
-                if (cp < 0x11a3f)
-                    return true;
-                if (cp === 0x11a47)
-                    return true;
-                if (cp < 0x11a51)
-                    return false;
-                if (cp < 0x11a57)
-                    return true;
-                if (cp < 0x11a57)
-                    return false;
-                if (cp < 0x11a59)
-                    return true;
-                if (cp < 0x11a59)
-                    return false;
-                if (cp < 0x11a5c)
-                    return true;
-                if (cp < 0x11a8a)
-                    return false;
-                if (cp < 0x11a97)
-                    return true;
-                return false;
-            }
-            if (cp === 0x11a97)
-                return true;
-            if (cp < 0x11a98)
-                return false;
-            if (cp < 0x11a9a)
-                return true;
-            if (cp === 0x11c2f)
-                return true;
-            if (cp < 0x11c30)
-                return false;
-            if (cp < 0x11c37)
-                return true;
-            if (cp < 0x11c38)
-                return false;
-            if (cp < 0x11c3e)
-                return true;
-            if (cp === 0x11c3e)
-                return true;
-            if (cp === 0x11c3f)
-                return true;
-            if (cp < 0x11c50)
-                return false;
-            if (cp < 0x11c5a)
-                return true;
-            if (cp < 0x11c92)
-                return false;
-            if (cp < 0x11ca8)
-                return true;
-            return false;
-        }
-        if (cp < 0x11d3c) {
-            if (cp === 0x11ca9)
-                return true;
-            if (cp < 0x11caa)
-                return false;
-            if (cp < 0x11cb1)
-                return true;
-            if (cp === 0x11cb1)
-                return true;
-            if (cp < 0x11cb2)
-                return false;
-            if (cp < 0x11cb4)
-                return true;
-            if (cp === 0x11cb4)
-                return true;
-            if (cp < 0x11cb5)
-                return false;
-            if (cp < 0x11cb7)
-                return true;
-            if (cp < 0x11d31)
-                return false;
-            if (cp < 0x11d37)
-                return true;
-            if (cp === 0x11d3a)
-                return true;
-            return false;
-        }
-        if (cp < 0x11d3e)
-            return true;
-        if (cp < 0x11d3f)
-            return false;
-        if (cp < 0x11d46)
-            return true;
-        if (cp === 0x11d47)
-            return true;
-        if (cp < 0x11d50)
-            return false;
-        if (cp < 0x11d5a)
-            return true;
-        if (cp < 0x11d8a)
-            return false;
-        if (cp < 0x11d8f)
-            return true;
-        if (cp < 0x11d90)
-            return false;
-        if (cp < 0x11d92)
-            return true;
-        if (cp < 0x11d93)
-            return false;
-        if (cp < 0x11d95)
-            return true;
-        if (cp === 0x11d95)
-            return true;
-        if (cp === 0x11d96)
-            return true;
-        return false;
-    }
-    if (cp < 0x1d242) {
-        if (cp < 0x16f51) {
-            if (cp === 0x11d97)
-                return true;
-            if (cp < 0x11da0)
-                return false;
-            if (cp < 0x11daa)
-                return true;
-            if (cp < 0x11ef3)
-                return false;
-            if (cp < 0x11ef5)
-                return true;
-            if (cp < 0x11ef5)
-                return false;
-            if (cp < 0x11ef7)
-                return true;
-            if (cp < 0x16a60)
-                return false;
-            if (cp < 0x16a6a)
-                return true;
-            if (cp < 0x16af0)
-                return false;
-            if (cp < 0x16af5)
-                return true;
-            if (cp < 0x16b30)
-                return false;
-            if (cp < 0x16b37)
-                return true;
-            if (cp < 0x16b50)
-                return false;
-            if (cp < 0x16b5a)
-                return true;
-            return false;
-        }
-        if (cp < 0x16f7f)
-            return true;
-        if (cp < 0x16f8f)
-            return false;
-        if (cp < 0x16f93)
-            return true;
-        if (cp < 0x1bc9d)
-            return false;
-        if (cp < 0x1bc9f)
-            return true;
-        if (cp < 0x1d165)
-            return false;
-        if (cp < 0x1d167)
-            return true;
-        if (cp < 0x1d167)
-            return false;
-        if (cp < 0x1d16a)
-            return true;
-        if (cp < 0x1d16d)
-            return false;
-        if (cp < 0x1d173)
-            return true;
-        if (cp < 0x1d17b)
-            return false;
-        if (cp < 0x1d183)
-            return true;
-        if (cp < 0x1d185)
-            return false;
-        if (cp < 0x1d18c)
-            return true;
-        if (cp < 0x1d1aa)
-            return false;
-        if (cp < 0x1d1ae)
-            return true;
-        return false;
-    }
-    if (cp < 0x1e000) {
-        if (cp < 0x1d242)
-            return false;
-        if (cp < 0x1d245)
-            return true;
-        if (cp < 0x1d7ce)
-            return false;
-        if (cp < 0x1d800)
-            return true;
-        if (cp < 0x1da00)
-            return false;
-        if (cp < 0x1da37)
-            return true;
-        if (cp < 0x1da3b)
-            return false;
-        if (cp < 0x1da6d)
-            return true;
-        if (cp === 0x1da75)
-            return true;
-        if (cp === 0x1da84)
-            return true;
-        if (cp < 0x1da9b)
-            return false;
-        if (cp < 0x1daa0)
-            return true;
-        if (cp < 0x1daa1)
-            return false;
-        if (cp < 0x1dab0)
-            return true;
-        return false;
-    }
-    if (cp < 0x1e007)
-        return true;
-    if (cp < 0x1e008)
-        return false;
-    if (cp < 0x1e019)
-        return true;
-    if (cp < 0x1e01b)
-        return false;
-    if (cp < 0x1e022)
-        return true;
-    if (cp < 0x1e023)
-        return false;
-    if (cp < 0x1e025)
-        return true;
-    if (cp < 0x1e026)
-        return false;
-    if (cp < 0x1e02b)
-        return true;
-    if (cp < 0x1e8d0)
-        return false;
-    if (cp < 0x1e8d7)
-        return true;
-    if (cp < 0x1e944)
-        return false;
-    if (cp < 0x1e94b)
-        return true;
-    if (cp < 0x1e950)
-        return false;
-    if (cp < 0x1e95a)
-        return true;
-    if (cp < 0xe0100)
-        return false;
-    if (cp < 0xe01f0)
-        return true;
-    return false;
-}
-
-const PropertyData = {
-    $LONE: new Set([
-        "ASCII",
-        "ASCII_Hex_Digit",
-        "AHex",
-        "Alphabetic",
-        "Alpha",
-        "Any",
-        "Assigned",
-        "Bidi_Control",
-        "Bidi_C",
-        "Bidi_Mirrored",
-        "Bidi_M",
-        "Case_Ignorable",
-        "CI",
-        "Cased",
-        "Changes_When_Casefolded",
-        "CWCF",
-        "Changes_When_Casemapped",
-        "CWCM",
-        "Changes_When_Lowercased",
-        "CWL",
-        "Changes_When_NFKC_Casefolded",
-        "CWKCF",
-        "Changes_When_Titlecased",
-        "CWT",
-        "Changes_When_Uppercased",
-        "CWU",
-        "Dash",
-        "Default_Ignorable_Code_Point",
-        "DI",
-        "Deprecated",
-        "Dep",
-        "Diacritic",
-        "Dia",
-        "Emoji",
-        "Emoji_Component",
-        "Emoji_Modifier",
-        "Emoji_Modifier_Base",
-        "Emoji_Presentation",
-        "Extender",
-        "Ext",
-        "Grapheme_Base",
-        "Gr_Base",
-        "Grapheme_Extend",
-        "Gr_Ext",
-        "Hex_Digit",
-        "Hex",
-        "IDS_Binary_Operator",
-        "IDSB",
-        "IDS_Trinary_Operator",
-        "IDST",
-        "ID_Continue",
-        "IDC",
-        "ID_Start",
-        "IDS",
-        "Ideographic",
-        "Ideo",
-        "Join_Control",
-        "Join_C",
-        "Logical_Order_Exception",
-        "LOE",
-        "Lowercase",
-        "Lower",
-        "Math",
-        "Noncharacter_Code_Point",
-        "NChar",
-        "Pattern_Syntax",
-        "Pat_Syn",
-        "Pattern_White_Space",
-        "Pat_WS",
-        "Quotation_Mark",
-        "QMark",
-        "Radical",
-        "Regional_Indicator",
-        "RI",
-        "Sentence_Terminal",
-        "STerm",
-        "Soft_Dotted",
-        "SD",
-        "Terminal_Punctuation",
-        "Term",
-        "Unified_Ideograph",
-        "UIdeo",
-        "Uppercase",
-        "Upper",
-        "Variation_Selector",
-        "VS",
-        "White_Space",
-        "space",
-        "XID_Continue",
-        "XIDC",
-        "XID_Start",
-        "XIDS",
-    ]),
-    General_Category: new Set([
-        "Cased_Letter",
-        "LC",
-        "Close_Punctuation",
-        "Pe",
-        "Connector_Punctuation",
-        "Pc",
-        "Control",
-        "Cc",
-        "cntrl",
-        "Currency_Symbol",
-        "Sc",
-        "Dash_Punctuation",
-        "Pd",
-        "Decimal_Number",
-        "Nd",
-        "digit",
-        "Enclosing_Mark",
-        "Me",
-        "Final_Punctuation",
-        "Pf",
-        "Format",
-        "Cf",
-        "Initial_Punctuation",
-        "Pi",
-        "Letter",
-        "L",
-        "Letter_Number",
-        "Nl",
-        "Line_Separator",
-        "Zl",
-        "Lowercase_Letter",
-        "Ll",
-        "Mark",
-        "M",
-        "Combining_Mark",
-        "Math_Symbol",
-        "Sm",
-        "Modifier_Letter",
-        "Lm",
-        "Modifier_Symbol",
-        "Sk",
-        "Nonspacing_Mark",
-        "Mn",
-        "Number",
-        "N",
-        "Open_Punctuation",
-        "Ps",
-        "Other",
-        "C",
-        "Other_Letter",
-        "Lo",
-        "Other_Number",
-        "No",
-        "Other_Punctuation",
-        "Po",
-        "Other_Symbol",
-        "So",
-        "Paragraph_Separator",
-        "Zp",
-        "Private_Use",
-        "Co",
-        "Punctuation",
-        "P",
-        "punct",
-        "Separator",
-        "Z",
-        "Space_Separator",
-        "Zs",
-        "Spacing_Mark",
-        "Mc",
-        "Surrogate",
-        "Cs",
-        "Symbol",
-        "S",
-        "Titlecase_Letter",
-        "Lt",
-        "Unassigned",
-        "Cn",
-        "Uppercase_Letter",
-        "Lu",
-    ]),
-    Script: new Set([
-        "Adlam",
-        "Adlm",
-        "Ahom",
-        "Anatolian_Hieroglyphs",
-        "Hluw",
-        "Arabic",
-        "Arab",
-        "Armenian",
-        "Armn",
-        "Avestan",
-        "Avst",
-        "Balinese",
-        "Bali",
-        "Bamum",
-        "Bamu",
-        "Bassa_Vah",
-        "Bass",
-        "Batak",
-        "Batk",
-        "Bengali",
-        "Beng",
-        "Bhaiksuki",
-        "Bhks",
-        "Bopomofo",
-        "Bopo",
-        "Brahmi",
-        "Brah",
-        "Braille",
-        "Brai",
-        "Buginese",
-        "Bugi",
-        "Buhid",
-        "Buhd",
-        "Canadian_Aboriginal",
-        "Cans",
-        "Carian",
-        "Cari",
-        "Caucasian_Albanian",
-        "Aghb",
-        "Chakma",
-        "Cakm",
-        "Cham",
-        "Cherokee",
-        "Cher",
-        "Common",
-        "Zyyy",
-        "Coptic",
-        "Copt",
-        "Qaac",
-        "Cuneiform",
-        "Xsux",
-        "Cypriot",
-        "Cprt",
-        "Cyrillic",
-        "Cyrl",
-        "Deseret",
-        "Dsrt",
-        "Devanagari",
-        "Deva",
-        "Duployan",
-        "Dupl",
-        "Egyptian_Hieroglyphs",
-        "Egyp",
-        "Elbasan",
-        "Elba",
-        "Ethiopic",
-        "Ethi",
-        "Georgian",
-        "Geor",
-        "Glagolitic",
-        "Glag",
-        "Gothic",
-        "Goth",
-        "Grantha",
-        "Gran",
-        "Greek",
-        "Grek",
-        "Gujarati",
-        "Gujr",
-        "Gurmukhi",
-        "Guru",
-        "Han",
-        "Hani",
-        "Hangul",
-        "Hang",
-        "Hanunoo",
-        "Hano",
-        "Hatran",
-        "Hatr",
-        "Hebrew",
-        "Hebr",
-        "Hiragana",
-        "Hira",
-        "Imperial_Aramaic",
-        "Armi",
-        "Inherited",
-        "Zinh",
-        "Qaai",
-        "Inscriptional_Pahlavi",
-        "Phli",
-        "Inscriptional_Parthian",
-        "Prti",
-        "Javanese",
-        "Java",
-        "Kaithi",
-        "Kthi",
-        "Kannada",
-        "Knda",
-        "Katakana",
-        "Kana",
-        "Kayah_Li",
-        "Kali",
-        "Kharoshthi",
-        "Khar",
-        "Khmer",
-        "Khmr",
-        "Khojki",
-        "Khoj",
-        "Khudawadi",
-        "Sind",
-        "Lao",
-        "Laoo",
-        "Latin",
-        "Latn",
-        "Lepcha",
-        "Lepc",
-        "Limbu",
-        "Limb",
-        "Linear_A",
-        "Lina",
-        "Linear_B",
-        "Linb",
-        "Lisu",
-        "Lycian",
-        "Lyci",
-        "Lydian",
-        "Lydi",
-        "Mahajani",
-        "Mahj",
-        "Malayalam",
-        "Mlym",
-        "Mandaic",
-        "Mand",
-        "Manichaean",
-        "Mani",
-        "Marchen",
-        "Marc",
-        "Masaram_Gondi",
-        "Gonm",
-        "Meetei_Mayek",
-        "Mtei",
-        "Mende_Kikakui",
-        "Mend",
-        "Meroitic_Cursive",
-        "Merc",
-        "Meroitic_Hieroglyphs",
-        "Mero",
-        "Miao",
-        "Plrd",
-        "Modi",
-        "Mongolian",
-        "Mong",
-        "Mro",
-        "Mroo",
-        "Multani",
-        "Mult",
-        "Myanmar",
-        "Mymr",
-        "Nabataean",
-        "Nbat",
-        "New_Tai_Lue",
-        "Talu",
-        "Newa",
-        "Nko",
-        "Nkoo",
-        "Nushu",
-        "Nshu",
-        "Ogham",
-        "Ogam",
-        "Ol_Chiki",
-        "Olck",
-        "Old_Hungarian",
-        "Hung",
-        "Old_Italic",
-        "Ital",
-        "Old_North_Arabian",
-        "Narb",
-        "Old_Permic",
-        "Perm",
-        "Old_Persian",
-        "Xpeo",
-        "Old_South_Arabian",
-        "Sarb",
-        "Old_Turkic",
-        "Orkh",
-        "Oriya",
-        "Orya",
-        "Osage",
-        "Osge",
-        "Osmanya",
-        "Osma",
-        "Pahawh_Hmong",
-        "Hmng",
-        "Palmyrene",
-        "Palm",
-        "Pau_Cin_Hau",
-        "Pauc",
-        "Phags_Pa",
-        "Phag",
-        "Phoenician",
-        "Phnx",
-        "Psalter_Pahlavi",
-        "Phlp",
-        "Rejang",
-        "Rjng",
-        "Runic",
-        "Runr",
-        "Samaritan",
-        "Samr",
-        "Saurashtra",
-        "Saur",
-        "Sharada",
-        "Shrd",
-        "Shavian",
-        "Shaw",
-        "Siddham",
-        "Sidd",
-        "SignWriting",
-        "Sgnw",
-        "Sinhala",
-        "Sinh",
-        "Sora_Sompeng",
-        "Sora",
-        "Soyombo",
-        "Soyo",
-        "Sundanese",
-        "Sund",
-        "Syloti_Nagri",
-        "Sylo",
-        "Syriac",
-        "Syrc",
-        "Tagalog",
-        "Tglg",
-        "Tagbanwa",
-        "Tagb",
-        "Tai_Le",
-        "Tale",
-        "Tai_Tham",
-        "Lana",
-        "Tai_Viet",
-        "Tavt",
-        "Takri",
-        "Takr",
-        "Tamil",
-        "Taml",
-        "Tangut",
-        "Tang",
-        "Telugu",
-        "Telu",
-        "Thaana",
-        "Thaa",
-        "Thai",
-        "Tibetan",
-        "Tibt",
-        "Tifinagh",
-        "Tfng",
-        "Tirhuta",
-        "Tirh",
-        "Ugaritic",
-        "Ugar",
-        "Vai",
-        "Vaii",
-        "Warang_Citi",
-        "Wara",
-        "Yi",
-        "Yiii",
-        "Zanabazar_Square",
-        "Zanb",
-    ]),
-};
-PropertyData.gc = PropertyData.General_Category;
-PropertyData.sc = PropertyData.Script_Extensions = PropertyData.scx =
-    PropertyData.Script;
-
-const Backspace = 0x08;
-const CharacterTabulation = 0x09;
-const LineFeed = 0x0a;
-const LineTabulation = 0x0b;
-const FormFeed = 0x0c;
-const CarriageReturn = 0x0d;
-const ExclamationMark = 0x21;
-const DollarSign = 0x24;
-const LeftParenthesis = 0x28;
-const RightParenthesis = 0x29;
-const Asterisk = 0x2a;
-const PlusSign = 0x2b;
-const Comma = 0x2c;
-const HyphenMinus = 0x2d;
-const FullStop = 0x2e;
-const Solidus = 0x2f;
-const DigitZero = 0x30;
-const DigitOne = 0x31;
-const DigitSeven = 0x37;
-const DigitNine = 0x39;
-const Colon = 0x3a;
-const LessThanSign = 0x3c;
-const EqualsSign = 0x3d;
-const GreaterThanSign = 0x3e;
-const QuestionMark = 0x3f;
-const LatinCapitalLetterA = 0x41;
-const LatinCapitalLetterB = 0x42;
-const LatinCapitalLetterD = 0x44;
-const LatinCapitalLetterF = 0x46;
-const LatinCapitalLetterP = 0x50;
-const LatinCapitalLetterS = 0x53;
-const LatinCapitalLetterW = 0x57;
-const LatinCapitalLetterZ = 0x5a;
-const LowLine = 0x5f;
-const LatinSmallLetterA = 0x61;
-const LatinSmallLetterB = 0x62;
-const LatinSmallLetterC = 0x63;
-const LatinSmallLetterD = 0x64;
-const LatinSmallLetterF = 0x66;
-const LatinSmallLetterG = 0x67;
-const LatinSmallLetterI = 0x69;
-const LatinSmallLetterK = 0x6b;
-const LatinSmallLetterM = 0x6d;
-const LatinSmallLetterN = 0x6e;
-const LatinSmallLetterP = 0x70;
-const LatinSmallLetterR = 0x72;
-const LatinSmallLetterS = 0x73;
-const LatinSmallLetterT = 0x74;
-const LatinSmallLetterU = 0x75;
-const LatinSmallLetterV = 0x76;
-const LatinSmallLetterW = 0x77;
-const LatinSmallLetterX = 0x78;
-const LatinSmallLetterY = 0x79;
-const LatinSmallLetterZ = 0x7a;
-const LeftSquareBracket = 0x5b;
-const ReverseSolidus = 0x5c;
-const RightSquareBracket = 0x5d;
-const CircumflexAccent = 0x5e;
-const LeftCurlyBracket = 0x7b;
-const VerticalLine = 0x7c;
-const RightCurlyBracket = 0x7d;
-const ZeroWidthNonJoiner = 0x200c;
-const ZeroWidthJoiner = 0x200d;
-const LineSeparator = 0x2028;
-const ParagraphSeparator = 0x2029;
-const MinCodePoint = 0x00;
-const MaxCodePoint = 0x10ffff;
-function isLatinLetter(code) {
-    return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) ||
-        (code >= LatinSmallLetterA && code <= LatinSmallLetterZ));
-}
-function isDecimalDigit(code) {
-    return code >= DigitZero && code <= DigitNine;
-}
-function isOctalDigit(code) {
-    return code >= DigitZero && code <= DigitSeven;
-}
-function isHexDigit(code) {
-    return ((code >= DigitZero && code <= DigitNine) ||
-        (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) ||
-        (code >= LatinSmallLetterA && code <= LatinSmallLetterF));
-}
-function isLineTerminator(code) {
-    return (code === LineFeed ||
-        code === CarriageReturn ||
-        code === LineSeparator ||
-        code === ParagraphSeparator);
-}
-function isValidUnicode(code) {
-    return code >= MinCodePoint && code <= MaxCodePoint;
-}
-function digitToInt(code) {
-    if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) {
-        return code - LatinSmallLetterA + 10;
-    }
-    if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) {
-        return code - LatinCapitalLetterA + 10;
-    }
-    return code - DigitZero;
-}
-
-const legacyImpl = {
-    at(s, end, i) {
-        return i < end ? s.charCodeAt(i) : -1;
-    },
-    width(c) {
-        return 1;
-    },
-};
-const unicodeImpl = {
-    at(s, end, i) {
-        return i < end ? s.codePointAt(i) : -1;
-    },
-    width(c) {
-        return c > 0xffff ? 2 : 1;
-    },
-};
-class Reader {
-    constructor() {
-        this._impl = legacyImpl;
-        this._s = "";
-        this._i = 0;
-        this._end = 0;
-        this._cp1 = -1;
-        this._w1 = 1;
-        this._cp2 = -1;
-        this._w2 = 1;
-        this._cp3 = -1;
-        this._w3 = 1;
-        this._cp4 = -1;
-    }
-    get source() {
-        return this._s;
-    }
-    get index() {
-        return this._i;
-    }
-    get currentCodePoint() {
-        return this._cp1;
-    }
-    get nextCodePoint() {
-        return this._cp2;
-    }
-    get nextCodePoint2() {
-        return this._cp3;
-    }
-    get nextCodePoint3() {
-        return this._cp4;
-    }
-    reset(source, start, end, uFlag) {
-        this._impl = uFlag ? unicodeImpl : legacyImpl;
-        this._s = source;
-        this._end = end;
-        this.rewind(start);
-    }
-    rewind(index) {
-        const impl = this._impl;
-        this._i = index;
-        this._cp1 = impl.at(this._s, this._end, index);
-        this._w1 = impl.width(this._cp1);
-        this._cp2 = impl.at(this._s, this._end, index + this._w1);
-        this._w2 = impl.width(this._cp2);
-        this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
-        this._w3 = impl.width(this._cp3);
-        this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
-    }
-    advance() {
-        if (this._cp1 !== -1) {
-            const impl = this._impl;
-            this._i += this._w1;
-            this._cp1 = this._cp2;
-            this._w1 = this._w2;
-            this._cp2 = this._cp3;
-            this._w2 = impl.width(this._cp2);
-            this._cp3 = this._cp4;
-            this._w3 = impl.width(this._cp3);
-            this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
-        }
-    }
-    eat(cp) {
-        if (this._cp1 === cp) {
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-    eat2(cp1, cp2) {
-        if (this._cp1 === cp1 && this._cp2 === cp2) {
-            this.advance();
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-    eat3(cp1, cp2, cp3) {
-        if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
-            this.advance();
-            this.advance();
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-}
-
-class RegExpSyntaxError extends SyntaxError {
-    constructor(source, uFlag, index, message) {
-        if (source) {
-            if (source[0] !== "/") {
-                source = `/${source}/${uFlag ? "u" : ""}`;
-            }
-            source = `: ${source}`;
-        }
-        super(`Invalid regular expression${source}: ${message}`);
-        this.index = index;
-    }
-}
-
-function isSyntaxCharacter(cp) {
-    return (cp === CircumflexAccent ||
-        cp === DollarSign ||
-        cp === ReverseSolidus ||
-        cp === FullStop ||
-        cp === Asterisk ||
-        cp === PlusSign ||
-        cp === QuestionMark ||
-        cp === LeftParenthesis ||
-        cp === RightParenthesis ||
-        cp === LeftSquareBracket ||
-        cp === RightSquareBracket ||
-        cp === LeftCurlyBracket ||
-        cp === RightCurlyBracket ||
-        cp === VerticalLine);
-}
-function isRegExpIdentifierStart(cp) {
-    return isIdStart(cp) || cp === DollarSign || cp === LowLine;
-}
-function isRegExpIdentifierPart(cp) {
-    return (isIdContinue(cp) ||
-        cp === DollarSign ||
-        cp === LowLine ||
-        cp === ZeroWidthNonJoiner ||
-        cp === ZeroWidthJoiner);
-}
-function isUnicodePropertyNameCharacter(cp) {
-    return isLatinLetter(cp) || cp === LowLine;
-}
-function isUnicodePropertyValueCharacter(cp) {
-    return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
-}
-function isValidUnicodeProperty(name, value) {
-    return PropertyData.hasOwnProperty(name) && PropertyData[name].has(value);
-}
-function isValidUnicodePropertyName(name) {
-    return PropertyData.$LONE.has(name);
-}
-class RegExpValidator {
-    constructor(options) {
-        this._reader = new Reader();
-        this._uFlag = false;
-        this._nFlag = false;
-        this._lastIntValue = 0;
-        this._lastMinValue = 0;
-        this._lastMaxValue = 0;
-        this._lastStrValue = "";
-        this._lastKeyValue = "";
-        this._lastValValue = "";
-        this._lastAssertionIsQuantifiable = false;
-        this._numCapturingParens = 0;
-        this._groupNames = new Set();
-        this._backreferenceNames = new Set();
-        this._options = options || {};
-    }
-    validateLiteral(source, start = 0, end = source.length) {
-        this._uFlag = this._nFlag = false;
-        this.reset(source, start, end);
-        this.onLiteralEnter(start);
-        if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) {
-            const flagStart = this.index;
-            const uFlag = source.indexOf("u", flagStart) !== -1;
-            this.validateFlags(source, flagStart, end);
-            this.validatePattern(source, start + 1, flagStart - 1, uFlag);
-        }
-        else if (start >= end) {
-            this.raise("Empty");
-        }
-        else {
-            const c = String.fromCodePoint(this.currentCodePoint);
-            this.raise(`Unexpected character '${c}'`);
-        }
-        this.onLiteralLeave(start, end);
-    }
-    validateFlags(source, start = 0, end = source.length) {
-        const existingFlags = new Set();
-        let global = false;
-        let ignoreCase = false;
-        let multiline = false;
-        let sticky = false;
-        let unicode = false;
-        let dotAll = false;
-        for (let i = start; i < end; ++i) {
-            const flag = source.charCodeAt(i);
-            if (existingFlags.has(flag)) {
-                this.raise(`Duplicated flag '${source[i]}'`);
-            }
-            existingFlags.add(flag);
-            if (flag === LatinSmallLetterG) {
-                global = true;
-            }
-            else if (flag === LatinSmallLetterI) {
-                ignoreCase = true;
-            }
-            else if (flag === LatinSmallLetterM) {
-                multiline = true;
-            }
-            else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) {
-                unicode = true;
-            }
-            else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) {
-                sticky = true;
-            }
-            else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) {
-                dotAll = true;
-            }
-            else {
-                this.raise(`Invalid flag '${source[i]}'`);
-            }
-        }
-        this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll);
-    }
-    validatePattern(source, start = 0, end = source.length, uFlag = false) {
-        this._uFlag = uFlag && this.ecmaVersion >= 2015;
-        this._nFlag = uFlag && this.ecmaVersion >= 2018;
-        this.reset(source, start, end);
-        this.pattern();
-        if (!this._nFlag &&
-            this.ecmaVersion >= 2018 &&
-            this._groupNames.size > 0) {
-            this._nFlag = true;
-            this.rewind(start);
-            this.pattern();
-        }
-    }
-    get strict() {
-        return Boolean(this._options.strict || this._uFlag);
-    }
-    get ecmaVersion() {
-        return this._options.ecmaVersion || 2018;
-    }
-    onLiteralEnter(start) {
-        if (this._options.onLiteralEnter) {
-            this._options.onLiteralEnter(start);
-        }
-    }
-    onLiteralLeave(start, end) {
-        if (this._options.onLiteralLeave) {
-            this._options.onLiteralLeave(start, end);
-        }
-    }
-    onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) {
-        if (this._options.onFlags) {
-            this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll);
-        }
-    }
-    onPatternEnter(start) {
-        if (this._options.onPatternEnter) {
-            this._options.onPatternEnter(start);
-        }
-    }
-    onPatternLeave(start, end) {
-        if (this._options.onPatternLeave) {
-            this._options.onPatternLeave(start, end);
-        }
-    }
-    onDisjunctionEnter(start) {
-        if (this._options.onDisjunctionEnter) {
-            this._options.onDisjunctionEnter(start);
-        }
-    }
-    onDisjunctionLeave(start, end) {
-        if (this._options.onDisjunctionLeave) {
-            this._options.onDisjunctionLeave(start, end);
-        }
-    }
-    onAlternativeEnter(start, index) {
-        if (this._options.onAlternativeEnter) {
-            this._options.onAlternativeEnter(start, index);
-        }
-    }
-    onAlternativeLeave(start, end, index) {
-        if (this._options.onAlternativeLeave) {
-            this._options.onAlternativeLeave(start, end, index);
-        }
-    }
-    onGroupEnter(start) {
-        if (this._options.onGroupEnter) {
-            this._options.onGroupEnter(start);
-        }
-    }
-    onGroupLeave(start, end) {
-        if (this._options.onGroupLeave) {
-            this._options.onGroupLeave(start, end);
-        }
-    }
-    onCapturingGroupEnter(start, name) {
-        if (this._options.onCapturingGroupEnter) {
-            this._options.onCapturingGroupEnter(start, name);
-        }
-    }
-    onCapturingGroupLeave(start, end, name) {
-        if (this._options.onCapturingGroupLeave) {
-            this._options.onCapturingGroupLeave(start, end, name);
-        }
-    }
-    onQuantifier(start, end, min, max, greedy) {
-        if (this._options.onQuantifier) {
-            this._options.onQuantifier(start, end, min, max, greedy);
-        }
-    }
-    onLookaroundAssertionEnter(start, kind, negate) {
-        if (this._options.onLookaroundAssertionEnter) {
-            this._options.onLookaroundAssertionEnter(start, kind, negate);
-        }
-    }
-    onLookaroundAssertionLeave(start, end, kind, negate) {
-        if (this._options.onLookaroundAssertionLeave) {
-            this._options.onLookaroundAssertionLeave(start, end, kind, negate);
-        }
-    }
-    onEdgeAssertion(start, end, kind) {
-        if (this._options.onEdgeAssertion) {
-            this._options.onEdgeAssertion(start, end, kind);
-        }
-    }
-    onWordBoundaryAssertion(start, end, kind, negate) {
-        if (this._options.onWordBoundaryAssertion) {
-            this._options.onWordBoundaryAssertion(start, end, kind, negate);
-        }
-    }
-    onAnyCharacterSet(start, end, kind) {
-        if (this._options.onAnyCharacterSet) {
-            this._options.onAnyCharacterSet(start, end, kind);
-        }
-    }
-    onEscapeCharacterSet(start, end, kind, negate) {
-        if (this._options.onEscapeCharacterSet) {
-            this._options.onEscapeCharacterSet(start, end, kind, negate);
-        }
-    }
-    onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) {
-        if (this._options.onUnicodePropertyCharacterSet) {
-            this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate);
-        }
-    }
-    onCharacter(start, end, value) {
-        if (this._options.onCharacter) {
-            this._options.onCharacter(start, end, value);
-        }
-    }
-    onBackreference(start, end, ref) {
-        if (this._options.onBackreference) {
-            this._options.onBackreference(start, end, ref);
-        }
-    }
-    onCharacterClassEnter(start, negate) {
-        if (this._options.onCharacterClassEnter) {
-            this._options.onCharacterClassEnter(start, negate);
-        }
-    }
-    onCharacterClassLeave(start, end, negate) {
-        if (this._options.onCharacterClassLeave) {
-            this._options.onCharacterClassLeave(start, end, negate);
-        }
-    }
-    onCharacterClassRange(start, end, min, max) {
-        if (this._options.onCharacterClassRange) {
-            this._options.onCharacterClassRange(start, end, min, max);
-        }
-    }
-    get source() {
-        return this._reader.source;
-    }
-    get index() {
-        return this._reader.index;
-    }
-    get currentCodePoint() {
-        return this._reader.currentCodePoint;
-    }
-    get nextCodePoint() {
-        return this._reader.nextCodePoint;
-    }
-    get nextCodePoint2() {
-        return this._reader.nextCodePoint2;
-    }
-    get nextCodePoint3() {
-        return this._reader.nextCodePoint3;
-    }
-    reset(source, start, end) {
-        this._reader.reset(source, start, end, this._uFlag);
-    }
-    rewind(index) {
-        this._reader.rewind(index);
-    }
-    advance() {
-        this._reader.advance();
-    }
-    eat(cp) {
-        return this._reader.eat(cp);
-    }
-    eat2(cp1, cp2) {
-        return this._reader.eat2(cp1, cp2);
-    }
-    eat3(cp1, cp2, cp3) {
-        return this._reader.eat3(cp1, cp2, cp3);
-    }
-    raise(message) {
-        throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message);
-    }
-    eatRegExpBody() {
-        const start = this.index;
-        let inClass = false;
-        let escaped = false;
-        for (;;) {
-            const cp = this.currentCodePoint;
-            if (cp === -1 || isLineTerminator(cp)) {
-                const kind = inClass ? "character class" : "regular expression";
-                this.raise(`Unterminated ${kind}`);
-            }
-            if (escaped) {
-                escaped = false;
-            }
-            else if (cp === ReverseSolidus) {
-                escaped = true;
-            }
-            else if (cp === LeftSquareBracket) {
-                inClass = true;
-            }
-            else if (cp === RightSquareBracket) {
-                inClass = false;
-            }
-            else if ((cp === Solidus && !inClass) ||
-                (cp === Asterisk && this.index === start)) {
-                break;
-            }
-            this.advance();
-        }
-        return this.index !== start;
-    }
-    pattern() {
-        const start = this.index;
-        this._numCapturingParens = this.countCapturingParens();
-        this._groupNames.clear();
-        this._backreferenceNames.clear();
-        this.onPatternEnter(start);
-        this.disjunction();
-        const cp = this.currentCodePoint;
-        if (this.currentCodePoint !== -1) {
-            if (cp === RightParenthesis) {
-                this.raise("Unmatched ')'");
-            }
-            if (cp === ReverseSolidus) {
-                this.raise("\\ at end of pattern");
-            }
-            if (cp === RightSquareBracket || cp === RightCurlyBracket) {
-                this.raise("Lone quantifier brackets");
-            }
-            const c = String.fromCodePoint(cp);
-            this.raise(`Unexpected character '${c}'`);
-        }
-        for (const name of this._backreferenceNames) {
-            if (!this._groupNames.has(name)) {
-                this.raise("Invalid named capture referenced");
-            }
-        }
-        this.onPatternLeave(start, this.index);
-    }
-    countCapturingParens() {
-        const start = this.index;
-        let inClass = false;
-        let escaped = false;
-        let count = 0;
-        let cp = 0;
-        while ((cp = this.currentCodePoint) !== -1) {
-            if (escaped) {
-                escaped = false;
-            }
-            else if (cp === ReverseSolidus) {
-                escaped = true;
-            }
-            else if (cp === LeftSquareBracket) {
-                inClass = true;
-            }
-            else if (cp === RightSquareBracket) {
-                inClass = false;
-            }
-            else if (cp === LeftParenthesis &&
-                !inClass &&
-                (this.nextCodePoint !== QuestionMark ||
-                    (this.nextCodePoint2 === LessThanSign &&
-                        this.nextCodePoint3 !== EqualsSign &&
-                        this.nextCodePoint3 !== ExclamationMark))) {
-                count += 1;
-            }
-            this.advance();
-        }
-        this.rewind(start);
-        return count;
-    }
-    disjunction() {
-        const start = this.index;
-        let i = 0;
-        this.onDisjunctionEnter(start);
-        this.alternative(i++);
-        while (this.eat(VerticalLine)) {
-            this.alternative(i++);
-        }
-        if (this.eatQuantifier(true)) {
-            this.raise("Nothing to repeat");
-        }
-        if (this.eat(LeftCurlyBracket)) {
-            this.raise("Lone quantifier brackets");
-        }
-        this.onDisjunctionLeave(start, this.index);
-    }
-    alternative(i) {
-        const start = this.index;
-        this.onAlternativeEnter(start, i);
-        while (this.currentCodePoint !== -1 && this.eatTerm()) {
-        }
-        this.onAlternativeLeave(start, this.index, i);
-    }
-    eatTerm() {
-        if (this.eatAssertion()) {
-            if (this._lastAssertionIsQuantifiable) {
-                this.eatQuantifier();
-            }
-            return true;
-        }
-        if (this.strict ? this.eatAtom() : this.eatExtendedAtom()) {
-            this.eatQuantifier();
-            return true;
-        }
-        return false;
-    }
-    eatAssertion() {
-        const start = this.index;
-        this._lastAssertionIsQuantifiable = false;
-        if (this.eat(CircumflexAccent)) {
-            this.onEdgeAssertion(start, this.index, "start");
-            return true;
-        }
-        if (this.eat(DollarSign)) {
-            this.onEdgeAssertion(start, this.index, "end");
-            return true;
-        }
-        if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) {
-            this.onWordBoundaryAssertion(start, this.index, "word", true);
-            return true;
-        }
-        if (this.eat2(ReverseSolidus, LatinSmallLetterB)) {
-            this.onWordBoundaryAssertion(start, this.index, "word", false);
-            return true;
-        }
-        if (this.eat2(LeftParenthesis, QuestionMark)) {
-            const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign);
-            let negate = false;
-            if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) {
-                const kind = lookbehind ? "lookbehind" : "lookahead";
-                this.onLookaroundAssertionEnter(start, kind, negate);
-                this.disjunction();
-                if (!this.eat(RightParenthesis)) {
-                    this.raise("Unterminated group");
-                }
-                this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
-                this.onLookaroundAssertionLeave(start, this.index, kind, negate);
-                return true;
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatQuantifier(noError = false) {
-        const start = this.index;
-        let min = 0;
-        let max = 0;
-        let greedy = false;
-        if (this.eat(Asterisk)) {
-            min = 0;
-            max = Number.POSITIVE_INFINITY;
-        }
-        else if (this.eat(PlusSign)) {
-            min = 1;
-            max = Number.POSITIVE_INFINITY;
-        }
-        else if (this.eat(QuestionMark)) {
-            min = 0;
-            max = 1;
-        }
-        else if (this.eatBracedQuantifier(noError)) {
-            min = this._lastMinValue;
-            max = this._lastMaxValue;
-        }
-        else {
-            return false;
-        }
-        greedy = !this.eat(QuestionMark);
-        if (!noError) {
-            this.onQuantifier(start, this.index, min, max, greedy);
-        }
-        return true;
-    }
-    eatBracedQuantifier(noError) {
-        const start = this.index;
-        if (this.eat(LeftCurlyBracket)) {
-            this._lastMinValue = 0;
-            this._lastMaxValue = Number.POSITIVE_INFINITY;
-            if (this.eatDecimalDigits()) {
-                this._lastMinValue = this._lastMaxValue = this._lastIntValue;
-                if (this.eat(Comma)) {
-                    this._lastMaxValue = this.eatDecimalDigits()
-                        ? this._lastIntValue
-                        : Number.POSITIVE_INFINITY;
-                }
-                if (this.eat(RightCurlyBracket)) {
-                    if (!noError && this._lastMaxValue < this._lastMinValue) {
-                        this.raise("numbers out of order in {} quantifier");
-                    }
-                    return true;
-                }
-            }
-            if (!noError && this.strict) {
-                this.raise("Incomplete quantifier");
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatAtom() {
-        return (this.eatPatternCharacter() ||
-            this.eatDot() ||
-            this.eatReverseSolidusAtomEscape() ||
-            this.eatCharacterClass() ||
-            this.eatUncapturingGroup() ||
-            this.eatCapturingGroup());
-    }
-    eatDot() {
-        if (this.eat(FullStop)) {
-            this.onAnyCharacterSet(this.index - 1, this.index, "any");
-            return true;
-        }
-        return false;
-    }
-    eatReverseSolidusAtomEscape() {
-        const start = this.index;
-        if (this.eat(ReverseSolidus)) {
-            if (this.eatAtomEscape()) {
-                return true;
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatUncapturingGroup() {
-        const start = this.index;
-        if (this.eat3(LeftParenthesis, QuestionMark, Colon)) {
-            this.onGroupEnter(start);
-            this.disjunction();
-            if (!this.eat(RightParenthesis)) {
-                this.raise("Unterminated group");
-            }
-            this.onGroupLeave(start, this.index);
-            return true;
-        }
-        return false;
-    }
-    eatCapturingGroup() {
-        const start = this.index;
-        if (this.eat(LeftParenthesis)) {
-            this._lastStrValue = "";
-            if (this.ecmaVersion >= 2018) {
-                this.groupSpecifier();
-            }
-            else if (this.currentCodePoint === QuestionMark) {
-                this.raise("Invalid group");
-            }
-            const name = this._lastStrValue || null;
-            this.onCapturingGroupEnter(start, name);
-            this.disjunction();
-            if (!this.eat(RightParenthesis)) {
-                this.raise("Unterminated group");
-            }
-            this.onCapturingGroupLeave(start, this.index, name);
-            return true;
-        }
-        return false;
-    }
-    eatExtendedAtom() {
-        return (this.eatDot() ||
-            this.eatReverseSolidusAtomEscape() ||
-            this.eatReverseSolidusFollowedByC() ||
-            this.eatCharacterClass() ||
-            this.eatUncapturingGroup() ||
-            this.eatCapturingGroup() ||
-            this.eatInvalidBracedQuantifier() ||
-            this.eatExtendedPatternCharacter());
-    }
-    eatReverseSolidusFollowedByC() {
-        if (this.currentCodePoint === ReverseSolidus &&
-            this.nextCodePoint === LatinSmallLetterC) {
-            this._lastIntValue = this.currentCodePoint;
-            this.advance();
-            this.onCharacter(this.index - 1, this.index, ReverseSolidus);
-            return true;
-        }
-        return false;
-    }
-    eatInvalidBracedQuantifier() {
-        if (this.eatBracedQuantifier(true)) {
-            this.raise("Nothing to repeat");
-        }
-        return false;
-    }
-    eatSyntaxCharacter() {
-        if (isSyntaxCharacter(this.currentCodePoint)) {
-            this._lastIntValue = this.currentCodePoint;
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-    eatPatternCharacter() {
-        const start = this.index;
-        const cp = this.currentCodePoint;
-        if (cp !== -1 && !isSyntaxCharacter(cp)) {
-            this.advance();
-            this.onCharacter(start, this.index, cp);
-            return true;
-        }
-        return false;
-    }
-    eatExtendedPatternCharacter() {
-        const start = this.index;
-        const cp = this.currentCodePoint;
-        if (cp !== -1 &&
-            cp !== CircumflexAccent &&
-            cp !== DollarSign &&
-            cp !== ReverseSolidus &&
-            cp !== FullStop &&
-            cp !== Asterisk &&
-            cp !== PlusSign &&
-            cp !== QuestionMark &&
-            cp !== LeftParenthesis &&
-            cp !== RightParenthesis &&
-            cp !== LeftSquareBracket &&
-            cp !== VerticalLine) {
-            this.advance();
-            this.onCharacter(start, this.index, cp);
-            return true;
-        }
-        return false;
-    }
-    groupSpecifier() {
-        this._lastStrValue = "";
-        if (this.eat(QuestionMark)) {
-            if (this.eatGroupName()) {
-                if (!this._groupNames.has(this._lastStrValue)) {
-                    this._groupNames.add(this._lastStrValue);
-                    return;
-                }
-                this.raise("Duplicate capture group name");
-            }
-            this.raise("Invalid group");
-        }
-    }
-    eatGroupName() {
-        this._lastStrValue = "";
-        if (this.eat(LessThanSign)) {
-            if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) {
-                return true;
-            }
-            this.raise("Invalid capture group name");
-        }
-        return false;
-    }
-    eatRegExpIdentifierName() {
-        this._lastStrValue = "";
-        if (this.eatRegExpIdentifierStart()) {
-            this._lastStrValue += String.fromCodePoint(this._lastIntValue);
-            while (this.eatRegExpIdentifierPart()) {
-                this._lastStrValue += String.fromCodePoint(this._lastIntValue);
-            }
-            return true;
-        }
-        return false;
-    }
-    eatRegExpIdentifierStart() {
-        const start = this.index;
-        let cp = this.currentCodePoint;
-        this.advance();
-        if (cp === ReverseSolidus && this.eatRegExpUnicodeEscapeSequence()) {
-            cp = this._lastIntValue;
-        }
-        if (isRegExpIdentifierStart(cp)) {
-            this._lastIntValue = cp;
-            return true;
-        }
-        if (this.index !== start) {
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatRegExpIdentifierPart() {
-        const start = this.index;
-        let cp = this.currentCodePoint;
-        this.advance();
-        if (cp === ReverseSolidus && this.eatRegExpUnicodeEscapeSequence()) {
-            cp = this._lastIntValue;
-        }
-        if (isRegExpIdentifierPart(cp)) {
-            this._lastIntValue = cp;
-            return true;
-        }
-        if (this.index !== start) {
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatAtomEscape() {
-        if (this.eatBackreference() ||
-            this.eatCharacterClassEscape() ||
-            this.eatCharacterEscape() ||
-            (this._nFlag && this.eatKGroupName())) {
-            return true;
-        }
-        if (this.strict || this._uFlag) {
-            this.raise("Invalid escape");
-        }
-        return false;
-    }
-    eatBackreference() {
-        const start = this.index;
-        if (this.eatDecimalEscape()) {
-            const n = this._lastIntValue;
-            if (n <= this._numCapturingParens) {
-                this.onBackreference(start - 1, this.index, n);
-                return true;
-            }
-            if (this.strict) {
-                this.raise("Invalid escape");
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatKGroupName() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterK)) {
-            if (this.eatGroupName()) {
-                const groupName = this._lastStrValue;
-                this._backreferenceNames.add(groupName);
-                this.onBackreference(start - 1, this.index, groupName);
-                return true;
-            }
-            this.raise("Invalid named reference");
-        }
-        return false;
-    }
-    eatCharacterEscape() {
-        const start = this.index;
-        if (this.eatControlEscape() ||
-            this.eatCControlLetter() ||
-            this.eatZero() ||
-            this.eatHexEscapeSequence() ||
-            this.eatRegExpUnicodeEscapeSequence() ||
-            (!this.strict && this.eatLegacyOctalEscapeSequence()) ||
-            this.eatIdentityEscape()) {
-            this.onCharacter(start - 1, this.index, this._lastIntValue);
-            return true;
-        }
-        return false;
-    }
-    eatCControlLetter() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterC)) {
-            if (this.eatControlLetter()) {
-                return true;
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatZero() {
-        if (this.currentCodePoint === DigitZero &&
-            !isDecimalDigit(this.nextCodePoint)) {
-            this._lastIntValue = 0;
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-    eatControlEscape() {
-        if (this.eat(LatinSmallLetterT)) {
-            this._lastIntValue = CharacterTabulation;
-            return true;
-        }
-        if (this.eat(LatinSmallLetterN)) {
-            this._lastIntValue = LineFeed;
-            return true;
-        }
-        if (this.eat(LatinSmallLetterV)) {
-            this._lastIntValue = LineTabulation;
-            return true;
-        }
-        if (this.eat(LatinSmallLetterF)) {
-            this._lastIntValue = FormFeed;
-            return true;
-        }
-        if (this.eat(LatinSmallLetterR)) {
-            this._lastIntValue = CarriageReturn;
-            return true;
-        }
-        return false;
-    }
-    eatControlLetter() {
-        const cp = this.currentCodePoint;
-        if (isLatinLetter(cp)) {
-            this.advance();
-            this._lastIntValue = cp % 0x20;
-            return true;
-        }
-        return false;
-    }
-    eatRegExpUnicodeEscapeSequence() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterU)) {
-            if (this.eatFixedHexDigits(4)) {
-                const lead = this._lastIntValue;
-                if (this._uFlag && lead >= 0xd800 && lead <= 0xdbff) {
-                    const leadSurrogateEnd = this.index;
-                    if (this.eat(ReverseSolidus) &&
-                        this.eat(LatinSmallLetterU) &&
-                        this.eatFixedHexDigits(4)) {
-                        const trail = this._lastIntValue;
-                        if (trail >= 0xdc00 && trail <= 0xdfff) {
-                            this._lastIntValue =
-                                (lead - 0xd800) * 0x400 +
-                                    (trail - 0xdc00) +
-                                    0x10000;
-                            return true;
-                        }
-                    }
-                    this.rewind(leadSurrogateEnd);
-                    this._lastIntValue = lead;
-                }
-                return true;
-            }
-            if (this._uFlag &&
-                this.eat(LeftCurlyBracket) &&
-                this.eatHexDigits() &&
-                this.eat(RightCurlyBracket) &&
-                isValidUnicode(this._lastIntValue)) {
-                return true;
-            }
-            if (this.strict || this._uFlag) {
-                this.raise("Invalid unicode escape");
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatIdentityEscape() {
-        if (this._uFlag) {
-            if (this.eatSyntaxCharacter()) {
-                return true;
-            }
-            if (this.eat(Solidus)) {
-                this._lastIntValue = Solidus;
-                return true;
-            }
-            return false;
-        }
-        if (this.isValidIdentityEscape(this.currentCodePoint)) {
-            this._lastIntValue = this.currentCodePoint;
-            this.advance();
-            return true;
-        }
-        return false;
-    }
-    isValidIdentityEscape(cp) {
-        if (cp === -1) {
-            return false;
-        }
-        if (this.strict) {
-            return !isIdContinue(cp);
-        }
-        return (cp !== LatinSmallLetterC &&
-            (!this._nFlag || cp !== LatinSmallLetterK));
-    }
-    eatDecimalEscape() {
-        this._lastIntValue = 0;
-        let cp = this.currentCodePoint;
-        if (cp >= DigitOne && cp <= DigitNine) {
-            do {
-                this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero);
-                this.advance();
-            } while ((cp = this.currentCodePoint) >= DigitZero &&
-                cp <= DigitNine);
-            return true;
-        }
-        return false;
-    }
-    eatCharacterClassEscape() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterD)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
-            return true;
-        }
-        if (this.eat(LatinCapitalLetterD)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
-            return true;
-        }
-        if (this.eat(LatinSmallLetterS)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "space", false);
-            return true;
-        }
-        if (this.eat(LatinCapitalLetterS)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "space", true);
-            return true;
-        }
-        if (this.eat(LatinSmallLetterW)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "word", false);
-            return true;
-        }
-        if (this.eat(LatinCapitalLetterW)) {
-            this._lastIntValue = -1;
-            this.onEscapeCharacterSet(start - 1, this.index, "word", true);
-            return true;
-        }
-        let negate = false;
-        if (this._uFlag &&
-            this.ecmaVersion >= 2018 &&
-            (this.eat(LatinSmallLetterP) ||
-                (negate = this.eat(LatinCapitalLetterP)))) {
-            this._lastIntValue = -1;
-            if (this.eat(LeftCurlyBracket) &&
-                this.eatUnicodePropertyValueExpression() &&
-                this.eat(RightCurlyBracket)) {
-                this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate);
-                return true;
-            }
-            this.raise("Invalid property name");
-        }
-        return false;
-    }
-    eatUnicodePropertyValueExpression() {
-        const start = this.index;
-        if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) {
-            this._lastKeyValue = this._lastStrValue;
-            if (this.eatUnicodePropertyValue()) {
-                this._lastValValue = this._lastStrValue;
-                if (isValidUnicodeProperty(this._lastKeyValue, this._lastValValue)) {
-                    return true;
-                }
-                this.raise("Invalid property name");
-            }
-        }
-        this.rewind(start);
-        if (this.eatLoneUnicodePropertyNameOrValue()) {
-            const nameOrValue = this._lastStrValue;
-            if (isValidUnicodeProperty("General_Category", nameOrValue)) {
-                this._lastKeyValue = "General_Category";
-                this._lastValValue = nameOrValue;
-                return true;
-            }
-            if (isValidUnicodePropertyName(nameOrValue)) {
-                this._lastKeyValue = nameOrValue;
-                this._lastValValue = "";
-                return true;
-            }
-            this.raise("Invalid property name");
-        }
-        return false;
-    }
-    eatUnicodePropertyName() {
-        this._lastStrValue = "";
-        while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
-            this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
-            this.advance();
-        }
-        return this._lastStrValue !== "";
-    }
-    eatUnicodePropertyValue() {
-        this._lastStrValue = "";
-        while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
-            this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
-            this.advance();
-        }
-        return this._lastStrValue !== "";
-    }
-    eatLoneUnicodePropertyNameOrValue() {
-        return this.eatUnicodePropertyValue();
-    }
-    eatCharacterClass() {
-        const start = this.index;
-        if (this.eat(LeftSquareBracket)) {
-            const negate = this.eat(CircumflexAccent);
-            this.onCharacterClassEnter(start, negate);
-            this.classRanges();
-            if (!this.eat(RightSquareBracket)) {
-                this.raise("Unterminated character class");
-            }
-            this.onCharacterClassLeave(start, this.index, negate);
-            return true;
-        }
-        return false;
-    }
-    classRanges() {
-        let start = this.index;
-        while (this.eatClassAtom()) {
-            const left = this._lastIntValue;
-            const hyphenStart = this.index;
-            if (this.eat(HyphenMinus)) {
-                this.onCharacter(hyphenStart, this.index, HyphenMinus);
-                if (this.eatClassAtom()) {
-                    const right = this._lastIntValue;
-                    if (left === -1 || right === -1) {
-                        if (this.strict) {
-                            this.raise("Invalid character class");
-                        }
-                    }
-                    else if (left > right) {
-                        this.raise("Range out of order in character class");
-                    }
-                    else {
-                        this.onCharacterClassRange(start, this.index, left, right);
-                    }
-                }
-            }
-            start = this.index;
-        }
-    }
-    eatClassAtom() {
-        const start = this.index;
-        if (this.eat(ReverseSolidus)) {
-            if (this.eatClassEscape()) {
-                return true;
-            }
-            if (this._uFlag) {
-                this.raise("Invalid escape");
-            }
-            this.rewind(start);
-        }
-        const cp = this.currentCodePoint;
-        if (cp !== -1 && cp !== RightSquareBracket) {
-            this.advance();
-            this._lastIntValue = cp;
-            this.onCharacter(start, this.index, cp);
-            return true;
-        }
-        return false;
-    }
-    eatClassEscape() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterB)) {
-            this._lastIntValue = Backspace;
-            this.onCharacter(start - 1, this.index, Backspace);
-            return true;
-        }
-        if (this._uFlag && this.eat(HyphenMinus)) {
-            this._lastIntValue = HyphenMinus;
-            this.onCharacter(start - 1, this.index, HyphenMinus);
-            return true;
-        }
-        if (!this._uFlag && this.eat(LatinSmallLetterC)) {
-            if (this.eatClassControlLetter()) {
-                this.onCharacter(start - 1, this.index, this._lastIntValue);
-                return true;
-            }
-            this.rewind(start);
-        }
-        return this.eatCharacterClassEscape() || this.eatCharacterEscape();
-    }
-    eatClassControlLetter() {
-        const cp = this.currentCodePoint;
-        if (isDecimalDigit(cp) || cp === LowLine) {
-            this.advance();
-            this._lastIntValue = cp % 0x20;
-            return true;
-        }
-        return false;
-    }
-    eatHexEscapeSequence() {
-        const start = this.index;
-        if (this.eat(LatinSmallLetterX)) {
-            if (this.eatFixedHexDigits(2)) {
-                return true;
-            }
-            if (this._uFlag) {
-                this.raise("Invalid escape");
-            }
-            this.rewind(start);
-        }
-        return false;
-    }
-    eatDecimalDigits() {
-        const start = this.index;
-        this._lastIntValue = 0;
-        while (isDecimalDigit(this.currentCodePoint)) {
-            this._lastIntValue =
-                10 * this._lastIntValue + digitToInt(this.currentCodePoint);
-            this.advance();
-        }
-        return this.index !== start;
-    }
-    eatHexDigits() {
-        const start = this.index;
-        this._lastIntValue = 0;
-        while (isHexDigit(this.currentCodePoint)) {
-            this._lastIntValue =
-                16 * this._lastIntValue + digitToInt(this.currentCodePoint);
-            this.advance();
-        }
-        return this.index !== start;
-    }
-    eatLegacyOctalEscapeSequence() {
-        if (this.eatOctalDigit()) {
-            const n1 = this._lastIntValue;
-            if (this.eatOctalDigit()) {
-                const n2 = this._lastIntValue;
-                if (n1 <= 3 && this.eatOctalDigit()) {
-                    this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
-                }
-                else {
-                    this._lastIntValue = n1 * 8 + n2;
-                }
-            }
-            else {
-                this._lastIntValue = n1;
-            }
-            return true;
-        }
-        return false;
-    }
-    eatOctalDigit() {
-        const cp = this.currentCodePoint;
-        if (isOctalDigit(cp)) {
-            this.advance();
-            this._lastIntValue = cp - DigitZero;
-            return true;
-        }
-        this._lastIntValue = 0;
-        return false;
-    }
-    eatFixedHexDigits(length) {
-        const start = this.index;
-        this._lastIntValue = 0;
-        for (let i = 0; i < length; ++i) {
-            const cp = this.currentCodePoint;
-            if (!isHexDigit(cp)) {
-                this.rewind(start);
-                return false;
-            }
-            this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
-            this.advance();
-        }
-        return true;
-    }
-}
-
-const DummyPattern = {};
-const DummyFlags = {};
-const DummyCapturingGroup = {};
-class RegExpParserState {
-    constructor(options) {
-        this._node = DummyPattern;
-        this._flags = DummyFlags;
-        this._backreferences = [];
-        this._capturingGroups = [];
-        this.source = "";
-        this.strict = Boolean(options && options.strict);
-        this.ecmaVersion = (options && options.ecmaVersion) || 2018;
-    }
-    get pattern() {
-        if (this._node.type !== "Pattern") {
-            throw new Error("UnknownError");
-        }
-        return this._node;
-    }
-    get flags() {
-        if (this._flags.type !== "Flags") {
-            throw new Error("UnknownError");
-        }
-        return this._flags;
-    }
-    onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) {
-        this._flags = {
-            type: "Flags",
-            parent: null,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            global,
-            ignoreCase,
-            multiline,
-            unicode,
-            sticky,
-            dotAll,
-        };
-    }
-    onPatternEnter(start) {
-        this._node = {
-            type: "Pattern",
-            parent: null,
-            start,
-            end: start,
-            raw: "",
-            alternatives: [],
-        };
-        this._backreferences.length = 0;
-        this._capturingGroups.length = 0;
-    }
-    onPatternLeave(start, end) {
-        this._node.end = end;
-        this._node.raw = this.source.slice(start, end);
-        for (const reference of this._backreferences) {
-            const ref = reference.ref;
-            const group = typeof ref === "number"
-                ? this._capturingGroups[ref - 1]
-                : this._capturingGroups.find(g => g.name === ref);
-            reference.resolved = group;
-            group.references.push(reference);
-        }
-    }
-    onAlternativeEnter(start) {
-        const parent = this._node;
-        if (parent.type !== "Assertion" &&
-            parent.type !== "CapturingGroup" &&
-            parent.type !== "Group" &&
-            parent.type !== "Pattern") {
-            throw new Error("UnknownError");
-        }
-        this._node = {
-            type: "Alternative",
-            parent,
-            start,
-            end: start,
-            raw: "",
-            elements: [],
-        };
-        parent.alternatives.push(this._node);
-    }
-    onAlternativeLeave(start, end) {
-        const node = this._node;
-        if (node.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        node.end = end;
-        node.raw = this.source.slice(start, end);
-        this._node = node.parent;
-    }
-    onGroupEnter(start) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        this._node = {
-            type: "Group",
-            parent,
-            start,
-            end: start,
-            raw: "",
-            alternatives: [],
-        };
-        parent.elements.push(this._node);
-    }
-    onGroupLeave(start, end) {
-        const node = this._node;
-        if (node.type !== "Group" || node.parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        node.end = end;
-        node.raw = this.source.slice(start, end);
-        this._node = node.parent;
-    }
-    onCapturingGroupEnter(start, name) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        this._node = {
-            type: "CapturingGroup",
-            parent,
-            start,
-            end: start,
-            raw: "",
-            name,
-            alternatives: [],
-            references: [],
-        };
-        parent.elements.push(this._node);
-        this._capturingGroups.push(this._node);
-    }
-    onCapturingGroupLeave(start, end) {
-        const node = this._node;
-        if (node.type !== "CapturingGroup" ||
-            node.parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        node.end = end;
-        node.raw = this.source.slice(start, end);
-        this._node = node.parent;
-    }
-    onQuantifier(start, end, min, max, greedy) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        const element = parent.elements.pop();
-        if (element == null ||
-            element.type === "Quantifier" ||
-            (element.type === "Assertion" && element.kind !== "lookahead")) {
-            throw new Error("UnknownError");
-        }
-        const node = {
-            type: "Quantifier",
-            parent,
-            start: element.start,
-            end,
-            raw: this.source.slice(element.start, end),
-            min,
-            max,
-            greedy,
-            element,
-        };
-        parent.elements.push(node);
-        element.parent = node;
-    }
-    onLookaroundAssertionEnter(start, kind, negate) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        this._node = {
-            type: "Assertion",
-            parent,
-            start,
-            end: start,
-            raw: "",
-            kind,
-            negate,
-            alternatives: [],
-        };
-        parent.elements.push(this._node);
-    }
-    onLookaroundAssertionLeave(start, end) {
-        const node = this._node;
-        if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        node.end = end;
-        node.raw = this.source.slice(start, end);
-        this._node = node.parent;
-    }
-    onEdgeAssertion(start, end, kind) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "Assertion",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            kind,
-        });
-    }
-    onWordBoundaryAssertion(start, end, kind, negate) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "Assertion",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            kind,
-            negate,
-        });
-    }
-    onAnyCharacterSet(start, end, kind) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "CharacterSet",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            kind,
-        });
-    }
-    onEscapeCharacterSet(start, end, kind, negate) {
-        const parent = this._node;
-        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "CharacterSet",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            kind,
-            negate,
-        });
-    }
-    onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) {
-        const parent = this._node;
-        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "CharacterSet",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            kind,
-            key,
-            value,
-            negate,
-        });
-    }
-    onCharacter(start, end, value) {
-        const parent = this._node;
-        if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
-            throw new Error("UnknownError");
-        }
-        parent.elements.push({
-            type: "Character",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            value,
-        });
-    }
-    onBackreference(start, end, ref) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        const node = {
-            type: "Backreference",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            ref,
-            resolved: DummyCapturingGroup,
-        };
-        parent.elements.push(node);
-        this._backreferences.push(node);
-    }
-    onCharacterClassEnter(start, negate) {
-        const parent = this._node;
-        if (parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        this._node = {
-            type: "CharacterClass",
-            parent,
-            start,
-            end: start,
-            raw: "",
-            negate,
-            elements: [],
-        };
-        parent.elements.push(this._node);
-    }
-    onCharacterClassLeave(start, end) {
-        const node = this._node;
-        if (node.type !== "CharacterClass" ||
-            node.parent.type !== "Alternative") {
-            throw new Error("UnknownError");
-        }
-        node.end = end;
-        node.raw = this.source.slice(start, end);
-        this._node = node.parent;
-    }
-    onCharacterClassRange(start, end) {
-        const parent = this._node;
-        if (parent.type !== "CharacterClass") {
-            throw new Error("UnknownError");
-        }
-        const elements = parent.elements;
-        const max = elements.pop();
-        const hyphen = elements.pop();
-        const min = elements.pop();
-        if (!min ||
-            !max ||
-            !hyphen ||
-            min.type !== "Character" ||
-            max.type !== "Character" ||
-            hyphen.type !== "Character" ||
-            hyphen.value !== HyphenMinus) {
-            throw new Error("UnknownError");
-        }
-        const node = {
-            type: "CharacterClassRange",
-            parent,
-            start,
-            end,
-            raw: this.source.slice(start, end),
-            min,
-            max,
-        };
-        min.parent = node;
-        max.parent = node;
-        elements.push(node);
-    }
-}
-class RegExpParser {
-    constructor(options) {
-        this._state = new RegExpParserState(options);
-        this._validator = new RegExpValidator(this._state);
-    }
-    parseLiteral(source, start = 0, end = source.length) {
-        this._state.source = source;
-        this._validator.validateLiteral(source, start, end);
-        const pattern = this._state.pattern;
-        const flags = this._state.flags;
-        const literal = {
-            type: "RegExpLiteral",
-            parent: null,
-            start,
-            end,
-            raw: source,
-            pattern,
-            flags,
-        };
-        pattern.parent = literal;
-        flags.parent = literal;
-        return literal;
-    }
-    parseFlags(source, start = 0, end = source.length) {
-        this._state.source = source;
-        this._validator.validateFlags(source, start, end);
-        return this._state.flags;
-    }
-    parsePattern(source, start = 0, end = source.length, uFlag = false) {
-        this._state.source = source;
-        this._validator.validatePattern(source, start, end, uFlag);
-        return this._state.pattern;
-    }
-}
-
-class RegExpVisitor {
-    constructor(handlers) {
-        this._handlers = handlers;
-    }
-    visit(node) {
-        switch (node.type) {
-            case "Alternative":
-                this.visitAlternative(node);
-                break;
-            case "Assertion":
-                this.visitAssertion(node);
-                break;
-            case "Backreference":
-                this.visitBackreference(node);
-                break;
-            case "CapturingGroup":
-                this.visitCapturingGroup(node);
-                break;
-            case "Character":
-                this.visitCharacter(node);
-                break;
-            case "CharacterClass":
-                this.visitCharacterClass(node);
-                break;
-            case "CharacterClassRange":
-                this.visitCharacterClassRange(node);
-                break;
-            case "CharacterSet":
-                this.visitCharacterSet(node);
-                break;
-            case "Flags":
-                this.visitFlags(node);
-                break;
-            case "Group":
-                this.visitGroup(node);
-                break;
-            case "Pattern":
-                this.visitPattern(node);
-                break;
-            case "Quantifier":
-                this.visitQuantifier(node);
-                break;
-            case "RegExpLiteral":
-                this.visitRegExpLiteral(node);
-                break;
-            default:
-                throw new Error(`Unknown type: ${node.type}`);
-        }
-    }
-    visitAlternative(node) {
-        if (this._handlers.onAlternativeEnter) {
-            this._handlers.onAlternativeEnter(node);
-        }
-        node.elements.forEach(this.visit, this);
-        if (this._handlers.onAlternativeLeave) {
-            this._handlers.onAlternativeLeave(node);
-        }
-    }
-    visitAssertion(node) {
-        if (this._handlers.onAssertionEnter) {
-            this._handlers.onAssertionEnter(node);
-        }
-        if (node.kind === "lookahead" || node.kind === "lookbehind") {
-            node.alternatives.forEach(this.visit, this);
-        }
-        if (this._handlers.onAssertionLeave) {
-            this._handlers.onAssertionLeave(node);
-        }
-    }
-    visitBackreference(node) {
-        if (this._handlers.onBackreferenceEnter) {
-            this._handlers.onBackreferenceEnter(node);
-        }
-        if (this._handlers.onBackreferenceLeave) {
-            this._handlers.onBackreferenceLeave(node);
-        }
-    }
-    visitCapturingGroup(node) {
-        if (this._handlers.onCapturingGroupEnter) {
-            this._handlers.onCapturingGroupEnter(node);
-        }
-        node.alternatives.forEach(this.visit, this);
-        if (this._handlers.onCapturingGroupLeave) {
-            this._handlers.onCapturingGroupLeave(node);
-        }
-    }
-    visitCharacter(node) {
-        if (this._handlers.onCharacterEnter) {
-            this._handlers.onCharacterEnter(node);
-        }
-        if (this._handlers.onCharacterLeave) {
-            this._handlers.onCharacterLeave(node);
-        }
-    }
-    visitCharacterClass(node) {
-        if (this._handlers.onCharacterClassEnter) {
-            this._handlers.onCharacterClassEnter(node);
-        }
-        node.elements.forEach(this.visit, this);
-        if (this._handlers.onCharacterClassLeave) {
-            this._handlers.onCharacterClassLeave(node);
-        }
-    }
-    visitCharacterClassRange(node) {
-        if (this._handlers.onCharacterClassRangeEnter) {
-            this._handlers.onCharacterClassRangeEnter(node);
-        }
-        this.visitCharacter(node.min);
-        this.visitCharacter(node.max);
-        if (this._handlers.onCharacterClassRangeLeave) {
-            this._handlers.onCharacterClassRangeLeave(node);
-        }
-    }
-    visitCharacterSet(node) {
-        if (this._handlers.onCharacterSetEnter) {
-            this._handlers.onCharacterSetEnter(node);
-        }
-        if (this._handlers.onCharacterSetLeave) {
-            this._handlers.onCharacterSetLeave(node);
-        }
-    }
-    visitFlags(node) {
-        if (this._handlers.onFlagsEnter) {
-            this._handlers.onFlagsEnter(node);
-        }
-        if (this._handlers.onFlagsLeave) {
-            this._handlers.onFlagsLeave(node);
-        }
-    }
-    visitGroup(node) {
-        if (this._handlers.onGroupEnter) {
-            this._handlers.onGroupEnter(node);
-        }
-        node.alternatives.forEach(this.visit, this);
-        if (this._handlers.onGroupLeave) {
-            this._handlers.onGroupLeave(node);
-        }
-    }
-    visitPattern(node) {
-        if (this._handlers.onPatternEnter) {
-            this._handlers.onPatternEnter(node);
-        }
-        node.alternatives.forEach(this.visit, this);
-        if (this._handlers.onPatternLeave) {
-            this._handlers.onPatternLeave(node);
-        }
-    }
-    visitQuantifier(node) {
-        if (this._handlers.onQuantifierEnter) {
-            this._handlers.onQuantifierEnter(node);
-        }
-        this.visit(node.element);
-        if (this._handlers.onQuantifierLeave) {
-            this._handlers.onQuantifierLeave(node);
-        }
-    }
-    visitRegExpLiteral(node) {
-        if (this._handlers.onRegExpLiteralEnter) {
-            this._handlers.onRegExpLiteralEnter(node);
-        }
-        this.visitPattern(node.pattern);
-        this.visitFlags(node.flags);
-        if (this._handlers.onRegExpLiteralLeave) {
-            this._handlers.onRegExpLiteralLeave(node);
-        }
-    }
-}
-
-function parseRegExpLiteral(source, options) {
-    return new RegExpParser(options).parseLiteral(String(source));
-}
-function validateRegExpLiteral(source, options) {
-    return new RegExpValidator(options).validateLiteral(source);
-}
-function visitRegExpAST(node, handlers) {
-    new RegExpVisitor(handlers).visit(node);
-}
-
-exports.AST = ast;
-exports.RegExpParser = RegExpParser;
-exports.RegExpValidator = RegExpValidator;
-exports.parseRegExpLiteral = parseRegExpLiteral;
-exports.validateRegExpLiteral = validateRegExpLiteral;
-exports.visitRegExpAST = visitRegExpAST;
-//# sourceMappingURL=index.js.map