{"tests": [ {"description":"", "input":"", "output":["ParseError",["DOCTYPE", null, null, null, false]]}, {"description":"", "input":"", "output":[["DOCTYPE", "h", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "H", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "ht", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "Ht", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hT", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hT", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "htm", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "Htm", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "hTM", null, null, true]]}, {"description":"", "input":"", "output":[["DOCTYPE", "html5", null, null, true]]}, {"description":"PUBLIC\u0022\u0022", "input":"", "output":[["DOCTYPE", "html", "", null, true]]}, {"description":"PUBLIC''", "input":"", "output":[["DOCTYPE", "html", "", null, true]]}, {"description":"PUBLICbogus", "input":"", "output":["ParseError",["DOCTYPE", "html", null, null, false]]}, {"description":"PUBLIC bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", null, null, false]]}, {"description":"PUBLIC \u0022\u0022bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", null, false]]}, {"description":"PUBLIC \u0022\u0022 bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", null, false]]}, {"description":"PUBLIC \u0022\u0022 \u0022\u0022bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", "", false]]}, {"description":"PUBLIC \u0022\u0022 \u0022\u0022 bogus", "input":"", "output":["ParseError",["DOCTYPE", "html", "", "", false]]}, {"description":"PUBLIC \u0022\u0022\u0022\u0022>", "input":"", "output":[["DOCTYPE", "html", "", "", true]]}, {"description":"PUBLIC \u0022\u0022''>", "input":"", "output":[["DOCTYPE", "html", "", "", true]]}, {"description":"non-PCDATA content model flag, start tag-like string", "contentModelFlags":["PLAINTEXT","RCDATA","CDATA"], "input":"
", "output":[["Character", "
"]]}, {"description":"end tag followed by character data", "contentModelFlags":["RCDATA","CDATA"], "lastStartTag":"xxx", "input":"ABCD", "output":[["Character", "AB"],["EndTag", "xxx"],["Character", "CD"]]}, {"description":"c1 character references", "input":"€‚ƒ„…†‡", "output":[ "ParseError", ["Character", "\u20AC"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u201A"], "ParseError", ["Character", "\u0192"], "ParseError", ["Character", "\u201E"], "ParseError", ["Character", "\u2026"], "ParseError", ["Character", "\u2020"], "ParseError", ["Character", "\u2021"] ]}, {"description":"c1 character references", "input":"ˆ‰Š‹ŒŽ", "output":[ "ParseError", ["Character", "\u02C6"], "ParseError", ["Character", "\u2030"], "ParseError", ["Character", "\u0160"], "ParseError", ["Character", "\u2039"], "ParseError", ["Character", "\u0152"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017D"], "ParseError", ["Character", "\uFFFD"] ]}, {"description":"c1 character references", "input":"‘’“”•–—", "output":[ "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u2018"], "ParseError", ["Character", "\u2019"], "ParseError", ["Character", "\u201C"], "ParseError", ["Character", "\u201D"], "ParseError", ["Character", "\u2022"], "ParseError", ["Character", "\u2013"], "ParseError", ["Character", "\u2014"] ]}, {"description":"c1 character references", "input":"˜™š›œžŸ", "output":[ "ParseError", ["Character", "\u02DC"], "ParseError", ["Character", "\u2122"], "ParseError", ["Character", "\u0161"], "ParseError", ["Character", "\u203A"], "ParseError", ["Character", "\u0153"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017E"], "ParseError", ["Character", "\u0178"] ]}, {"description":"c1 character references", "input":"€‚ƒ„…†‡", "output":[ "ParseError", ["Character", "\u20AC"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u201A"], "ParseError", ["Character", "\u0192"], "ParseError", ["Character", "\u201E"], "ParseError", ["Character", "\u2026"], "ParseError", ["Character", "\u2020"], "ParseError", ["Character", "\u2021"] ]}, {"description":"c1 character references", "input":"ˆ‰Š‹ŒŽ", "output":[ "ParseError", ["Character", "\u02C6"], "ParseError", ["Character", "\u2030"], "ParseError", ["Character", "\u0160"], "ParseError", ["Character", "\u2039"], "ParseError", ["Character", "\u0152"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017D"], "ParseError", ["Character", "\uFFFD"] ]}, {"description":"c1 character references", "input":"‘’“”•–—", "output":[ "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u2018"], "ParseError", ["Character", "\u2019"], "ParseError", ["Character", "\u201C"], "ParseError", ["Character", "\u201D"], "ParseError", ["Character", "\u2022"], "ParseError", ["Character", "\u2013"], "ParseError", ["Character", "\u2014"] ]}, {"description":"c1 character references", "input":"˜™š›œžŸ", "output":[ "ParseError", ["Character", "\u02DC"], "ParseError", ["Character", "\u2122"], "ParseError", ["Character", "\u0161"], "ParseError", ["Character", "\u203A"], "ParseError", ["Character", "\u0153"], "ParseError", ["Character", "\uFFFD"], "ParseError", ["Character", "\u017E"], "ParseError", ["Character", "\u0178"] ]}, {"description":"NULL character", "input":"\u0000", "output":["ParseError",["Character", "\uFFFD"]]}, {"description":"™", "input":"™", "output":[["Character", "\u2122"]]}, {"description":"⟨", "input":"⟨", "output":[["Character", "\u3008"]]}, {"description":"⟩", "input":"⟩", "output":[["Character", "\u3009"]]}, {"description":"&;", "input":"&;", "output":[["Character", "&;"]]}, {"description":"cdata end tag containing <", "contentModelFlags":["RCDATA","CDATA"], "lastStartTag":"xxx", "input":"", "output":[["Character", "", "output":[["StartTag", "p", "output":[["StartTag", "p", {"", "output":[["StartTag", "p", {"align", "output":[["StartTag", "p", {"align":"","", "output":[["StartTag", "p", {"align":"", "output":[["StartTag", "p", {"align":"left