diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,20 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.8.3.1 -- 2020-01-21
+
+ * Escape `<` and `>` in latex to avoid ligatures (#91).
+
+ * Fix and extend Idris keywords (Denis Buzdalov).
+
+ * Update XML syntax definitions for javascript-react, qml,
+   typescript, javascript, cmake, cofee, latex, perl, python,
+   rest.
+
+ * Fixed bug with context shifts using `##` syntax for foreign context.
+   Previously we only handled these in IncludeRules, but
+   starting with the current batches of xml files they can occur
+   elsewhere too.
+
 ## 0.8.3 -- 2019-11-26
 
   * Update XML syntax definitions for c, cmake, coffee, cpp, css,
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.8.3
+version:             0.8.3.1
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Skylighting/Format/LaTeX.hs b/src/Skylighting/Format/LaTeX.hs
--- a/src/Skylighting/Format/LaTeX.hs
+++ b/src/Skylighting/Format/LaTeX.hs
@@ -56,6 +56,8 @@
            '-'  -> "{-}" -- prevent ligatures
            '~'  -> "\\textasciitilde{}"
            '^'  -> "\\^{}"
+           '>'  -> "\\textgreater{}"
+           '<'  -> "\\textless{}"
            _    -> Text.singleton c
 
 -- LaTeX
diff --git a/src/Skylighting/Parser.hs b/src/Skylighting/Parser.hs
--- a/src/Skylighting/Parser.hs
+++ b/src/Skylighting/Parser.hs
@@ -324,7 +324,7 @@
 
        let contextSwitch = if name == "IncludeRules"
                               then []  -- is this right?
-                              else parseContextSwitch syntaxname context
+                              else parseContextSwitch incsyntax inccontext
        returnA -< Rule{ rMatcher = matcher,
                         rAttribute = fromMaybe NormalTok $
                            if null attribute
diff --git a/test/expected/abc.javascript.native b/test/expected/abc.javascript.native
--- a/test/expected/abc.javascript.native
+++ b/test/expected/abc.javascript.native
@@ -10,20 +10,19 @@
 , [ ( KeywordTok , "let" )
   , ( NormalTok , " blocks " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " " )
-  , ( VariableTok , "characters" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "split" )
+  , ( NormalTok , " characters" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "split" )
   , ( NormalTok , "(" )
   , ( StringTok , "\" \"" )
-  , ( NormalTok , ")." )
-  , ( AttributeTok , "map" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "map" )
   , ( NormalTok , "(pair " )
   , ( KeywordTok , "=>" )
-  , ( NormalTok , " " )
-  , ( VariableTok , "pair" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "split" )
+  , ( NormalTok , " pair" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "split" )
   , ( NormalTok , "(" )
   , ( StringTok , "\"\"" )
   , ( NormalTok , "))" )
@@ -32,18 +31,18 @@
 , [ ( NormalTok , " " ) ]
 , [ ( KeywordTok , "function" )
   , ( NormalTok , " " )
-  , ( AttributeTok , "isWordPossible" )
-  , ( NormalTok , "(word) " )
-  , ( OperatorTok , "{" )
+  , ( FunctionTok , "isWordPossible" )
+  , ( NormalTok , "(word) {" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "var" )
   , ( NormalTok , " letters " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " [..." )
-  , ( VariableTok , "word" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "toUpperCase" )
+  , ( NormalTok , " [" )
+  , ( OperatorTok , "..." )
+  , ( AttributeTok , "word" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "toUpperCase" )
   , ( NormalTok , "()]" )
   , ( OperatorTok , ";" )
   ]
@@ -51,9 +50,8 @@
   , ( KeywordTok , "var" )
   , ( NormalTok , " length " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " " )
-  , ( VariableTok , "letters" )
-  , ( NormalTok , "." )
+  , ( NormalTok , " letters" )
+  , ( OperatorTok , "." )
   , ( AttributeTok , "length" )
   , ( OperatorTok , ";" )
   ]
@@ -64,7 +62,7 @@
   , ( NormalTok , " " )
   , ( KeywordTok , "new" )
   , ( NormalTok , " " )
-  , ( AttributeTok , "Set" )
+  , ( BuiltInTok , "Set" )
   , ( NormalTok , "(blocks)" )
   , ( OperatorTok , ";" )
   ]
@@ -75,8 +73,7 @@
   , ( KeywordTok , "let" )
   , ( NormalTok , " letter " )
   , ( KeywordTok , "of" )
-  , ( NormalTok , " letters) " )
-  , ( OperatorTok , "{" )
+  , ( NormalTok , " letters) {" )
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "for" )
@@ -84,17 +81,15 @@
   , ( KeywordTok , "let" )
   , ( NormalTok , " block " )
   , ( KeywordTok , "of" )
-  , ( NormalTok , " copy) " )
-  , ( OperatorTok , "{" )
+  , ( NormalTok , " copy) {" )
   ]
 , [ ( NormalTok , "      " )
   , ( KeywordTok , "let" )
   , ( NormalTok , " index " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " " )
-  , ( VariableTok , "block" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "indexOf" )
+  , ( NormalTok , " block" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "indexOf" )
   , ( NormalTok , "(letter)" )
   , ( OperatorTok , ";" )
   ]
@@ -105,14 +100,12 @@
   , ( OperatorTok , "!==" )
   , ( NormalTok , " " )
   , ( DecValTok , "-1" )
-  , ( NormalTok , ") " )
-  , ( OperatorTok , "{" )
+  , ( NormalTok , ") {" )
   ]
 , [ ( NormalTok , "        length" ) , ( OperatorTok , "--;" ) ]
-, [ ( NormalTok , "        " )
-  , ( VariableTok , "copy" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "delete" )
+, [ ( NormalTok , "        copy" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "delete" )
   , ( NormalTok , "(block)" )
   , ( OperatorTok , ";" )
   ]
@@ -121,10 +114,10 @@
   , ( OperatorTok , ";" )
   , ( NormalTok , "  " )
   ]
-, [ ( NormalTok , "      " ) , ( OperatorTok , "}" ) ]
-, [ ( NormalTok , "    " ) , ( OperatorTok , "}" ) ]
+, [ ( NormalTok , "      }" ) ]
+, [ ( NormalTok , "    }" ) ]
 , []
-, [ ( NormalTok , "  " ) , ( OperatorTok , "}" ) ]
+, [ ( NormalTok , "  }" ) ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "return" )
   , ( NormalTok , " " )
@@ -132,7 +125,7 @@
   , ( NormalTok , "length" )
   , ( OperatorTok , ";" )
   ]
-, [ ( OperatorTok , "}" ) , ( NormalTok , "    " ) ]
+, [ ( NormalTok , "}    " ) ]
 , [ ( NormalTok , " " ) ]
 , [ ( NormalTok , "[ " ) ]
 , [ ( NormalTok , "  " )
@@ -169,14 +162,15 @@
   , ( StringTok , "\"CONFUSE\"" )
   , ( NormalTok , " " )
   ]
-, [ ( NormalTok , "]." )
-  , ( AttributeTok , "forEach" )
+, [ ( NormalTok , "]" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "forEach" )
   , ( NormalTok , "(word " )
   , ( KeywordTok , "=>" )
   , ( NormalTok , " " )
-  , ( VariableTok , "console" )
-  , ( NormalTok , "." )
-  , ( AttributeTok , "log" )
+  , ( BuiltInTok , "console" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "log" )
   , ( NormalTok , "(" )
   , ( VerbatimStringTok , "`" )
   , ( SpecialCharTok , "${" )
@@ -184,8 +178,7 @@
   , ( SpecialCharTok , "}" )
   , ( VerbatimStringTok , ": " )
   , ( SpecialCharTok , "${" )
-  , ( AttributeTok , "isWordPossible" )
-  , ( NormalTok , "(word)" )
+  , ( NormalTok , "isWordPossible(word)" )
   , ( SpecialCharTok , "}" )
   , ( VerbatimStringTok , "`" )
   , ( NormalTok , "))" )
diff --git a/test/expected/hk91.html.native b/test/expected/hk91.html.native
--- a/test/expected/hk91.html.native
+++ b/test/expected/hk91.html.native
@@ -14,9 +14,8 @@
 , [ ( NormalTok , "    " )
   , ( KeywordTok , "function" )
   , ( NormalTok , " " )
-  , ( AttributeTok , "makeHeaders" )
-  , ( NormalTok , "(colnames) " )
-  , ( OperatorTok , "{" )
+  , ( FunctionTok , "makeHeaders" )
+  , ( NormalTok , "(colnames) {" )
   ]
 , [ ( NormalTok , "      " )
   , ( KeywordTok , "var" )
@@ -37,15 +36,13 @@
   , ( OperatorTok , ";" )
   , ( NormalTok , " i " )
   , ( OperatorTok , "<" )
-  , ( NormalTok , " " )
-  , ( VariableTok , "colnames" )
-  , ( NormalTok , "." )
+  , ( NormalTok , " colnames" )
+  , ( OperatorTok , "." )
   , ( AttributeTok , "length" )
   , ( OperatorTok , ";" )
   , ( NormalTok , " i" )
   , ( OperatorTok , "++" )
-  , ( NormalTok , ") " )
-  , ( OperatorTok , "{" )
+  , ( NormalTok , ") {" )
   ]
 , [ ( NormalTok , "        str " )
   , ( OperatorTok , "+=" )
@@ -59,35 +56,31 @@
   , ( StringTok , "\"</th>\"" )
   , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "      " ) , ( OperatorTok , "}" ) ]
+, [ ( NormalTok , "      }" ) ]
 , [ ( NormalTok , "      " )
   , ( ControlFlowTok , "return" )
   , ( NormalTok , " (str)" )
   , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    " ) , ( OperatorTok , "}" ) ]
+, [ ( NormalTok , "    }" ) ]
 , [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
 , []
 , [ ( NormalTok , "  " ) , ( KeywordTok , "<script>" ) ]
-, [ ( NormalTok , "    " )
-  , ( AttributeTok , "$" )
-  , ( NormalTok , "(document)." )
-  , ( AttributeTok , "ready" )
+, [ ( NormalTok , "    $(" )
+  , ( BuiltInTok , "document" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , "." )
+  , ( FunctionTok , "ready" )
   , ( NormalTok , "(" )
   , ( KeywordTok , "function" )
-  , ( NormalTok , "() " )
-  , ( OperatorTok , "{" )
+  , ( NormalTok , "() {" )
   ]
 , [ ( NormalTok , "      alert" )
   , ( StringTok , "\"hello\"" )
   , ( NormalTok , ")" )
   , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    " )
-  , ( OperatorTok , "}" )
-  , ( NormalTok , ")" )
-  , ( OperatorTok , ";" )
-  ]
+, [ ( NormalTok , "    })" ) , ( OperatorTok , ";" ) ]
 , [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
 , []
 , [ ( KeywordTok , "</head>" ) ]
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -31,7 +31,7 @@
 
 <language
     name="CMake"
-    version="17"
+    version="19"
     kateversion="2.4"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -482,6 +482,13 @@
       <item>LISTS</item>
       <item>RANGE</item>
     </list>
+    <list name="get_cmake_property_sargs">
+      <item>CACHE_VARIABLES</item>
+      <item>COMMANDS</item>
+      <item>COMPONENTS</item>
+      <item>MACROS</item>
+      <item>VARIABLES</item>
+    </list>
     <list name="get_directory_property_nargs">
       <item>DEFINITION</item>
       <item>DIRECTORY</item>
@@ -831,10 +838,20 @@
       <item>OPTIONAL</item>
     </list>
     <list name="enable_language_sargs">
+      <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
       <item>C</item>
+      <item>CSharp</item>
+      <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>Java</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
       <item>RC</item>
+      <item>Swift</item>
     </list>
     <list name="export_nargs">
       <item>ANDROID_MK</item>
@@ -931,12 +948,20 @@
     </list>
     <list name="project_sargs">
       <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
       <item>C</item>
+      <item>CSharp</item>
       <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>Java</item>
       <item>NONE</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
       <item>RC</item>
+      <item>Swift</item>
     </list>
     <list name="set_source_files_properties_nargs">
       <item>PROPERTIES</item>
@@ -1349,6 +1374,7 @@
       <item>CMAKE_FIND_USE_PACKAGE_REGISTRY</item>
       <item>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</item>
       <item>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</item>
       <item>CMAKE_FOLDER</item>
       <item>CMAKE_FRAMEWORK</item>
       <item>CMAKE_FRAMEWORK_PATH</item>
@@ -1723,7 +1749,6 @@
       <item>CPACK_IFW_VERBOSE</item>
       <item>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</item>
       <item>CPACK_INSTALLED_DIRECTORIES</item>
-      <item>CPACK_INSTALL_CMAKE_CONFIGURATIONS</item>
       <item>CPACK_INSTALL_CMAKE_PROJECTS</item>
       <item>CPACK_INSTALL_COMMANDS</item>
       <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
@@ -2880,6 +2905,7 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx_op">
         <IncludeRules context="EndCmdPop2" />
+        <keyword attribute="Special Args" context="#stay" String="get_cmake_property_sargs" />
         <keyword attribute="Property" context="#stay" String="global-properties" />
         <IncludeRules context="Detect More global-properties" />
         <IncludeRules context="User Function Args" />
@@ -3806,8 +3832,8 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP&id_re;\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP[0-9]{4}\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP[0-9]{4}\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PROJECT_&id_re;_INCLUDE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;\b" />
diff --git a/xml/coffee.xml b/xml/coffee.xml
--- a/xml/coffee.xml
+++ b/xml/coffee.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 
 <language name="CoffeeScript"
-          version="9"
+          version="10"
           kateversion="5.0"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
@@ -251,27 +251,27 @@
         <RegExpr attribute="Error" context="#stay" String="String\.raw(?=`)"/>
         <StringDetect attribute="JavaScript Template" context="Javascript RawTemplate" String="String.raw\`"/>
         <!-- Contexts of javascript.xml. -->
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript Object" char="{" beginRegion="Brace" />
+        <DetectChar context="JavaScript Object" char="{" beginRegion="Brace" />
       </context>
       <context name="JavaScript Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <DetectChar context="#pop" char="`" lookAhead="true"/>
-        <DetectChar attribute="JavaScript Symbol" context="#pop" char="}" endRegion="Brace"/>
+        <DetectChar context="#pop" char="}" endRegion="Brace"/>
         <IncludeRules context="Overwrite Javascript"/>
         <IncludeRules context="Object##JavaScript"/>
       </context>
       <context name="Javascript Template" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">
         <RegExpr attribute="Escape" context="#stay" String="\\\\\\`"/>
-        <Detect2Chars attribute="JavaScript Template" context="#pop" char="\" char1="`"/> <!-- End template. -->
+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->
         <DetectChar context="#pop" char="`" lookAhead="true"/>
         <Detect2Chars attribute="JavaScript Substitution" context="Javascript Substitution" char="$" char1="{"/>
         <IncludeRules context="Template##JavaScript"/>
-        <RegExpr attribute="Error" context="#stay" String="([^\\\s](?=`)|\S(?=\s+`))"/>
+        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
       </context>
       <context name="Javascript RawTemplate" attribute="JavaScript Template" lineEndContext="#stay">
         <Detect2Chars attribute="JavaScript Template" context="#stay" char="\" char1="\"/>
-        <Detect2Chars attribute="JavaScript Template" context="#pop" char="\" char1="`"/>
+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->
         <DetectChar context="#pop" char="`" lookAhead="true"/>
-        <RegExpr attribute="Error" context="#stay" String="([^\\\s](?=`)|\S(?=\s+`))"/>
+        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
       </context>
       <context name="Javascript Substitution" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <DetectChar attribute="Javascript" context="#pop" char="`" lookAhead="true"/>
@@ -279,16 +279,17 @@
         <IncludeRules context="Overwrite Javascript"/>
         <IncludeRules context="Substitution##JavaScript"/>
       </context>
+
       <!-- Embedded Javascript (triple backticks). -->
       <context name="Javascript Triple Backticks" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <StringDetect attribute="Javascript" context="#pop" String="```" endRegion="Javascript TB"/>
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
+        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
       </context>
       <context name="JavaScript-TB Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <StringDetect attribute="Javascript" context="#pop" String="```" lookAhead="true"/>
-        <DetectChar attribute="JavaScript Symbol" context="#pop" char="}" endRegion="Brace"/>
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
+        <DetectChar context="#pop" char="}" endRegion="Brace"/>
+        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
         <IncludeRules context="Object##JavaScript"/>
       </context>
     </contexts>
@@ -320,7 +321,6 @@
       <itemData name="Literal Character Escape" defStyleNum="dsChar" spellChecking="false" />
       <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
 
-      <itemData name="JavaScript Symbol" defStyleNum="dsOperator" spellChecking="false"/>
       <itemData name="JavaScript Template" defStyleNum="dsVerbatimString"/>
       <itemData name="JavaScript Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
     </itemDatas>
diff --git a/xml/idris.xml b/xml/idris.xml
--- a/xml/idris.xml
+++ b/xml/idris.xml
@@ -9,13 +9,16 @@
     <item> case </item>
     <item> class </item>
     <item> codata </item>
+    <item> constructor </item>
     <item> covering </item>
     <item> data </item>
     <item> default </item>
     <item> do </item>
     <item> dsl </item>
     <item> else </item>
+    <item> export </item>
     <item> if </item>
+    <item> implementation </item>
     <item> implicit </item>
     <item> import </item>
     <item> impossible </item>
@@ -26,10 +29,11 @@
     <item> infixl </item>
     <item> infixr </item>
     <item> instance </item>
+    <item> interface </item>
     <item> lambda </item>
     <item> let </item>
     <item> module </item>
-    <item> mututal </item>
+    <item> mutual </item>
     <item> namespace </item>
     <item> of </item>
     <item> parameters </item>
diff --git a/xml/javascript-react.xml b/xml/javascript-react.xml
--- a/xml/javascript-react.xml
+++ b/xml/javascript-react.xml
@@ -2,16 +2,18 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
 	<!ENTITY simpleName "(?:[a-z][a-z\d]*:)?[a-z][a-z\d]*">
-	<!ENTITY baseName   "(?:[a-zA-Z_\$]|[^[:ascii:]])(?:(?:[\w\$\-\.]|[^[:ascii:]])*(?:[\w\$]|[^[:ascii:]]))?">
+	<!ENTITY baseName   "[a-zA-Z_\$[:^ascii:]](?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
 	<!ENTITY name       "(?:&baseName;:)?&baseName;">
-	<!ENTITY baseNameWithBound "(?:\b[a-zA-Z_\$]|[^[:ascii:]])(?:(?:[\w\$\-\.]|[^[:ascii:]])*(?:[\w\$]|[^[:ascii:]]))?">
+	<!ENTITY baseNameWithBound "(?:\b[a-zA-Z_\$]|[^[:ascii:]])(?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
 	<!ENTITY nameWithBound     "(?:&baseNameWithBound;:)?&baseNameWithBound;"> <!-- Use this instead of "\b&name;" -->
 
 	<!ENTITY simpleTag  "&lt;\s*&simpleName;"> <!-- Element tag -->
 	<!ENTITY tag        "&lt;\s*(?:&name;|&gt;)">
 	<!ENTITY entref     "&amp;(?:[a-zA-Z\d]+|#\d+|#x[a-fA-F\d]+);">
+	<!ENTITY mlComment  "/\*(?:[^\*]|\*+[^/\*])*\*+/">
+	<!ENTITY endTagName "[\s&lt;&gt;]|/[&gt;/\*]|$"> <!-- Delimiter of end of Tag name -->
 
-	<!ENTITY identifier "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
+	<!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
 ]>
 
 <!--
@@ -28,7 +30,7 @@
     ====================================================================
 
     This file is an extension of the JavaScript highlighter
-    (javascript.xml).
+    (javascript.xml, Version 14 and higher).
     IMPORTANT: Keep sync with "typescript-react.xml".
 
     Based on the XML syntax highlighting (v7), by Wilbert Berendsen
@@ -36,6 +38,7 @@
     available at: https://github.com/Microsoft/TypeScript-TmLanguage
 
     Change log:
+     * v8 [2019-11-21]: Tag detection is more stricter.
      * v7 [2019-11-19]: Rename definition "JavaScript React" to "JavaScript React (JSX)".
      * v5 [2019-02-20]: Don't highlight tags within declarations of
                         types, variables, classes and interfaces.
@@ -49,7 +52,7 @@
      * v1 [2018-06-20]: Initial version
 -->
 
-<language name="JavaScript React (JSX)" version="7" kateversion="5.0" section="Scripts" indenter="cstyle"
+<language name="JavaScript React (JSX)" version="8" kateversion="5.0" section="Scripts" indenter="cstyle"
           priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
           author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
 
@@ -73,16 +76,23 @@
 		     that contain: <IncludeRules context="Normal"/> in the JavaScript XML file. -->
 		<context name="OverwriteJavaScript" attribute="Normal Text" lineEndContext="#stay">
 			<DetectChar context="Template" attribute="Template" char="`" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" />
+			<DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
+			<DetectChar attribute="Normal Text" context="NoRegExp##JavaScript" char="]" endRegion="List" />
 			<!-- NOTE: The "{" character sends to the "Object" context (see the "React" context) -->
 		</context>
 		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
 			<IncludeRules context="React" />
+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=[^\{\}]*&identifier;\s*\:)" />
 			<IncludeRules context="Object##JavaScript" />
 		</context>
+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char=":" />
+			<IncludeRules context="React" />
+			<IncludeRules context="ConditionalExpression##JavaScript" />
+		</context>
 		<context name="Template" attribute="Template" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Template" char="`" />
+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />
 			<!-- Find tags and send to the "Substitution" context -->
 			<Detect2Chars context="Substitution-BeforeTag" attribute="Substitution" char="$" char1="{" />
 			<IncludeRules context="Template##JavaScript" />
@@ -113,31 +123,29 @@
 			<DetectSpaces />
 			<IncludeRules context="AllComments" />
 			<DetectChar context="#pop" attribute="Symbol" char="&lt;" />
-			<RegExpr context="#stay" attribute="Normal Text" String="[\[\(]\s*(?=&lt;)" />
-			<RegExpr context="#pop!Object" attribute="Symbol" String="\{\s*&lt;\s*/(?![\*/])" beginRegion="Brace" />
-			<RegExpr context="#pop!Object" attribute="Symbol" String="\{\s*&lt;" beginRegion="Brace" />
+			<RegExpr context="#stay" attribute="Normal Text" String="\(\s*(?=&lt;)" />
+			<RegExpr context="#stay" attribute="Normal Text" String="\[\s*(?=&lt;)" beginRegion="List" />
+			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;\s*/(?![\*/])" beginRegion="Brace" />
+			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;" beginRegion="Brace" />
 		</context>
 		<!-- Do not highlight tags in interface declarations -->
 		<context name="InterfaceDeclaration" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop!InterfaceContentDeclaration" attribute="Symbol" char="{" beginRegion="Brace" />
+			<DetectChar context="#pop!InterfaceContentDeclaration" attribute="Normal Text" char="{" beginRegion="Brace" />
 			<DetectChar context="#pop" char="}" lookAhead="true" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" />
 			<IncludeRules context="Normal##JavaScript" />
 		</context>
 		<context name="InterfaceContentDeclaration" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" />
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
 			<IncludeRules context="Object##JavaScript" />
 		</context>
 		<!-- Do not highlight tags in class declarations -->
 		<context name="ClassDeclaration" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop!ClassDeclarationContent" attribute="Symbol" char="{" beginRegion="Brace" />
+			<DetectChar context="#pop!ClassDeclarationContent" attribute="Normal Text" char="{" beginRegion="Brace" />
 			<DetectChar context="#pop" char="}" lookAhead="true" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" />
 			<IncludeRules context="Normal##JavaScript" />
 		</context>
 		<context name="ClassDeclarationContent" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
 			<DetectChar context="NoTag" attribute="Symbol" char=":" />
 			<IncludeRules context="Object" />
 		</context>
@@ -156,9 +164,10 @@
 			<!-- Characters before a valid tag -->
 			<RegExpr context="ValidTag" attribute="Special Operators" String="\=&gt;\s*(?=&tag;|/\*)" />
 			<RegExpr context="ValidTag" attribute="Symbol" String="(?:[,\=&gt;:\*\?]|&amp;&amp;|\|\|)\s*(?=&tag;|/\*)" />
-			<RegExpr context="ValidTag" attribute="Normal Text" String="[\(\[]\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Normal Text" String="\[\s*(?=&tag;|/\*)" beginRegion="List" />
+			<RegExpr context="ValidTag" attribute="Normal Text" String="\(\s*(?=&tag;|/\*)" />
 			<!-- The "Object-BeforeTag" context looks for a valid Tag and then sends the "Object" context -->
-			<DetectChar context="Object-BeforeTag" attribute="Symbol" char="{" beginRegion="Brace" />
+			<DetectChar context="Object-BeforeTag" attribute="Normal Text" char="{" beginRegion="Brace" />
 
 			<RegExpr context="ValidTag" attribute="Symbol" String="&lt;\s*&gt;\s*(?=&tag;|/\*)" />
 
@@ -195,29 +204,58 @@
 			<IncludeRules context="AllComments" />
 		</context>
 
-		<!-- Start tag -->
+		<!-- Start tag.
+		     There are two contexts to find Tags:
+		     * FindTags: For Tags within TypeScript code; invalid name tags aren't highlighted.
+		     * FindTagsInTagContent: For Tag within another tag; highlight any Tag.
+		                             Tags with invalid names are highlighted as "Error".
+		-->
 		<context name="FindTags" attribute="Normal Text" lineEndContext="#stay">
+				<!-- Invalid Tag, do not highlight tags in these cases:
+				     * "?" or "," after tag name:
+				         <Tag ? ...
+				         <Tag< ? ...
+				         <Tag /* comment */ ? ...
+				     * Invalid delimiter after comment (without spaces):
+				         <Tag/* comment */#
+				-->
+			<RegExpr context="#pop" attribute="Symbol" String="&lt;(?=\s*&name;(?:(&lt;(?:\s*&mlComment;)*)?(?:\s*&mlComment;)*\s*[\?,]|(?:&mlComment;)+(?!&endTagName;|&baseName;|\{)))" />
+
 			<!-- Empty tag (element) -->
 			<RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
+			<!-- Detect Tags -->
+			<RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=&endTagName;)" beginRegion="Element" />
+			<RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;(?=&endTagName;)" beginRegion="ComponentElement" />
+			<!-- If a valid Tag was not detected -->
+			<DetectChar context="#pop" attribute="Symbol" char="&lt;" />
+		</context>
+
+		<context name="FindTagsInTagContent" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Empty tag (element) -->
+			<RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
 			<!-- Detect non-ASCII character in the tag name (component). This prevents highlighting as Element,
 			     tag names that don't start with a non-ASCII character. -->
 			<RegExpr context="ComponentTagNonASCII" attribute="Component Tag" String="&lt;\s*(?=(?:[a-z][a-z\d]*:)?(?:[a-z][a-z\d]*)?[^[:ascii:]])" beginRegion="ComponentElement" /> <!-- &simpleName; -->
 			<!-- Element & component tags -->
-			<RegExpr context="ElementTag" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+(?:[^\w\$\-\.]|$)|:(?:[^a-zA-Z_\$]|$))" beginRegion="Element" />
+			<RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+(?:[^\w\$\-\.]|$)|:(?:[^a-zA-Z_\$]|$))" beginRegion="Element" />
 			<RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;" beginRegion="ComponentElement" />
 		</context>
-		<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#stay" attribute="EntityRef" String="&entref;" />
-		</context>
-
 		<!-- Highlight tag name with non-ASCII characters -->
 		<context name="ComponentTagNonASCII" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
 			<RegExpr context="#pop!ComponentTagFindType" attribute="Component Tag" String="&name;" />
 		</context>
+
+		<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#stay" attribute="EntityRef" String="&entref;" />
+		</context>
+
 		<!-- Type after the tag name. Ex: <C<number> /> -->
 		<context name="ComponentTagFindType" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
 			<DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
 		</context>
+		<context name="ElementTagFindType" attribute="Normal Text" lineEndContext="#pop!ElementTag" fallthrough="true" fallthroughContext="#pop!ElementTag">
+			<DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
+		</context>
 
 		<!-- Type assertion after the tag name -->
 		<context name="TypeInsideTag" attribute="Component Tag" lineEndContext="#stay">
@@ -280,7 +318,7 @@
 			<IncludeRules context="DefaultTagContent" />
 		</context>
 		<context name="DefaultTagContent" attribute="Tag Content Text" lineEndContext="#stay">
-			<IncludeRules context="FindTags" />
+			<IncludeRules context="FindTagsInTagContent" />
 			<IncludeRules context="FindEntityRefs" />
 			<IncludeRules context="FindEvaluatedCode" />
 			<DetectChar context="#stay" attribute="Error" char="&lt;" />
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -1,289 +1,2029 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-  <!ENTITY identifier "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
-]>
-<!-- Author: Anders Lund <anders@alweb.dk> //-->
-<!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
-<!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
-<language name="JavaScript" version="13" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
-          mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
-          author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
-  <highlighting>
-    <list name="controlflow">
-      <item>await</item>
-      <item>break</item>
-      <item>case</item>
-      <item>catch</item>
-      <item>continue</item>
-      <item>debugger</item>
-      <item>do</item>
-      <item>else</item>
-      <item>finally</item>
-      <item>for</item>
-      <item>if</item>
-      <item>return</item>
-      <item>switch</item>
-      <item>throw</item>
-      <item>try</item>
-      <item>while</item>
-      <item>with</item>
-    </list>
-    <list name="keywords">
-      <item>const</item>
-      <item>delete</item>
-      <item>function</item>
-      <item>in</item>
-      <item>instanceof</item>
-      <item>new</item>
-      <item>of</item>
-      <item>this</item>
-      <item>typeof</item>
-      <item>var</item>
-      <item>void</item>
-    </list>
-    <list name="reserved">
-      <item>async</item>
-      <item>class</item>
-      <item>enum</item>
-      <item>extends</item>
-      <item>super</item>
-
-      <!-- The following keywords are reserved only in strict-mode -->
-      <item>arguments</item>
-      <item>implements</item>
-      <item>interface</item>
-      <item>let</item>
-      <item>private</item>
-      <item>protected</item>
-      <item>public</item>
-      <item>static</item>
-      <item>yield</item>
-    </list>
-    <list name="module">
-      <item>import</item>
-      <item>from</item>
-      <item>as</item>
-      <item>default</item>
-      <item>export</item>
-      <item>package</item>
-    </list>
-    <list name="primitives">
-      <item>Infinity</item>
-      <item>NaN</item>
-      <item>false</item>
-      <item>null</item>
-      <item>true</item>
-      <item>undefined</item>
-    </list>
-    <contexts>
-
-      <!-- Shebang: ("#!") Detect shebang and fallthrough to Normal -->
-      <!-- Based on the similar clause from prolog.xml.
-        This uses "lineEmptyContext" & "lineEndContext" to force the highlight only on the first line.
-      -->
-      <context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal" >
-        <Detect2Chars column="0" char="#" char1="!" context="Shebang Line" attribute="Comment" />
-      </context>
-      <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal">
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <DetectSpaces/>
-
-        <Float attribute="Float" context="NoRegExp" />
-        <!-- Invalid Binary, Octal or Hex -->
-        <RegExpr attribute="Error" context="NoRegExp" String="\b0(?:b[01]*[2-9a-z]|o[0-7]*[89a-z]|x[0-9a-f]*[g-z])\w*\b" insensitive="true" />
-        <HlCHex attribute="Hex" context="NoRegExp" />
-        <RegExpr attribute="Octal" context="NoRegExp" String="\b0[oO][0-7]+" />
-        <RegExpr attribute="Binary" context="NoRegExp" String="\b0[bB][01]+" />
-        <Int attribute="Decimal" context="NoRegExp" />
-        <AnyChar context="NoRegExp" String="])" />
-
-        <keyword attribute="ControlFlow" String="controlflow" />
-        <keyword attribute="Keyword" String="keywords" />
-        <keyword attribute="Reserved" String="reserved" />
-        <keyword attribute="Keyword" context="NoRegExp" String="primitives" />
-        <keyword attribute="Module" String="module" />
-
-        <IncludeRules context="FindStrings" />
-
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Object Member" context="NoRegExp" String="&identifier;(?=\s*\()" />
-        <DetectChar context="Object Member" char="." />
-        <!--DetectIdentifier-->
-        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
-        <RegExpr context="NoRegExp" String="&identifier;" />
-        <RegExpr context="NoRegExp" String="[a-zA-Z_$][\w$]*" />
-
-        <IncludeRules context="FindComments" />
-
-        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
-        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=/\*|//)" />
-        <Detect2Chars attribute="Normal Text" context="NoRegExp" char="&lt;" char1="/" />
-        <Detect2Chars attribute="Normal Text" context="NoRegExp" char="/" char1="&gt;" />
-        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
-
-        <DetectChar attribute="Symbol" context="Object" char="{" beginRegion="Brace" />
-
-        <Detect2Chars context="#stay" attribute="Special Operators" char="=" char1="&gt;" />
-        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
-        <DetectChar context="#stay" char="." />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Objects" context="#stay" String="&identifier;(?=\s*\.)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Object Member" context="#pop!NoRegExp" String="&identifier;" />
-        <IncludeRules context="NoRegExp" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop" name="NoRegExp">
-        <Detect2Chars context="#pop" lookAhead="true" char="/" char1="/" />
-        <Detect2Chars context="#pop" lookAhead="true" char="/" char1="*" />
-        <DetectChar attribute="Symbol" context="#pop" char="/" />
-        <DetectSpaces/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Object">
-        <!-- Mostly required for define: in switch blocks -->
-        <keyword attribute="Keyword" String="keywords" />
-        <RegExpr attribute="ControlFlow" String="\bdefault(?=\s*:)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="JSON" String="&identifier;\s*(?=:)" />
-        <DetectChar attribute="Symbol" char="}" endRegion="Brace" context="#pop" />
-        <IncludeRules context="Normal" />
-      </context>
-
-      <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar attribute="Template" context="Template" char="`" />
-        <StringDetect attribute="Template" context="RawTemplate" String="String.raw`" />
-
-        <DetectChar attribute="String" context="String" char="&quot;" />
-        <DetectChar attribute="String" context="String SQ" char="'" />
-      </context>
-
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <IncludeRules context="Escape" />
-        <DetectChar attribute="String" context="#pop" char="&quot;" />
-      </context>
-      <context attribute="String" lineEndContext="#pop" name="String SQ">
-        <IncludeRules context="Escape" />
-        <DetectChar attribute="String" context="#pop" char="'" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Escape">
-        <LineContinue attribute="Escape" context="#stay" />
-        <!-- Hexadecimal, unicode & octal -->
-        <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
-        <Detect2Chars attribute="Error" context="#stay" char="\" char1="x" />
-        <Detect2Chars attribute="Error" context="#stay" char="\" char1="u" />
-        <DetectChar attribute="Escape" context="Character Escape" char="\" />
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="Character Escape">
-        <AnyChar attribute="Reserved Char. Escape" context="#pop" String="0bfnrtv" /> <!-- Reserved Char. Escape. Also: "'/ -->
-        <RegExpr attribute="Escape" context="#pop" String="." /> <!-- Literal Char. Escape -->
-      </context>
-
-      <context attribute="Template" lineEndContext="#stay" name="Template">
-        <IncludeRules context="Escape" />
-        <Detect2Chars attribute="Substitution" context="Substitution" char="$" char1="{" />
-        <DetectChar attribute="Template" context="#pop" char="`" />
-      </context>
-      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">
-        <DetectChar attribute="Template" context="#pop" char="`" />
-      </context>
-      <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
-          <DetectChar attribute="Substitution" char="}" context="#pop"/>
-          <IncludeRules context="Normal"/>
-      </context>
-
-      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />
-        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />
-
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
-        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
-      </context>
-
-      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
-        <RegExpr attribute="Regular Expression" context="#pop#pop" String="/\w*" />
-        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\[bB]" />
-        <RegExpr attribute="Pattern Character Class" String="\\[nrtvfDdSsWw]" />
-        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\." />
-        <RegExpr attribute="Pattern Internal Operator" String="\$(?=/)" />
-        <AnyChar attribute="Pattern Internal Operator" String="?+*()|" />
-      </context>
-      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
-        <RegExpr String="\\[\[\]]" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\." />
-        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
-      </context>
-      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
-        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
-      </context>
-      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
-        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
-      </context>
-
-      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
-        <DetectIdentifier/>
-        <DetectSpaces/>
-      </context>
-    </contexts>
-    <itemDatas>
-      <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
-      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false" />
-      <itemData name="ControlFlow"  defStyleNum="dsControlFlow" spellChecking="false" />
-      <itemData name="Reserved"     defStyleNum="dsKeyword" italic="true" spellChecking="false" />
-      <itemData name="Module"       defStyleNum="dsImport" spellChecking="false" />
-      <itemData name="Objects"      defStyleNum="dsVariable" spellChecking="false" />
-      <itemData name="Object Member" defStyleNum="dsAttribute" spellChecking="false" />
-      <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
-
-      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
-      <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
-      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Reserved Char. Escape" defStyleNum="dsSpecialChar" bold="1" spellChecking="false" />
-      <itemData name="String"       defStyleNum="dsString" />
-      <itemData name="Template"     defStyleNum="dsVerbatimString" />
-      <itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
-
-      <itemData name="Comment"      defStyleNum="dsComment" />
-      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
-      <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
-      <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
-      <itemData name="JSON"         defStyleNum="dsDataType" spellChecking="false" />
-      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <comments>
-      <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
-    </comments>
-    <keywords casesensitive="1" />
-  </general>
+  <!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+]>
+
+<!--
+  Author: Anders Lund <anders@alweb.dk>
+  Minor changes: Joseph Wenninger <jowenn@kde.org>
+  Full JavaScript 1.0 support by Whitehawk Stormchaser
+
+  Last Update: Nov. 20, 2019 (Version 14)
+
+  IMPORTANT: This syntax highlighting definition depends on
+  JavaScript React (JSX), TypeScript and QML.
+-->
+<language name="JavaScript" version="14" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+          mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
+          author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
+
+  <highlighting>
+
+    <list name="controlflow">
+      <item>await</item>
+      <item>break</item>
+      <item>case</item>
+      <item>catch</item>
+      <item>continue</item>
+      <item>debugger</item>
+      <item>do</item>
+      <item>else</item>
+      <item>finally</item>
+      <item>for</item>
+      <item>if</item>
+      <item>return</item>
+      <item>switch</item>
+      <item>throw</item>
+      <item>try</item>
+      <item>while</item>
+      <item>with</item>
+    </list>
+    <list name="keywords">
+      <item>const</item>
+      <item>delete</item>
+      <item>function</item>
+      <item>in</item>
+      <item>instanceof</item>
+      <item>new</item>
+      <item>of</item>
+      <item>this</item>
+      <item>typeof</item>
+      <item>var</item>
+      <item>void</item>
+    </list>
+    <list name="reserved">
+      <item>async</item>
+      <item>class</item>
+      <item>enum</item>
+      <item>extends</item>
+      <item>super</item>
+
+      <!-- The following keywords are reserved only in strict-mode -->
+      <item>arguments</item>
+      <item>implements</item>
+      <item>interface</item>
+      <item>let</item>
+      <item>private</item>
+      <item>protected</item>
+      <item>public</item>
+      <item>static</item>
+      <item>yield</item>
+    </list>
+    <list name="module">
+      <item>import</item>
+      <item>from</item>
+      <item>as</item>
+      <item>default</item>
+      <item>export</item>
+      <item>package</item>
+    </list>
+    <list name="primitives">
+      <item>Infinity</item>
+      <item>NaN</item>
+      <item>false</item>
+      <item>null</item>
+      <item>true</item>
+      <item>undefined</item>
+    </list>
+
+    <!-- Built-in Classes, Functions & Constants -->
+
+    <list name="class_builtin">
+      <item>Array</item>
+      <item>ArrayBuffer</item>
+      <item>Atomics</item>
+      <item>Boolean</item>
+      <item>BigInt</item>
+      <item>BigInt64Array</item>
+      <item>BigUint64Array</item>
+      <item>DataView</item>
+      <item>Date</item>
+      <item>Float32Array</item>
+      <item>Float64Array</item>
+      <item>Function</item>
+      <item>Generator</item>
+      <item>GeneratorFunction</item>
+      <item>Int8Array</item>
+      <item>Int16Array</item>
+      <item>Int32Array</item>
+      <item>Intl</item>
+      <item>Map</item>
+      <item>Object</item>
+      <item>Proxy</item>
+      <item>Reflect</item>
+      <item>RegExp</item>
+      <item>Set</item>
+      <item>SharedArrayBuffer</item>
+      <item>SIMD</item>
+      <item>String</item>
+      <item>Symbol</item>
+      <item>TypedArray</item>
+      <item>Uint8Array</item>
+      <item>Uint16Array</item>
+      <item>Uint32Array</item>
+      <item>Uint8ClampedArray</item>
+      <item>WeakMap</item>
+      <item>WeakSet</item>
+      <!-- Class: Error -->
+      <item>Error</item>
+      <item>EvalError</item>
+      <item>InternalError</item>
+      <item>RangeError</item>
+      <item>ReferenceError</item>
+      <item>SyntaxError</item>
+      <item>TypeError</item>
+      <item>URIError</item>
+      <!-- Class: Number -->
+      <item>Number</item>
+      <!-- Class: Math -->
+      <item>Math</item>
+      <!-- Class: Promise -->
+      <item>Promise</item>
+      <!-- Other -->
+      <item>JSON</item>
+      <item>console</item>
+      <item>process</item>
+    </list>
+    <!-- DOM Classes -->
+    <list name="class_dom">
+      <item>AnalyserNode</item>
+      <item>ArrayBufferView</item>
+      <item>Attr</item>
+      <item>AudioBuffer</item>
+      <item>AudioBufferSourceNode</item>
+      <item>AudioContext</item>
+      <item>AudioDestinationNode</item>
+      <item>AudioListener</item>
+      <item>AudioNode</item>
+      <item>AudioParam</item>
+      <item>BatteryManager</item>
+      <item>BeforeUnloadEvent</item>
+      <item>BiquadFilterNode</item>
+      <item>Blob</item>
+      <item>BufferSource</item>
+      <item>ByteString</item>
+      <item>CSS</item>
+      <item>CSSConditionRule</item>
+      <item>CSSCounterStyleRule</item>
+      <item>CSSGroupingRule</item>
+      <item>CSSMatrix</item>
+      <item>CSSMediaRule</item>
+      <item>CSSPageRule</item>
+      <item>CSSPrimitiveValue</item>
+      <item>CSSRule</item>
+      <item>CSSRuleList</item>
+      <item>CSSStyleDeclaration</item>
+      <item>CSSStyleRule</item>
+      <item>CSSStyleSheet</item>
+      <item>CSSSupportsRule</item>
+      <item>CSSValue</item>
+      <item>CSSValueList</item>
+      <item>CanvasGradient</item>
+      <item>CanvasImageSource</item>
+      <item>CanvasPattern</item>
+      <item>CanvasRenderingContext2D</item>
+      <item>ChannelMergerNode</item>
+      <item>ChannelSplitterNode</item>
+      <item>CharacterData</item>
+      <item>ChromeWorker</item>
+      <item>CloseEvent</item>
+      <item>Comment</item>
+      <item>CompositionEvent</item>
+      <item>Console</item>
+      <item>ConvolverNode</item>
+      <item>Coordinates</item>
+      <item>Credential</item>
+      <item>CredentialsContainer</item>
+      <item>Crypto</item>
+      <item>CryptoKey</item>
+      <item>CustomEvent</item>
+      <item>DOMError</item>
+      <item>DOMException</item>
+      <item>DOMHighResTimeStamp</item>
+      <item>DOMImplementation</item>
+      <item>DOMString</item>
+      <item>DOMStringList</item>
+      <item>DOMStringMap</item>
+      <item>DOMTimeStamp</item>
+      <item>DOMTokenList</item>
+      <item>DataTransfer</item>
+      <item>DataTransferItem</item>
+      <item>DataTransferItemList</item>
+      <item>DedicatedWorkerGlobalScope</item>
+      <item>DelayNode</item>
+      <item>DeviceProximityEvent</item>
+      <item>DirectoryEntry</item>
+      <item>DirectoryEntrySync</item>
+      <item>DirectoryReader</item>
+      <item>DirectoryReaderSync</item>
+      <item>Document</item>
+      <item>DocumentFragment</item>
+      <item>DocumentTouch</item>
+      <item>DocumentType</item>
+      <item>DragEvent</item>
+      <item>DynamicsCompressorNode</item>
+      <item>Element</item>
+      <item>Entry</item>
+      <item>EntrySync</item>
+      <item>ErrorEvent</item>
+      <item>Event</item>
+      <item>EventListener</item>
+      <item>EventSource</item>
+      <item>EventTarget</item>
+      <item>FederatedCredential</item>
+      <item>FetchEvent</item>
+      <item>File</item>
+      <item>FileEntry</item>
+      <item>FileEntrySync</item>
+      <item>FileException</item>
+      <item>FileList</item>
+      <item>FileReader</item>
+      <item>FileReaderSync</item>
+      <item>FileSystem</item>
+      <item>FileSystemSync</item>
+      <item>FontFace</item>
+      <item>FormData</item>
+      <item>GainNode</item>
+      <item>Gamepad</item>
+      <item>GamepadButton</item>
+      <item>GamepadEvent</item>
+      <item>Geolocation</item>
+      <item>GlobalEventHandlers</item>
+      <item>HTMLAnchorElement</item>
+      <item>HTMLAreaElement</item>
+      <item>HTMLAudioElement</item>
+      <item>HTMLBRElement</item>
+      <item>HTMLBaseElement</item>
+      <item>HTMLBodyElement</item>
+      <item>HTMLButtonElement</item>
+      <item>HTMLCanvasElement</item>
+      <item>HTMLCollection</item>
+      <item>HTMLContentElement</item>
+      <item>HTMLDListElement</item>
+      <item>HTMLDataElement</item>
+      <item>HTMLDataListElement</item>
+      <item>HTMLDialogElement</item>
+      <item>HTMLDivElement</item>
+      <item>HTMLDocument</item>
+      <item>HTMLElement</item>
+      <item>HTMLEmbedElement</item>
+      <item>HTMLFieldSetElement</item>
+      <item>HTMLFontElement</item>
+      <item>HTMLFormControlsCollection</item>
+      <item>HTMLFormElement</item>
+      <item>HTMLHRElement</item>
+      <item>HTMLHeadElement</item>
+      <item>HTMLHeadingElement</item>
+      <item>HTMLHtmlElement</item>
+      <item>HTMLIFrameElement</item>
+      <item>HTMLImageElement</item>
+      <item>HTMLInputElement</item>
+      <item>HTMLKeygenElement</item>
+      <item>HTMLLIElement</item>
+      <item>HTMLLabelElement</item>
+      <item>HTMLLegendElement</item>
+      <item>HTMLLinkElement</item>
+      <item>HTMLMapElement</item>
+      <item>HTMLMediaElement</item>
+      <item>HTMLMetaElement</item>
+      <item>HTMLMeterElement</item>
+      <item>HTMLModElement</item>
+      <item>HTMLOListElement</item>
+      <item>HTMLObjectElement</item>
+      <item>HTMLOptGroupElement</item>
+      <item>HTMLOptionElement</item>
+      <item>HTMLOptionsCollection</item>
+      <item>HTMLOutputElement</item>
+      <item>HTMLParagraphElement</item>
+      <item>HTMLParamElement</item>
+      <item>HTMLPreElement</item>
+      <item>HTMLProgressElement</item>
+      <item>HTMLQuoteElement</item>
+      <item>HTMLScriptElement</item>
+      <item>HTMLSelectElement</item>
+      <item>HTMLShadowElement</item>
+      <item>HTMLSourceElement</item>
+      <item>HTMLSpanElement</item>
+      <item>HTMLStyleElement</item>
+      <item>HTMLTableCaptionElement</item>
+      <item>HTMLTableCellElement</item>
+      <item>HTMLTableColElement</item>
+      <item>HTMLTableDataCellElement</item>
+      <item>HTMLTableElement</item>
+      <item>HTMLTableHeaderCellElement</item>
+      <item>HTMLTableRowElement</item>
+      <item>HTMLTableSectionElement</item>
+      <item>HTMLTextAreaElement</item>
+      <item>HTMLTimeElement</item>
+      <item>HTMLTitleElement</item>
+      <item>HTMLTrackElement</item>
+      <item>HTMLUListElement</item>
+      <item>HTMLUnknownElement</item>
+      <item>HTMLVideoElement</item>
+      <item>HashChangeEvent</item>
+      <item>History</item>
+      <item>IDBCursor</item>
+      <item>IDBCursorWithValue</item>
+      <item>IDBDatabase</item>
+      <item>IDBEnvironment</item>
+      <item>IDBFactory</item>
+      <item>IDBIndex</item>
+      <item>IDBKeyRange</item>
+      <item>IDBMutableFile</item>
+      <item>IDBObjectStore</item>
+      <item>IDBOpenDBRequest</item>
+      <item>IDBRequest</item>
+      <item>IDBTransaction</item>
+      <item>IDBVersionChangeEvent</item>
+      <item>IIRFilterNode</item>
+      <item>IdentityManager</item>
+      <item>ImageBitmap</item>
+      <item>ImageBitmapFactories</item>
+      <item>ImageData</item>
+      <item>Index</item>
+      <item>InputDeviceCapabilities</item>
+      <item>InputEvent</item>
+      <item>InstallEvent</item>
+      <item>InstallTrigger</item>
+      <item>KeyboardEvent</item>
+      <item>LinkStyle</item>
+      <item>LocalFileSystem</item>
+      <item>LocalFileSystemSync</item>
+      <item>Location</item>
+      <item>MIDIAccess</item>
+      <item>MIDIConnectionEvent</item>
+      <item>MIDIInput</item>
+      <item>MIDIInputMap</item>
+      <item>MIDIOutputMap</item>
+      <item>MediaElementAudioSourceNode</item>
+      <item>MediaError</item>
+      <item>MediaKeyMessageEvent</item>
+      <item>MediaKeySession</item>
+      <item>MediaKeyStatusMap</item>
+      <item>MediaKeySystemAccess</item>
+      <item>MediaKeySystemConfiguration</item>
+      <item>MediaKeys</item>
+      <item>MediaRecorder</item>
+      <item>MediaStream</item>
+      <item>MediaStreamAudioDestinationNode</item>
+      <item>MediaStreamAudioSourceNode</item>
+      <item>MessageChannel</item>
+      <item>MessageEvent</item>
+      <item>MessagePort</item>
+      <item>MouseEvent</item>
+      <item>MutationObserver</item>
+      <item>MutationRecord</item>
+      <item>NamedNodeMap</item>
+      <item>Navigator</item>
+      <item>NavigatorConcurrentHardware</item>
+      <item>NavigatorGeolocation</item>
+      <item>NavigatorID</item>
+      <item>NavigatorLanguage</item>
+      <item>NavigatorOnLine</item>
+      <item>Node</item>
+      <item>NodeFilter</item>
+      <item>NodeIterator</item>
+      <item>NodeList</item>
+      <item>NonDocumentTypeChildNode</item>
+      <item>Notification</item>
+      <item>OfflineAudioCompletionEvent</item>
+      <item>OfflineAudioContext</item>
+      <item>OscillatorNode</item>
+      <item>PageTransitionEvent</item>
+      <item>PannerNode</item>
+      <item>ParentNode</item>
+      <item>PasswordCredential</item>
+      <item>Path2D</item>
+      <item>PaymentAddress</item>
+      <item>PaymentRequest</item>
+      <item>PaymentResponse</item>
+      <item>Performance</item>
+      <item>PerformanceEntry</item>
+      <item>PerformanceFrameTiming</item>
+      <item>PerformanceMark</item>
+      <item>PerformanceMeasure</item>
+      <item>PerformanceNavigation</item>
+      <item>PerformanceNavigationTiming</item>
+      <item>PerformanceObserver</item>
+      <item>PerformanceObserverEntryList</item>
+      <item>PerformanceResourceTiming</item>
+      <item>PerformanceTiming</item>
+      <item>PeriodicSyncEvent</item>
+      <item>PeriodicWave</item>
+      <item>Plugin</item>
+      <item>Point</item>
+      <item>PointerEvent</item>
+      <item>PopStateEvent</item>
+      <item>PortCollection</item>
+      <item>Position</item>
+      <item>PositionError</item>
+      <item>PositionOptions</item>
+      <item>PresentationConnectionClosedEvent</item>
+      <item>PresentationConnectionList</item>
+      <item>PresentationReceiver</item>
+      <item>ProcessingInstruction</item>
+      <item>ProgressEvent</item>
+      <item>PromiseRejectionEvent</item>
+      <item>PushEvent</item>
+      <item>PushRegistrationManager</item>
+      <item>RTCCertificate</item>
+      <item>RTCConfiguration</item>
+      <item>RTCPeerConnection</item>
+      <item>RTCSessionDescriptionCallback</item>
+      <item>RTCStatsReport</item>
+      <item>RadioNodeList</item>
+      <item>RandomSource</item>
+      <item>Range</item>
+      <item>ReadableByteStream</item>
+      <item>RenderingContext</item>
+      <item>SVGAElement</item>
+      <item>SVGAngle</item>
+      <item>SVGAnimateColorElement</item>
+      <item>SVGAnimateElement</item>
+      <item>SVGAnimateMotionElement</item>
+      <item>SVGAnimateTransformElement</item>
+      <item>SVGAnimatedAngle</item>
+      <item>SVGAnimatedBoolean</item>
+      <item>SVGAnimatedEnumeration</item>
+      <item>SVGAnimatedInteger</item>
+      <item>SVGAnimatedLength</item>
+      <item>SVGAnimatedLengthList</item>
+      <item>SVGAnimatedNumber</item>
+      <item>SVGAnimatedNumberList</item>
+      <item>SVGAnimatedPoints</item>
+      <item>SVGAnimatedPreserveAspectRatio</item>
+      <item>SVGAnimatedRect</item>
+      <item>SVGAnimatedString</item>
+      <item>SVGAnimatedTransformList</item>
+      <item>SVGAnimationElement</item>
+      <item>SVGCircleElement</item>
+      <item>SVGClipPathElement</item>
+      <item>SVGCursorElement</item>
+      <item>SVGDefsElement</item>
+      <item>SVGDescElement</item>
+      <item>SVGElement</item>
+      <item>SVGEllipseElement</item>
+      <item>SVGEvent</item>
+      <item>SVGFilterElement</item>
+      <item>SVGFontElement</item>
+      <item>SVGFontFaceElement</item>
+      <item>SVGFontFaceFormatElement</item>
+      <item>SVGFontFaceNameElement</item>
+      <item>SVGFontFaceSrcElement</item>
+      <item>SVGFontFaceUriElement</item>
+      <item>SVGForeignObjectElement</item>
+      <item>SVGGElement</item>
+      <item>SVGGlyphElement</item>
+      <item>SVGGradientElement</item>
+      <item>SVGHKernElement</item>
+      <item>SVGImageElement</item>
+      <item>SVGLength</item>
+      <item>SVGLengthList</item>
+      <item>SVGLineElement</item>
+      <item>SVGLinearGradientElement</item>
+      <item>SVGMPathElement</item>
+      <item>SVGMaskElement</item>
+      <item>SVGMatrix</item>
+      <item>SVGMissingGlyphElement</item>
+      <item>SVGNumber</item>
+      <item>SVGNumberList</item>
+      <item>SVGPathElement</item>
+      <item>SVGPatternElement</item>
+      <item>SVGPoint</item>
+      <item>SVGPolygonElement</item>
+      <item>SVGPolylineElement</item>
+      <item>SVGPreserveAspectRatio</item>
+      <item>SVGRadialGradientElement</item>
+      <item>SVGRect</item>
+      <item>SVGRectElement</item>
+      <item>SVGSVGElement</item>
+      <item>SVGScriptElement</item>
+      <item>SVGSetElement</item>
+      <item>SVGStopElement</item>
+      <item>SVGStringList</item>
+      <item>SVGStylable</item>
+      <item>SVGStyleElement</item>
+      <item>SVGSwitchElement</item>
+      <item>SVGSymbolElement</item>
+      <item>SVGTRefElement</item>
+      <item>SVGTSpanElement</item>
+      <item>SVGTests</item>
+      <item>SVGTextElement</item>
+      <item>SVGTextPositioningElement</item>
+      <item>SVGTitleElement</item>
+      <item>SVGTransform</item>
+      <item>SVGTransformList</item>
+      <item>SVGTransformable</item>
+      <item>SVGUseElement</item>
+      <item>SVGVKernElement</item>
+      <item>SVGViewElement</item>
+      <item>ServiceWorker</item>
+      <item>ServiceWorkerContainer</item>
+      <item>ServiceWorkerGlobalScope</item>
+      <item>ServiceWorkerRegistration</item>
+      <item>ServiceWorkerState</item>
+      <item>ShadowRoot</item>
+      <item>SharedWorker</item>
+      <item>SharedWorkerGlobalScope</item>
+      <item>SourceBufferList</item>
+      <item>StereoPannerNode</item>
+      <item>Storage</item>
+      <item>StorageEvent</item>
+      <item>StyleSheet</item>
+      <item>StyleSheetList</item>
+      <item>SubtleCrypto</item>
+      <item>SyncEvent</item>
+      <item>Text</item>
+      <item>TextMetrics</item>
+      <item>TimeEvent</item>
+      <item>TimeRanges</item>
+      <item>Touch</item>
+      <item>TouchEvent</item>
+      <item>TouchList</item>
+      <item>Transferable</item>
+      <item>TreeWalker</item>
+      <item>UIEvent</item>
+      <item>USVString</item>
+      <item>VRDisplayCapabilities</item>
+      <item>ValidityState</item>
+      <item>WaveShaperNode</item>
+      <item>WebGL</item>
+      <item>WebGLActiveInfo</item>
+      <item>WebGLBuffer</item>
+      <item>WebGLContextEvent</item>
+      <item>WebGLFramebuffer</item>
+      <item>WebGLProgram</item>
+      <item>WebGLRenderbuffer</item>
+      <item>WebGLRenderingContext</item>
+      <item>WebGLShader</item>
+      <item>WebGLShaderPrecisionFormat</item>
+      <item>WebGLTexture</item>
+      <item>WebGLTimerQueryEXT</item>
+      <item>WebGLTransformFeedback</item>
+      <item>WebGLUniformLocation</item>
+      <item>WebGLVertexArrayObject</item>
+      <item>WebGLVertexArrayObjectOES</item>
+      <item>WebSocket</item>
+      <item>WebSockets</item>
+      <item>WebVTT</item>
+      <item>WheelEvent</item>
+      <item>Window</item>
+      <item>WindowBase64</item>
+      <item>WindowEventHandlers</item>
+      <item>WindowTimers</item>
+      <item>Worker</item>
+      <item>WorkerGlobalScope</item>
+      <item>WorkerLocation</item>
+      <item>WorkerNavigator</item>
+      <item>XMLHttpRequest</item>
+      <item>XMLHttpRequestEventTarget</item>
+      <item>XMLSerializer</item>
+      <item>XPathExpression</item>
+      <item>XPathResult</item>
+      <item>XSLTProcessor</item>
+    </list>
+    <!-- Node.js Classes -->
+    <list name="class_node">
+      <item>Buffer</item>
+      <item>EventEmitter</item>
+      <item>Server</item>
+      <item>Pipe</item>
+      <item>Socket</item>
+      <item>REPLServer</item>
+      <item>ReadStream</item>
+      <item>WriteStream</item>
+      <item>Stream</item>
+      <item>Inflate</item>
+      <item>Deflate</item>
+      <item>InflateRaw</item>
+      <item>DeflateRaw</item>
+      <item>GZip</item>
+      <item>GUnzip</item>
+      <item>Unzip</item>
+      <item>Zip</item>
+    </list>
+
+    <!-- General Properties of Classes -->
+    <list name="variable_property">
+      <item>constructor</item>
+      <item>length</item>
+      <item>prototype</item>
+      <item>__proto__</item>
+    </list>
+    <!-- General Built-in Functions -->
+    <list name="functions">
+      <item>clearInterval</item>
+      <item>clearTimeout</item>
+      <item>decodeURI</item>
+      <item>decodeURIComponent</item>
+      <item>encodeURI</item>
+      <item>encodeURIComponent</item>
+      <item>escape</item>
+      <item>eval</item>
+      <item>isFinite</item>
+      <item>isNaN</item>
+      <item>parseFloat</item>
+      <item>parseInt</item>
+      <item>require</item>
+      <item>setTimeout</item>
+      <item>setInterval</item>
+      <item>super</item>
+      <item>unescape</item>
+      <item>uneval</item>
+    </list>
+
+    <!-- Functions of "console" -->
+    <list name="console_functions">
+      <item>assert</item>
+      <item>clear</item>
+      <item>count</item>
+      <item>debug</item>
+      <item>dir</item>
+      <item>error</item>
+      <item>group</item>
+      <item>groupCollapsed</item>
+      <item>groupEnd</item>
+      <item>info</item>
+      <item>log</item>
+      <item>profile</item>
+      <item>profileEnd</item>
+      <item>table</item>
+      <item>time</item>
+      <item>timeEnd</item>
+      <item>timeStamp</item>
+      <item>trace</item>
+      <item>warn</item>
+    </list>
+    <!-- Properties of "process" -->
+    <list name="process_property">
+      <item>arch</item>
+      <item>argv</item>
+      <item>config</item>
+      <item>connected</item>
+      <item>env</item>
+      <item>execArgv</item>
+      <item>execPath</item>
+      <item>exitCode</item>
+      <item>mainModule</item>
+      <item>pid</item>
+      <item>platform</item>
+      <item>release</item>
+      <item>stderr</item>
+      <item>stdin</item>
+      <item>stdout</item>
+      <item>title</item>
+      <item>version</item>
+      <item>versions</item>
+    </list>
+    <!-- Functions of "process" -->
+    <list name="process_functions">
+      <item>abort</item>
+      <item>chdir</item>
+      <item>cwd</item>
+      <item>disconnect</item>
+      <item>exit</item>
+      <item>setegid</item>
+      <item>seteuid</item>
+      <item>getegid</item>
+      <item>geteuid</item>
+      <item>setgid</item>
+      <item>setuid</item>
+      <item>getgid</item>
+      <item>getuid</item>
+      <item>send</item>
+      <item>setgroups</item>
+      <item>getgroups</item>
+      <item>initgroups</item>
+      <item>kill</item>
+      <item>memoryUsage</item>
+      <item>nextTick</item>
+      <item>umask</item>
+      <item>uptime</item>
+      <item>hrtime</item>
+    </list>
+
+    <!-- Constants of Number Class -->
+    <list name="number_constant">
+      <item>EPSILON</item>
+      <item>MAX_SAFE_INTEGER</item>
+      <item>MAX_VALUE</item>
+      <item>MIN_SAFE_INTEGER</item>
+      <item>MIN_VALUE</item>
+      <item>NEGATIVE_INFINITY</item>
+      <item>POSITIVE_INFINITY</item>
+    </list>
+    <!-- Constants of Math Class-->
+    <list name="math_constant">
+      <item>E</item>
+      <item>LN10</item>
+      <item>LN2</item>
+      <item>LOG10E</item>
+      <item>LOG2E</item>
+      <item>PI</item>
+      <item>SQRT1_2</item>
+      <item>SQRT2</item>
+    </list>
+    <!-- Methods of Math Class -->
+    <list name="math_functions">
+      <item>abs</item>
+      <item>acos</item>
+      <item>acosh</item>
+      <item>asin</item>
+      <item>asinh</item>
+      <item>atan</item>
+      <item>atan2</item>
+      <item>atanh</item>
+      <item>cbrt</item>
+      <item>ceil</item>
+      <item>clz32</item>
+      <item>cos</item>
+      <item>cosh</item>
+      <item>exp</item>
+      <item>expm1</item>
+      <item>floor</item>
+      <item>fround</item>
+      <item>hypot</item>
+      <item>imul</item>
+      <item>log</item>
+      <item>log10</item>
+      <item>log1p</item>
+      <item>log2</item>
+      <item>max</item>
+      <item>min</item>
+      <item>pow</item>
+      <item>random</item>
+      <item>round</item>
+      <item>sign</item>
+      <item>sin</item>
+      <item>sinh</item>
+      <item>sqrt</item>
+      <item>tan</item>
+      <item>tanh</item>
+      <item>trunc</item>
+    </list>
+    <!-- Methods of JSON Class -->
+    <list name="json_functions">
+      <item>parse</item>
+      <item>stringify</item>
+    </list>
+    <!-- Methods of Promise Class -->
+    <list name="promise_functions">
+      <item>all</item>
+      <item>catch</item>
+      <item>finally</item>
+      <item>race</item>
+      <item>reject</item>
+      <item>resolve</item>
+      <item>then</item>
+    </list>
+
+    <!-- Node.js Variables -->
+    <list name="node_variable">
+      <item>global</item>
+      <item>GLOBAL</item>
+      <item>root</item>
+      <item>__dirname</item>
+      <item>__filename</item>
+    </list>
+    <!-- DOM Variables -->
+    <list name="dom_variable">
+      <item>document</item>
+      <item>event</item>
+      <item>navigator</item>
+      <item>performance</item>
+      <item>screen</item>
+      <item>window</item>
+    </list>
+    <!-- DOM Constants -->
+    <list name="dom_constant">
+      <item>ATTRIBUTE_NODE</item>
+      <item>CDATA_SECTION_NODE</item>
+      <item>COMMENT_NODE</item>
+      <item>DOCUMENT_FRAGMENT_NODE</item>
+      <item>DOCUMENT_NODE</item>
+      <item>DOCUMENT_TYPE_NODE</item>
+      <item>DOMSTRING_SIZE_ERR</item>
+      <item>ELEMENT_NODE</item>
+      <item>ENTITY_NODE</item>
+      <item>ENTITY_REFERENCE_NODE</item>
+      <item>HIERARCHY_REQUEST_ERR</item>
+      <item>INDEX_SIZE_ERR</item>
+      <item>INUSE_ATTRIBUTE_ERR</item>
+      <item>INVALID_CHARACTER_ERR</item>
+      <item>NO_DATA_ALLOWED_ERR</item>
+      <item>NO_MODIFICATION_ALLOWED_ERR</item>
+      <item>NOT_FOUND_ERR</item>
+      <item>NOT_SUPPORTED_ERR</item>
+      <item>NOTATION_NODE</item>
+      <item>PROCESSING_INSTRUCTION_NODE</item>
+      <item>TEXT_NODE</item>
+      <item>WRONG_DOCUMENT_ERR</item>
+    </list>
+
+    <!-- For Autocomplete Keywords -->
+    <!-- Properties of DOM Classes -->
+    <list name="dom_property">
+      <item>_content</item>
+      <item>x</item>
+      <item>y</item>
+      <item>z</item>
+      <item>abbr</item>
+      <item>above</item>
+      <item>accept</item>
+      <item>acceptCharset</item>
+      <item>accessKey</item>
+      <item>action</item>
+      <item>align</item>
+      <item>aLink</item>
+      <item>vLink</item>
+      <item>aLinkcolor</item>
+      <item>vLinkcolor</item>
+      <item>all</item>
+      <item>alt</item>
+      <item>anchors</item>
+      <item>appCodeName</item>
+      <item>appCore</item>
+      <item>applets</item>
+      <item>appMinorVersion</item>
+      <item>appName</item>
+      <item>appVersion</item>
+      <item>archive</item>
+      <item>areas</item>
+      <item>arguments</item>
+      <item>attributes</item>
+      <item>availHeight</item>
+      <item>availLeft</item>
+      <item>availTop</item>
+      <item>availWidth</item>
+      <item>axis</item>
+      <item>background</item>
+      <item>backgroundColor</item>
+      <item>backgroundImage</item>
+      <item>below</item>
+      <item>bgColor</item>
+      <item>body</item>
+      <item>border</item>
+      <item>borderBottomWidth</item>
+      <item>borderColor</item>
+      <item>borderLeftWidth</item>
+      <item>borderRightWidth</item>
+      <item>borderStyle</item>
+      <item>borderTopWidth</item>
+      <item>borderWidth</item>
+      <item>bottom</item>
+      <item>bufferDepth</item>
+      <item>callee</item>
+      <item>caller</item>
+      <item>caption</item>
+      <item>cellPadding</item>
+      <item>cells</item>
+      <item>cellSpacing</item>
+      <item>ch</item>
+      <item>characterSet</item>
+      <item>charset</item>
+      <item>checked</item>
+      <item>childNodes</item>
+      <item>chOff</item>
+      <item>cite</item>
+      <item>classes</item>
+      <item>className</item>
+      <item>clear</item>
+      <item>clientInformation</item>
+      <item>clip</item>
+      <item>clipBoardData</item>
+      <item>closed</item>
+      <item>code</item>
+      <item>codeBase</item>
+      <item>codeType</item>
+      <item>color</item>
+      <item>colorDepth</item>
+      <item>cols</item>
+      <item>colSpan</item>
+      <item>compact</item>
+      <item>complete</item>
+      <item>components</item>
+      <item>content</item>
+      <item>controllers</item>
+      <item>cookie</item>
+      <item>cookieEnabled</item>
+      <item>cords</item>
+      <item>cpuClass</item>
+      <item>crypto</item>
+      <item>current</item>
+      <item>data</item>
+      <item>dateTime</item>
+      <item>declare</item>
+      <item>defaultCharset</item>
+      <item>defaultChecked</item>
+      <item>defaultSelected</item>
+      <item>defaultStatus</item>
+      <item>defaultValue</item>
+      <item>defaultView</item>
+      <item>defer</item>
+      <item>description</item>
+      <item>dialogArguments</item>
+      <item>dialogHeight</item>
+      <item>dialogLeft</item>
+      <item>dialogTop</item>
+      <item>dialogWidth</item>
+      <item>dir</item>
+      <item>directories</item>
+      <item>disabled</item>
+      <item>display</item>
+      <item>docmain</item>
+      <item>doctype</item>
+      <item>documentElement</item>
+      <item>elements</item>
+      <item>embeds</item>
+      <item>enabledPlugin</item>
+      <item>encoding</item>
+      <item>enctype</item>
+      <item>entities</item>
+      <item>event</item>
+      <item>expando</item>
+      <item>external</item>
+      <item>face</item>
+      <item>fgColor</item>
+      <item>filename</item>
+      <item>firstChild</item>
+      <item>fontFamily</item>
+      <item>fontSize</item>
+      <item>fontWeight</item>
+      <item>form</item>
+      <item>formName</item>
+      <item>forms</item>
+      <item>frame</item>
+      <item>frameBorder</item>
+      <item>frameElement</item>
+      <item>frames</item>
+      <item>hasFocus</item>
+      <item>hash</item>
+      <item>headers</item>
+      <item>height</item>
+      <item>history</item>
+      <item>host</item>
+      <item>hostname</item>
+      <item>href</item>
+      <item>hreflang</item>
+      <item>hspace</item>
+      <item>htmlFor</item>
+      <item>httpEquiv</item>
+      <item>id</item>
+      <item>ids</item>
+      <item>ignoreCase</item>
+      <item>images</item>
+      <item>implementation</item>
+      <item>index</item>
+      <item>innerHeight</item>
+      <item>innerWidth</item>
+      <item>input</item>
+      <item>isMap</item>
+      <item>label</item>
+      <item>lang</item>
+      <item>language</item>
+      <item>lastChild</item>
+      <item>lastIndex</item>
+      <item>lastMatch</item>
+      <item>lastModified</item>
+      <item>lastParen</item>
+      <item>layers</item>
+      <item>layerX</item>
+      <item>layerY</item>
+      <item>left</item>
+      <item>leftContext</item>
+      <item>lineHeight</item>
+      <item>link</item>
+      <item>linkColor</item>
+      <item>links</item>
+      <item>listStyleType</item>
+      <item>localName</item>
+      <item>location</item>
+      <item>locationbar</item>
+      <item>longDesc</item>
+      <item>lowsrc</item>
+      <item>lowSrc</item>
+      <item>marginBottom</item>
+      <item>marginHeight</item>
+      <item>marginLeft</item>
+      <item>marginRight</item>
+      <item>marginTop</item>
+      <item>marginWidth</item>
+      <item>maxLength</item>
+      <item>media</item>
+      <item>menubar</item>
+      <item>method</item>
+      <item>mimeTypes</item>
+      <item>multiline</item>
+      <item>multiple</item>
+      <item>name</item>
+      <item>nameProp</item>
+      <item>namespaces</item>
+      <item>namespaceURI</item>
+      <item>next</item>
+      <item>nextSibling</item>
+      <item>nodeName</item>
+      <item>nodeType</item>
+      <item>nodeValue</item>
+      <item>noHref</item>
+      <item>noResize</item>
+      <item>noShade</item>
+      <item>notationName</item>
+      <item>notations</item>
+      <item>noWrap</item>
+      <item>object</item>
+      <item>offscreenBuffering</item>
+      <item>onLine</item>
+      <item>onreadystatechange</item>
+      <item>opener</item>
+      <item>opsProfile</item>
+      <item>options</item>
+      <item>oscpu</item>
+      <item>outerHeight</item>
+      <item>outerWidth</item>
+      <item>ownerDocument</item>
+      <item>paddingBottom</item>
+      <item>paddingLeft</item>
+      <item>paddingRight</item>
+      <item>paddingTop</item>
+      <item>pageX</item>
+      <item>pageY</item>
+      <item>pageXOffset</item>
+      <item>pageYOffset</item>
+      <item>parent</item>
+      <item>parentLayer</item>
+      <item>parentNode</item>
+      <item>parentWindow</item>
+      <item>pathname</item>
+      <item>personalbar</item>
+      <item>pixelDepth</item>
+      <item>pkcs11</item>
+      <item>platform</item>
+      <item>plugins</item>
+      <item>port</item>
+      <item>prefix</item>
+      <item>previous</item>
+      <item>previousDibling</item>
+      <item>product</item>
+      <item>productSub</item>
+      <item>profile</item>
+      <item>profileend</item>
+      <item>prompt</item>
+      <item>prompter</item>
+      <item>protocol</item>
+      <item>publicId</item>
+      <item>readOnly</item>
+      <item>readyState</item>
+      <item>referrer</item>
+      <item>rel</item>
+      <item>responseText</item>
+      <item>responseXML</item>
+      <item>rev</item>
+      <item>right</item>
+      <item>rightContext</item>
+      <item>rowIndex</item>
+      <item>rows</item>
+      <item>rowSpan</item>
+      <item>rules</item>
+      <item>scheme</item>
+      <item>scope</item>
+      <item>screenX</item>
+      <item>screenY</item>
+      <item>screenLeft</item>
+      <item>screenTop</item>
+      <item>scripts</item>
+      <item>scrollbars</item>
+      <item>scrolling</item>
+      <item>sectionRowIndex</item>
+      <item>security</item>
+      <item>securityPolicy</item>
+      <item>selected</item>
+      <item>selectedIndex</item>
+      <item>selection</item>
+      <item>self</item>
+      <item>shape</item>
+      <item>siblingAbove</item>
+      <item>siblingBelow</item>
+      <item>size</item>
+      <item>source</item>
+      <item>specified</item>
+      <item>standby</item>
+      <item>start</item>
+      <item>status</item>
+      <item>statusbar</item>
+      <item>statusText</item>
+      <item>style</item>
+      <item>styleSheets</item>
+      <item>suffixes</item>
+      <item>summary</item>
+      <item>systemId</item>
+      <item>systemLanguage</item>
+      <item>tagName</item>
+      <item>tags</item>
+      <item>target</item>
+      <item>tBodies</item>
+      <item>text</item>
+      <item>textAlign</item>
+      <item>textDecoration</item>
+      <item>textIndent</item>
+      <item>textTransform</item>
+      <item>tFoot</item>
+      <item>tHead</item>
+      <item>title</item>
+      <item>toolbar</item>
+      <item>top</item>
+      <item>type</item>
+      <item>undefined</item>
+      <item>uniqueID</item>
+      <item>updateInterval</item>
+      <item>URL</item>
+      <item>URLUnencoded</item>
+      <item>useMap</item>
+      <item>userAgent</item>
+      <item>userLanguage</item>
+      <item>userProfile</item>
+      <item>vAlign</item>
+      <item>value</item>
+      <item>valueType</item>
+      <item>vendor</item>
+      <item>vendorSub</item>
+      <item>version</item>
+      <item>visibility</item>
+      <item>vspace</item>
+      <item>whiteSpace</item>
+      <item>width</item>
+      <item>XMLDocument</item>
+      <item>XSLDocument</item>
+      <item>zIndex</item>
+    </list>
+    <!-- Methods of DOM Classes -->
+    <list name="dom_functions">
+      <item>acceptNode</item>
+      <item>add</item>
+      <item>addEventListener</item>
+      <item>addTextTrack</item>
+      <item>adoptNode</item>
+      <item>after</item>
+      <item>animate</item>
+      <item>append</item>
+      <item>appendChild</item>
+      <item>appendData</item>
+      <item>before</item>
+      <item>blur</item>
+      <item>canPlayType</item>
+      <item>captureStream</item>
+      <item>caretPositionFromPoint</item>
+      <item>caretRangeFromPoint</item>
+      <item>checkValidity</item>
+      <item>clear</item>
+      <item>click</item>
+      <item>cloneContents</item>
+      <item>cloneNode</item>
+      <item>cloneRange</item>
+      <item>close</item>
+      <item>closest</item>
+      <item>collapse</item>
+      <item>compareBoundaryPoints</item>
+      <item>compareDocumentPosition</item>
+      <item>comparePoint</item>
+      <item>contains</item>
+      <item>convertPointFromNode</item>
+      <item>convertQuadFromNode</item>
+      <item>convertRectFromNode</item>
+      <item>createAttribute</item>
+      <item>createAttributeNS</item>
+      <item>createCaption</item>
+      <item>createCDATASection</item>
+      <item>createComment</item>
+      <item>createContextualFragment</item>
+      <item>createDocument</item>
+      <item>createDocumentFragment</item>
+      <item>createDocumentType</item>
+      <item>createElement</item>
+      <item>createElementNS</item>
+      <item>createEntityReference</item>
+      <item>createEvent</item>
+      <item>createExpression</item>
+      <item>createHTMLDocument</item>
+      <item>createNodeIterator</item>
+      <item>createNSResolver</item>
+      <item>createProcessingInstruction</item>
+      <item>createRange</item>
+      <item>createShadowRoot</item>
+      <item>createTBody</item>
+      <item>createTextNode</item>
+      <item>createTFoot</item>
+      <item>createTHead</item>
+      <item>createTreeWalker</item>
+      <item>delete</item>
+      <item>deleteCaption</item>
+      <item>deleteCell</item>
+      <item>deleteContents</item>
+      <item>deleteData</item>
+      <item>deleteRow</item>
+      <item>deleteTFoot</item>
+      <item>deleteTHead</item>
+      <item>detach</item>
+      <item>disconnect</item>
+      <item>dispatchEvent</item>
+      <item>elementFromPoint</item>
+      <item>elementsFromPoint</item>
+      <item>enableStyleSheetsForSet</item>
+      <item>entries</item>
+      <item>evaluate</item>
+      <item>execCommand</item>
+      <item>exitFullscreen</item>
+      <item>exitPointerLock</item>
+      <item>expand</item>
+      <item>extractContents</item>
+      <item>fastSeek</item>
+      <item>firstChild</item>
+      <item>focus</item>
+      <item>forEach</item>
+      <item>get</item>
+      <item>getAll</item>
+      <item>getAnimations</item>
+      <item>getAttribute</item>
+      <item>getAttributeNames</item>
+      <item>getAttributeNode</item>
+      <item>getAttributeNodeNS</item>
+      <item>getAttributeNS</item>
+      <item>getBoundingClientRect</item>
+      <item>getBoxQuads</item>
+      <item>getClientRects</item>
+      <item>getContext</item>
+      <item>getDestinationInsertionPoints</item>
+      <item>getElementById</item>
+      <item>getElementsByClassName</item>
+      <item>getElementsByName</item>
+      <item>getElementsByTagName</item>
+      <item>getElementsByTagNameNS</item>
+      <item>getItem</item>
+      <item>getNamedItem</item>
+      <item>getSelection</item>
+      <item>getStartDate</item>
+      <item>getVideoPlaybackQuality</item>
+      <item>has</item>
+      <item>hasAttribute</item>
+      <item>hasAttributeNS</item>
+      <item>hasAttributes</item>
+      <item>hasChildNodes</item>
+      <item>hasFeature</item>
+      <item>hasFocus</item>
+      <item>importNode</item>
+      <item>initEvent</item>
+      <item>insertAdjacentElement</item>
+      <item>insertAdjacentHTML</item>
+      <item>insertAdjacentText</item>
+      <item>insertBefore</item>
+      <item>insertCell</item>
+      <item>insertData</item>
+      <item>insertNode</item>
+      <item>insertRow</item>
+      <item>intersectsNode</item>
+      <item>isDefaultNamespace</item>
+      <item>isEqualNode</item>
+      <item>isPointInRange</item>
+      <item>isSameNode</item>
+      <item>item</item>
+      <item>key</item>
+      <item>keys</item>
+      <item>lastChild</item>
+      <item>load</item>
+      <item>lookupNamespaceURI</item>
+      <item>lookupPrefix</item>
+      <item>matches</item>
+      <item>move</item>
+      <item>moveAttribute</item>
+      <item>moveAttributeNode</item>
+      <item>moveChild</item>
+      <item>moveNamedItem</item>
+      <item>namedItem</item>
+      <item>nextNode</item>
+      <item>nextSibling</item>
+      <item>normalize</item>
+      <item>observe</item>
+      <item>open</item>
+      <item>parentNode</item>
+      <item>pause</item>
+      <item>play</item>
+      <item>postMessage</item>
+      <item>prepend</item>
+      <item>preventDefault</item>
+      <item>previousNode</item>
+      <item>previousSibling</item>
+      <item>probablySupportsContext</item>
+      <item>queryCommandEnabled</item>
+      <item>queryCommandIndeterm</item>
+      <item>queryCommandState</item>
+      <item>queryCommandSupported</item>
+      <item>queryCommandValue</item>
+      <item>querySelector</item>
+      <item>querySelectorAll</item>
+      <item>registerContentHandler</item>
+      <item>registerElement</item>
+      <item>registerProtocolHandler</item>
+      <item>releaseCapture</item>
+      <item>releaseEvents</item>
+      <item>remove</item>
+      <item>removeAttribute</item>
+      <item>removeAttributeNode</item>
+      <item>removeAttributeNS</item>
+      <item>removeChild</item>
+      <item>removeEventListener</item>
+      <item>removeItem</item>
+      <item>replace</item>
+      <item>replaceChild</item>
+      <item>replaceData</item>
+      <item>replaceWith</item>
+      <item>reportValidity</item>
+      <item>requestFullscreen</item>
+      <item>requestPointerLock</item>
+      <item>reset</item>
+      <item>scroll</item>
+      <item>scrollBy</item>
+      <item>scrollIntoView</item>
+      <item>scrollTo</item>
+      <item>seekToNextFrame</item>
+      <item>select</item>
+      <item>selectNode</item>
+      <item>selectNodeContents</item>
+      <item>set</item>
+      <item>setAttribute</item>
+      <item>setAttributeNode</item>
+      <item>setAttributeNodeNS</item>
+      <item>setAttributeNS</item>
+      <item>setCapture</item>
+      <item>setCustomValidity</item>
+      <item>setEnd</item>
+      <item>setEndAfter</item>
+      <item>setEndBefore</item>
+      <item>setItem</item>
+      <item>setNamedItem</item>
+      <item>setRangeText</item>
+      <item>setSelectionRange</item>
+      <item>setSinkId</item>
+      <item>setStart</item>
+      <item>setStartAfter</item>
+      <item>setStartBefore</item>
+      <item>slice</item>
+      <item>splitText</item>
+      <item>stepDown</item>
+      <item>stepUp</item>
+      <item>stopImmediatePropagation</item>
+      <item>stopPropagation</item>
+      <item>submit</item>
+      <item>substringData</item>
+      <item>supports</item>
+      <item>surroundContents</item>
+      <item>takeRecords</item>
+      <item>terminate</item>
+      <item>toBlob</item>
+      <item>toDataURL</item>
+      <item>toggle</item>
+      <!--<item>toString</item>--> <!-- Duplicated: function_common -->
+      <item>values</item>
+      <item>write</item>
+      <item>writeln</item>
+    </list>
+    <!-- Event Handler -->
+    <list name="eventhandler_property">
+      <item>onRowsinserted</item>
+      <item>onRowsdelete</item>
+      <item>onRowenter</item>
+      <item>onRowexit</item>
+      <item>onResize</item>
+      <item>onResizestart</item>
+      <item>onResizeend</item>
+      <item>onReset</item>
+      <item>onReadystatechange</item>
+      <item>onMouseout</item>
+      <item>onMouseover</item>
+      <item>onMousedown</item>
+      <item>onMouseup</item>
+      <item>onMousemove</item>
+      <item>onBeforecut</item>
+      <item>onBeforedeactivate</item>
+      <item>onBeforeunload</item>
+      <item>onBeforeupdate</item>
+      <item>onBeforepaste</item>
+      <item>onBeforeprint</item>
+      <item>onBeforeeditfocus</item>
+      <item>onBeforeactivate</item>
+      <item>onBlur</item>
+      <item>onScrolltop</item>
+      <item>onSubmit</item>
+      <item>onSelect</item>
+      <item>onSelectstart</item>
+      <item>onSelectionchange</item>
+      <item>onHover</item>
+      <item>onHelp</item>
+      <item>onChange</item>
+      <item>onContextmenu</item>
+      <item>onControlselect</item>
+      <item>onCut</item>
+      <item>onCellchange</item>
+      <item>onClock</item>
+      <item>onClose</item>
+      <item>onDeactivate</item>
+      <item>onDatasetchanged</item>
+      <item>onDatasetcomplete</item>
+      <item>onDataavailable</item>
+      <item>onDrop</item>
+      <item>onDrag</item>
+      <item>onDragstart</item>
+      <item>onDragover</item>
+      <item>onDragdrop</item>
+      <item>onDragenter</item>
+      <item>onDragend</item>
+      <item>onDragleave</item>
+      <item>onDblclick</item>
+      <item>onUnload</item>
+      <item>onPaste</item>
+      <item>onPropertychange</item>
+      <item>onError</item>
+      <item>onErrorupdate</item>
+      <item>onKeydown</item>
+      <item>onKeyup</item>
+      <item>onKeypress</item>
+      <item>onFocus</item>
+      <item>onLoad</item>
+      <item>onActivate</item>
+      <item>onAfterupdate</item>
+      <item>onAfterprint</item>
+      <item>onAbort</item>
+    </list>
+    <!-- Others Methods of Classes -->
+    <list name="function_common">
+      <item>shift</item>
+      <item>showModelessDialog</item>
+      <item>showModalDialog</item>
+      <item>showHelp</item>
+      <item>scroll</item>
+      <item>scrollX</item>
+      <item>scrollByPages</item>
+      <item>scrollByLines</item>
+      <item>scrollY</item>
+      <item>scrollTo</item>
+      <item>stop</item>
+      <item>strike</item>
+      <item>sizeToContent</item>
+      <item>sidebar</item>
+      <item>signText</item>
+      <item>sort</item>
+      <item>sup</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>substring</item>
+      <item>splice</item>
+      <item>split</item>
+      <item>send</item>
+      <item>setMilliseconds</item>
+      <item>setSeconds</item>
+      <item>setMinutes</item>
+      <item>setHours</item>
+      <item>setMonth</item>
+      <item>setYear</item>
+      <item>setFullYear</item>
+      <item>setDate</item>
+      <item>setUTCMilliseconds</item>
+      <item>setUTCSeconds</item>
+      <item>setUTCMinutes</item>
+      <item>setUTCHours</item>
+      <item>setUTCMonth</item>
+      <item>setUTCFullYear</item>
+      <item>setUTCDate</item>
+      <item>setTime</item>
+      <item>setHotkeys</item>
+      <item>setCursor</item>
+      <item>setZOptions</item>
+      <item>setActive</item>
+      <item>setResizable</item>
+      <item>setRequestHeader</item>
+      <item>search</item>
+      <item>slice</item>
+      <item>savePreferences</item>
+      <item>small</item>
+      <item>home</item>
+      <item>handleEvent</item>
+      <item>navigate</item>
+      <item>char</item>
+      <item>charCodeAt</item>
+      <item>charAt</item>
+      <item>concat</item>
+      <item>contextual</item>
+      <item>confirm</item>
+      <item>compile</item>
+      <item>clear</item>
+      <item>captureEvents</item>
+      <item>call</item>
+      <item>createStyleSheet</item>
+      <item>createPopup</item>
+      <item>createEventObject</item>
+      <item>toGMTString</item>
+      <item>toUTCString</item>
+      <item>toString</item>
+      <item>toSource</item>
+      <item>toUpperCase</item>
+      <item>toLowerCase</item>
+      <item>toLocaleString</item>
+      <item>test</item>
+      <item>taint</item>
+      <item>taintEnabled</item>
+      <item>indexOf</item>
+      <item>italics</item>
+      <item>disableExternalCapture</item>
+      <item>dump</item>
+      <item>detachEvent</item>
+      <item>unshift</item>
+      <item>untaint</item>
+      <item>unwatch</item>
+      <item>updateCommands</item>
+      <item>join</item>
+      <item>javaEnabled</item>
+      <item>pop</item>
+      <item>push</item>
+      <item>plugins.refresh</item>
+      <item>paddings</item>
+      <item>parse</item>
+      <item>print</item>
+      <item>prompt</item>
+      <item>preference</item>
+      <item>enableExternalCapture</item>
+      <item>exec</item>
+      <item>execScript</item>
+      <item>valueOf</item>
+      <item>UTC</item>
+      <item>find</item>
+      <item>file</item>
+      <item>fileModifiedDate</item>
+      <item>fileSize</item>
+      <item>fileCreatedDate</item>
+      <item>fileUpdatedDate</item>
+      <item>fixed</item>
+      <item>fontsize</item>
+      <item>fontcolor</item>
+      <item>forward</item>
+      <item>fromCharCode</item>
+      <item>watch</item>
+      <item>link</item>
+      <item>load</item>
+      <item>lastIndexOf</item>
+      <item>anchor</item>
+      <item>attachEvent</item>
+      <item>atob</item>
+      <item>apply</item>
+      <item>alert</item>
+      <item>abort</item>
+      <item>routeEvents</item>
+      <item>resize</item>
+      <item>resizeBy</item>
+      <item>resizeTo</item>
+      <item>recalc</item>
+      <item>returnValue</item>
+      <item>replace</item>
+      <item>reverse</item>
+      <item>reload</item>
+      <item>releaseCapture</item>
+      <item>releaseEvents</item>
+      <item>go</item>
+      <item>getMilliseconds</item>
+      <item>getSeconds</item>
+      <item>getMinutes</item>
+      <item>getHours</item>
+      <item>getMonth</item>
+      <item>getDay</item>
+      <item>getYear</item>
+      <item>getFullYear</item>
+      <item>getTime</item>
+      <item>getDate</item>
+      <item>getTimezoneOffset</item>
+      <item>getUTCMilliseconds</item>
+      <item>getUTCSeconds</item>
+      <item>getUTCMinutes</item>
+      <item>getUTCHours</item>
+      <item>getUTCDay</item>
+      <item>getUTCMonth</item>
+      <item>getUTCFullYear</item>
+      <item>getUTCDate</item>
+      <item>getAttention</item>
+      <item>getSelection</item>
+      <item>getResponseHeader</item>
+      <item>getAllResponseHeaders</item>
+      <item>moveBy</item>
+      <item>moveBelow</item>
+      <item>moveTo</item>
+      <item>moveToAbsolute</item>
+      <item>moveAbove</item>
+      <item>mergeAttributes</item>
+      <item>match</item>
+      <item>margins</item>
+      <item>btoa</item>
+      <item>big</item>
+      <item>bold</item>
+      <item>borderWidths</item>
+      <item>blink</item>
+      <item>back</item>
+    </list>
+
+    <contexts>
+
+      <!-- Shebang: ("#!") Detect shebang and fallthrough to Normal -->
+      <!-- Based on the similar clause from prolog.xml.
+           This uses "lineEmptyContext" & "lineEndContext" to force the highlight only on the first line. -->
+      <context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+        <Detect2Chars column="0" char="#" char1="!" context="Shebang Line" attribute="Comment" />
+      </context>
+      <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal" />
+
+      <!-- Normal Syntax of JavaScript. -->
+      <!-- NOTE: These IncludeRules rules, except BuiltInClasses and FindBrackets are included in qml.xml -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces/>
+        <IncludeRules context="FindNumbers" />
+        <IncludeRules context="FindKeywords" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="BuiltInClasses" />
+        <IncludeRules context="FindObjectMembersAndFunctions" />
+        <IncludeRules context="FindBrackets" />
+        <IncludeRules context="JSBase" />
+      </context>
+
+      <!-- Base Syntax. Used by the TypeScript highlighter. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="JSBase">
+        <AnyChar context="NoRegExp" String="])" />
+        <!--DetectIdentifier-->
+        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
+        <RegExpr context="NoRegExp" String="&identifier;" />
+
+        <IncludeRules context="FindComments" />
+
+        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
+        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=/\*|//)" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
+
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+
+        <!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
+        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
+        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
+      </context>
+
+
+      <!-- Content Contexts -->
+
+      <!-- Avoid highlighting regular expressions. -->
+      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop" name="NoRegExp">
+        <Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars context="#pop" char="/" char1="*" lookAhead="true" />
+        <DetectChar attribute="Symbol" context="#pop" char="/" />
+        <DetectSpaces/>
+      </context>
+
+      <!-- USE ONLY ANFTER STRINGS: Highlight only valid regular expressions of a single line. -->
+      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop" name="RegExpAfterString">
+        <DetectSpaces/>
+        <Detect2Chars context="#pop#pop" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars context="#pop#pop" char="/" char1="*" lookAhead="true" />
+        <!-- Detect valid Regular expression in single line -->
+        <RegExpr attribute="Regular Expression" context="#pop#pop!(regex caret first check)" String="/(?=(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/(?:[gimsuy]+(?!\s*[\w$])|(?![/\*])|(?=/\*)))" />
+        <DetectChar attribute="Symbol" context="#pop#pop" char="/" />
+      </context>
+
+      <!-- Object, within { ... } -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindBrackets">
+        <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
+        <DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
+        <DetectChar attribute="Normal Text" context="NoRegExp" char="]" endRegion="List" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Object">
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Brace" />
+        <!-- Mostly required for define: in switch blocks -->
+        <keyword attribute="Keyword" String="keywords" />
+        <RegExpr attribute="ControlFlow" String="\bdefault(?=\s*:)" />
+
+        <RegExpr attribute="JSON" String="&identifier;(?=\s*:)" />
+        <!-- a ? b : c -->
+        <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\{\}]*&identifier;\s*\:)" />
+
+        <IncludeRules context="Normal" />
+      </context>
+      <!-- Highlight keywords before ":" in conditional expressions. -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="ConditionalExpression">
+        <DetectChar attribute="Symbol" context="#pop" char=":" />
+        <DetectChar attribute="Symbol" context="#stay" char="?" />
+        <AnyChar context="#pop" String="{}" lookAhead="true" />
+        <IncludeRules context="FindKeywords" />
+        <IncludeRules context="Normal" />
+      </context>
+
+      <!-- Keywords -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindKeywords">
+        <WordDetect attribute="Keyword" context="FunctionDeclaration" String="function" />
+        <keyword attribute="ControlFlow" String="controlflow" />
+        <keyword attribute="Keyword" String="keywords" />
+        <keyword attribute="Reserved" String="reserved" />
+        <keyword attribute="Keyword" context="NoRegExp" String="primitives" />
+        <keyword attribute="Module" String="module" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FunctionDeclaration" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Function Declaration" context="#pop" String="&identifier;(?=\s*\()" /> <!-- NoRegExp -->
+        <IncludeRules context="FindComments" />
+      </context>
+
+      <!-- Numbers -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindNumbers">
+        <Float attribute="Float" context="NoRegExp" />
+        <!-- Invalid Binary, Octal or Hex. IMPORTANT: Allow Bigint. -->
+        <RegExpr attribute="Error" context="NoRegExp" String="\b0(?:b[01]*[2-9]\d*|o[0-7]*[89]\d*|x[0-9a-f]*[g-mo-z][a-mo-z0-9]*)" insensitive="true" />
+        <HlCHex attribute="Hex" context="NoRegExp" />
+        <RegExpr attribute="Octal" context="NoRegExp" String="\b0[oO][0-7]+" />
+        <RegExpr attribute="Binary" context="NoRegExp" String="\b0[bB][01]+" />
+        <RegExpr attribute="Float" context="NoRegExp" String="\b\d+[eE][\+\-]?\d+" />
+        <Int attribute="Decimal" context="NoRegExp" />
+      </context>
+
+      <!-- Find Objects Member and Functions -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindObjectMembersAndFunctions">
+        <!-- The order of these rules is important: 1) Functions. 2) Constants. 3) Objects. -->
+        <RegExpr attribute="Function Name" context="Function" String="(&identifier;)(?=\s*\()" lookAhead="true" />
+        <IncludeRules context="BuiltInConstants" />
+        <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
+        <DetectChar attribute="Symbol" context="Object Member" char="." />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Function">
+        <keyword attribute="Function (Built-in)" context="#pop" String="functions" />
+        <StringDetect attribute="Function Name" context="#pop" String="%1" dynamic="true" />
+        <DetectChar context="#pop" char="(" lookAhead="true" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
+        <IncludeRules context="DefaultMemberObject" />
+        <!-- Common functions and properties, only for autocomplete keywords -->
+        <keyword attribute="Object Member" context="#pop!NoRegExp" String="dom_property" />
+        <keyword attribute="Function Name" context="#pop!NoRegExp" String="dom_functions" />
+        <keyword attribute="Object Member" context="#pop!NoRegExp" String="eventhandler_property" />
+        <keyword attribute="Function Name" context="#pop!NoRegExp" String="function_common" />
+      </context>
+      <!-- Used in common and built-in objects. -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="DefaultMemberObject">
+        <DetectChar attribute="Symbol" context="#stay" char="." />
+
+        <!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. -->
+        <!-- Function -->
+        <RegExpr attribute="Function Name" context="#pop" String="&identifier;(?=\s*\()" />
+        <!-- Generic constants and properties -->
+        <keyword attribute="Object Property (Built-in)" context="#pop!NoRegExp" String="variable_property" />
+        <keyword attribute="Constant" context="#pop!NoRegExp" String="dom_constant" />
+
+        <RegExpr attribute="Object Member" context="#stay" String="&identifier;(?=\s*\.)" />
+        <RegExpr attribute="Object Member" context="#pop!NoRegExp" String="&identifier;" />
+        <IncludeRules context="NoRegExp" />
+        <DetectSpaces />
+
+        <!-- Generic Functions -->
+        <keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
+      </context>
+
+      <!-- Strings -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+        <DetectChar attribute="Template" context="Template" char="`" />
+        <StringDetect attribute="Template" context="RawTemplate" String="String.raw`" />
+
+        <DetectChar attribute="String" context="String" char="&quot;" />
+        <DetectChar attribute="String" context="String SQ" char="'" />
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <IncludeRules context="Escape" />
+        <DetectChar attribute="String" context="RegExpAfterString" char="&quot;" />
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String SQ">
+        <IncludeRules context="Escape" />
+        <DetectChar attribute="String" context="RegExpAfterString" char="'" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Escape">
+        <LineContinue attribute="Escape" context="#stay" />
+        <!-- Hexadecimal, unicode & octal -->
+        <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="x" />
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="u" />
+        <DetectChar attribute="Escape" context="Character Escape" char="\" />
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="Character Escape">
+        <AnyChar attribute="Reserved Char. Escape" context="#pop" String="0bfnrtv" /> <!-- Reserved Char. Escape. Also: "'/ -->
+        <RegExpr attribute="Escape" context="#pop" String="." /> <!-- Literal Char. Escape -->
+      </context>
+
+      <!-- Template -->
+      <context attribute="Template" lineEndContext="#stay" name="Template">
+        <IncludeRules context="Escape" />
+        <Detect2Chars attribute="Substitution" context="Substitution" char="$" char1="{" />
+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />
+      </context>
+      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">
+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />
+      </context>
+      <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Substitution" char="}" context="#pop"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <!-- Comments -->
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />
+        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />
+
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" />
+
+      <!-- Regular Expressions -->
+      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
+        <RegExpr attribute="Regular Expression" context="#pop#pop" String="/\w*" />
+        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\[bB]" />
+        <RegExpr attribute="Pattern Character Class" String="\\[nrtvfDdSsWw]" />
+        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\." />
+        <RegExpr attribute="Pattern Internal Operator" String="\$(?=/)" />
+        <AnyChar attribute="Pattern Internal Operator" String="?+*()|" />
+      </context>
+      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
+        <RegExpr String="\\[\[\]]" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\." />
+        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
+      </context>
+
+
+      <!-- Built-in Classes -->
+      <!-- Keep in sync with typescript.xml -->
+
+      <context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
+        <WordDetect context="FindMemberObjectNumber" attribute="Built-in Objects" String="Number" />
+        <WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
+        <WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
+        <WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
+        <WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
+
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_builtin" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_dom" />
+        <keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_node" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="node_variable" />
+      </context>
+      <!-- These constants are highlighted in "Normal" -->
+      <context name="BuiltInConstants" attribute="Normal Text" lineEndContext="#stay">
+        <keyword context="NoRegExp" attribute="Constant" String="math_constant" />
+        <keyword context="NoRegExp" attribute="Constant" String="number_constant" />
+        <keyword context="NoRegExp" attribute="Constant" String="dom_constant" />
+      </context>
+
+      <!-- DOM Variable -->
+      <context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!FindMemberObjectDOM" attribute="Object Property (Built-in)" String="dom_property" />
+        <keyword context="#pop!FindMemberObjectDOM" attribute="Object Method (Built-in)" String="dom_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+        <!-- Only for autocomplete -->
+        <keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+        <keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+      </context>
+      <!-- Math Class -->
+      <context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Constant" String="math_constant" />
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Number Class -->
+      <context name="FindMemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectNumber" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Constant" String="number_constant" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Promise Class -->
+      <context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- JSON Class -->
+      <context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Console Object -->
+      <context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Process Object -->
+      <context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
+        <keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
+      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="ControlFlow"  defStyleNum="dsControlFlow" spellChecking="false" />
+      <itemData name="Reserved"     defStyleNum="dsKeyword" italic="true" spellChecking="false" />
+      <itemData name="Module"       defStyleNum="dsImport" spellChecking="false" />
+      <itemData name="Objects"      defStyleNum="dsNormal" spellChecking="false" />
+      <itemData name="Object Member" defStyleNum="dsAttribute" spellChecking="false" />
+
+      <itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
+      <itemData name="Function Declaration" defStyleNum="dsFunction" spellChecking="false" />
+      <itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
+      <itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
+      <itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
+      <itemData name="Function (Built-in)" defStyleNum="dsPreprocessor" spellChecking="false" />
+      <itemData name="Constant"         defStyleNum="dsConstant" spellChecking="false" />
+
+      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
+      <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
+      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Reserved Char. Escape" defStyleNum="dsSpecialChar" bold="1" spellChecking="false" />
+      <itemData name="String"       defStyleNum="dsString" />
+      <itemData name="Template"     defStyleNum="dsVerbatimString" />
+      <itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
+
+      <itemData name="Comment"      defStyleNum="dsComment" />
+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
+      <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
+      <itemData name="JSON"         defStyleNum="dsDataType" bold="0" spellChecking="false" />
+      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+
 </language>
 
 <!-- kate: space-indent on; indent-width 2; -->
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -5,7 +5,7 @@
     <!ENTITY envname "[a-zA-Z]+\*?">
     <!ENTITY regionmarker "&#037;\s*(?:BEGIN|END)">
 ]>
-<language name="LaTeX" version="10" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="11" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
   <highlighting>
     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
          Using a DetectChar rule with lookAhead to detect "\" at the beginning
@@ -467,6 +467,7 @@
         <DetectChar char="%" attribute="Comment" context="Comment"/>
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
       </context>
 
       <context name="FancyLabelOption" attribute="Option Text" lineEndContext="#stay">
@@ -497,6 +498,7 @@
         <DetectChar char="%" attribute="Comment" context="Comment"/>
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
       </context>
 
       <!-- end of an environment -->
diff --git a/xml/perl.xml b/xml/perl.xml
--- a/xml/perl.xml
+++ b/xml/perl.xml
@@ -39,7 +39,7 @@
 
    Enhance tr/// and y/// support.
 -->
-<language name="Perl" version="9" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" version="10" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <item>if</item>
@@ -252,6 +252,7 @@
       <item>rewinddir</item>
       <item>rindex</item>
       <item>rmdir</item>
+      <item>say</item>
       <item>scalar</item>
       <item>seek</item>
       <item>seekdir</item>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY digitPart "[0-9](?:_?[0-9])*">
+	<!ENTITY beforeDigit "(?&lt;![\.\w[:^ascii:]])">
+	<!ENTITY beforePointFloat "(?&lt;![\w[:^ascii:]])">
+]>
 <!-- Python syntax highlightning v0.9 by Per Wigren -->
 <!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
 <!-- Python syntax highlighting v1.97 by Paul Giannaros -->
@@ -14,7 +19,7 @@
 <!-- v2.07 add support for %prog and co, see bug 142832 -->
 <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
 <!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="9" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="10" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -65,6 +70,7 @@
 			<item>ascii</item>
 			<item>basestring</item>
 			<item>bin</item>
+			<item>breakpoint</item>
 			<item>bool</item>
 			<item>buffer</item>
 			<item>bytearray</item>
@@ -342,15 +348,17 @@
 				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
 				<RegExpr attribute="Normal Text" String="[a-zA-Z_][a-zA-Z_0-9]{2,}" context="#stay"/>
 
-				<RegExpr attribute="Complex" String=" ((([0-9]*\.[0-9]+|[0-9]+\.)|([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.))[eE](\+|-)?[0-9]+)|[0-9]+)[jJ]" context="#stay"/>
-				<Float attribute="Float" context="#stay" />
-				<HlCHex attribute="Hex" context="#stay"/>
-				<HlCOct attribute="Octal" context="#stay"/>
-				<Int attribute="Int" context="Int Suffixes"/>
-
-				<RegExpr attribute="Int" String=" ([0-9]+_)+[0-9]+" context="#stay"/>
-				<RegExpr attribute="Float" String=" ([0-9]+_)+[0-9]+\.[0-9]+" context="#stay"/>
-				<RegExpr attribute="Hex" String=" [0-9]x([A-F0-9]+_)+[A-F0-9]+" context="#stay"/>
+				<!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->
+				<RegExpr attribute="Complex" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]\b" context="#stay"/>
+				<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
+				<RegExpr attribute="Hex" String="&beforeDigit;0[xX](?:_?[\da-fA-F])+\b" context="#stay"/>
+				<RegExpr attribute="Binary" String="&beforeDigit;0[bB](?:_?[01])+\b" context="#stay"/>
+				<RegExpr attribute="Octal" String="&beforeDigit;0[oO](?:_?[0-7])+\b" context="#stay"/>
+				<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
+				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)[eE][\+\-]?&digitPart;\b" context="#stay"/>
+				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;\.(?:&digitPart;\b)?|&beforePointFloat;\.&digitPart;\b)" context="#stay"/>
+				<!-- Decimal: 123 ; 000 -->
+				<RegExpr attribute="Int" String="&beforeDigit;(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?\b" context="#stay"/>
 
 				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
 				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
@@ -362,14 +370,10 @@
 
 				<IncludeRules context="StringVariants" />
 
-				<RegExpr attribute="Decorator" String="@[_a-zA-Z][\._a-zA-Z0-9]*" firstNonSpace="true"/>
+				<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
 				<AnyChar attribute="Operator" String="+*/%\|=;\!&lt;&gt;!^&amp;~-@" context="#stay"/>
 			</context>
 
-			<context name="Int Suffixes" attribute="Int" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-				<StringDetect attribute="Int" context="#pop" String="L" insensitive="true"/>
-			</context>
-
 			<context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 				<DetectSpaces/>
 				<LineContinue attribute="Normal Text" context="CheckForStringNext"/>
@@ -661,6 +665,7 @@
 			<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
 			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>
 			<itemData name="Comment" defStyleNum="dsComment"/>
 			<itemData name="String" defStyleNum="dsString"/>
diff --git a/xml/qml.xml b/xml/qml.xml
--- a/xml/qml.xml
+++ b/xml/qml.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!ENTITY identifier "[a-zA-Z_$][\w$]*">
+]>
 <!-- Author: Milian Wolff <mail@milianw.de> -->
 <language name="QML" version="7" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
           mimetype="text/x-qml;application/x-qml" indenter="cstyle"
@@ -111,7 +114,14 @@
         <WordDetect attribute="Keywords" context="Property" String="property" />
         <DetectChar attribute="String" context="String" char="&quot;" />
         <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
-        <IncludeRules context="Normal##JavaScript" />
+        <!-- Normal##JavaScript -->
+        <IncludeRules context="FindNumbers##JavaScript" />
+        <IncludeRules context="FindKeywords##JavaScript" />
+        <IncludeRules context="FindStrings##JavaScript" />
+        <RegExpr attribute="Objects" context="FindMemberObjectMath##JavaScript" String="\bMath(?=\s*\.)" />
+        <RegExpr attribute="Objects" context="#stay" String="\b[A-Z][\w$]*(?=\s*\.)" />
+        <IncludeRules context="FindObjectMembersAndFunctions##JavaScript" />
+        <IncludeRules context="JSBase##JavaScript" />
       </context>
       <context attribute="ImportValue" lineEndContext="#pop" name="Import">
       </context>
@@ -138,16 +148,22 @@
       </context>
       <!-- QML supports multi-line strings, which are not supported by Javascript -->
       <context attribute="String" lineEndContext="#stay" name="String">
-        <HlCStringChar attribute="Escape" />
-        <RegExpr attribute="Escape" String="\\u[0-9a-fA-F]{4}" />
-        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <DetectChar attribute="String" context="RegExpAfterString##JavaScript" char="&quot;" />
+        <IncludeRules context="Escape##JavaScript" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="Object">
         <!--DetectIdentifier-->
-        <RegExpr attribute="Property Type" String="[a-zA-Z_$][\w$]*\s*(?=:)" />
+        <RegExpr attribute="Property Type" String="&identifier;\s*(?=:)" />
+        <!-- Avoid highlighting Property Type before ":" in conditional expressions. -->
+        <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\}]*&identifier;\s*\:)" />
         <DetectChar attribute="Normal Text" char="}" endRegion="Brace" context="#pop" />
         <IncludeRules context="Normal" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ConditionalExpression">
+        <AnyChar context="#pop" String=":}" lookAhead="true" />
+        <DetectChar attribute="Symbol" context="#stay" char="?" />
+        <IncludeRules context="Normal" />
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
@@ -158,7 +174,8 @@
       <itemData name="Signal" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" spellChecking="false"/>
       <itemData name="Property Type" defStyleNum="dsDataType" spellChecking="false" />
       <itemData name="String"       defStyleNum="dsString" />
-      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Objects"      defStyleNum="dsExtension" bold="0" spellChecking="false" />
+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -1,9 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-        <!ENTITY inlinestart "(^|[-\s&apos;&quot;\(\[{&lt;/:‘“’«¡¿‐‑‒–— ])">
+        <!ENTITY inlinestart "(?:^|(?&lt;=[-\s&apos;&quot;\(\[{&lt;/:‘“’«¡¿‐‑‒–— ]))">
         <!ENTITY inlineend "(?=[-\s’”»‐‑‒–— &apos;&quot;\)\]}&gt;/:\.,;!\?\\]|$)">
         <!ENTITY SimpleReferenceNameChars "\w_\.:\+\-">
+
+        <!-- Keep in sync with Markdown -->
+        <!ENTITY startlink "(?:https?|ftp)\://">
 ]>
 <!--
   This file is part of KDE's kate project.
@@ -11,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="5" kateversion="2.4" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="6" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -30,6 +33,10 @@
         <RegExpr attribute="SubstitutionDefinition" context="#stay" String="^\s*\.\. \|[&SimpleReferenceNameChars; ]+\|\s+[&SimpleReferenceNameChars;]+::\s" minimal="true" column="0"/>
         <RegExpr attribute="Field" String=":(?=([^:]*\\:)*[^:]*:(\s|$))" context="Field" firstNonSpace="true"/>
         <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.(\s|$)(?!([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$))" column="0"/>
+
+        <!-- Keep in sync with Markdown’s implicitlink entity -->
+        <RegExpr attribute="StandaloneHyperlink" context="#stay" String="\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))" />
+
       </context>
 
       <context name="InlineMarkup" attribute="Normal" lineEndContext="#stay">
@@ -97,6 +104,7 @@
       <itemData name="DefaultRole" defStyleNum="dsDecVal" />
       <itemData name="Code" defStyleNum="dsDataType" />
       <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="StandaloneHyperlink" defStyleNum="dsOthers" />
     </itemDatas>
 
   </highlighting>
diff --git a/xml/typescript.xml b/xml/typescript.xml
--- a/xml/typescript.xml
+++ b/xml/typescript.xml
@@ -1,2084 +1,683 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-	<!ENTITY identifier   "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
-	<!ENTITY numSuffix    "(?=n?(?:[^\w]|$))">
-	<!ENTITY objectOp     "[\?!]?">
-	<!ENTITY objectPoint  "\s*&objectOp;\.">
-	<!ENTITY endLine      "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">
-	<!ENTITY utilityTypes "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)">
-]>
-
-<!--
-    ====================================================================
-
-      This file is part of the KDE's KSyntaxHighlighting framework.
-
-      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)
-
-      This Source Code Form is subject to the terms of the MIT License.
-      If a copy of the license was not distributed with this file,
-      You can obtain one at: https://opensource.org/licenses/MIT
-
-    ====================================================================
-
-    This file is an extension of the JavaScript highlighter
-    (javascript.xml, Version 10 and higher).
-    Based on the TypeScript grammar files,
-    available at: https://github.com/Microsoft/TypeScript-TmLanguage
-
-    NOTE: TypeScript directives are highlighted by "doxygen.xml",
-    included in the JavaScript highlighter.
-    Ex:
-      /// <reference no-default-lib="true"/>
-
-      Tags: reference, amd-dependency, amd-module
-      Attributes: path, types, no-default-lib, name
-
-    TODO: The keywords of built-in classes & functions can be included
-    in "javascript.xml". The only drawback is that some XML files use
-    JavaScript highlighting, through "IncludeRules", and should not
-    incorporate these keywords (for example: "qml.xml").
-
-    Change log:
-     * v6 [2019-10-01]: Add "asserts" keyword in type predicates.
-                        Highlight types after the "as" keyword.
-     * v5 [2019-08-30]: Avoid that ?: be used as conditional expressions.
-     * v4 [2019-07-16]: Fixed highlighting of keywords before ":" in conditional expressions.
-     * v3 [2019-02-18]: Add support to bigint and the "is" keyword.
-                        Fixes keyword delimiters. Don't highlight regex
-                        after "]" and ")". Multiple fixes and improvements.
-     * v2 [2018-12-29]: Don't highlight built-in classes as functions,
-                        fix float-points, improve types detection and other fixes.
-     * v1 [2018-11-18]: Initial version
--->
-
-<language name="TypeScript"
-          version="6"
-          kateversion="5.53"
-          section="Scripts"
-          extensions="*.ts"
-          priority="9"
-          mimetype="text/typescript;application/typescript;text/x-typescript;application/x-typescript"
-          indenter="cstyle"
-          author="Nibaldo González (nibgonz@gmail.com)"
-          license="MIT">
-
-<highlighting>
-
-	<!-- Include all JavaScript keywords! -->
-	<list name="controlflow">
-		<include>controlflow##JavaScript</include>
-		<item>goto</item>
-	</list>
-	<list name="keywords">
-		<include>keywords##JavaScript</include>
-		<item>declare</item> <!-- storage.modifier.ts -->
-	</list>
-	<list name="reserved">
-		<include>reserved##JavaScript</include>
-		<item>type</item>
-		<item>arguments</item>
-		<!-- Class -->
-		<item>readonly</item>
-		<item>abstract</item>
-		<item>constructor</item>
-		<item>get</item>
-		<item>set</item>
-		<!-- Also:
-		     public, protected, private, async, super, new, static -->
-	</list>
-	<list name="module">
-		<include>module##JavaScript</include>
-	</list>
-	<list name="primitives">
-		<include>primitives##JavaScript</include>
-		<!-- Types Built-in -->
-		<item>object</item>
-		<!-- Also:
-		     this, true, false, undefined, null -->
-	</list>
-
-	<list name="control_export_types">
-		<!-- storage.type.namespace.ts -->
-		<item>namespace</item>
-		<item>module</item>
-	</list>
-	<list name="types_operator_expression">
-		<item>keyof</item>
-		<item>infer</item>
-		<!-- Also: is, typeof -->
-	</list>
-	<!-- Datatypes -->
-	<list name="types">
-		<item>string</item>
-		<item>number</item>
-		<item>boolean</item>
-		<item>symbol</item>
-		<item>any</item>
-		<item>void</item>
-		<item>never</item>
-		<item>unknown</item>
-		<item>undefined</item>
-		<item>null</item>
-		<item>object</item>
-	</list>
-
-	<!-- Built-in Classes & Functions -->
-
-	<list name="class_builtin">
-		<item>Array</item>
-		<item>ArrayBuffer</item>
-		<item>Atomics</item>
-		<item>Boolean</item>
-		<item>DataView</item>
-		<item>Date</item>
-		<item>Float32Array</item>
-		<item>Float64Array</item>
-		<item>Function</item>
-		<item>Generator</item>
-		<item>GeneratorFunction</item>
-		<item>Int8Array</item>
-		<item>Int16Array</item>
-		<item>Int32Array</item>
-		<item>Intl</item>
-		<item>Map</item>
-		<item>Number</item>
-		<item>Object</item>
-		<item>Proxy</item>
-		<item>Reflect</item>
-		<item>RegExp</item>
-		<item>Set</item>
-		<item>SharedArrayBuffer</item>
-		<item>SIMD</item>
-		<item>String</item>
-		<item>Symbol</item>
-		<item>TypedArray</item>
-		<item>Uint8Array</item>
-		<item>Uint16Array</item>
-		<item>Uint32Array</item>
-		<item>Uint8ClampedArray</item>
-		<item>WeakMap</item>
-		<item>WeakSet</item>
-		<!-- Class: Error -->
-		<item>Error</item>
-		<item>EvalError</item>
-		<item>InternalError</item>
-		<item>RangeError</item>
-		<item>ReferenceError</item>
-		<item>SyntaxError</item>
-		<item>TypeError</item>
-		<item>URIError</item>
-		<!-- Class: Math -->
-		<item>Math</item>
-		<!-- Class: Promise -->
-		<item>Promise</item>
-		<!-- Other -->
-		<item>JSON</item>
-		<item>console</item>
-		<item>process</item>
-	</list>
-	<!-- DOM Classes -->
-	<list name="class_dom">
-		<item>AnalyserNode</item>
-		<item>ArrayBufferView</item>
-		<item>Attr</item>
-		<item>AudioBuffer</item>
-		<item>AudioBufferSourceNode</item>
-		<item>AudioContext</item>
-		<item>AudioDestinationNode</item>
-		<item>AudioListener</item>
-		<item>AudioNode</item>
-		<item>AudioParam</item>
-		<item>BatteryManager</item>
-		<item>BeforeUnloadEvent</item>
-		<item>BiquadFilterNode</item>
-		<item>Blob</item>
-		<item>BufferSource</item>
-		<item>ByteString</item>
-		<item>CSS</item>
-		<item>CSSConditionRule</item>
-		<item>CSSCounterStyleRule</item>
-		<item>CSSGroupingRule</item>
-		<item>CSSMatrix</item>
-		<item>CSSMediaRule</item>
-		<item>CSSPageRule</item>
-		<item>CSSPrimitiveValue</item>
-		<item>CSSRule</item>
-		<item>CSSRuleList</item>
-		<item>CSSStyleDeclaration</item>
-		<item>CSSStyleRule</item>
-		<item>CSSStyleSheet</item>
-		<item>CSSSupportsRule</item>
-		<item>CSSValue</item>
-		<item>CSSValueList</item>
-		<item>CanvasGradient</item>
-		<item>CanvasImageSource</item>
-		<item>CanvasPattern</item>
-		<item>CanvasRenderingContext2D</item>
-		<item>ChannelMergerNode</item>
-		<item>ChannelSplitterNode</item>
-		<item>CharacterData</item>
-		<item>ChromeWorker</item>
-		<item>CloseEvent</item>
-		<item>Comment</item>
-		<item>CompositionEvent</item>
-		<item>Console</item>
-		<item>ConvolverNode</item>
-		<item>Coordinates</item>
-		<item>Credential</item>
-		<item>CredentialsContainer</item>
-		<item>Crypto</item>
-		<item>CryptoKey</item>
-		<item>CustomEvent</item>
-		<item>DOMError</item>
-		<item>DOMException</item>
-		<item>DOMHighResTimeStamp</item>
-		<item>DOMImplementation</item>
-		<item>DOMString</item>
-		<item>DOMStringList</item>
-		<item>DOMStringMap</item>
-		<item>DOMTimeStamp</item>
-		<item>DOMTokenList</item>
-		<item>DataTransfer</item>
-		<item>DataTransferItem</item>
-		<item>DataTransferItemList</item>
-		<item>DedicatedWorkerGlobalScope</item>
-		<item>DelayNode</item>
-		<item>DeviceProximityEvent</item>
-		<item>DirectoryEntry</item>
-		<item>DirectoryEntrySync</item>
-		<item>DirectoryReader</item>
-		<item>DirectoryReaderSync</item>
-		<item>Document</item>
-		<item>DocumentFragment</item>
-		<item>DocumentTouch</item>
-		<item>DocumentType</item>
-		<item>DragEvent</item>
-		<item>DynamicsCompressorNode</item>
-		<item>Element</item>
-		<item>Entry</item>
-		<item>EntrySync</item>
-		<item>ErrorEvent</item>
-		<item>Event</item>
-		<item>EventListener</item>
-		<item>EventSource</item>
-		<item>EventTarget</item>
-		<item>FederatedCredential</item>
-		<item>FetchEvent</item>
-		<item>File</item>
-		<item>FileEntry</item>
-		<item>FileEntrySync</item>
-		<item>FileException</item>
-		<item>FileList</item>
-		<item>FileReader</item>
-		<item>FileReaderSync</item>
-		<item>FileSystem</item>
-		<item>FileSystemSync</item>
-		<item>FontFace</item>
-		<item>FormData</item>
-		<item>GainNode</item>
-		<item>Gamepad</item>
-		<item>GamepadButton</item>
-		<item>GamepadEvent</item>
-		<item>Geolocation</item>
-		<item>GlobalEventHandlers</item>
-		<item>HTMLAnchorElement</item>
-		<item>HTMLAreaElement</item>
-		<item>HTMLAudioElement</item>
-		<item>HTMLBRElement</item>
-		<item>HTMLBaseElement</item>
-		<item>HTMLBodyElement</item>
-		<item>HTMLButtonElement</item>
-		<item>HTMLCanvasElement</item>
-		<item>HTMLCollection</item>
-		<item>HTMLContentElement</item>
-		<item>HTMLDListElement</item>
-		<item>HTMLDataElement</item>
-		<item>HTMLDataListElement</item>
-		<item>HTMLDialogElement</item>
-		<item>HTMLDivElement</item>
-		<item>HTMLDocument</item>
-		<item>HTMLElement</item>
-		<item>HTMLEmbedElement</item>
-		<item>HTMLFieldSetElement</item>
-		<item>HTMLFontElement</item>
-		<item>HTMLFormControlsCollection</item>
-		<item>HTMLFormElement</item>
-		<item>HTMLHRElement</item>
-		<item>HTMLHeadElement</item>
-		<item>HTMLHeadingElement</item>
-		<item>HTMLHtmlElement</item>
-		<item>HTMLIFrameElement</item>
-		<item>HTMLImageElement</item>
-		<item>HTMLInputElement</item>
-		<item>HTMLKeygenElement</item>
-		<item>HTMLLIElement</item>
-		<item>HTMLLabelElement</item>
-		<item>HTMLLegendElement</item>
-		<item>HTMLLinkElement</item>
-		<item>HTMLMapElement</item>
-		<item>HTMLMediaElement</item>
-		<item>HTMLMetaElement</item>
-		<item>HTMLMeterElement</item>
-		<item>HTMLModElement</item>
-		<item>HTMLOListElement</item>
-		<item>HTMLObjectElement</item>
-		<item>HTMLOptGroupElement</item>
-		<item>HTMLOptionElement</item>
-		<item>HTMLOptionsCollection</item>
-		<item>HTMLOutputElement</item>
-		<item>HTMLParagraphElement</item>
-		<item>HTMLParamElement</item>
-		<item>HTMLPreElement</item>
-		<item>HTMLProgressElement</item>
-		<item>HTMLQuoteElement</item>
-		<item>HTMLScriptElement</item>
-		<item>HTMLSelectElement</item>
-		<item>HTMLShadowElement</item>
-		<item>HTMLSourceElement</item>
-		<item>HTMLSpanElement</item>
-		<item>HTMLStyleElement</item>
-		<item>HTMLTableCaptionElement</item>
-		<item>HTMLTableCellElement</item>
-		<item>HTMLTableColElement</item>
-		<item>HTMLTableDataCellElement</item>
-		<item>HTMLTableElement</item>
-		<item>HTMLTableHeaderCellElement</item>
-		<item>HTMLTableRowElement</item>
-		<item>HTMLTableSectionElement</item>
-		<item>HTMLTextAreaElement</item>
-		<item>HTMLTimeElement</item>
-		<item>HTMLTitleElement</item>
-		<item>HTMLTrackElement</item>
-		<item>HTMLUListElement</item>
-		<item>HTMLUnknownElement</item>
-		<item>HTMLVideoElement</item>
-		<item>HashChangeEvent</item>
-		<item>History</item>
-		<item>IDBCursor</item>
-		<item>IDBCursorWithValue</item>
-		<item>IDBDatabase</item>
-		<item>IDBEnvironment</item>
-		<item>IDBFactory</item>
-		<item>IDBIndex</item>
-		<item>IDBKeyRange</item>
-		<item>IDBMutableFile</item>
-		<item>IDBObjectStore</item>
-		<item>IDBOpenDBRequest</item>
-		<item>IDBRequest</item>
-		<item>IDBTransaction</item>
-		<item>IDBVersionChangeEvent</item>
-		<item>IIRFilterNode</item>
-		<item>IdentityManager</item>
-		<item>ImageBitmap</item>
-		<item>ImageBitmapFactories</item>
-		<item>ImageData</item>
-		<item>Index</item>
-		<item>InputDeviceCapabilities</item>
-		<item>InputEvent</item>
-		<item>InstallEvent</item>
-		<item>InstallTrigger</item>
-		<item>KeyboardEvent</item>
-		<item>LinkStyle</item>
-		<item>LocalFileSystem</item>
-		<item>LocalFileSystemSync</item>
-		<item>Location</item>
-		<item>MIDIAccess</item>
-		<item>MIDIConnectionEvent</item>
-		<item>MIDIInput</item>
-		<item>MIDIInputMap</item>
-		<item>MIDIOutputMap</item>
-		<item>MediaElementAudioSourceNode</item>
-		<item>MediaError</item>
-		<item>MediaKeyMessageEvent</item>
-		<item>MediaKeySession</item>
-		<item>MediaKeyStatusMap</item>
-		<item>MediaKeySystemAccess</item>
-		<item>MediaKeySystemConfiguration</item>
-		<item>MediaKeys</item>
-		<item>MediaRecorder</item>
-		<item>MediaStream</item>
-		<item>MediaStreamAudioDestinationNode</item>
-		<item>MediaStreamAudioSourceNode</item>
-		<item>MessageChannel</item>
-		<item>MessageEvent</item>
-		<item>MessagePort</item>
-		<item>MouseEvent</item>
-		<item>MutationObserver</item>
-		<item>MutationRecord</item>
-		<item>NamedNodeMap</item>
-		<item>Navigator</item>
-		<item>NavigatorConcurrentHardware</item>
-		<item>NavigatorGeolocation</item>
-		<item>NavigatorID</item>
-		<item>NavigatorLanguage</item>
-		<item>NavigatorOnLine</item>
-		<item>Node</item>
-		<item>NodeFilter</item>
-		<item>NodeIterator</item>
-		<item>NodeList</item>
-		<item>NonDocumentTypeChildNode</item>
-		<item>Notification</item>
-		<item>OfflineAudioCompletionEvent</item>
-		<item>OfflineAudioContext</item>
-		<item>OscillatorNode</item>
-		<item>PageTransitionEvent</item>
-		<item>PannerNode</item>
-		<item>ParentNode</item>
-		<item>PasswordCredential</item>
-		<item>Path2D</item>
-		<item>PaymentAddress</item>
-		<item>PaymentRequest</item>
-		<item>PaymentResponse</item>
-		<item>Performance</item>
-		<item>PerformanceEntry</item>
-		<item>PerformanceFrameTiming</item>
-		<item>PerformanceMark</item>
-		<item>PerformanceMeasure</item>
-		<item>PerformanceNavigation</item>
-		<item>PerformanceNavigationTiming</item>
-		<item>PerformanceObserver</item>
-		<item>PerformanceObserverEntryList</item>
-		<item>PerformanceResourceTiming</item>
-		<item>PerformanceTiming</item>
-		<item>PeriodicSyncEvent</item>
-		<item>PeriodicWave</item>
-		<item>Plugin</item>
-		<item>Point</item>
-		<item>PointerEvent</item>
-		<item>PopStateEvent</item>
-		<item>PortCollection</item>
-		<item>Position</item>
-		<item>PositionError</item>
-		<item>PositionOptions</item>
-		<item>PresentationConnectionClosedEvent</item>
-		<item>PresentationConnectionList</item>
-		<item>PresentationReceiver</item>
-		<item>ProcessingInstruction</item>
-		<item>ProgressEvent</item>
-		<item>PromiseRejectionEvent</item>
-		<item>PushEvent</item>
-		<item>PushRegistrationManager</item>
-		<item>RTCCertificate</item>
-		<item>RTCConfiguration</item>
-		<item>RTCPeerConnection</item>
-		<item>RTCSessionDescriptionCallback</item>
-		<item>RTCStatsReport</item>
-		<item>RadioNodeList</item>
-		<item>RandomSource</item>
-		<item>Range</item>
-		<item>ReadableByteStream</item>
-		<item>RenderingContext</item>
-		<item>SVGAElement</item>
-		<item>SVGAngle</item>
-		<item>SVGAnimateColorElement</item>
-		<item>SVGAnimateElement</item>
-		<item>SVGAnimateMotionElement</item>
-		<item>SVGAnimateTransformElement</item>
-		<item>SVGAnimatedAngle</item>
-		<item>SVGAnimatedBoolean</item>
-		<item>SVGAnimatedEnumeration</item>
-		<item>SVGAnimatedInteger</item>
-		<item>SVGAnimatedLength</item>
-		<item>SVGAnimatedLengthList</item>
-		<item>SVGAnimatedNumber</item>
-		<item>SVGAnimatedNumberList</item>
-		<item>SVGAnimatedPoints</item>
-		<item>SVGAnimatedPreserveAspectRatio</item>
-		<item>SVGAnimatedRect</item>
-		<item>SVGAnimatedString</item>
-		<item>SVGAnimatedTransformList</item>
-		<item>SVGAnimationElement</item>
-		<item>SVGCircleElement</item>
-		<item>SVGClipPathElement</item>
-		<item>SVGCursorElement</item>
-		<item>SVGDefsElement</item>
-		<item>SVGDescElement</item>
-		<item>SVGElement</item>
-		<item>SVGEllipseElement</item>
-		<item>SVGEvent</item>
-		<item>SVGFilterElement</item>
-		<item>SVGFontElement</item>
-		<item>SVGFontFaceElement</item>
-		<item>SVGFontFaceFormatElement</item>
-		<item>SVGFontFaceNameElement</item>
-		<item>SVGFontFaceSrcElement</item>
-		<item>SVGFontFaceUriElement</item>
-		<item>SVGForeignObjectElement</item>
-		<item>SVGGElement</item>
-		<item>SVGGlyphElement</item>
-		<item>SVGGradientElement</item>
-		<item>SVGHKernElement</item>
-		<item>SVGImageElement</item>
-		<item>SVGLength</item>
-		<item>SVGLengthList</item>
-		<item>SVGLineElement</item>
-		<item>SVGLinearGradientElement</item>
-		<item>SVGMPathElement</item>
-		<item>SVGMaskElement</item>
-		<item>SVGMatrix</item>
-		<item>SVGMissingGlyphElement</item>
-		<item>SVGNumber</item>
-		<item>SVGNumberList</item>
-		<item>SVGPathElement</item>
-		<item>SVGPatternElement</item>
-		<item>SVGPoint</item>
-		<item>SVGPolygonElement</item>
-		<item>SVGPolylineElement</item>
-		<item>SVGPreserveAspectRatio</item>
-		<item>SVGRadialGradientElement</item>
-		<item>SVGRect</item>
-		<item>SVGRectElement</item>
-		<item>SVGSVGElement</item>
-		<item>SVGScriptElement</item>
-		<item>SVGSetElement</item>
-		<item>SVGStopElement</item>
-		<item>SVGStringList</item>
-		<item>SVGStylable</item>
-		<item>SVGStyleElement</item>
-		<item>SVGSwitchElement</item>
-		<item>SVGSymbolElement</item>
-		<item>SVGTRefElement</item>
-		<item>SVGTSpanElement</item>
-		<item>SVGTests</item>
-		<item>SVGTextElement</item>
-		<item>SVGTextPositioningElement</item>
-		<item>SVGTitleElement</item>
-		<item>SVGTransform</item>
-		<item>SVGTransformList</item>
-		<item>SVGTransformable</item>
-		<item>SVGUseElement</item>
-		<item>SVGVKernElement</item>
-		<item>SVGViewElement</item>
-		<item>ServiceWorker</item>
-		<item>ServiceWorkerContainer</item>
-		<item>ServiceWorkerGlobalScope</item>
-		<item>ServiceWorkerRegistration</item>
-		<item>ServiceWorkerState</item>
-		<item>ShadowRoot</item>
-		<item>SharedWorker</item>
-		<item>SharedWorkerGlobalScope</item>
-		<item>SourceBufferList</item>
-		<item>StereoPannerNode</item>
-		<item>Storage</item>
-		<item>StorageEvent</item>
-		<item>StyleSheet</item>
-		<item>StyleSheetList</item>
-		<item>SubtleCrypto</item>
-		<item>SyncEvent</item>
-		<item>Text</item>
-		<item>TextMetrics</item>
-		<item>TimeEvent</item>
-		<item>TimeRanges</item>
-		<item>Touch</item>
-		<item>TouchEvent</item>
-		<item>TouchList</item>
-		<item>Transferable</item>
-		<item>TreeWalker</item>
-		<item>UIEvent</item>
-		<item>USVString</item>
-		<item>VRDisplayCapabilities</item>
-		<item>ValidityState</item>
-		<item>WaveShaperNode</item>
-		<item>WebGL</item>
-		<item>WebGLActiveInfo</item>
-		<item>WebGLBuffer</item>
-		<item>WebGLContextEvent</item>
-		<item>WebGLFramebuffer</item>
-		<item>WebGLProgram</item>
-		<item>WebGLRenderbuffer</item>
-		<item>WebGLRenderingContext</item>
-		<item>WebGLShader</item>
-		<item>WebGLShaderPrecisionFormat</item>
-		<item>WebGLTexture</item>
-		<item>WebGLTimerQueryEXT</item>
-		<item>WebGLTransformFeedback</item>
-		<item>WebGLUniformLocation</item>
-		<item>WebGLVertexArrayObject</item>
-		<item>WebGLVertexArrayObjectOES</item>
-		<item>WebSocket</item>
-		<item>WebSockets</item>
-		<item>WebVTT</item>
-		<item>WheelEvent</item>
-		<item>Window</item>
-		<item>WindowBase64</item>
-		<item>WindowEventHandlers</item>
-		<item>WindowTimers</item>
-		<item>Worker</item>
-		<item>WorkerGlobalScope</item>
-		<item>WorkerLocation</item>
-		<item>WorkerNavigator</item>
-		<item>XMLHttpRequest</item>
-		<item>XMLHttpRequestEventTarget</item>
-		<item>XMLSerializer</item>
-		<item>XPathExpression</item>
-		<item>XPathResult</item>
-		<item>XSLTProcessor</item>
-	</list>
-	<!-- Node.js Classes -->
-	<list name="class_node">
-		<item>Buffer</item>
-		<item>EventEmitter</item>
-		<item>Server</item>
-		<item>Pipe</item>
-		<item>Socket</item>
-		<item>REPLServer</item>
-		<item>ReadStream</item>
-		<item>WriteStream</item>
-		<item>Stream</item>
-		<item>Inflate</item>
-		<item>Deflate</item>
-		<item>InflateRaw</item>
-		<item>DeflateRaw</item>
-		<item>GZip</item>
-		<item>GUnzip</item>
-		<item>Unzip</item>
-		<item>Zip</item>
-	</list>
-	<!-- General Properties of Classes -->
-	<list name="variable_property">
-		<item>constructor</item>
-		<item>length</item>
-		<item>prototype</item>
-		<item>__proto__</item>
-		<item>EPSILON</item>
-		<item>MAX_SAFE_INTEGER</item>
-		<item>MAX_VALUE</item>
-		<item>MIN_SAFE_INTEGER</item>
-		<item>MIN_VALUE</item>
-		<item>NEGATIVE_INFINITY</item>
-		<item>POSITIVE_INFINITY</item>
-	</list>
-	<!-- General Built-in Functions -->
-	<list name="functions">
-		<item>clearInterval</item>
-		<item>clearTimeout</item>
-		<item>decodeURI</item>
-		<item>decodeURIComponent</item>
-		<item>encodeURI</item>
-		<item>encodeURIComponent</item>
-		<item>escape</item>
-		<item>eval</item>
-		<item>isFinite</item>
-		<item>isNaN</item>
-		<item>parseFloat</item>
-		<item>parseInt</item>
-		<item>require</item>
-		<item>setTimeout</item>
-		<item>setInterval</item>
-		<item>super</item>
-		<item>unescape</item>
-		<item>uneval</item>
-	</list>
-	<!-- Methods of Math Class -->
-	<list name="math_functions">
-		<item>abs</item>
-		<item>acos</item>
-		<item>acosh</item>
-		<item>asin</item>
-		<item>asinh</item>
-		<item>atan</item>
-		<item>atan2</item>
-		<item>atanh</item>
-		<item>cbrt</item>
-		<item>ceil</item>
-		<item>clz32</item>
-		<item>cos</item>
-		<item>cosh</item>
-		<item>exp</item>
-		<item>expm1</item>
-		<item>floor</item>
-		<item>fround</item>
-		<item>hypot</item>
-		<item>imul</item>
-		<item>log</item>
-		<item>log10</item>
-		<item>log1p</item>
-		<item>log2</item>
-		<item>max</item>
-		<item>min</item>
-		<item>pow</item>
-		<item>random</item>
-		<item>round</item>
-		<item>sign</item>
-		<item>sin</item>
-		<item>sinh</item>
-		<item>sqrt</item>
-		<item>tan</item>
-		<item>tanh</item>
-		<item>trunc</item>
-	</list>
-	<!-- Constants of Math Class-->
-	<list name="math_property_constants">
-		<item>E</item>
-		<item>LN10</item>
-		<item>LN2</item>
-		<item>LOG10E</item>
-		<item>LOG2E</item>
-		<item>PI</item>
-		<item>SQRT1_2</item>
-		<item>SQRT2</item>
-	</list>
-	<!-- Functions of "console" -->
-	<list name="console_functions">
-		<item>assert</item>
-		<item>clear</item>
-		<item>count</item>
-		<item>debug</item>
-		<item>dir</item>
-		<item>error</item>
-		<item>group</item>
-		<item>groupCollapsed</item>
-		<item>groupEnd</item>
-		<item>info</item>
-		<item>log</item>
-		<item>profile</item>
-		<item>profileEnd</item>
-		<item>table</item>
-		<item>time</item>
-		<item>timeEnd</item>
-		<item>timeStamp</item>
-		<item>trace</item>
-		<item>warn</item>
-	</list>
-	<!-- Methods of JSON Class -->
-	<list name="json_functions">
-		<item>parse</item>
-		<item>stringify</item>
-	</list>
-	<!-- Attributes of Node.js Classes -->
-	<list name="node_object">
-		<item>global</item>
-		<item>GLOBAL</item>
-		<item>root</item>
-		<item>__dirname</item>
-		<item>__filename</item>
-	</list>
-	<!-- Properties of "process" -->
-	<list name="process_property">
-		<item>arch</item>
-		<item>argv</item>
-		<item>config</item>
-		<item>connected</item>
-		<item>env</item>
-		<item>execArgv</item>
-		<item>execPath</item>
-		<item>exitCode</item>
-		<item>mainModule</item>
-		<item>pid</item>
-		<item>platform</item>
-		<item>release</item>
-		<item>stderr</item>
-		<item>stdin</item>
-		<item>stdout</item>
-		<item>title</item>
-		<item>version</item>
-		<item>versions</item>
-	</list>
-	<!-- Functions of "process" -->
-	<list name="process_functions">
-		<item>abort</item>
-		<item>chdir</item>
-		<item>cwd</item>
-		<item>disconnect</item>
-		<item>exit</item>
-		<item>setegid</item>
-		<item>seteuid</item>
-		<item>getegid</item>
-		<item>geteuid</item>
-		<item>setgid</item>
-		<item>setuid</item>
-		<item>getgid</item>
-		<item>getuid</item>
-		<item>send</item>
-		<item>setgroups</item>
-		<item>getgroups</item>
-		<item>initgroups</item>
-		<item>kill</item>
-		<item>memoryUsage</item>
-		<item>nextTick</item>
-		<item>umask</item>
-		<item>uptime</item>
-		<item>hrtime</item>
-	</list>
-	<!-- Methods of Promise Class -->
-	<list name="promise_functions">
-		<item>all</item>
-		<item>catch</item>
-		<item>finally</item>
-		<item>race</item>
-		<item>reject</item>
-		<item>resolve</item>
-		<item>then</item>
-	</list>
-	<!-- DOM Variables -->
-	<list name="dom_variable">
-		<item>document</item>
-		<item>event</item>
-		<item>navigator</item>
-		<item>performance</item>
-		<item>screen</item>
-		<item>window</item>
-	</list>
-	<!-- Constants of DOM Classes -->
-	<list name="dom_constant">
-		<item>ATTRIBUTE_NODE</item>
-		<item>CDATA_SECTION_NODE</item>
-		<item>COMMENT_NODE</item>
-		<item>DOCUMENT_FRAGMENT_NODE</item>
-		<item>DOCUMENT_NODE</item>
-		<item>DOCUMENT_TYPE_NODE</item>
-		<item>DOMSTRING_SIZE_ERR</item>
-		<item>ELEMENT_NODE</item>
-		<item>ENTITY_NODE</item>
-		<item>ENTITY_REFERENCE_NODE</item>
-		<item>HIERARCHY_REQUEST_ERR</item>
-		<item>INDEX_SIZE_ERR</item>
-		<item>INUSE_ATTRIBUTE_ERR</item>
-		<item>INVALID_CHARACTER_ERR</item>
-		<item>NO_DATA_ALLOWED_ERR</item>
-		<item>NO_MODIFICATION_ALLOWED_ERR</item>
-		<item>NOT_FOUND_ERR</item>
-		<item>NOT_SUPPORTED_ERR</item>
-		<item>NOTATION_NODE</item>
-		<item>PROCESSING_INSTRUCTION_NODE</item>
-		<item>TEXT_NODE</item>
-		<item>WRONG_DOCUMENT_ERR</item>
-	</list>
-	<!-- Properties of DOM Classes -->
-	<list name="dom_property">
-		<item>_content</item>
-		<item>x</item>
-		<item>y</item>
-		<item>z</item>
-		<item>abbr</item>
-		<item>above</item>
-		<item>accept</item>
-		<item>acceptCharset</item>
-		<item>accessKey</item>
-		<item>action</item>
-		<item>align</item>
-		<item>aLink</item>
-		<item>vLink</item>
-		<item>aLinkcolor</item>
-		<item>vLinkcolor</item>
-		<item>all</item>
-		<item>alt</item>
-		<item>anchors</item>
-		<item>appCodeName</item>
-		<item>appCore</item>
-		<item>applets</item>
-		<item>appMinorVersion</item>
-		<item>appName</item>
-		<item>appVersion</item>
-		<item>archive</item>
-		<item>areas</item>
-		<item>arguments</item>
-		<item>attributes</item>
-		<item>availHeight</item>
-		<item>availLeft</item>
-		<item>availTop</item>
-		<item>availWidth</item>
-		<item>axis</item>
-		<item>background</item>
-		<item>backgroundColor</item>
-		<item>backgroundImage</item>
-		<item>below</item>
-		<item>bgColor</item>
-		<item>body</item>
-		<item>border</item>
-		<item>borderBottomWidth</item>
-		<item>borderColor</item>
-		<item>borderLeftWidth</item>
-		<item>borderRightWidth</item>
-		<item>borderStyle</item>
-		<item>borderTopWidth</item>
-		<item>borderWidth</item>
-		<item>bottom</item>
-		<item>bufferDepth</item>
-		<item>callee</item>
-		<item>caller</item>
-		<item>caption</item>
-		<item>cellPadding</item>
-		<item>cells</item>
-		<item>cellSpacing</item>
-		<item>ch</item>
-		<item>characterSet</item>
-		<item>charset</item>
-		<item>checked</item>
-		<item>childNodes</item>
-		<item>chOff</item>
-		<item>cite</item>
-		<item>classes</item>
-		<item>className</item>
-		<item>clear</item>
-		<item>clientInformation</item>
-		<item>clip</item>
-		<item>clipBoardData</item>
-		<item>closed</item>
-		<item>code</item>
-		<item>codeBase</item>
-		<item>codeType</item>
-		<item>color</item>
-		<item>colorDepth</item>
-		<item>cols</item>
-		<item>colSpan</item>
-		<item>compact</item>
-		<item>complete</item>
-		<item>components</item>
-		<item>content</item>
-		<item>controllers</item>
-		<item>cookie</item>
-		<item>cookieEnabled</item>
-		<item>cords</item>
-		<item>cpuClass</item>
-		<item>crypto</item>
-		<item>current</item>
-		<item>data</item>
-		<item>dateTime</item>
-		<item>declare</item>
-		<item>defaultCharset</item>
-		<item>defaultChecked</item>
-		<item>defaultSelected</item>
-		<item>defaultStatus</item>
-		<item>defaultValue</item>
-		<item>defaultView</item>
-		<item>defer</item>
-		<item>description</item>
-		<item>dialogArguments</item>
-		<item>dialogHeight</item>
-		<item>dialogLeft</item>
-		<item>dialogTop</item>
-		<item>dialogWidth</item>
-		<item>dir</item>
-		<item>directories</item>
-		<item>disabled</item>
-		<item>display</item>
-		<item>docmain</item>
-		<item>doctype</item>
-		<item>documentElement</item>
-		<item>elements</item>
-		<item>embeds</item>
-		<item>enabledPlugin</item>
-		<item>encoding</item>
-		<item>enctype</item>
-		<item>entities</item>
-		<item>event</item>
-		<item>expando</item>
-		<item>external</item>
-		<item>face</item>
-		<item>fgColor</item>
-		<item>filename</item>
-		<item>firstChild</item>
-		<item>fontFamily</item>
-		<item>fontSize</item>
-		<item>fontWeight</item>
-		<item>form</item>
-		<item>formName</item>
-		<item>forms</item>
-		<item>frame</item>
-		<item>frameBorder</item>
-		<item>frameElement</item>
-		<item>frames</item>
-		<item>hasFocus</item>
-		<item>hash</item>
-		<item>headers</item>
-		<item>height</item>
-		<item>history</item>
-		<item>host</item>
-		<item>hostname</item>
-		<item>href</item>
-		<item>hreflang</item>
-		<item>hspace</item>
-		<item>htmlFor</item>
-		<item>httpEquiv</item>
-		<item>id</item>
-		<item>ids</item>
-		<item>ignoreCase</item>
-		<item>images</item>
-		<item>implementation</item>
-		<item>index</item>
-		<item>innerHeight</item>
-		<item>innerWidth</item>
-		<item>input</item>
-		<item>isMap</item>
-		<item>label</item>
-		<item>lang</item>
-		<item>language</item>
-		<item>lastChild</item>
-		<item>lastIndex</item>
-		<item>lastMatch</item>
-		<item>lastModified</item>
-		<item>lastParen</item>
-		<item>layers</item>
-		<item>layerX</item>
-		<item>layerY</item>
-		<item>left</item>
-		<item>leftContext</item>
-		<item>lineHeight</item>
-		<item>link</item>
-		<item>linkColor</item>
-		<item>links</item>
-		<item>listStyleType</item>
-		<item>localName</item>
-		<item>location</item>
-		<item>locationbar</item>
-		<item>longDesc</item>
-		<item>lowsrc</item>
-		<item>lowSrc</item>
-		<item>marginBottom</item>
-		<item>marginHeight</item>
-		<item>marginLeft</item>
-		<item>marginRight</item>
-		<item>marginTop</item>
-		<item>marginWidth</item>
-		<item>maxLength</item>
-		<item>media</item>
-		<item>menubar</item>
-		<item>method</item>
-		<item>mimeTypes</item>
-		<item>multiline</item>
-		<item>multiple</item>
-		<item>name</item>
-		<item>nameProp</item>
-		<item>namespaces</item>
-		<item>namespaceURI</item>
-		<item>next</item>
-		<item>nextSibling</item>
-		<item>nodeName</item>
-		<item>nodeType</item>
-		<item>nodeValue</item>
-		<item>noHref</item>
-		<item>noResize</item>
-		<item>noShade</item>
-		<item>notationName</item>
-		<item>notations</item>
-		<item>noWrap</item>
-		<item>object</item>
-		<item>offscreenBuffering</item>
-		<item>onLine</item>
-		<item>onreadystatechange</item>
-		<item>opener</item>
-		<item>opsProfile</item>
-		<item>options</item>
-		<item>oscpu</item>
-		<item>outerHeight</item>
-		<item>outerWidth</item>
-		<item>ownerDocument</item>
-		<item>paddingBottom</item>
-		<item>paddingLeft</item>
-		<item>paddingRight</item>
-		<item>paddingTop</item>
-		<item>pageX</item>
-		<item>pageY</item>
-		<item>pageXOffset</item>
-		<item>pageYOffset</item>
-		<item>parent</item>
-		<item>parentLayer</item>
-		<item>parentNode</item>
-		<item>parentWindow</item>
-		<item>pathname</item>
-		<item>personalbar</item>
-		<item>pixelDepth</item>
-		<item>pkcs11</item>
-		<item>platform</item>
-		<item>plugins</item>
-		<item>port</item>
-		<item>prefix</item>
-		<item>previous</item>
-		<item>previousDibling</item>
-		<item>product</item>
-		<item>productSub</item>
-		<item>profile</item>
-		<item>profileend</item>
-		<item>prompt</item>
-		<item>prompter</item>
-		<item>protocol</item>
-		<item>publicId</item>
-		<item>readOnly</item>
-		<item>readyState</item>
-		<item>referrer</item>
-		<item>rel</item>
-		<item>responseText</item>
-		<item>responseXML</item>
-		<item>rev</item>
-		<item>right</item>
-		<item>rightContext</item>
-		<item>rowIndex</item>
-		<item>rows</item>
-		<item>rowSpan</item>
-		<item>rules</item>
-		<item>scheme</item>
-		<item>scope</item>
-		<item>screenX</item>
-		<item>screenY</item>
-		<item>screenLeft</item>
-		<item>screenTop</item>
-		<item>scripts</item>
-		<item>scrollbars</item>
-		<item>scrolling</item>
-		<item>sectionRowIndex</item>
-		<item>security</item>
-		<item>securityPolicy</item>
-		<item>selected</item>
-		<item>selectedIndex</item>
-		<item>selection</item>
-		<item>self</item>
-		<item>shape</item>
-		<item>siblingAbove</item>
-		<item>siblingBelow</item>
-		<item>size</item>
-		<item>source</item>
-		<item>specified</item>
-		<item>standby</item>
-		<item>start</item>
-		<item>status</item>
-		<item>statusbar</item>
-		<item>statusText</item>
-		<item>style</item>
-		<item>styleSheets</item>
-		<item>suffixes</item>
-		<item>summary</item>
-		<item>systemId</item>
-		<item>systemLanguage</item>
-		<item>tagName</item>
-		<item>tags</item>
-		<item>target</item>
-		<item>tBodies</item>
-		<item>text</item>
-		<item>textAlign</item>
-		<item>textDecoration</item>
-		<item>textIndent</item>
-		<item>textTransform</item>
-		<item>tFoot</item>
-		<item>tHead</item>
-		<item>title</item>
-		<item>toolbar</item>
-		<item>top</item>
-		<item>type</item>
-		<item>undefined</item>
-		<item>uniqueID</item>
-		<item>updateInterval</item>
-		<item>URL</item>
-		<item>URLUnencoded</item>
-		<item>useMap</item>
-		<item>userAgent</item>
-		<item>userLanguage</item>
-		<item>userProfile</item>
-		<item>vAlign</item>
-		<item>value</item>
-		<item>valueType</item>
-		<item>vendor</item>
-		<item>vendorSub</item>
-		<item>version</item>
-		<item>visibility</item>
-		<item>vspace</item>
-		<item>whiteSpace</item>
-		<item>width</item>
-		<item>XMLDocument</item>
-		<item>XSLDocument</item>
-		<item>zIndex</item>
-	</list>
-	<!-- Methods of DOM Classes -->
-	<list name="dom_functions">
-		<item>acceptNode</item>
-		<item>add</item>
-		<item>addEventListener</item>
-		<item>addTextTrack</item>
-		<item>adoptNode</item>
-		<item>after</item>
-		<item>animate</item>
-		<item>append</item>
-		<item>appendChild</item>
-		<item>appendData</item>
-		<item>before</item>
-		<item>blur</item>
-		<item>canPlayType</item>
-		<item>captureStream</item>
-		<item>caretPositionFromPoint</item>
-		<item>caretRangeFromPoint</item>
-		<item>checkValidity</item>
-		<item>clear</item>
-		<item>click</item>
-		<item>cloneContents</item>
-		<item>cloneNode</item>
-		<item>cloneRange</item>
-		<item>close</item>
-		<item>closest</item>
-		<item>collapse</item>
-		<item>compareBoundaryPoints</item>
-		<item>compareDocumentPosition</item>
-		<item>comparePoint</item>
-		<item>contains</item>
-		<item>convertPointFromNode</item>
-		<item>convertQuadFromNode</item>
-		<item>convertRectFromNode</item>
-		<item>createAttribute</item>
-		<item>createAttributeNS</item>
-		<item>createCaption</item>
-		<item>createCDATASection</item>
-		<item>createComment</item>
-		<item>createContextualFragment</item>
-		<item>createDocument</item>
-		<item>createDocumentFragment</item>
-		<item>createDocumentType</item>
-		<item>createElement</item>
-		<item>createElementNS</item>
-		<item>createEntityReference</item>
-		<item>createEvent</item>
-		<item>createExpression</item>
-		<item>createHTMLDocument</item>
-		<item>createNodeIterator</item>
-		<item>createNSResolver</item>
-		<item>createProcessingInstruction</item>
-		<item>createRange</item>
-		<item>createShadowRoot</item>
-		<item>createTBody</item>
-		<item>createTextNode</item>
-		<item>createTFoot</item>
-		<item>createTHead</item>
-		<item>createTreeWalker</item>
-		<item>delete</item>
-		<item>deleteCaption</item>
-		<item>deleteCell</item>
-		<item>deleteContents</item>
-		<item>deleteData</item>
-		<item>deleteRow</item>
-		<item>deleteTFoot</item>
-		<item>deleteTHead</item>
-		<item>detach</item>
-		<item>disconnect</item>
-		<item>dispatchEvent</item>
-		<item>elementFromPoint</item>
-		<item>elementsFromPoint</item>
-		<item>enableStyleSheetsForSet</item>
-		<item>entries</item>
-		<item>evaluate</item>
-		<item>execCommand</item>
-		<item>exitFullscreen</item>
-		<item>exitPointerLock</item>
-		<item>expand</item>
-		<item>extractContents</item>
-		<item>fastSeek</item>
-		<item>firstChild</item>
-		<item>focus</item>
-		<item>forEach</item>
-		<item>get</item>
-		<item>getAll</item>
-		<item>getAnimations</item>
-		<item>getAttribute</item>
-		<item>getAttributeNames</item>
-		<item>getAttributeNode</item>
-		<item>getAttributeNodeNS</item>
-		<item>getAttributeNS</item>
-		<item>getBoundingClientRect</item>
-		<item>getBoxQuads</item>
-		<item>getClientRects</item>
-		<item>getContext</item>
-		<item>getDestinationInsertionPoints</item>
-		<item>getElementById</item>
-		<item>getElementsByClassName</item>
-		<item>getElementsByName</item>
-		<item>getElementsByTagName</item>
-		<item>getElementsByTagNameNS</item>
-		<item>getItem</item>
-		<item>getNamedItem</item>
-		<item>getSelection</item>
-		<item>getStartDate</item>
-		<item>getVideoPlaybackQuality</item>
-		<item>has</item>
-		<item>hasAttribute</item>
-		<item>hasAttributeNS</item>
-		<item>hasAttributes</item>
-		<item>hasChildNodes</item>
-		<item>hasFeature</item>
-		<item>hasFocus</item>
-		<item>importNode</item>
-		<item>initEvent</item>
-		<item>insertAdjacentElement</item>
-		<item>insertAdjacentHTML</item>
-		<item>insertAdjacentText</item>
-		<item>insertBefore</item>
-		<item>insertCell</item>
-		<item>insertData</item>
-		<item>insertNode</item>
-		<item>insertRow</item>
-		<item>intersectsNode</item>
-		<item>isDefaultNamespace</item>
-		<item>isEqualNode</item>
-		<item>isPointInRange</item>
-		<item>isSameNode</item>
-		<item>item</item>
-		<item>key</item>
-		<item>keys</item>
-		<item>lastChild</item>
-		<item>load</item>
-		<item>lookupNamespaceURI</item>
-		<item>lookupPrefix</item>
-		<item>matches</item>
-		<item>move</item>
-		<item>moveAttribute</item>
-		<item>moveAttributeNode</item>
-		<item>moveChild</item>
-		<item>moveNamedItem</item>
-		<item>namedItem</item>
-		<item>nextNode</item>
-		<item>nextSibling</item>
-		<item>normalize</item>
-		<item>observe</item>
-		<item>open</item>
-		<item>parentNode</item>
-		<item>pause</item>
-		<item>play</item>
-		<item>postMessage</item>
-		<item>prepend</item>
-		<item>preventDefault</item>
-		<item>previousNode</item>
-		<item>previousSibling</item>
-		<item>probablySupportsContext</item>
-		<item>queryCommandEnabled</item>
-		<item>queryCommandIndeterm</item>
-		<item>queryCommandState</item>
-		<item>queryCommandSupported</item>
-		<item>queryCommandValue</item>
-		<item>querySelector</item>
-		<item>querySelectorAll</item>
-		<item>registerContentHandler</item>
-		<item>registerElement</item>
-		<item>registerProtocolHandler</item>
-		<item>releaseCapture</item>
-		<item>releaseEvents</item>
-		<item>remove</item>
-		<item>removeAttribute</item>
-		<item>removeAttributeNode</item>
-		<item>removeAttributeNS</item>
-		<item>removeChild</item>
-		<item>removeEventListener</item>
-		<item>removeItem</item>
-		<item>replace</item>
-		<item>replaceChild</item>
-		<item>replaceData</item>
-		<item>replaceWith</item>
-		<item>reportValidity</item>
-		<item>requestFullscreen</item>
-		<item>requestPointerLock</item>
-		<item>reset</item>
-		<item>scroll</item>
-		<item>scrollBy</item>
-		<item>scrollIntoView</item>
-		<item>scrollTo</item>
-		<item>seekToNextFrame</item>
-		<item>select</item>
-		<item>selectNode</item>
-		<item>selectNodeContents</item>
-		<item>set</item>
-		<item>setAttribute</item>
-		<item>setAttributeNode</item>
-		<item>setAttributeNodeNS</item>
-		<item>setAttributeNS</item>
-		<item>setCapture</item>
-		<item>setCustomValidity</item>
-		<item>setEnd</item>
-		<item>setEndAfter</item>
-		<item>setEndBefore</item>
-		<item>setItem</item>
-		<item>setNamedItem</item>
-		<item>setRangeText</item>
-		<item>setSelectionRange</item>
-		<item>setSinkId</item>
-		<item>setStart</item>
-		<item>setStartAfter</item>
-		<item>setStartBefore</item>
-		<item>slice</item>
-		<item>splitText</item>
-		<item>stepDown</item>
-		<item>stepUp</item>
-		<item>stopImmediatePropagation</item>
-		<item>stopPropagation</item>
-		<item>submit</item>
-		<item>substringData</item>
-		<item>supports</item>
-		<item>surroundContents</item>
-		<item>takeRecords</item>
-		<item>terminate</item>
-		<item>toBlob</item>
-		<item>toDataURL</item>
-		<item>toggle</item>
-		<item>toString</item>
-		<item>values</item>
-		<item>write</item>
-		<item>writeln</item>
-	</list>
-
-	<!-- Event Handler Functions -->
-	<list name="function_eventhandler">
-		<item>onRowsinserted</item>
-		<item>onRowsdelete</item>
-		<item>onRowenter</item>
-		<item>onRowexit</item>
-		<item>onResize</item>
-		<item>onResizestart</item>
-		<item>onResizeend</item>
-		<item>onReset</item>
-		<item>onReadystatechange</item>
-		<item>onMouseout</item>
-		<item>onMouseover</item>
-		<item>onMousedown</item>
-		<item>onMouseup</item>
-		<item>onMousemove</item>
-		<item>onBeforecut</item>
-		<item>onBeforedeactivate</item>
-		<item>onBeforeunload</item>
-		<item>onBeforeupdate</item>
-		<item>onBeforepaste</item>
-		<item>onBeforeprint</item>
-		<item>onBeforeeditfocus</item>
-		<item>onBeforeactivate</item>
-		<item>onBlur</item>
-		<item>onScrolltop</item>
-		<item>onSubmit</item>
-		<item>onSelect</item>
-		<item>onSelectstart</item>
-		<item>onSelectionchange</item>
-		<item>onHover</item>
-		<item>onHelp</item>
-		<item>onChange</item>
-		<item>onContextmenu</item>
-		<item>onControlselect</item>
-		<item>onCut</item>
-		<item>onCellchange</item>
-		<item>onClock</item>
-		<item>onClose</item>
-		<item>onDeactivate</item>
-		<item>onDatasetchanged</item>
-		<item>onDatasetcomplete</item>
-		<item>onDataavailable</item>
-		<item>onDrop</item>
-		<item>onDrag</item>
-		<item>onDragstart</item>
-		<item>onDragover</item>
-		<item>onDragdrop</item>
-		<item>onDragenter</item>
-		<item>onDragend</item>
-		<item>onDragleave</item>
-		<item>onDblclick</item>
-		<item>onUnload</item>
-		<item>onPaste</item>
-		<item>onPropertychange</item>
-		<item>onError</item>
-		<item>onErrorupdate</item>
-		<item>onKeydown</item>
-		<item>onKeyup</item>
-		<item>onKeypress</item>
-		<item>onFocus</item>
-		<item>onLoad</item>
-		<item>onActivate</item>
-		<item>onAfterupdate</item>
-		<item>onAfterprint</item>
-		<item>onAbort</item>
-	</list>
-	<!-- Others Methods of Classes -->
-	<list name="function_common">
-		<item>shift</item>
-		<item>showModelessDialog</item>
-		<item>showModalDialog</item>
-		<item>showHelp</item>
-		<item>scroll</item>
-		<item>scrollX</item>
-		<item>scrollByPages</item>
-		<item>scrollByLines</item>
-		<item>scrollY</item>
-		<item>scrollTo</item>
-		<item>stop</item>
-		<item>strike</item>
-		<item>sizeToContent</item>
-		<item>sidebar</item>
-		<item>signText</item>
-		<item>sort</item>
-		<item>sup</item>
-		<item>sub</item>
-		<item>substr</item>
-		<item>substring</item>
-		<item>splice</item>
-		<item>split</item>
-		<item>send</item>
-		<item>setMilliseconds</item>
-		<item>setSeconds</item>
-		<item>setMinutes</item>
-		<item>setHours</item>
-		<item>setMonth</item>
-		<item>setYear</item>
-		<item>setFullYear</item>
-		<item>setDate</item>
-		<item>setUTCMilliseconds</item>
-		<item>setUTCSeconds</item>
-		<item>setUTCMinutes</item>
-		<item>setUTCHours</item>
-		<item>setUTCMonth</item>
-		<item>setUTCFullYear</item>
-		<item>setUTCDate</item>
-		<item>setTime</item>
-		<item>setHotkeys</item>
-		<item>setCursor</item>
-		<item>setZOptions</item>
-		<item>setActive</item>
-		<item>setResizable</item>
-		<item>setRequestHeader</item>
-		<item>search</item>
-		<item>slice</item>
-		<item>savePreferences</item>
-		<item>small</item>
-		<item>home</item>
-		<item>handleEvent</item>
-		<item>navigate</item>
-		<item>char</item>
-		<item>charCodeAt</item>
-		<item>charAt</item>
-		<item>concat</item>
-		<item>contextual</item>
-		<item>confirm</item>
-		<item>compile</item>
-		<item>clear</item>
-		<item>captureEvents</item>
-		<item>call</item>
-		<item>createStyleSheet</item>
-		<item>createPopup</item>
-		<item>createEventObject</item>
-		<item>toGMTString</item>
-		<item>toUTCString</item>
-		<item>toString</item>
-		<item>toSource</item>
-		<item>toUpperCase</item>
-		<item>toLowerCase</item>
-		<item>toLocaleString</item>
-		<item>test</item>
-		<item>taint</item>
-		<item>taintEnabled</item>
-		<item>indexOf</item>
-		<item>italics</item>
-		<item>disableExternalCapture</item>
-		<item>dump</item>
-		<item>detachEvent</item>
-		<item>unshift</item>
-		<item>untaint</item>
-		<item>unwatch</item>
-		<item>updateCommands</item>
-		<item>join</item>
-		<item>javaEnabled</item>
-		<item>pop</item>
-		<item>push</item>
-		<item>plugins.refresh</item>
-		<item>paddings</item>
-		<item>parse</item>
-		<item>print</item>
-		<item>prompt</item>
-		<item>preference</item>
-		<item>enableExternalCapture</item>
-		<item>exec</item>
-		<item>execScript</item>
-		<item>valueOf</item>
-		<item>UTC</item>
-		<item>find</item>
-		<item>file</item>
-		<item>fileModifiedDate</item>
-		<item>fileSize</item>
-		<item>fileCreatedDate</item>
-		<item>fileUpdatedDate</item>
-		<item>fixed</item>
-		<item>fontsize</item>
-		<item>fontcolor</item>
-		<item>forward</item>
-		<item>fromCharCode</item>
-		<item>watch</item>
-		<item>link</item>
-		<item>load</item>
-		<item>lastIndexOf</item>
-		<item>anchor</item>
-		<item>attachEvent</item>
-		<item>atob</item>
-		<item>apply</item>
-		<item>alert</item>
-		<item>abort</item>
-		<item>routeEvents</item>
-		<item>resize</item>
-		<item>resizeBy</item>
-		<item>resizeTo</item>
-		<item>recalc</item>
-		<item>returnValue</item>
-		<item>replace</item>
-		<item>reverse</item>
-		<item>reload</item>
-		<item>releaseCapture</item>
-		<item>releaseEvents</item>
-		<item>go</item>
-		<item>getMilliseconds</item>
-		<item>getSeconds</item>
-		<item>getMinutes</item>
-		<item>getHours</item>
-		<item>getMonth</item>
-		<item>getDay</item>
-		<item>getYear</item>
-		<item>getFullYear</item>
-		<item>getTime</item>
-		<item>getDate</item>
-		<item>getTimezoneOffset</item>
-		<item>getUTCMilliseconds</item>
-		<item>getUTCSeconds</item>
-		<item>getUTCMinutes</item>
-		<item>getUTCHours</item>
-		<item>getUTCDay</item>
-		<item>getUTCMonth</item>
-		<item>getUTCFullYear</item>
-		<item>getUTCDate</item>
-		<item>getAttention</item>
-		<item>getSelection</item>
-		<item>getResponseHeader</item>
-		<item>getAllResponseHeaders</item>
-		<item>moveBy</item>
-		<item>moveBelow</item>
-		<item>moveTo</item>
-		<item>moveToAbsolute</item>
-		<item>moveAbove</item>
-		<item>mergeAttributes</item>
-		<item>match</item>
-		<item>margins</item>
-		<item>btoa</item>
-		<item>big</item>
-		<item>bold</item>
-		<item>borderWidths</item>
-		<item>blink</item>
-		<item>back</item>
-	</list>
-
-	<contexts>
-
-		<context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
-			<Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
-		</context>
-		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop!Normal" />
-
-		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-			<StringDetect context="#stay" attribute="Symbol" String="..." />
-			<IncludeRules context="FindNumbers" />
-			<IncludeRules context="FindStrings" />
-
-			<!-- Abstract -->
-			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
-			<!-- New -->
-			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=&objectPoint;\s*target\b)" />
-			<RegExpr context="MemberObject" attribute="Objects" String="\bnew(?=&objectOp;\.)" />
-			<WordDetect context="#stay" attribute="Keyword" String="new" />
-
-			<!-- Keywords: control flow -->
-			<keyword context="#stay" attribute="ControlFlow" String="controlflow" />
-			<RegExpr context="#stay" attribute="ControlFlow" String="\bdefault(?=\s*&objectOp;:)" />
-
-			<!-- NOTE & TODO: The identifiers before ":" are highlighted as "dsNormal".
-			     These identifiers should be highlighted in a different way depending on the
-			     context, for example, in the declaration of classes or interfaces, in sets, the
-			     parameters of a function, or after the keywords: "const", "var", "let" & "enum". -->
-			<RegExpr context="#stay" attribute="Parameter" String="&identifier;(?=\s*&objectOp;:)" />
-
-			<!-- Keywords -->
-			<WordDetect context="TypeDeclaration" attribute="Reserved" String="type" />
-			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
-			<keyword context="#stay" attribute="Reserved" String="reserved" />
-
-			<!-- Utility Types -->
-			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
-			<!-- Built-in Classes -->
-			<IncludeRules context="BuiltInClasses" />
-			<!-- Objects -->
-			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
-			<DetectChar context="MemberObject" char="." />
-
-			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
-			<!-- Import -->
-			<WordDetect context="Import" attribute="Module" String="import" />
-			<!-- Export types -->
-			<keyword context="ControlExport" attribute="Module" String="control_export_types" />
-			<!-- Keywords -->
-			<keyword context="#stay" attribute="Module" String="module" />
-			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
-			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
-
-			<!-- Functions -->
-			<IncludeRules context="FindFunctionName" />
-			<keyword context="#stay" attribute="Function Name" String="functions" />
-
-			<!-- Symbols & Operators -->
-			<DetectChar context="Object" attribute="Symbol" char="{" beginRegion="Brace" />
-			<DetectChar context="#stay" attribute="Symbol" char="[" beginRegion="List" />
-			<DetectChar context="NoRegExp" attribute="Symbol" char="]" endRegion="List" />
-			<!-- NOTE: Avoid highlighting identifier?: string, -->
-			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=.*&identifier;\s*\:)" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" /> <!-- Fix of conditional expression from the JavaScript highlighting -->
-
-			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
-			<DetectChar context="Types" attribute="Symbol" char=":" />
-			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
-
-			<IncludeRules context="Normal##JavaScript" />
-		</context>
-
-		<context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
-			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
-			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
-			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
-			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
-			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
-			<keyword context="#stay" attribute="Built-in Objects" String="class_builtin" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="class_dom" />
-			<keyword context="FindMemberObjectNode" attribute="Built-in Objects" String="class_node" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
-		</context>
-
-		<!-- Highlight keywords before ":" in conditional expressions. -->
-		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop" attribute="Symbol" char=":" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" />
-
-			<!-- Keywords -->
-			<WordDetect context="#stay" attribute="Reserved" String="type" />
-			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
-			<keyword context="#stay" attribute="Reserved" String="reserved" />
-			<!-- Utility Types -->
-			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
-			<!-- Built-in Classes -->
-			<IncludeRules context="BuiltInClasses" />
-			<!-- Import -->
-			<WordDetect context="#stay" attribute="Module" String="import" />
-			<!-- Export types -->
-			<keyword context="#stay" attribute="Module" String="control_export_types" />
-			<!-- Keywords -->
-			<keyword context="#stay" attribute="Module" String="module" />
-			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
-			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
-
-			<!-- NOTE: The identifiers before ":" should be highlighted as "Normal Text".
-			     However, currently, the "Parameter" attribute is equivalent to "Normal Text". -->
-			<!-- <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*&objectOp;:)" /> -->
-			<IncludeRules context="Normal" />
-		</context>
-
-		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
-			<keyword context="NoRegExp" attribute="Keyword" String="keywords" />
-			<!-- Highlight types in the following line.
-			     NOTE: Using the "NoRegExp" context can cause this to apply to multiple lines. -->
-			<RegExpr context="TypesNewLine" attribute="Symbol" String=":(?=&endLine;)" minimal="true" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<context name="NoRegExp" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="NoRegExp##JavaScript" />
-		</context>
-		<context name="NoRegExpSameLine" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="NoRegExp##JavaScript" />
-		</context>
-
-		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
-			<!-- Avoid highlighting numbers of JavaScript -->
-			<RegExpr context="NoRegExp" String="\b(?:[1-9]|0\d)\d*" />
-		</context>
-
-		<context name="FindFunctionName" attribute="Normal Text" lineEndContext="#stay">
-			<!-- function(...) and function<...>(...) -->
-			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()" />
-		</context>
-
-		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="Template" attribute="Template" char="`" />
-			<IncludeRules context="FindStrings##JavaScript" />
-		</context>
-		<context name="Template" attribute="Template" lineEndContext="#stay">
-			<IncludeRules context="Escape##JavaScript" />
-			<Detect2Chars context="Substitution" attribute="Substitution" char="$" char1="{" />
-			<DetectChar context="#pop" attribute="Template" char="`" />
-		</context>
-		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Substitution" char="}" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<!-- Type Declaration: Highlight types after the "type" keyword -->
-
-		<context name="TypeDeclaration" attribute="Normal Text" lineEndContext="#stay">
-			<DetectSpaces />
-			<AnyChar context="#pop" String=";,{})]" lookAhead="true" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<!-- Type Parameter: Highlight types after ":" -->
-
-		<context name="Types" attribute="Normal Text" lineEndContext="#pop">
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesCommon" />
-		</context>
-		<context name="TypesCommon" attribute="Normal Text" lineEndContext="#pop">
-			<DetectSpaces />
-			<IncludeRules context="TypesEnd" />
-			<!-- New line after "|" or "&".
-			     IMPORTANT: If you modify this rule, do so in "typescript-react.xml"! -->
-			<RegExpr context="#pop!TypesNewLine" attribute="Symbol" String="[\|&amp;](?=&endLine;)" minimal="true" />
-
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<!-- NOTE: Context used by "typescript-react.xml" -->
-		<context name="TypesEnd" attribute="Normal Text" lineEndContext="#stay">
-			<AnyChar context="#pop" String=";,})]" lookAhead="true" />
-			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" />
-			<Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
-		</context>
-		<context name="TypesNewLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!TypesCommon">
-			<DetectSpaces />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- NOTE: The "NoRegExp" context invalidates lineEndContext="#pop",
-		     therefore the following rule is necessary -->
-		<context name="FixPopLineEndContext" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop" String="\S" firstNonSpace="true" lookAhead="true" />
-		</context>
-
-		<!-- Default: Type Parameter, Type Declaration, Angle Brackets -->
-
-		<context name="DefaultTypes" attribute="Normal Text" lineEndContext="#stay">
-			<!-- Types Keywords -->
-			<keyword context="NoRegExpSameLine" attribute="Types" String="types" />
-			<!-- Assertions -->
-			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="asserts" />
-			<!-- Type Guards -->
-			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="is" />
-
-			<!-- FIXME: For a strange reason, the keywords before "}" are not highlighted.
-			     This rule fixes it provisionally. -->
-			<RegExpr context="#stay" attribute="Types" String="\b(?:string|number|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" />
-
-			<!-- Don't start this context again -->
-			<AnyChar context="#stay" attribute="Symbol" String="?:" />
-			<WordDetect context="#stay" attribute="Module" String="as" />
-		</context>
-		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="TypesSquareBracket" attribute="Symbol" char="[" beginRegion="List" />
-			<DetectChar context="TypesCurlyBracket" attribute="Symbol" char="{" beginRegion="Brace" />
-			<DetectChar context="TypesRoundBracket" char="(" />
-		</context>
-
-		<context name="TypesSquareBracket" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop!NoRegExp" attribute="Symbol" char="]" endRegion="List" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="TypesCurlyBracket" attribute="Normal Text" lineEndContext="#pop!Object">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
-			<RegExpr context="#pop!Object" String="\S" firstNonSpace="true" lookAhead="true" /> <!-- FixPopLineEndContext -->
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Object" />
-		</context>
-		<context name="TypesRoundBracket" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop!NoRegExp" char=")" />
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<context name="TypesAngleBracket" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop" attribute="Symbol" char="&gt;" />
-			<IncludeRules context="TypesAngleBracketEnd" />
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<!-- NOTE: Context used by "typescript-react.xml" -->
-		<context name="TypesAngleBracketEnd" attribute="Normal Text" lineEndContext="#stay">
-			<AnyChar context="#pop" String="})];" lookAhead="true" />
-		</context>
-
-		<!-- new.target -->
-		<context name="NewTarget" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<DetectSpaces />
-			<AnyChar context="#stay" attribute="Symbol" String=".?!" />
-			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="target" />
-		</context>
-
-		<!-- After keyword list "control_export_types" -->
-		<context name="ControlExport" attribute="Normal Text" lineEndContext="#pop">
-			<AnyChar context="#pop" attribute="Normal Text" String="{;" lookAhead="true" />
-			<IncludeRules context="FindStrings" />
-			<RegExpr context="#stay" attribute="Types" String="&identifier;" />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- "import" keyword -->
-		<context name="Import" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop!ImportRequireKey" attribute="Symbol" char="=" />
-			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> <!-- importmeta_property -->
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="ImportRequireKey" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<RegExpr context="#stay" attribute="Keyword" String="\s*require\s*(?=\()" />
-			<DetectChar context="ImportRequire" attribute="Symbol" char="(" beginRegion="import" />
-		</context>
-		<context name="ImportRequire" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop#pop" attribute="Symbol" char=")" endRegion="import" />
-			<IncludeRules context="FindStrings" />
-			<IncludeRules context="FindNumbers" />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- Member Objects -->
-
-		<context name="MemberObject" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="DefaultMemberObject" />
-			<!-- Common functions -->
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_eventhandler" />
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
-		</context>
-
-		<context name="DefaultMemberObject" attribute="Normal Text" lineEndContext="#pop">
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#stay" attribute="Symbol" char="." />
-			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#stay" attribute="Symbol" char="!" char1="." />
-
-			<RegExpr context="#stay" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
-			<IncludeRules context="FindFunctionName" /> <!-- #pop -->
-			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
-			<IncludeRules context="NoRegExp" />
-			<DetectSpaces />
-
-			<!-- Generic functions, variables y properties -->
-			<keyword context="#pop!NoRegExp" attribute="Object Member" String="variable_property" />
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
-		</context>
-		<context name="FixPointMemberObject" attribute="Normal Text" lineEndContext="#pop">
-			<StringDetect context="#pop" attribute="Symbol" String="?..." />
-			<StringDetect context="#pop" attribute="Symbol" String="!..." />
-			<StringDetect context="#pop" attribute="Symbol" String="..." />
-		</context>
-
-		<!-- Built-in Classes -->
-
-		<!-- DOM Classes -->
-		<context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="dom_functions" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="dom_property" />
-			<IncludeRules context="DefaultMemberObject" />
-			<keyword context="#pop!NoRegExp" attribute="Object Member" String="dom_variable" />
-		</context>
-		<!-- Node.js Classes -->
-		<context name="FindMemberObjectNode" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectNode" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectNode" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectNode" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectNode" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="DefaultMemberObject" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="node_object" />
-		</context>
-		<!-- Math Class -->
-		<context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Constant" String="math_property_constants" />
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Promise Class -->
-		<context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- JSON Class -->
-		<context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Console Object -->
-		<context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Process Object -->
-		<context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-
-	</contexts>
-
-	<itemDatas>
-		<itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
-		<itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
-		<itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
-		<itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
-		<itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
-		<itemData name="Objects"          defStyleNum="dsVariable" spellChecking="false" />
-		<itemData name="Object Member"    defStyleNum="dsAttribute" spellChecking="false" />
-		<itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
-		<itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
-		<itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
-		<itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
+	<!ENTITY identifier   "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+	<!ENTITY numSuffix    "(?=n?(?:[^\w]|$))">
+	<!ENTITY objectOp     "[\?!]?">
+	<!ENTITY objectPoint  "\s*&objectOp;\.">
+	<!ENTITY endLine      "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">
+	<!ENTITY utilityTypes "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)">
+	<!-- function<...>( or function( -->
+	<!ENTITY functionSuffix "(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()">
+]>
+
+<!--
+    ====================================================================
+
+      This file is part of the KDE's KSyntaxHighlighting framework.
+
+      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)
+
+      This Source Code Form is subject to the terms of the MIT License.
+      If a copy of the license was not distributed with this file,
+      You can obtain one at: https://opensource.org/licenses/MIT
+
+    ====================================================================
+
+    This file is an extension of the JavaScript highlighter
+    (javascript.xml, Version 14 and higher).
+    Based on the TypeScript grammar files,
+    available at: https://github.com/Microsoft/TypeScript-TmLanguage
+
+    NOTE: TypeScript directives are highlighted by "doxygen.xml",
+    included in the JavaScript highlighter.
+    Ex:
+      /// <reference no-default-lib="true"/>
+
+      Tags: reference, amd-dependency, amd-module
+      Attributes: path, types, no-default-lib, name
+
+    Change log:
+     * v8 [2019-12-12]: Add "bigint" primitive type.
+     * v7 [2019-11-20]: Move keywords of built-in object to "javascript.xml" and adapt.
+     * v6 [2019-10-01]: Add "asserts" keyword in type predicates.
+                        Highlight types after the "as" keyword.
+     * v5 [2019-08-30]: Avoid that ?: be used as conditional expressions.
+     * v4 [2019-07-16]: Fixed highlighting of keywords before ":" in conditional expressions.
+     * v3 [2019-02-18]: Add support to bigint and the "is" keyword.
+                        Fixes keyword delimiters. Don't highlight regex
+                        after "]" and ")". Multiple fixes and improvements.
+     * v2 [2018-12-29]: Don't highlight built-in classes as functions,
+                        fix float-points, improve types detection and other fixes.
+     * v1 [2018-11-18]: Initial version
+-->
+
+<language name="TypeScript"
+          version="8"
+          kateversion="5.53"
+          section="Scripts"
+          extensions="*.ts"
+          priority="9"
+          mimetype="text/typescript;application/typescript;text/x-typescript;application/x-typescript"
+          indenter="cstyle"
+          author="Nibaldo González (nibgonz@gmail.com)"
+          license="MIT">
+
+<highlighting>
+
+	<!-- Include all JavaScript keywords! -->
+	<list name="controlflow">
+		<include>controlflow##JavaScript</include>
+		<item>goto</item>
+	</list>
+	<list name="keywords">
+		<include>keywords##JavaScript</include>
+		<item>declare</item> <!-- storage.modifier.ts -->
+	</list>
+	<list name="reserved">
+		<include>reserved##JavaScript</include>
+		<item>type</item>
+		<item>arguments</item>
+		<!-- Class -->
+		<item>readonly</item>
+		<item>abstract</item>
+		<item>constructor</item>
+		<item>get</item>
+		<item>set</item>
+		<!-- Also:
+		     public, protected, private, async, super, new, static -->
+	</list>
+	<list name="module">
+		<include>module##JavaScript</include>
+	</list>
+	<list name="primitives">
+		<include>primitives##JavaScript</include>
+		<!-- Types Built-in -->
+		<item>object</item>
+		<!-- Also:
+		     this, true, false, undefined, null -->
+	</list>
+
+	<list name="control_export_types">
+		<!-- storage.type.namespace.ts -->
+		<item>namespace</item>
+		<item>module</item>
+	</list>
+	<list name="types_operator_expression">
+		<item>keyof</item>
+		<item>infer</item>
+		<!-- Also: is, typeof -->
+	</list>
+	<!-- Datatypes & Primitive Types -->
+	<list name="types">
+		<item>string</item>
+		<item>number</item>
+		<item>bigint</item>
+		<item>boolean</item>
+		<item>symbol</item>
+		<item>any</item>
+		<item>void</item>
+		<item>never</item>
+		<item>unknown</item>
+
+		<item>undefined</item>
+		<item>null</item>
+		<item>object</item>
+	</list>
+
+	<!-- Built-in Classes, Functions & Constants -->
+
+	<list name="class_builtin">
+		<include>class_builtin##JavaScript</include>
+	</list>
+	<!-- DOM Classes -->
+	<list name="class_dom">
+		<include>class_dom##JavaScript</include>
+	</list>
+	<!-- Node.js Classes -->
+	<list name="class_node">
+		<include>class_node##JavaScript</include>
+	</list>
+
+	<!-- General Properties of Classes -->
+	<list name="variable_property">
+		<include>variable_property##JavaScript</include>
+	</list>
+	<!-- General Built-in Functions -->
+	<list name="functions">
+		<include>functions##JavaScript</include>
+	</list>
+
+	<!-- Functions of "console" -->
+	<list name="console_functions">
+		<include>console_functions##JavaScript</include>
+	</list>
+	<!-- Properties of "process" -->
+	<list name="process_property">
+		<include>process_property##JavaScript</include>
+	</list>
+	<!-- Functions of "process" -->
+	<list name="process_functions">
+		<include>process_functions##JavaScript</include>
+	</list>
+
+	<!-- Constants of Number Class -->
+	<list name="number_constant">
+		<include>number_constant##JavaScript</include>
+	</list>
+	<!-- Constants of Math Class-->
+	<list name="math_constant">
+		<include>math_constant##JavaScript</include>
+	</list>
+	<!-- Methods of Math Class -->
+	<list name="math_functions">
+		<include>math_functions##JavaScript</include>
+	</list>
+	<!-- Methods of JSON Class -->
+	<list name="json_functions">
+		<include>json_functions##JavaScript</include>
+	</list>
+	<!-- Methods of Promise Class -->
+	<list name="promise_functions">
+		<include>promise_functions##JavaScript</include>
+	</list>
+
+	<!-- Node.js Variables -->
+	<list name="node_variable">
+		<include>node_variable##JavaScript</include>
+	</list>
+	<!-- DOM Variables -->
+	<list name="dom_variable">
+		<include>dom_variable##JavaScript</include>
+	</list>
+	<!-- DOM Constants -->
+	<list name="dom_constant">
+		<include>dom_constant##JavaScript</include>
+	</list>
+
+	<!-- For Autocomplete Keywords -->
+	<!-- Properties of DOM Classes -->
+	<list name="dom_property">
+		<include>dom_property##JavaScript</include>
+	</list>
+	<!-- Methods of DOM Classes -->
+	<list name="dom_functions">
+		<include>dom_functions##JavaScript</include>
+	</list>
+	<!-- Event Handler -->
+	<list name="eventhandler_property">
+		<include>eventhandler_property##JavaScript</include>
+	</list>
+	<!-- Others Methods of Classes -->
+	<list name="function_common">
+		<include>function_common##JavaScript</include>
+	</list>
+
+	<contexts>
+
+		<context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+			<Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
+		</context>
+		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop!Normal" />
+
+		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+			<StringDetect context="#stay" attribute="Symbol" String="..." />
+			<IncludeRules context="FindNumbers" />
+			<IncludeRules context="FindStrings" />
+
+			<!-- Abstract -->
+			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
+			<!-- New -->
+			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=&objectPoint;\s*target\b)" />
+			<RegExpr context="MemberObject" attribute="Objects" String="\bnew(?=&objectOp;\.)" />
+			<WordDetect context="#stay" attribute="Keyword" String="new" />
+
+			<!-- Keywords: control flow -->
+			<keyword context="#stay" attribute="ControlFlow" String="controlflow" />
+			<RegExpr context="#stay" attribute="ControlFlow" String="\bdefault(?=\s*&objectOp;:)" />
+
+			<!-- NOTE & TODO: The identifiers before ":" are highlighted as "dsNormal".
+			     These identifiers should be highlighted in a different way depending on the
+			     context, for example, in the declaration of classes or interfaces, in sets, the
+			     parameters of a function, or after the keywords: "const", "var", "let" & "enum". -->
+			<RegExpr context="#stay" attribute="Parameter" String="&identifier;(?=\s*&objectOp;:)" />
+
+			<!-- Keywords -->
+			<WordDetect context="TypeDeclaration" attribute="Reserved" String="type" />
+			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />
+			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
+			<keyword context="#stay" attribute="Reserved" String="reserved" />
+
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
+			<!-- Built-in Classes -->
+			<IncludeRules context="BuiltInClasses" />
+			<IncludeRules context="BuiltInConstants" />
+			<!-- Objects -->
+			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
+			<DetectChar context="MemberObject" attribute="Symbol" char="." />
+
+			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
+			<!-- Import -->
+			<WordDetect context="Import" attribute="Module" String="import" />
+			<!-- Export types -->
+			<keyword context="ControlExport" attribute="Module" String="control_export_types" />
+			<!-- Keywords -->
+			<keyword context="#stay" attribute="Module" String="module" />
+			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
+			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
+
+			<!-- Functions: function(...) and function<...>(...) -->
+			<RegExpr context="Function" attribute="Function Name" String="(&identifier;)&functionSuffix;" lookAhead="true" />
+
+			<!-- Symbols & Operators -->
+			<!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
+			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<!-- NOTE: Avoid highlighting identifier?: string, -->
+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=.*&identifier;\s*\:)" />
+
+			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
+			<DetectChar context="Types" attribute="Symbol" char=":" />
+			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
+
+			<IncludeRules context="JSBase##JavaScript" />
+		</context>
+
+		<!-- Highlight keywords before ":" in conditional expressions. -->
+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char=":" />
+			<DetectChar context="#stay" attribute="Symbol" char="?" />
+
+			<!-- Keywords -->
+			<WordDetect context="#stay" attribute="Reserved" String="type" />
+			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />
+			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
+			<keyword context="#stay" attribute="Reserved" String="reserved" />
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
+			<!-- Built-in Classes -->
+			<IncludeRules context="BuiltInClasses" />
+			<IncludeRules context="BuiltInConstants" />
+			<!-- Import -->
+			<WordDetect context="#stay" attribute="Module" String="import" />
+			<!-- Export types -->
+			<keyword context="#stay" attribute="Module" String="control_export_types" />
+			<!-- Keywords -->
+			<keyword context="#stay" attribute="Module" String="module" />
+			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
+			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
+
+			<!-- NOTE: The identifiers before ":" should be highlighted as "Normal Text".
+			     However, currently, the "Parameter" attribute is equivalent to "Normal Text". -->
+			<!-- <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*&objectOp;:)" /> -->
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Object, within { ... } -->
+		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<keyword context="NoRegExp" attribute="Keyword" String="keywords" />
+			<!-- Highlight types in the following line.
+			     NOTE: Using the "NoRegExp" context can cause this to apply to multiple lines. -->
+			<RegExpr context="TypesNewLine" attribute="Symbol" String=":(?=&endLine;)" minimal="true" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Avoid highlighting regular expressions. -->
+		<context name="NoRegExp" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="NoRegExp##JavaScript" />
+		</context>
+		<!-- Avoid highlighting regular expressions on a single line. -->
+		<context name="NoRegExpSameLine" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="NoRegExp##JavaScript" />
+		</context>
+
+		<!-- Numbers -->
+		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
+		</context>
+
+		<!-- Function Name -->
+		<context name="Function" attribute="Normal Text" lineEndContext="#pop">
+			<keyword context="#pop" attribute="Function (Built-in)" String="functions" />
+			<StringDetect context="#pop" attribute="Function Name" String="%1" dynamic="true" />
+			<AnyChar context="#pop" String="(&lt;&gt;" lookAhead="true" />
+		</context>
+		<context name="FunctionDeclaration" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<RegExpr context="#pop" attribute="Function Declaration" String="&identifier;&functionSuffix;" /> <!-- NoRegExp -->
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- Strings -->
+		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="Template" attribute="Template" char="`" />
+			<IncludeRules context="FindStrings##JavaScript" />
+		</context>
+		<context name="Template" attribute="Template" lineEndContext="#stay">
+			<IncludeRules context="Escape##JavaScript" />
+			<Detect2Chars context="Substitution" attribute="Substitution" char="$" char1="{" />
+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />
+		</context>
+		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Substitution" char="}" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Type Declaration: Highlight types after the "type" keyword -->
+
+		<context name="TypeDeclaration" attribute="Normal Text" lineEndContext="#stay">
+			<DetectSpaces />
+			<AnyChar context="#pop" String=";,{})]" lookAhead="true" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Type Parameter: Highlight types after ":" -->
+
+		<context name="Types" attribute="Normal Text" lineEndContext="#pop">
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesCommon" />
+		</context>
+		<context name="TypesCommon" attribute="Normal Text" lineEndContext="#pop">
+			<DetectSpaces />
+			<IncludeRules context="TypesEnd" />
+			<!-- New line after "|" or "&".
+			     IMPORTANT: If you modify this rule, do so in "typescript-react.xml"! -->
+			<RegExpr context="#pop!TypesNewLine" attribute="Symbol" String="[\|&amp;](?=&endLine;)" minimal="true" />
+
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<!-- NOTE: Context used by "typescript-react.xml" -->
+		<context name="TypesEnd" attribute="Normal Text" lineEndContext="#stay">
+			<AnyChar context="#pop" String=";,})]" lookAhead="true" />
+			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" />
+			<Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
+		</context>
+		<context name="TypesNewLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!TypesCommon">
+			<DetectSpaces />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- NOTE: The "NoRegExp" context invalidates lineEndContext="#pop",
+		     therefore the following rule is necessary -->
+		<context name="FixPopLineEndContext" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop" String="\S" firstNonSpace="true" lookAhead="true" />
+		</context>
+
+		<!-- Default: Type Parameter, Type Declaration, Angle Brackets -->
+
+		<context name="DefaultTypes" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Types Keywords -->
+			<keyword context="NoRegExpSameLine" attribute="Types" String="types" />
+			<!-- Assertions -->
+			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="asserts" />
+			<!-- Type Guards -->
+			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="is" />
+
+			<!-- FIXME: For a strange reason, the keywords before "}" are not highlighted.
+			     This rule fixes it provisionally. -->
+			<RegExpr context="#stay" attribute="Types" String="\b(?:string|number|bigint|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" />
+
+			<!-- Don't start this context again -->
+			<AnyChar context="#stay" attribute="Symbol" String="?:" />
+			<WordDetect context="#stay" attribute="Module" String="as" />
+		</context>
+		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="TypesSquareBracket" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="TypesCurlyBracket" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="TypesRoundBracket" attribute="Normal Text" char="(" />
+		</context>
+
+		<context name="TypesSquareBracket" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<context name="TypesCurlyBracket" attribute="Normal Text" lineEndContext="#pop!Object">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<RegExpr context="#pop!Object" String="\S" firstNonSpace="true" lookAhead="true" /> <!-- FixPopLineEndContext -->
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Object" />
+		</context>
+		<context name="TypesRoundBracket" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop!NoRegExp" attribute="Normal Text" char=")" />
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<context name="TypesAngleBracket" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char="&gt;" />
+			<IncludeRules context="TypesAngleBracketEnd" />
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<!-- NOTE: Context used by "typescript-react.xml" -->
+		<context name="TypesAngleBracketEnd" attribute="Normal Text" lineEndContext="#stay">
+			<AnyChar context="#pop" String="})];" lookAhead="true" />
+		</context>
+
+		<!-- new.target -->
+		<context name="NewTarget" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<AnyChar context="#stay" attribute="Symbol" String=".?!" />
+			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="target" />
+		</context>
+
+		<!-- After keyword list "control_export_types" -->
+		<context name="ControlExport" attribute="Normal Text" lineEndContext="#pop">
+			<AnyChar context="#pop" attribute="Normal Text" String="{;" lookAhead="true" />
+			<IncludeRules context="FindStrings" />
+			<RegExpr context="#stay" attribute="Types" String="&identifier;" />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- "import" keyword -->
+		<context name="Import" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop!ImportRequireKey" attribute="Symbol" char="=" />
+			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> <!-- importmeta_property -->
+			<!-- Fix context NoRegExp (#pop in new line) -->
+			<RegExpr context="#pop" String="." lookAhead="true" firstNonSpace="true" />
+			<AnyChar context="#pop" String="{}()[];," lookAhead="true" />
+			<IncludeRules context="Normal" />
+		</context>
+		<context name="ImportRequireKey" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<RegExpr context="#stay" attribute="Keyword" String="\s*require\s*(?=\()" />
+			<DetectChar context="ImportRequire" attribute="Normal Text" char="(" beginRegion="import" />
+		</context>
+		<context name="ImportRequire" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop#pop" attribute="Normal Text" char=")" endRegion="import" />
+			<IncludeRules context="FindStrings" />
+			<IncludeRules context="FindNumbers" />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- Member Objects -->
+
+		<context name="MemberObject" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="DefaultMemberObject" />
+			<!-- Common functions and properties, only for autocomplete keywords -->
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="dom_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="dom_functions" />
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+		</context>
+
+		<context name="DefaultMemberObject" attribute="Normal Text" lineEndContext="#pop">
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#stay" attribute="Symbol" char="." />
+			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#stay" attribute="Symbol" char="!" char1="." />
+
+			<!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. -->
+			<!-- function(...) and function<...>(...) -->
+			<RegExpr context="#pop" attribute="Function Name" String="&identifier;&functionSuffix;" />
+			<!-- Generic constants and properties -->
+			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="variable_property" />
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
+
+			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" />
+			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
+			<IncludeRules context="NoRegExp" />
+			<DetectSpaces />
+
+			<!-- Generic functions -->
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
+		</context>
+		<context name="FixPointMemberObject" attribute="Normal Text" lineEndContext="#pop">
+			<StringDetect context="#pop" attribute="Symbol" String="?..." />
+			<StringDetect context="#pop" attribute="Symbol" String="!..." />
+			<StringDetect context="#pop" attribute="Symbol" String="..." />
+		</context>
+
+
+		<!-- Built-in Classes -->
+		<!-- Keep in sync with javascript.xml -->
+
+		<context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
+			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
+			<WordDetect context="FindMemberObjectNumber" attribute="Built-in Objects" String="Number" />
+			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
+			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
+			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
+			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
+
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_builtin" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_dom" />
+			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_node" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="node_variable" />
+		</context>
+		<!-- These constants are highlighted in "Normal" -->
+		<context name="BuiltInConstants" attribute="Normal Text" lineEndContext="#stay">
+			<keyword context="NoRegExp" attribute="Constant" String="math_constant" />
+			<keyword context="NoRegExp" attribute="Constant" String="number_constant" />
+			<keyword context="NoRegExp" attribute="Constant" String="dom_constant" />
+		</context>
+
+		<!-- DOM Variable -->
+		<context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!FindMemberObjectDOM" attribute="Object Property (Built-in)" String="dom_property" />
+			<keyword context="#pop!FindMemberObjectDOM" attribute="Object Method (Built-in)" String="dom_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+			<!-- Only for autocomplete -->
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+		</context>
+		<!-- Math Class -->
+		<context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="math_constant" />
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Number Class -->
+		<context name="FindMemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectNumber" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectNumber" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectNumber" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="number_constant" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Promise Class -->
+		<context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- JSON Class -->
+		<context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Console Object -->
+		<context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Process Object -->
+		<context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
+			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+
+	</contexts>
+
+	<itemDatas>
+		<itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
+		<itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
+		<itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
+		<itemData name="Objects"          defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Object Member"    defStyleNum="dsAttribute" spellChecking="false" />
+		<itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
+		<itemData name="Function Declaration" defStyleNum="dsFunction" spellChecking="false" />
+		<itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
+		<itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
+		<itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
+		<itemData name="Function (Built-in)" defStyleNum="dsPreprocessor" spellChecking="false" />
 		<itemData name="Constant"         defStyleNum="dsConstant" spellChecking="false" />
 		<itemData name="Types"            defStyleNum="dsDataType" spellChecking="false" />
 		<itemData name="Parameter"        defStyleNum="dsNormal" spellChecking="false" />
