{
    "tests": [
        {
            "fragmentContext": null,
            "description": "<a><p></a></p>",
            "input": "<a><p></a></p>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "EndTag",
                    "p"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a>1<p>2</a>3</p>",
            "input": "<a>1<p>2</a>3</p>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "p"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a>1<button>2</a>3</button>",
            "input": "<a>1<button>2</a>3</button>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "button",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "button"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a>1<b>2</a>3</b>",
            "input": "<a>1<b>2</a>3</b>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "b"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a>1<div>2<div>3</a>4</div>5</div>",
            "input": "<a>1<div>2<div>3</a>4</div>5</div>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "4"
                ],
                [
                    "EndTag",
                    "div"
                ],
                [
                    "Character",
                    "5"
                ],
                [
                    "EndTag",
                    "div"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<table><a>1<p>2</a>3</p>",
            "input": "<table><a>1<p>2</a>3</p>",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "p"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<b><b><a><p></a>",
            "input": "<b><b><a><p></a>",
            "output": [
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<b><a><b><p></a>",
            "input": "<b><a><b><p></a>",
            "output": [
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a><b><b><p></a>",
            "input": "<a><b><b><p></a>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<p>1<s id=\"A\">2<b id=\"B\">3</p>4</s>5</b>",
            "input": "<p>1<s id=\"A\">2<b id=\"B\">3</p>4</s>5</b>",
            "output": [
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "s",
                    {
                        "id": "A"
                    }
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "StartTag",
                    "b",
                    {
                        "id": "B"
                    }
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "4"
                ],
                [
                    "EndTag",
                    "s"
                ],
                [
                    "Character",
                    "5"
                ],
                [
                    "EndTag",
                    "b"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<table><a>1<td>2</td>3</table>",
            "input": "<table><a>1<td>2</td>3</table>",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "Character",
                    "1"
                ],
                [
                    "StartTag",
                    "td",
                    {}
                ],
                [
                    "Character",
                    "2"
                ],
                [
                    "EndTag",
                    "td"
                ],
                [
                    "Character",
                    "3"
                ],
                [
                    "EndTag",
                    "table"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<table>A<td>B</td>C</table>",
            "input": "<table>A<td>B</td>C</table>",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "Character",
                    "A"
                ],
                [
                    "StartTag",
                    "td",
                    {}
                ],
                [
                    "Character",
                    "B"
                ],
                [
                    "EndTag",
                    "td"
                ],
                [
                    "Character",
                    "C"
                ],
                [
                    "EndTag",
                    "table"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<a><svg><tr><input></a>",
            "input": "<a><svg><tr><input></a>",
            "output": [
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "svg",
                    {}
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "StartTag",
                    "input",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<div><a><b><div><div><div><div><div><div><div><div><div><div></a>",
            "input": "<div><a><b><div><div><div><div><div><div><div><div><div><div></a>",
            "output": [
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<div><a><b><u><i><code><div></a>",
            "input": "<div><a><b><u><i><code><div></a>",
            "output": [
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "u",
                    {}
                ],
                [
                    "StartTag",
                    "i",
                    {}
                ],
                [
                    "StartTag",
                    "code",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<b><b><b><b>x</b></b></b></b>y",
            "input": "<b><b><b><b>x</b></b></b></b>y",
            "output": [
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "Character",
                    "x"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "Character",
                    "y"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<p><b><b><b><b><p>x",
            "input": "<p><b><b><b><b><p>x",
            "output": [
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "x"
                ]
            ]
        },
        {
            "fragmentContext": "div",
            "description": "<b><em><foo><foob><fooc><aside></b></em>",
            "input": "<b><em><foo><foob><fooc><aside></b></em>",
            "output": [
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "em",
                    {}
                ],
                [
                    "StartTag",
                    "foo",
                    {}
                ],
                [
                    "StartTag",
                    "foob",
                    {}
                ],
                [
                    "StartTag",
                    "fooc",
                    {}
                ],
                [
                    "StartTag",
                    "aside",
                    {}
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "EndTag",
                    "em"
                ]
            ]
        }
    ]
}