diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -3,8 +3,8 @@
 
 This package provides Haskell bindings for [libcmark], the reference
 parser for [CommonMark], a fully specified variant of Markdown.
-It includes sources for [libcmark] (version 0.25.2, implementing
-version 0.25 of the spec) and does not require prior installation of
+It includes sources for [libcmark] (version 0.26.0, implementing
+version 0.26 of the spec) and does not require prior installation of
 the C library.
 
 cmark provides the following advantages over existing Markdown
diff --git a/cbits/blocks.c b/cbits/blocks.c
--- a/cbits/blocks.c
+++ b/cbits/blocks.c
@@ -30,6 +30,21 @@
 
 #define peek_at(i, n) (i)->data[n]
 
+static bool S_last_line_blank(const cmark_node *node) {
+  return (node->flags & CMARK_NODE__LAST_LINE_BLANK) != 0;
+}
+
+static CMARK_INLINE cmark_node_type S_type(const cmark_node *node) {
+  return (cmark_node_type)node->type;
+}
+
+static void S_set_last_line_blank(cmark_node *node, bool is_blank) {
+  if (is_blank)
+    node->flags |= CMARK_NODE__LAST_LINE_BLANK;
+  else
+    node->flags &= ~CMARK_NODE__LAST_LINE_BLANK;
+}
+
 static CMARK_INLINE bool S_is_line_end_char(char c) {
   return (c == '\n' || c == '\r');
 }
@@ -44,38 +59,37 @@
 static void S_process_line(cmark_parser *parser, const unsigned char *buffer,
                            bufsize_t bytes);
 
-static cmark_node *make_block(cmark_node_type tag, int start_line,
-                              int start_column) {
+static cmark_node *make_block(cmark_mem *mem, cmark_node_type tag,
+                              int start_line, int start_column) {
   cmark_node *e;
 
-  e = (cmark_node *)calloc(1, sizeof(*e));
-  if (e != NULL) {
-    e->type = tag;
-    e->open = true;
-    e->start_line = start_line;
-    e->start_column = start_column;
-    e->end_line = start_line;
-    cmark_strbuf_init(&e->string_content, 32);
-  }
+  e = (cmark_node *)mem->calloc(1, sizeof(*e));
+  cmark_strbuf_init(mem, &e->content, 32);
+  e->type = (uint16_t)tag;
+  e->flags = CMARK_NODE__OPEN;
+  e->start_line = start_line;
+  e->start_column = start_column;
+  e->end_line = start_line;
 
   return e;
 }
 
 // Create a root document node.
-static cmark_node *make_document() {
-  cmark_node *e = make_block(CMARK_NODE_DOCUMENT, 1, 1);
+static cmark_node *make_document(cmark_mem *mem) {
+  cmark_node *e = make_block(mem, CMARK_NODE_DOCUMENT, 1, 1);
   return e;
 }
 
-cmark_parser *cmark_parser_new(int options) {
-  cmark_parser *parser = (cmark_parser *)malloc(sizeof(cmark_parser));
-  cmark_node *document = make_document();
-  cmark_strbuf *line = (cmark_strbuf *)malloc(sizeof(cmark_strbuf));
-  cmark_strbuf *buf = (cmark_strbuf *)malloc(sizeof(cmark_strbuf));
-  cmark_strbuf_init(line, 256);
-  cmark_strbuf_init(buf, 0);
+cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem) {
+  cmark_parser *parser = (cmark_parser *)mem->calloc(1, sizeof(cmark_parser));
+  parser->mem = mem;
 
-  parser->refmap = cmark_reference_map_new();
+  cmark_node *document = make_document(mem);
+
+  cmark_strbuf_init(mem, &parser->curline, 256);
+  cmark_strbuf_init(mem, &parser->linebuf, 0);
+
+  parser->refmap = cmark_reference_map_new(mem);
   parser->root = document;
   parser->current = document;
   parser->line_number = 0;
@@ -86,22 +100,24 @@
   parser->indent = 0;
   parser->blank = false;
   parser->partially_consumed_tab = false;
-  parser->curline = line;
   parser->last_line_length = 0;
-  parser->linebuf = buf;
   parser->options = options;
   parser->last_buffer_ended_with_cr = false;
 
   return parser;
 }
 
+cmark_parser *cmark_parser_new(int options) {
+  extern cmark_mem DEFAULT_MEM_ALLOCATOR;
+  return cmark_parser_new_with_mem(options, &DEFAULT_MEM_ALLOCATOR);
+}
+
 void cmark_parser_free(cmark_parser *parser) {
-  cmark_strbuf_free(parser->curline);
-  free(parser->curline);
-  cmark_strbuf_free(parser->linebuf);
-  free(parser->linebuf);
+  cmark_mem *mem = parser->mem;
+  cmark_strbuf_free(&parser->curline);
+  cmark_strbuf_free(&parser->linebuf);
   cmark_reference_map_free(parser->refmap);
-  free(parser);
+  mem->free(parser);
 }
 
 static cmark_node *finalize(cmark_parser *parser, cmark_node *b);
@@ -128,7 +144,7 @@
 }
 
 static CMARK_INLINE bool can_contain(cmark_node_type parent_type,
-                               cmark_node_type child_type) {
+                                     cmark_node_type child_type) {
   return (parent_type == CMARK_NODE_DOCUMENT ||
           parent_type == CMARK_NODE_BLOCK_QUOTE ||
           parent_type == CMARK_NODE_ITEM ||
@@ -149,18 +165,17 @@
 static void add_line(cmark_node *node, cmark_chunk *ch, cmark_parser *parser) {
   int chars_to_tab;
   int i;
-  assert(node->open);
+  assert(node->flags & CMARK_NODE__OPEN);
   if (parser->partially_consumed_tab) {
     parser->offset += 1; // skip over tab
     // add space characters:
     chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
     for (i = 0; i < chars_to_tab; i++) {
-      cmark_strbuf_putc(&node->string_content, ' ');
+      cmark_strbuf_putc(&node->content, ' ');
     }
   }
-  cmark_strbuf_put(&node->string_content,
-		  ch->data + parser->offset,
-		  ch->len - parser->offset);
+  cmark_strbuf_put(&node->content, ch->data + parser->offset,
+                   ch->len - parser->offset);
 }
 
 static void remove_trailing_blank_lines(cmark_strbuf *ln) {
@@ -195,10 +210,10 @@
 static bool ends_with_blank_line(cmark_node *node) {
   cmark_node *cur = node;
   while (cur != NULL) {
-    if (cur->last_line_blank) {
+    if (S_last_line_blank(cur)) {
       return true;
     }
-    if (cur->type == CMARK_NODE_LIST || cur->type == CMARK_NODE_ITEM) {
+    if (S_type(cur) == CMARK_NODE_LIST || S_type(cur) == CMARK_NODE_ITEM) {
       cur = cur->last_child;
     } else {
       cur = NULL;
@@ -207,24 +222,6 @@
   return false;
 }
 
-// Break out of all containing lists
-static int break_out_of_lists(cmark_parser *parser, cmark_node **bptr) {
-  cmark_node *container = *bptr;
-  cmark_node *b = parser->root;
-  // find first containing NODE_LIST:
-  while (b && b->type != CMARK_NODE_LIST) {
-    b = b->last_child;
-  }
-  if (b) {
-    while (container && container != b) {
-      container = finalize(parser, container);
-    }
-    finalize(parser, b);
-    *bptr = b->parent;
-  }
-  return 0;
-}
-
 static cmark_node *finalize(cmark_parser *parser, cmark_node *b) {
   bufsize_t pos;
   cmark_node *item;
@@ -232,37 +229,39 @@
   cmark_node *parent;
 
   parent = b->parent;
-
-  assert(b->open); // shouldn't call finalize on closed blocks
-  b->open = false;
+  assert(b->flags &
+         CMARK_NODE__OPEN); // shouldn't call finalize on closed blocks
+  b->flags &= ~CMARK_NODE__OPEN;
 
-  if (parser->curline->size == 0) {
+  if (parser->curline.size == 0) {
     // end of input - line number has not been incremented
     b->end_line = parser->line_number;
     b->end_column = parser->last_line_length;
-  } else if (b->type == CMARK_NODE_DOCUMENT ||
-             (b->type == CMARK_NODE_CODE_BLOCK && b->as.code.fenced) ||
-             (b->type == CMARK_NODE_HEADING && b->as.heading.setext)) {
+  } else if (S_type(b) == CMARK_NODE_DOCUMENT ||
+             (S_type(b) == CMARK_NODE_CODE_BLOCK && b->as.code.fenced) ||
+             (S_type(b) == CMARK_NODE_HEADING && b->as.heading.setext)) {
     b->end_line = parser->line_number;
-    b->end_column = parser->curline->size;
-    if (b->end_column && parser->curline->ptr[b->end_column - 1] == '\n')
+    b->end_column = parser->curline.size;
+    if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\n')
       b->end_column -= 1;
-    if (b->end_column && parser->curline->ptr[b->end_column - 1] == '\r')
+    if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\r')
       b->end_column -= 1;
   } else {
     b->end_line = parser->line_number - 1;
     b->end_column = parser->last_line_length;
   }
 
-  switch (b->type) {
+  cmark_strbuf *node_content = &b->content;
+
+  switch (S_type(b)) {
   case CMARK_NODE_PARAGRAPH:
-    while (cmark_strbuf_at(&b->string_content, 0) == '[' &&
-           (pos = cmark_parse_reference_inline(&b->string_content,
+    while (cmark_strbuf_at(node_content, 0) == '[' &&
+           (pos = cmark_parse_reference_inline(parser->mem, node_content,
                                                parser->refmap))) {
 
-      cmark_strbuf_drop(&b->string_content, pos);
+      cmark_strbuf_drop(node_content, pos);
     }
-    if (is_blank(&b->string_content, 0)) {
+    if (is_blank(node_content, 0)) {
       // remove blank node (former reference def)
       cmark_node_free(b);
     }
@@ -270,34 +269,33 @@
 
   case CMARK_NODE_CODE_BLOCK:
     if (!b->as.code.fenced) { // indented code
-      remove_trailing_blank_lines(&b->string_content);
-      cmark_strbuf_putc(&b->string_content, '\n');
+      remove_trailing_blank_lines(node_content);
+      cmark_strbuf_putc(node_content, '\n');
     } else {
-
       // first line of contents becomes info
-      for (pos = 0; pos < b->string_content.size; ++pos) {
-        if (S_is_line_end_char(b->string_content.ptr[pos]))
+      for (pos = 0; pos < node_content->size; ++pos) {
+        if (S_is_line_end_char(node_content->ptr[pos]))
           break;
       }
-      assert(pos < b->string_content.size);
+      assert(pos < node_content->size);
 
-      cmark_strbuf tmp = GH_BUF_INIT;
-      houdini_unescape_html_f(&tmp, b->string_content.ptr, pos);
+      cmark_strbuf tmp = CMARK_BUF_INIT(parser->mem);
+      houdini_unescape_html_f(&tmp, node_content->ptr, pos);
       cmark_strbuf_trim(&tmp);
       cmark_strbuf_unescape(&tmp);
       b->as.code.info = cmark_chunk_buf_detach(&tmp);
 
-      if (b->string_content.ptr[pos] == '\r')
+      if (node_content->ptr[pos] == '\r')
         pos += 1;
-      if (b->string_content.ptr[pos] == '\n')
+      if (node_content->ptr[pos] == '\n')
         pos += 1;
-      cmark_strbuf_drop(&b->string_content, pos);
+      cmark_strbuf_drop(node_content, pos);
     }
-    b->as.code.literal = cmark_chunk_buf_detach(&b->string_content);
+    b->as.code.literal = cmark_chunk_buf_detach(node_content);
     break;
 
   case CMARK_NODE_HTML_BLOCK:
-    b->as.literal = cmark_chunk_buf_detach(&b->string_content);
+    b->as.literal = cmark_chunk_buf_detach(node_content);
     break;
 
   case CMARK_NODE_LIST:      // determine tight/loose status
@@ -306,7 +304,7 @@
 
     while (item) {
       // check for non-final non-empty list item ending with blank line:
-      if (item->last_line_blank && item->next) {
+      if (S_last_line_blank(item) && item->next) {
         b->as.list.tight = false;
         break;
       }
@@ -331,6 +329,7 @@
   default:
     break;
   }
+
   return parent;
 }
 
@@ -341,11 +340,12 @@
 
   // if 'parent' isn't the kind of node that can accept this child,
   // then back up til we hit a node that can.
-  while (!can_contain(parent->type, block_type)) {
+  while (!can_contain(S_type(parent), block_type)) {
     parent = finalize(parser, parent);
   }
 
-  cmark_node *child = make_block(block_type, parser->line_number, start_column);
+  cmark_node *child =
+      make_block(parser->mem, block_type, parser->line_number, start_column);
   child->parent = parent;
 
   if (parent->last_child) {
@@ -361,8 +361,8 @@
 
 // Walk through node and all children, recursively, parsing
 // string content into inline content where appropriate.
-static void process_inlines(cmark_node *root, cmark_reference_map *refmap,
-                            int options) {
+static void process_inlines(cmark_mem *mem, cmark_node *root,
+                            cmark_reference_map *refmap, int options) {
   cmark_iter *iter = cmark_iter_new(root);
   cmark_node *cur;
   cmark_event_type ev_type;
@@ -370,8 +370,8 @@
   while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
     cur = cmark_iter_get_node(iter);
     if (ev_type == CMARK_EVENT_ENTER) {
-      if (contains_inlines(cur->type)) {
-        cmark_parse_inlines(cur, refmap, options);
+      if (contains_inlines(S_type(cur))) {
+        cmark_parse_inlines(mem, cur, refmap, options);
       }
     }
   }
@@ -382,11 +382,13 @@
 // Attempts to parse a list item marker (bullet or enumerated).
 // On success, returns length of the marker, and populates
 // data with the details.  On failure, returns 0.
-static bufsize_t parse_list_marker(cmark_chunk *input, bufsize_t pos,
+static bufsize_t parse_list_marker(cmark_mem *mem, cmark_chunk *input,
+                                   bufsize_t pos, bool interrupts_paragraph,
                                    cmark_list **dataptr) {
   unsigned char c;
   bufsize_t startpos;
   cmark_list *data;
+  bufsize_t i;
 
   startpos = pos;
   c = peek_at(input, pos);
@@ -396,17 +398,25 @@
     if (!cmark_isspace(peek_at(input, pos))) {
       return 0;
     }
-    data = (cmark_list *)calloc(1, sizeof(*data));
-    if (data == NULL) {
-      return 0;
-    } else {
-      data->marker_offset = 0; // will be adjusted later
-      data->list_type = CMARK_BULLET_LIST;
-      data->bullet_char = c;
-      data->start = 1;
-      data->delimiter = CMARK_PERIOD_DELIM;
-      data->tight = false;
+
+    if (interrupts_paragraph) {
+      i = pos;
+      // require non-blank content after list marker:
+      while (S_is_space_or_tab(peek_at(input, i))) {
+        i++;
+      }
+      if (peek_at(input, i) == '\n') {
+        return 0;
+      }
     }
+
+    data = (cmark_list *)mem->calloc(1, sizeof(*data));
+    data->marker_offset = 0; // will be adjusted later
+    data->list_type = CMARK_BULLET_LIST;
+    data->bullet_char = c;
+    data->start = 1;
+    data->delimiter = CMARK_PERIOD_DELIM;
+    data->tight = false;
   } else if (cmark_isdigit(c)) {
     int start = 0;
     int digits = 0;
@@ -420,27 +430,36 @@
       // This also seems to be the limit for 'start' in some browsers.
     } while (digits < 9 && cmark_isdigit(peek_at(input, pos)));
 
+    if (interrupts_paragraph && start != 1) {
+      return 0;
+    }
     c = peek_at(input, pos);
     if (c == '.' || c == ')') {
       pos++;
       if (!cmark_isspace(peek_at(input, pos))) {
         return 0;
       }
-      data = (cmark_list *)calloc(1, sizeof(*data));
-      if (data == NULL) {
-        return 0;
-      } else {
-        data->marker_offset = 0; // will be adjusted later
-        data->list_type = CMARK_ORDERED_LIST;
-        data->bullet_char = 0;
-        data->start = start;
-        data->delimiter = (c == '.' ? CMARK_PERIOD_DELIM : CMARK_PAREN_DELIM);
-        data->tight = false;
+      if (interrupts_paragraph) {
+        // require non-blank content after list marker:
+        i = pos;
+        while (S_is_space_or_tab(peek_at(input, i))) {
+          i++;
+        }
+        if (S_is_line_end_char(peek_at(input, i))) {
+          return 0;
+        }
       }
+
+      data = (cmark_list *)mem->calloc(1, sizeof(*data));
+      data->marker_offset = 0; // will be adjusted later
+      data->list_type = CMARK_ORDERED_LIST;
+      data->bullet_char = 0;
+      data->start = start;
+      data->delimiter = (c == '.' ? CMARK_PERIOD_DELIM : CMARK_PAREN_DELIM);
+      data->tight = false;
     } else {
       return 0;
     }
-
   } else {
     return 0;
   }
@@ -463,7 +482,7 @@
   }
 
   finalize(parser, parser->root);
-  process_inlines(parser->root, parser->refmap, parser->options);
+  process_inlines(parser->mem, parser->root, parser->refmap, parser->options);
 
   return parser->root;
 }
@@ -529,24 +548,24 @@
       process = true;
     }
 
-    chunk_len = cmark_strbuf_check_bufsize(eol - buffer);
+    chunk_len = (eol - buffer);
     if (process) {
-      if (parser->linebuf->size > 0) {
-        cmark_strbuf_put(parser->linebuf, buffer, chunk_len);
-        S_process_line(parser, parser->linebuf->ptr, parser->linebuf->size);
-        cmark_strbuf_clear(parser->linebuf);
+      if (parser->linebuf.size > 0) {
+        cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
+        S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size);
+        cmark_strbuf_clear(&parser->linebuf);
       } else {
         S_process_line(parser, buffer, chunk_len);
       }
     } else {
       if (eol < end && *eol == '\0') {
         // omit NULL byte
-        cmark_strbuf_put(parser->linebuf, buffer, chunk_len);
+        cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
         // add replacement character
-        cmark_strbuf_put(parser->linebuf, repl, 3);
+        cmark_strbuf_put(&parser->linebuf, repl, 3);
         chunk_len += 1; // so we advance the buffer past NULL
       } else {
-        cmark_strbuf_put(parser->linebuf, buffer, chunk_len);
+        cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
       }
     }
 
@@ -555,7 +574,7 @@
     if (buffer < end && *buffer == '\r') {
       buffer++;
       if (buffer == end)
-	parser->last_buffer_ended_with_cr = true;
+        parser->last_buffer_ended_with_cr = true;
     }
     if (buffer < end && *buffer == '\n')
       buffer++;
@@ -627,16 +646,16 @@
     if (c == '\t') {
       chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
       if (columns) {
-	parser->partially_consumed_tab = chars_to_tab > count;
-	chars_to_advance = MIN(count, chars_to_tab);
-	parser->column += chars_to_advance;
+        parser->partially_consumed_tab = chars_to_tab > count;
+        chars_to_advance = MIN(count, chars_to_tab);
+        parser->column += chars_to_advance;
         parser->offset += (parser->partially_consumed_tab ? 0 : 1);
-	count -= chars_to_advance;
+        count -= chars_to_advance;
       } else {
-	parser->partially_consumed_tab = false;
-	parser->column += chars_to_tab;
-	parser->offset += 1;
-	count -= 1;
+        parser->partially_consumed_tab = false;
+        parser->column += chars_to_tab;
+        parser->offset += 1;
+        count -= 1;
       }
     } else {
       parser->partially_consumed_tab = false;
@@ -648,12 +667,11 @@
 }
 
 static bool S_last_child_is_open(cmark_node *container) {
-  return container->last_child && container->last_child->open;
+  return container->last_child &&
+         (container->last_child->flags & CMARK_NODE__OPEN);
 }
 
-static bool parse_block_quote_prefix(cmark_parser *parser,
-                                cmark_chunk *input)
-{
+static bool parse_block_quote_prefix(cmark_parser *parser, cmark_chunk *input) {
   bool res = false;
   bufsize_t matched = 0;
 
@@ -672,34 +690,30 @@
   return res;
 }
 
-static bool parse_node_item_prefix(cmark_parser *parser,
-                              cmark_chunk *input,
-                              cmark_node *container)
-{
+static bool parse_node_item_prefix(cmark_parser *parser, cmark_chunk *input,
+                                   cmark_node *container) {
   bool res = false;
 
   if (parser->indent >=
       container->as.list.marker_offset + container->as.list.padding) {
     S_advance_offset(parser, input, container->as.list.marker_offset +
-                                         container->as.list.padding,
+                                        container->as.list.padding,
                      true);
     res = true;
   } else if (parser->blank && container->first_child != NULL) {
     // if container->first_child is NULL, then the opening line
     // of the list item was blank after the list marker; in this
     // case, we are done with the list item.
-    S_advance_offset(parser, input,
-                     parser->first_nonspace - parser->offset, false);
+    S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
+                     false);
     res = true;
   }
   return res;
 }
 
-static bool parse_code_block_prefix(cmark_parser *parser,
-                               cmark_chunk *input,
-                               cmark_node *container,
-                               bool *should_continue)
-{
+static bool parse_code_block_prefix(cmark_parser *parser, cmark_chunk *input,
+                                    cmark_node *container,
+                                    bool *should_continue) {
   bool res = false;
 
   if (!container->as.code.fenced) { // indented
@@ -707,8 +721,8 @@
       S_advance_offset(parser, input, CODE_INDENT, true);
       res = true;
     } else if (parser->blank) {
-      S_advance_offset(parser, input,
-                       parser->first_nonspace - parser->offset, false);
+      S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
+                       false);
       res = true;
     }
   } else { // fenced
@@ -741,25 +755,24 @@
 }
 
 static bool parse_html_block_prefix(cmark_parser *parser,
-                               cmark_node *container)
-{
+                                    cmark_node *container) {
   bool res = false;
   int html_block_type = container->as.html_block_type;
 
   assert(html_block_type >= 1 && html_block_type <= 7);
   switch (html_block_type) {
-    case 1:
-    case 2:
-    case 3:
-    case 4:
-    case 5:
-      // these types of blocks can accept blanks
-      res = true;
-      break;
-    case 6:
-    case 7:
-      res = !parser->blank;
-      break;
+  case 1:
+  case 2:
+  case 3:
+  case 4:
+  case 5:
+    // these types of blocks can accept blanks
+    res = true;
+    break;
+  case 6:
+  case 7:
+    res = !parser->blank;
+    break;
   }
 
   return res;
@@ -773,10 +786,8 @@
  *
  * Returns: The last matching node, or NULL
  */
-static cmark_node *check_open_blocks(cmark_parser *parser,
-                                     cmark_chunk *input,
-                                     bool *all_matched)
-{
+static cmark_node *check_open_blocks(cmark_parser *parser, cmark_chunk *input,
+                                     bool *all_matched) {
   bool should_continue = true;
   *all_matched = false;
   cmark_node *container = parser->root;
@@ -784,36 +795,36 @@
 
   while (S_last_child_is_open(container)) {
     container = container->last_child;
-    cont_type = container->type;
+    cont_type = S_type(container);
 
     S_find_first_nonspace(parser, input);
 
     switch (cont_type) {
-      case CMARK_NODE_BLOCK_QUOTE:
-        if (!parse_block_quote_prefix(parser, input))
-          goto done;
-        break;
-      case CMARK_NODE_ITEM:
-        if (!parse_node_item_prefix(parser, input, container))
-          goto done;
-        break;
-      case CMARK_NODE_CODE_BLOCK:
-        if (!parse_code_block_prefix(parser, input, container, &should_continue))
-          goto done;
-        break;
-      case CMARK_NODE_HEADING:
-        // a heading can never contain more than one line
+    case CMARK_NODE_BLOCK_QUOTE:
+      if (!parse_block_quote_prefix(parser, input))
         goto done;
-      case CMARK_NODE_HTML_BLOCK:
-        if (!parse_html_block_prefix(parser, container))
-          goto done;
-        break;
-      case CMARK_NODE_PARAGRAPH:
-        if (parser->blank)
-          goto done;
-        break;
-      default:
-        break;
+      break;
+    case CMARK_NODE_ITEM:
+      if (!parse_node_item_prefix(parser, input, container))
+        goto done;
+      break;
+    case CMARK_NODE_CODE_BLOCK:
+      if (!parse_code_block_prefix(parser, input, container, &should_continue))
+        goto done;
+      break;
+    case CMARK_NODE_HEADING:
+      // a heading can never contain more than one line
+      goto done;
+    case CMARK_NODE_HTML_BLOCK:
+      if (!parse_html_block_prefix(parser, container))
+        goto done;
+      break;
+    case CMARK_NODE_PARAGRAPH:
+      if (parser->blank)
+        goto done;
+      break;
+    default:
+      break;
     }
   }
 
@@ -831,15 +842,12 @@
   return container;
 }
 
-static void open_new_blocks(cmark_parser *parser,
-                            cmark_node **container,
-                            cmark_chunk *input,
-                            bool all_matched)
-{
+static void open_new_blocks(cmark_parser *parser, cmark_node **container,
+                            cmark_chunk *input, bool all_matched) {
   bool indented;
   cmark_list *data = NULL;
-  bool maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH;
-  cmark_node_type cont_type = (*container)->type;
+  bool maybe_lazy = S_type(parser->current) == CMARK_NODE_PARAGRAPH;
+  cmark_node_type cont_type = S_type(*container);
   bufsize_t matched = 0;
   int lev = 0;
   bool save_partially_consumed_tab;
@@ -854,6 +862,8 @@
 
     if (!indented && peek_at(input, parser->first_nonspace) == '>') {
 
+      bufsize_t blockquote_startpos = parser->first_nonspace;
+
       S_advance_offset(parser, input,
                        parser->first_nonspace + 1 - parser->offset, false);
       // optional following character
@@ -861,18 +871,19 @@
         S_advance_offset(parser, input, 1, true);
       }
       *container = add_child(parser, *container, CMARK_NODE_BLOCK_QUOTE,
-                            parser->offset + 1);
+                             blockquote_startpos + 1);
 
     } else if (!indented && (matched = scan_atx_heading_start(
                                  input, parser->first_nonspace))) {
       bufsize_t hashpos;
       int level = 0;
+      bufsize_t heading_startpos = parser->first_nonspace;
 
       S_advance_offset(parser, input,
                        parser->first_nonspace + matched - parser->offset,
                        false);
-      *container =
-          add_child(parser, *container, CMARK_NODE_HEADING, parser->offset + 1);
+      *container = add_child(parser, *container, CMARK_NODE_HEADING,
+                             heading_startpos + 1);
 
       hashpos = cmark_chunk_strchr(input, '#', parser->first_nonspace);
 
@@ -887,10 +898,10 @@
     } else if (!indented && (matched = scan_open_code_fence(
                                  input, parser->first_nonspace))) {
       *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK,
-                            parser->first_nonspace + 1);
+                             parser->first_nonspace + 1);
       (*container)->as.code.fenced = true;
       (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace);
-      (*container)->as.code.fence_length = matched;
+      (*container)->as.code.fence_length = (matched > 255) ? 255 : matched;
       (*container)->as.code.fence_offset =
           (int8_t)(parser->first_nonspace - parser->offset);
       (*container)->as.code.info = cmark_chunk_literal("");
@@ -904,28 +915,29 @@
                               (matched = scan_html_block_start_7(
                                    input, parser->first_nonspace))))) {
       *container = add_child(parser, *container, CMARK_NODE_HTML_BLOCK,
-                            parser->first_nonspace + 1);
+                             parser->first_nonspace + 1);
       (*container)->as.html_block_type = matched;
       // note, we don't adjust parser->offset because the tag is part of the
       // text
     } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH &&
                (lev =
                     scan_setext_heading_line(input, parser->first_nonspace))) {
-      (*container)->type = CMARK_NODE_HEADING;
+      (*container)->type = (uint16_t)CMARK_NODE_HEADING;
       (*container)->as.heading.level = lev;
       (*container)->as.heading.setext = true;
       S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
     } else if (!indented &&
                !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) &&
-               (matched =
-                    scan_thematic_break(input, parser->first_nonspace))) {
+               (matched = scan_thematic_break(input, parser->first_nonspace))) {
       // it's only now that we know the line is not part of a setext heading:
       *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK,
-                            parser->first_nonspace + 1);
+                             parser->first_nonspace + 1);
       S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
-    } else if ((matched =
-                    parse_list_marker(input, parser->first_nonspace, &data)) &&
+    } else if ((matched = parse_list_marker(
+                    parser->mem, input, parser->first_nonspace,
+                    (*container)->type == CMARK_NODE_PARAGRAPH, &data)) &&
                (!indented || cont_type == CMARK_NODE_LIST)) {
+
       // Note that we can have new list items starting with >= 4
       // spaces indent, as long as the list container is still open.
       int i = 0;
@@ -940,16 +952,18 @@
       save_column = parser->column;
 
       while (parser->column - save_column <= 5 &&
-		S_is_space_or_tab(peek_at(input, parser->offset))) {
+             S_is_space_or_tab(peek_at(input, parser->offset))) {
         S_advance_offset(parser, input, 1, true);
       }
 
       i = parser->column - save_column;
-      if (i >= 5 || i < 1) {
+      if (i >= 5 || i < 1 ||
+          // only spaces after list marker:
+          S_is_line_end_char(peek_at(input, parser->offset))) {
         data->padding = matched + 1;
-	parser->offset = save_offset;
-	parser->column = save_column;
-	parser->partially_consumed_tab = save_partially_consumed_tab;
+        parser->offset = save_offset;
+        parser->column = save_column;
+        parser->partially_consumed_tab = save_partially_consumed_tab;
         if (i > 0) {
           S_advance_offset(parser, input, 1, true);
         }
@@ -965,21 +979,21 @@
       if (cont_type != CMARK_NODE_LIST ||
           !lists_match(&((*container)->as.list), data)) {
         *container = add_child(parser, *container, CMARK_NODE_LIST,
-                              parser->first_nonspace + 1);
+                               parser->first_nonspace + 1);
 
         memcpy(&((*container)->as.list), data, sizeof(*data));
       }
 
       // add the list item
       *container = add_child(parser, *container, CMARK_NODE_ITEM,
-                            parser->first_nonspace + 1);
+                             parser->first_nonspace + 1);
       /* TODO: static */
       memcpy(&((*container)->as.list), data, sizeof(*data));
       free(data);
     } else if (indented && !maybe_lazy && !parser->blank) {
       S_advance_offset(parser, input, CODE_INDENT, true);
       *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK,
-                            parser->offset + 1);
+                             parser->offset + 1);
       (*container)->as.code.fenced = false;
       (*container)->as.code.fence_char = 0;
       (*container)->as.code.fence_length = 0;
@@ -990,21 +1004,19 @@
       break;
     }
 
-    if (accepts_lines((*container)->type)) {
+    if (accepts_lines(S_type(*container))) {
       // if it's a line container, it can't contain other containers
       break;
     }
 
-    cont_type = (*container)->type;
+    cont_type = S_type(*container);
     maybe_lazy = false;
   }
 }
 
-static void add_text_to_container (cmark_parser *parser,
-                                   cmark_node *container,
-                                   cmark_node *last_matched_container,
-                                   cmark_chunk *input)
-{
+static void add_text_to_container(cmark_parser *parser, cmark_node *container,
+                                  cmark_node *last_matched_container,
+                                  cmark_chunk *input) {
   cmark_node *tmp;
   // what remains at parser->offset is a text line.  add the text to the
   // appropriate container.
@@ -1012,24 +1024,25 @@
   S_find_first_nonspace(parser, input);
 
   if (parser->blank && container->last_child)
-    container->last_child->last_line_blank = true;
+    S_set_last_line_blank(container->last_child, true);
 
   // block quote lines are never blank as they start with >
   // and we don't count blanks in fenced code for purposes of tight/loose
   // lists or breaking out of lists.  we also don't set last_line_blank
   // on an empty list item.
-  container->last_line_blank =
-      (parser->blank && container->type != CMARK_NODE_BLOCK_QUOTE &&
-       container->type != CMARK_NODE_HEADING &&
-       container->type != CMARK_NODE_THEMATIC_BREAK &&
-       !(container->type == CMARK_NODE_CODE_BLOCK &&
-         container->as.code.fenced) &&
-       !(container->type == CMARK_NODE_ITEM && container->first_child == NULL &&
+  const cmark_node_type ctype = S_type(container);
+  const bool last_line_blank =
+      (parser->blank && ctype != CMARK_NODE_BLOCK_QUOTE &&
+       ctype != CMARK_NODE_HEADING && ctype != CMARK_NODE_THEMATIC_BREAK &&
+       !(ctype == CMARK_NODE_CODE_BLOCK && container->as.code.fenced) &&
+       !(ctype == CMARK_NODE_ITEM && container->first_child == NULL &&
          container->start_line == parser->line_number));
 
+  S_set_last_line_blank(container, last_line_blank);
+
   tmp = container;
   while (tmp->parent) {
-    tmp->parent->last_line_blank = false;
+    S_set_last_line_blank(tmp->parent, false);
     tmp = tmp->parent;
   }
 
@@ -1040,9 +1053,8 @@
   // then treat this as a "lazy continuation line" and add it to
   // the open paragraph.
   if (parser->current != last_matched_container &&
-      container == last_matched_container &&
-      !parser->blank &&
-      parser->current->type == CMARK_NODE_PARAGRAPH) {
+      container == last_matched_container && !parser->blank &&
+      S_type(parser->current) == CMARK_NODE_PARAGRAPH) {
     add_line(parser->current, input, parser);
   } else { // not a lazy continuation
     // Finalize any blocks that were not matched and set cur to container:
@@ -1051,9 +1063,9 @@
       assert(parser->current != NULL);
     }
 
-    if (container->type == CMARK_NODE_CODE_BLOCK) {
+    if (S_type(container) == CMARK_NODE_CODE_BLOCK) {
       add_line(container, input, parser);
-    } else if (container->type == CMARK_NODE_HTML_BLOCK) {
+    } else if (S_type(container) == CMARK_NODE_HTML_BLOCK) {
       add_line(container, input, parser);
 
       int matches_end_condition;
@@ -1094,18 +1106,20 @@
       }
     } else if (parser->blank) {
       // ??? do nothing
-    } else if (accepts_lines(container->type)) {
-      if (container->type == CMARK_NODE_HEADING &&
+    } else if (accepts_lines(S_type(container))) {
+      if (S_type(container) == CMARK_NODE_HEADING &&
           container->as.heading.setext == false) {
         chop_trailing_hashtags(input);
       }
-      S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false);
+      S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
+                       false);
       add_line(container, input, parser);
     } else {
       // create paragraph container for line
       container = add_child(parser, container, CMARK_NODE_PARAGRAPH,
                             parser->first_nonspace + 1);
-      S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false);
+      S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
+                       false);
       add_line(container, input, parser);
     }
 
@@ -1122,21 +1136,21 @@
   cmark_chunk input;
 
   if (parser->options & CMARK_OPT_VALIDATE_UTF8)
-    cmark_utf8proc_check(parser->curline, buffer, bytes);
+    cmark_utf8proc_check(&parser->curline, buffer, bytes);
   else
-    cmark_strbuf_put(parser->curline, buffer, bytes);
+    cmark_strbuf_put(&parser->curline, buffer, bytes);
 
   // ensure line ends with a newline:
-  if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1]))
-    cmark_strbuf_putc(parser->curline, '\n');
+  if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1]))
+    cmark_strbuf_putc(&parser->curline, '\n');
 
   parser->offset = 0;
   parser->column = 0;
   parser->blank = false;
   parser->partially_consumed_tab = false;
 
-  input.data = parser->curline->ptr;
-  input.len = parser->curline->size;
+  input.data = parser->curline.ptr;
+  input.len = parser->curline.size;
 
   parser->line_number++;
 
@@ -1147,10 +1161,6 @@
 
   container = last_matched_container;
 
-  // check to see if we've hit 2nd blank line, break out of list:
-  if (parser->blank && container->last_line_blank)
-    break_out_of_lists(parser, &container);
-
   open_new_blocks(parser, &container, &input, all_matched);
 
   add_text_to_container(parser, container, last_matched_container, &input);
@@ -1164,13 +1174,13 @@
       input.data[parser->last_line_length - 1] == '\r')
     parser->last_line_length -= 1;
 
-  cmark_strbuf_clear(parser->curline);
+  cmark_strbuf_clear(&parser->curline);
 }
 
 cmark_node *cmark_parser_finish(cmark_parser *parser) {
-  if (parser->linebuf->size) {
-    S_process_line(parser, parser->linebuf->ptr, parser->linebuf->size);
-    cmark_strbuf_clear(parser->linebuf);
+  if (parser->linebuf.size) {
+    S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size);
+    cmark_strbuf_clear(&parser->linebuf);
   }
 
   finalize_document(parser);
@@ -1179,7 +1189,7 @@
     cmark_consolidate_text_nodes(parser->root);
   }
 
-  cmark_strbuf_free(parser->curline);
+  cmark_strbuf_free(&parser->curline);
 
 #if CMARK_DEBUG_NODES
   if (cmark_node_check(parser->root, stderr)) {
diff --git a/cbits/buffer.c b/cbits/buffer.c
--- a/cbits/buffer.c
+++ b/cbits/buffer.c
@@ -5,10 +5,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <limits.h>
 
 #include "config.h"
 #include "cmark_ctype.h"
 #include "buffer.h"
+#include "memory.h"
 
 /* Used as default value for cmark_strbuf->ptr so that people can always
  * assume ptr is non-NULL and zero terminated even for new cmark_strbufs.
@@ -19,7 +21,9 @@
 #define MIN(x, y) ((x < y) ? x : y)
 #endif
 
-void cmark_strbuf_init(cmark_strbuf *buf, bufsize_t initial_size) {
+void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf,
+                       bufsize_t initial_size) {
+  buf->mem = mem;
   buf->asize = 0;
   buf->size = 0;
   buf->ptr = cmark_strbuf__initbuf;
@@ -28,68 +32,28 @@
     cmark_strbuf_grow(buf, initial_size);
 }
 
-void cmark_strbuf_overflow_err() {
-  fprintf(stderr, "String buffer overflow");
-  abort();
-}
-
-static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) {
-  size_t target_size = (size_t)buf->size + add;
-
-  if (target_size < add            /* Integer overflow. */
-      || target_size > BUFSIZE_MAX /* Truncation overflow. */
-      ) {
-    cmark_strbuf_overflow_err();
-    return; /* unreachable */
-  }
-
-  if ((bufsize_t)target_size >= buf->asize)
-    cmark_strbuf_grow(buf, (bufsize_t)target_size);
+static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, bufsize_t add) {
+  cmark_strbuf_grow(buf, buf->size + add);
 }
 
 void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size) {
-  unsigned char *new_ptr;
+  assert(target_size > 0);
 
   if (target_size < buf->asize)
     return;
 
-  if (buf->asize == 0) {
-    new_ptr = NULL;
-  } else {
-    new_ptr = buf->ptr;
-  }
+  if (target_size > (bufsize_t)(INT32_MAX / 2))
+    abort();
 
   /* Oversize the buffer by 50% to guarantee amortized linear time
    * complexity on append operations. */
-  size_t new_size = (size_t)target_size + (size_t)target_size / 2;
-
-  /* Account for terminating null byte. */
+  bufsize_t new_size = target_size + target_size / 2;
   new_size += 1;
-
-  /* round allocation up to multiple of 8 */
   new_size = (new_size + 7) & ~7;
 
-  if (new_size < (size_t)target_size /* Integer overflow. */
-      || new_size > BUFSIZE_MAX      /* Truncation overflow. */
-      ) {
-    if (target_size >= BUFSIZE_MAX) {
-      /* No space for terminating null byte. */
-      cmark_strbuf_overflow_err();
-      return; /* unreachable */
-    }
-    /* Oversize by the maximum possible amount. */
-    new_size = BUFSIZE_MAX;
-  }
-
-  new_ptr = (unsigned char *)realloc(new_ptr, new_size);
-
-  if (!new_ptr) {
-    perror("realloc in cmark_strbuf_grow");
-    abort();
-  }
-
-  buf->asize = (bufsize_t)new_size;
-  buf->ptr = new_ptr;
+  buf->ptr = (unsigned char *)buf->mem->realloc(buf->asize ? buf->ptr : NULL,
+                                                new_size);
+  buf->asize = new_size;
 }
 
 bufsize_t cmark_strbuf_len(const cmark_strbuf *buf) { return buf->size; }
@@ -99,9 +63,9 @@
     return;
 
   if (buf->ptr != cmark_strbuf__initbuf)
-    free(buf->ptr);
+    buf->mem->free(buf->ptr);
 
-  cmark_strbuf_init(buf, 0);
+  cmark_strbuf_init(buf->mem, buf, 0);
 }
 
 void cmark_strbuf_clear(cmark_strbuf *buf) {
@@ -128,7 +92,7 @@
 
 void cmark_strbuf_sets(cmark_strbuf *buf, const char *string) {
   cmark_strbuf_set(buf, (const unsigned char *)string,
-                   string ? cmark_strbuf_safe_strlen(string) : 0);
+                   string ? strlen(string) : 0);
 }
 
 void cmark_strbuf_putc(cmark_strbuf *buf, int c) {
@@ -149,8 +113,7 @@
 }
 
 void cmark_strbuf_puts(cmark_strbuf *buf, const char *string) {
-  cmark_strbuf_put(buf, (const unsigned char *)string,
-                   cmark_strbuf_safe_strlen(string));
+  cmark_strbuf_put(buf, (const unsigned char *)string, strlen(string));
 }
 
 void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize,
@@ -184,10 +147,10 @@
 
   if (buf->asize == 0) {
     /* return an empty string */
-    return (unsigned char *)calloc(1, 1);
+    return (unsigned char *)buf->mem->calloc(1, 1);
   }
 
-  cmark_strbuf_init(buf, 0);
+  cmark_strbuf_init(buf->mem, buf, 0);
   return data;
 }
 
diff --git a/cbits/buffer.h b/cbits/buffer.h
--- a/cbits/buffer.h
+++ b/cbits/buffer.h
@@ -5,32 +5,35 @@
 #include <stdarg.h>
 #include <string.h>
 #include <limits.h>
+#include <stdint.h>
 #include "config.h"
+#include "cmark.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-typedef int bufsize_t;
+typedef int32_t bufsize_t;
 
 typedef struct {
+  cmark_mem *mem;
   unsigned char *ptr;
   bufsize_t asize, size;
 } cmark_strbuf;
 
 extern unsigned char cmark_strbuf__initbuf[];
 
-#define GH_BUF_INIT                                                            \
-  { cmark_strbuf__initbuf, 0, 0 }
-#define BUFSIZE_MAX INT_MAX
+#define CMARK_BUF_INIT(mem)                                                    \
+  { mem, cmark_strbuf__initbuf, 0, 0 }
 
 /**
  * Initialize a cmark_strbuf structure.
  *
- * For the cases where GH_BUF_INIT cannot be used to do static
+ * For the cases where CMARK_BUF_INIT cannot be used to do static
  * initialization.
  */
-void cmark_strbuf_init(cmark_strbuf *buf, bufsize_t initial_size);
+void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf,
+                       bufsize_t initial_size);
 
 /**
  * Grow the buffer to hold at least `target_size` bytes.
@@ -71,20 +74,6 @@
 void cmark_strbuf_trim(cmark_strbuf *buf);
 void cmark_strbuf_normalize_whitespace(cmark_strbuf *s);
 void cmark_strbuf_unescape(cmark_strbuf *s);
-
-/* Print error and abort. */
-void cmark_strbuf_overflow_err(void);
-
-static CMARK_INLINE bufsize_t cmark_strbuf_check_bufsize(size_t size) {
-  if (size > BUFSIZE_MAX) {
-    cmark_strbuf_overflow_err();
-  }
-  return (bufsize_t)size;
-}
-
-static CMARK_INLINE bufsize_t cmark_strbuf_safe_strlen(const char *str) {
-  return cmark_strbuf_check_bufsize(strlen(str));
-}
 
 #ifdef __cplusplus
 }
diff --git a/cbits/chunk.h b/cbits/chunk.h
--- a/cbits/chunk.h
+++ b/cbits/chunk.h
@@ -4,8 +4,10 @@
 #include <string.h>
 #include <stdlib.h>
 #include <assert.h>
-#include "cmark_ctype.h"
+#include "cmark.h"
 #include "buffer.h"
+#include "memory.h"
+#include "cmark_ctype.h"
 
 #define CMARK_CHUNK_EMPTY                                                      \
   { NULL, 0, 0 }
@@ -16,9 +18,9 @@
   bufsize_t alloc; // also implies a NULL-terminated string
 } cmark_chunk;
 
-static CMARK_INLINE void cmark_chunk_free(cmark_chunk *c) {
+static CMARK_INLINE void cmark_chunk_free(cmark_mem *mem, cmark_chunk *c) {
   if (c->alloc)
-    free(c->data);
+    mem->free(c->data);
 
   c->data = NULL;
   c->alloc = 0;
@@ -48,56 +50,57 @@
   cmark_chunk_rtrim(c);
 }
 
-static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c,
-                                                 bufsize_t offset) {
+static CMARK_INLINE bufsize_t
+    cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) {
   const unsigned char *p =
       (unsigned char *)memchr(ch->data + offset, c, ch->len - offset);
   return p ? (bufsize_t)(p - ch->data) : ch->len;
 }
 
-static CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_chunk *c) {
+static CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_mem *mem,
+                                                    cmark_chunk *c) {
   unsigned char *str;
 
   if (c->alloc) {
     return (char *)c->data;
   }
-  str = (unsigned char *)malloc(c->len + 1);
-  if (str != NULL) {
-    if (c->len > 0) {
-      memcpy(str, c->data, c->len);
-    }
-    str[c->len] = 0;
+  str = (unsigned char *)mem->calloc(c->len + 1, 1);
+  if (c->len > 0) {
+    memcpy(str, c->data, c->len);
   }
+  str[c->len] = 0;
   c->data = str;
   c->alloc = 1;
 
   return (char *)str;
 }
 
-static CMARK_INLINE void cmark_chunk_set_cstr(cmark_chunk *c, const char *str) {
-  if (c->alloc) {
-    free(c->data);
-  }
+static CMARK_INLINE void cmark_chunk_set_cstr(cmark_mem *mem, cmark_chunk *c,
+                                              const char *str) {
+  unsigned char *old = c->alloc ? c->data : NULL;
   if (str == NULL) {
     c->len = 0;
     c->data = NULL;
     c->alloc = 0;
   } else {
-    c->len = cmark_strbuf_safe_strlen(str);
-    c->data = (unsigned char *)malloc(c->len + 1);
+    c->len = (bufsize_t)strlen(str);
+    c->data = (unsigned char *)mem->calloc(c->len + 1, 1);
     c->alloc = 1;
     memcpy(c->data, str, c->len + 1);
   }
+  if (old != NULL) {
+    mem->free(old);
+  }
 }
 
 static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) {
-  bufsize_t len = data ? cmark_strbuf_safe_strlen(data) : 0;
+  bufsize_t len = data ? (bufsize_t)strlen(data) : 0;
   cmark_chunk c = {(unsigned char *)data, len, 0};
   return c;
 }
 
-static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch,
-                                                bufsize_t pos, bufsize_t len) {
+static CMARK_INLINE cmark_chunk
+    cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, bufsize_t len) {
   cmark_chunk c = {ch->data + pos, len, 0};
   return c;
 }
diff --git a/cbits/cmark.c b/cbits/cmark.c
--- a/cbits/cmark.c
+++ b/cbits/cmark.c
@@ -10,6 +10,22 @@
 
 const char *cmark_version_string() { return CMARK_VERSION_STRING; }
 
+static void *xcalloc(size_t nmem, size_t size) {
+  void *ptr = calloc(nmem, size);
+  if (!ptr)
+    abort();
+  return ptr;
+}
+
+static void *xrealloc(void *ptr, size_t size) {
+  void *new_ptr = realloc(ptr, size);
+  if (!new_ptr)
+    abort();
+  return new_ptr;
+}
+
+cmark_mem DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, free};
+
 char *cmark_markdown_to_html(const char *text, size_t len, int options) {
   cmark_node *doc;
   char *result;
diff --git a/cbits/cmark.h b/cbits/cmark.h
--- a/cbits/cmark.h
+++ b/cbits/cmark.h
@@ -21,7 +21,8 @@
 
 /** Convert 'text' (assumed to be a UTF-8 encoded string with length
  * 'len') from CommonMark Markdown to HTML, returning a null-terminated,
- * UTF-8-encoded string.
+ * UTF-8-encoded string. It is the caller's responsibility
+ * to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_markdown_to_html(const char *text, size_t len, int options);
@@ -87,6 +88,19 @@
 typedef struct cmark_iter cmark_iter;
 
 /**
+ * ## Custom memory allocator support
+ */
+
+/** Defines the memory allocation functions to be used by CMark
+ * when parsing and allocating a document tree
+ */
+typedef struct cmark_mem {
+  void *(*calloc)(size_t, size_t);
+  void *(*realloc)(void *, size_t);
+  void (*free)(void *);
+} cmark_mem;
+
+/**
  * ## Creating and Destroying Nodes
  */
 
@@ -96,6 +110,13 @@
  */
 CMARK_EXPORT cmark_node *cmark_node_new(cmark_node_type type);
 
+/** Same as `cmark_node_new`, but explicitly listing the memory
+ * allocator used to allocate the node.  Note:  be sure to use the same
+ * allocator for every node in a tree, or bad things can happen.
+ */
+CMARK_EXPORT cmark_node *cmark_node_new_with_mem(cmark_node_type type,
+                                                 cmark_mem *mem);
+
 /** Frees the memory allocated for a node and any children.
  */
 CMARK_EXPORT void cmark_node_free(cmark_node *node);
@@ -179,7 +200,9 @@
 } cmark_event_type;
 
 /** Creates a new iterator starting at 'root'.  The current node and event
- * type are undefined until `cmark_iter_next` is called for the first time.
+ * type are undefined until 'cmark_iter_next' is called for the first time.
+ * The memory allocated for the iterator should be released using
+ * 'cmark_iter_free' when it is no longer needed.
  */
 CMARK_EXPORT
 cmark_iter *cmark_iter_new(cmark_node *root);
@@ -434,6 +457,11 @@
 CMARK_EXPORT
 cmark_parser *cmark_parser_new(int options);
 
+/** Creates a new parser object with the given memory allocator
+ */
+CMARK_EXPORT
+cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem);
+
 /** Frees memory allocated for a parser object.
  */
 CMARK_EXPORT
@@ -450,13 +478,16 @@
 cmark_node *cmark_parser_finish(cmark_parser *parser);
 
 /** Parse a CommonMark document in 'buffer' of length 'len'.
- * Returns a pointer to a tree of nodes.
+ * Returns a pointer to a tree of nodes.  The memory allocated for
+ * the node tree should be released using 'cmark_node_free'
+ * when it is no longer needed.
  */
 CMARK_EXPORT
 cmark_node *cmark_parse_document(const char *buffer, size_t len, int options);
 
 /** Parse a CommonMark document in file 'f', returning a pointer to
- * a tree of nodes.
+ * a tree of nodes.  The memory allocated for the node tree should be
+ * released using 'cmark_node_free' when it is no longer needed.
  */
 CMARK_EXPORT
 cmark_node *cmark_parse_file(FILE *f, int options);
@@ -465,28 +496,33 @@
  * ## Rendering
  */
 
-/** Render a 'node' tree as XML.
+/** Render a 'node' tree as XML.  It is the caller's responsibility
+ * to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_render_xml(cmark_node *root, int options);
 
 /** Render a 'node' tree as an HTML fragment.  It is up to the user
- * to add an appropriate header and footer.
+ * to add an appropriate header and footer. It is the caller's
+ * responsibility to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_render_html(cmark_node *root, int options);
 
 /** Render a 'node' tree as a groff man page, without the header.
+ * It is the caller's responsibility to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_render_man(cmark_node *root, int options, int width);
 
 /** Render a 'node' tree as a commonmark document.
+ * It is the caller's responsibility to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_render_commonmark(cmark_node *root, int options, int width);
 
 /** Render a 'node' tree as a LaTeX document.
+ * It is the caller's responsibility to free the returned buffer.
  */
 CMARK_EXPORT
 char *cmark_render_latex(cmark_node *root, int options, int width);
@@ -518,6 +554,10 @@
  * empty strings.
  */
 #define CMARK_OPT_SAFE (1 << 3)
+
+/** Render `softbreak` elements as spaces.
+ */
+#define CMARK_OPT_NOBREAKS (1 << 4)
 
 /**
  * ### Options affecting parsing
diff --git a/cbits/cmark_ctype.c b/cbits/cmark_ctype.c
--- a/cbits/cmark_ctype.c
+++ b/cbits/cmark_ctype.c
@@ -40,3 +40,5 @@
 }
 
 int cmark_isdigit(char c) { return cmark_ctype_class[(uint8_t)c] == 3; }
+
+int cmark_isalpha(char c) { return cmark_ctype_class[(uint8_t)c] == 4; }
diff --git a/cbits/cmark_ctype.h b/cbits/cmark_ctype.h
--- a/cbits/cmark_ctype.h
+++ b/cbits/cmark_ctype.h
@@ -17,6 +17,8 @@
 
 int cmark_isdigit(char c);
 
+int cmark_isalpha(char c);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cbits/cmark_version.h b/cbits/cmark_version.h
--- a/cbits/cmark_version.h
+++ b/cbits/cmark_version.h
@@ -1,7 +1,7 @@
 #ifndef CMARK_VERSION_H
 #define CMARK_VERSION_H
 
-#define CMARK_VERSION ((0 << 16) | (25 << 8)  | 2)
-#define CMARK_VERSION_STRING "0.25.2"
+#define CMARK_VERSION ((0 << 16) | (26 << 8)  | 0)
+#define CMARK_VERSION_STRING "0.26.0"
 
 #endif
diff --git a/cbits/commonmark.c b/cbits/commonmark.c
--- a/cbits/commonmark.c
+++ b/cbits/commonmark.c
@@ -2,7 +2,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
-#include <ctype.h>
 
 #include "config.h"
 #include "cmark.h"
@@ -12,7 +11,6 @@
 #include "scanners.h"
 #include "render.h"
 
-#define safe_strlen(s) cmark_strbuf_safe_strlen(s)
 #define OUT(s, wrap, escaping) renderer->out(renderer, s, wrap, escaping)
 #define LIT(s) renderer->out(renderer, s, false, LITERAL)
 #define CR() renderer->cr(renderer)
@@ -23,7 +21,7 @@
 // Functions to convert cmark_nodes to commonmark strings.
 
 static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape,
-                        int32_t c, unsigned char nextc) {
+                              int32_t c, unsigned char nextc) {
   bool needs_escaping = false;
   bool follows_digit =
       renderer->buffer->size > 0 &&
@@ -31,24 +29,25 @@
   char encoded[ENCODED_SIZE];
 
   needs_escaping =
-      escape != LITERAL &&
+      c < 0x80 && escape != LITERAL &&
       ((escape == NORMAL &&
         (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||
          c == '>' || c == '\\' || c == '`' || c == '!' ||
-         (c == '&' && isalpha(nextc)) || (c == '!' && nextc == '[') ||
+         (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') ||
          (renderer->begin_content && (c == '-' || c == '+' || c == '=') &&
           // begin_content doesn't get set to false til we've passed digits
           // at the beginning of line, so...
           !follows_digit) ||
          (renderer->begin_content && (c == '.' || c == ')') && follows_digit &&
           (nextc == 0 || cmark_isspace(nextc))))) ||
-       (escape == URL && (c == '`' || c == '<' || c == '>' || isspace(c) ||
-                          c == '\\' || c == ')' || c == '(')) ||
+       (escape == URL &&
+        (c == '`' || c == '<' || c == '>' || cmark_isspace(c) || c == '\\' ||
+         c == ')' || c == '(')) ||
        (escape == TITLE &&
         (c == '`' || c == '<' || c == '>' || c == '"' || c == '\\')));
 
   if (needs_escaping) {
-    if (isspace(c)) {
+    if (cmark_isspace(c)) {
       // use percent encoding for spaces
       snprintf(encoded, ENCODED_SIZE, "%%%2x", c);
       cmark_strbuf_puts(renderer->buffer, encoded);
@@ -66,7 +65,7 @@
   int longest = 0;
   int current = 0;
   size_t i = 0;
-  size_t code_len = safe_strlen(code);
+  size_t code_len = strlen(code);
   while (i <= code_len) {
     if (code[i] == '`') {
       current++;
@@ -85,7 +84,7 @@
   int32_t used = 1;
   int current = 0;
   size_t i = 0;
-  size_t code_len = safe_strlen(code);
+  size_t code_len = strlen(code);
   while (i <= code_len) {
     if (code[i] == '`') {
       current++;
@@ -171,7 +170,10 @@
   size_t info_len, code_len;
   char listmarker[LISTMARKER_SIZE];
   char *emph_delim;
+  bool first_in_list_item;
   bufsize_t marker_width;
+  bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options) &&
+                    !(CMARK_OPT_HARDBREAKS & options);
 
   // Don't adjust tight list status til we've started the list.
   // Otherwise we loose the blank line between a paragraph and
@@ -204,7 +206,7 @@
   case CMARK_NODE_LIST:
     if (!entering && node->next && (node->next->type == CMARK_NODE_CODE_BLOCK ||
                                     node->next->type == CMARK_NODE_LIST)) {
-      // this ensures that a following code block or list will be
+      // this ensures that a following indented code block or list will be
       // inteprereted correctly.
       CR();
       LIT("<!-- end list -->");
@@ -229,7 +231,7 @@
       snprintf(listmarker, LISTMARKER_SIZE, "%d%s%s", list_number,
                list_delim == CMARK_PAREN_DELIM ? ")" : ".",
                list_number < 10 ? "  " : " ");
-      marker_width = safe_strlen(listmarker);
+      marker_width = strlen(listmarker);
     }
     if (entering) {
       if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) {
@@ -256,27 +258,31 @@
       }
       LIT(" ");
       renderer->begin_content = true;
-      renderer->no_wrap = true;
+      renderer->no_linebreaks = true;
     } else {
-      renderer->no_wrap = false;
+      renderer->no_linebreaks = false;
       BLANKLINE();
     }
     break;
 
   case CMARK_NODE_CODE_BLOCK:
-    BLANKLINE();
+    first_in_list_item = node->prev == NULL && node->parent &&
+                         node->parent->type == CMARK_NODE_ITEM;
+
+    if (!first_in_list_item) {
+      BLANKLINE();
+    }
     info = cmark_node_get_fence_info(node);
-    info_len = safe_strlen(info);
+    info_len = strlen(info);
     code = cmark_node_get_literal(node);
-    code_len = safe_strlen(code);
+    code_len = strlen(code);
     // use indented form if no info, and code doesn't
     // begin or end with a blank line, and code isn't
     // first thing in a list item
-    if (info_len == 0 &&
-        (code_len > 2 && !isspace((unsigned char)code[0]) &&
-         !(isspace((unsigned char)code[code_len - 1]) && isspace((unsigned char)code[code_len - 2]))) &&
-        !(node->prev == NULL && node->parent &&
-          node->parent->type == CMARK_NODE_ITEM)) {
+    if (info_len == 0 && (code_len > 2 && !cmark_isspace(code[0]) &&
+                          !(cmark_isspace(code[code_len - 1]) &&
+                            cmark_isspace(code[code_len - 2]))) &&
+        !first_in_list_item) {
       LIT("    ");
       cmark_strbuf_puts(renderer->prefix, "    ");
       OUT(cmark_node_get_literal(node), false, LITERAL);
@@ -327,7 +333,7 @@
     break;
 
   case CMARK_NODE_TEXT:
-    OUT(cmark_node_get_literal(node), true, NORMAL);
+    OUT(cmark_node_get_literal(node), allow_wrap, NORMAL);
     break;
 
   case CMARK_NODE_LINEBREAK:
@@ -338,16 +344,21 @@
     break;
 
   case CMARK_NODE_SOFTBREAK:
-    if (renderer->width == 0 && !(CMARK_OPT_HARDBREAKS & options)) {
+    if (CMARK_OPT_HARDBREAKS & options) {
+      LIT("  ");
       CR();
+    } else if (!renderer->no_linebreaks && renderer->width == 0 &&
+               !(CMARK_OPT_HARDBREAKS & options) &&
+               !(CMARK_OPT_NOBREAKS & options)) {
+      CR();
     } else {
-      OUT(" ", true, LITERAL);
+      OUT(" ", allow_wrap, LITERAL);
     }
     break;
 
   case CMARK_NODE_CODE:
     code = cmark_node_get_literal(node);
-    code_len = safe_strlen(code);
+    code_len = strlen(code);
     numticks = shortest_unused_backtick_sequence(code);
     for (i = 0; i < numticks; i++) {
       LIT("`");
@@ -355,7 +366,7 @@
     if (code_len == 0 || code[0] == '`') {
       LIT(" ");
     }
-    OUT(cmark_node_get_literal(node), true, LITERAL);
+    OUT(cmark_node_get_literal(node), allow_wrap, LITERAL);
     if (code_len == 0 || code[code_len - 1] == '`') {
       LIT(" ");
     }
@@ -417,7 +428,7 @@
         LIT("](");
         OUT(cmark_node_get_url(node), false, URL);
         title = cmark_node_get_title(node);
-        if (safe_strlen(title) > 0) {
+        if (strlen(title) > 0) {
           LIT(" \"");
           OUT(title, false, TITLE);
           LIT("\"");
@@ -434,8 +445,8 @@
       LIT("](");
       OUT(cmark_node_get_url(node), false, URL);
       title = cmark_node_get_title(node);
-      if (safe_strlen(title) > 0) {
-        OUT(" \"", true, LITERAL);
+      if (strlen(title) > 0) {
+        OUT(" \"", allow_wrap, LITERAL);
         OUT(title, false, TITLE);
         LIT("\"");
       }
diff --git a/cbits/config.h b/cbits/config.h
--- a/cbits/config.h
+++ b/cbits/config.h
@@ -69,6 +69,14 @@
 
 #endif
 
+#ifdef _WIN32
+# include <BaseTsd.h>
+  typedef SSIZE_T ssize_t;
+  typedef SIZE_T size_t;
+#else
+# include <sys/types.h>
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cbits/html.c b/cbits/html.c
--- a/cbits/html.c
+++ b/cbits/html.c
@@ -228,6 +228,8 @@
   case CMARK_NODE_SOFTBREAK:
     if (options & CMARK_OPT_HARDBREAKS) {
       cmark_strbuf_puts(html, "<br />\n");
+    } else if (options & CMARK_OPT_NOBREAKS) {
+      cmark_strbuf_putc(html, ' ');
     } else {
       cmark_strbuf_putc(html, '\n');
     }
@@ -322,7 +324,7 @@
 
 char *cmark_render_html(cmark_node *root, int options) {
   char *result;
-  cmark_strbuf html = GH_BUF_INIT;
+  cmark_strbuf html = CMARK_BUF_INIT(cmark_node_mem(root));
   cmark_event_type ev_type;
   cmark_node *cur;
   struct render_state state = {&html, NULL};
diff --git a/cbits/inlines.c b/cbits/inlines.c
--- a/cbits/inlines.c
+++ b/cbits/inlines.c
@@ -22,30 +22,40 @@
 static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99";
 
 // Macros for creating various kinds of simple.
-#define make_str(s) make_literal(CMARK_NODE_TEXT, s)
-#define make_code(s) make_literal(CMARK_NODE_CODE, s)
-#define make_raw_html(s) make_literal(CMARK_NODE_HTML_INLINE, s)
-#define make_linebreak() make_simple(CMARK_NODE_LINEBREAK)
-#define make_softbreak() make_simple(CMARK_NODE_SOFTBREAK)
-#define make_emph() make_simple(CMARK_NODE_EMPH)
-#define make_strong() make_simple(CMARK_NODE_STRONG)
+#define make_str(mem, s) make_literal(mem, CMARK_NODE_TEXT, s)
+#define make_code(mem, s) make_literal(mem, CMARK_NODE_CODE, s)
+#define make_raw_html(mem, s) make_literal(mem, CMARK_NODE_HTML_INLINE, s)
+#define make_linebreak(mem) make_simple(mem, CMARK_NODE_LINEBREAK)
+#define make_softbreak(mem) make_simple(mem, CMARK_NODE_SOFTBREAK)
+#define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH)
+#define make_strong(mem) make_simple(mem, CMARK_NODE_STRONG)
 
 typedef struct delimiter {
   struct delimiter *previous;
   struct delimiter *next;
   cmark_node *inl_text;
-  bufsize_t position;
   unsigned char delim_char;
   bool can_open;
   bool can_close;
-  bool active;
 } delimiter;
 
+typedef struct bracket {
+  struct bracket *previous;
+  struct delimiter *previous_delimiter;
+  cmark_node *inl_text;
+  bufsize_t position;
+  bool image;
+  bool active;
+  bool bracket_after;
+} bracket;
+
 typedef struct {
+  cmark_mem *mem;
   cmark_chunk input;
   bufsize_t pos;
   cmark_reference_map *refmap;
   delimiter *last_delim;
+  bracket *last_bracket;
 } subject;
 
 static CMARK_INLINE bool S_is_line_end_char(char c) {
@@ -57,66 +67,48 @@
 
 static int parse_inline(subject *subj, cmark_node *parent, int options);
 
-static void subject_from_buf(subject *e, cmark_strbuf *buffer,
+static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
                              cmark_reference_map *refmap);
 static bufsize_t subject_find_special_char(subject *subj, int options);
 
 // Create an inline with a literal string value.
-static CMARK_INLINE cmark_node *make_literal(cmark_node_type t, cmark_chunk s) {
-  cmark_node *e = (cmark_node *)calloc(1, sizeof(*e));
-  if (e != NULL) {
-    e->type = t;
-    e->as.literal = s;
-    e->next = NULL;
-    e->prev = NULL;
-    e->parent = NULL;
-    e->first_child = NULL;
-    e->last_child = NULL;
-    // These fields aren't used for inlines:
-    e->start_line = 0;
-    e->start_column = 0;
-    e->end_line = 0;
-  }
+static CMARK_INLINE cmark_node *make_literal(cmark_mem *mem, cmark_node_type t,
+                                             cmark_chunk s) {
+  cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e));
+  cmark_strbuf_init(mem, &e->content, 0);
+  e->type = t;
+  e->as.literal = s;
   return e;
 }
 
 // Create an inline with no value.
-static CMARK_INLINE cmark_node *make_simple(cmark_node_type t) {
-  cmark_node *e = (cmark_node *)calloc(1, sizeof(*e));
-  if (e != NULL) {
-    e->type = t;
-    e->next = NULL;
-    e->prev = NULL;
-    e->parent = NULL;
-    e->first_child = NULL;
-    e->last_child = NULL;
-    // These fields aren't used for inlines:
-    e->start_line = 0;
-    e->start_column = 0;
-    e->end_line = 0;
-  }
+static CMARK_INLINE cmark_node *make_simple(cmark_mem *mem, cmark_node_type t) {
+  cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e));
+  cmark_strbuf_init(mem, &e->content, 0);
+  e->type = t;
   return e;
 }
 
 // Like make_str, but parses entities.
-static cmark_node *make_str_with_entities(cmark_chunk *content) {
-  cmark_strbuf unescaped = GH_BUF_INIT;
+static cmark_node *make_str_with_entities(cmark_mem *mem,
+                                          cmark_chunk *content) {
+  cmark_strbuf unescaped = CMARK_BUF_INIT(mem);
 
   if (houdini_unescape_html(&unescaped, content->data, content->len)) {
-    return make_str(cmark_chunk_buf_detach(&unescaped));
+    return make_str(mem, cmark_chunk_buf_detach(&unescaped));
   } else {
-    return make_str(*content);
+    return make_str(mem, *content);
   }
 }
 
 // Duplicate a chunk by creating a copy of the buffer not by reusing the
 // buffer like cmark_chunk_dup does.
-static cmark_chunk chunk_clone(cmark_chunk *src) {
+static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) {
   cmark_chunk c;
   bufsize_t len = src->len;
 
   c.len = len;
-  c.data = (unsigned char *)malloc(len + 1);
+  c.data = (unsigned char *)mem->calloc(len + 1, 1);
   c.alloc = 1;
   memcpy(c.data, src->data, len);
   c.data[len] = '\0';
@@ -124,8 +116,9 @@
   return c;
 }
 
-static cmark_chunk cmark_clean_autolink(cmark_chunk *url, int is_email) {
-  cmark_strbuf buf = GH_BUF_INIT;
+static cmark_chunk cmark_clean_autolink(cmark_mem *mem, cmark_chunk *url,
+                                        int is_email) {
+  cmark_strbuf buf = CMARK_BUF_INIT(mem);
 
   cmark_chunk_trim(url);
 
@@ -141,22 +134,25 @@
   return cmark_chunk_buf_detach(&buf);
 }
 
-static CMARK_INLINE cmark_node *make_autolink(cmark_chunk url, int is_email) {
-  cmark_node *link = make_simple(CMARK_NODE_LINK);
-  link->as.link.url = cmark_clean_autolink(&url, is_email);
+static CMARK_INLINE cmark_node *make_autolink(cmark_mem *mem, cmark_chunk url,
+                                              int is_email) {
+  cmark_node *link = make_simple(mem, CMARK_NODE_LINK);
+  link->as.link.url = cmark_clean_autolink(mem, &url, is_email);
   link->as.link.title = cmark_chunk_literal("");
-  cmark_node_append_child(link, make_str_with_entities(&url));
+  cmark_node_append_child(link, make_str_with_entities(mem, &url));
   return link;
 }
 
-static void subject_from_buf(subject *e, cmark_strbuf *buffer,
+static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
                              cmark_reference_map *refmap) {
+  e->mem = mem;
   e->input.data = buffer->ptr;
   e->input.len = buffer->size;
   e->input.alloc = 0;
   e->pos = 0;
   e->refmap = refmap;
   e->last_delim = NULL;
+  e->last_bracket = NULL;
 }
 
 static CMARK_INLINE int isbacktick(int c) { return (c == '`'); }
@@ -251,16 +247,16 @@
 
   if (endpos == 0) {      // not found
     subj->pos = startpos; // rewind
-    return make_str(openticks);
+    return make_str(subj->mem, openticks);
   } else {
-    cmark_strbuf buf = GH_BUF_INIT;
+    cmark_strbuf buf = CMARK_BUF_INIT(subj->mem);
 
     cmark_strbuf_set(&buf, subj->input.data + startpos,
                      endpos - startpos - openticks.len);
     cmark_strbuf_trim(&buf);
     cmark_strbuf_normalize_whitespace(&buf);
 
-    return make_code(cmark_chunk_buf_detach(&buf));
+    return make_code(subj->mem, cmark_chunk_buf_detach(&buf));
   }
 }
 
@@ -360,12 +356,18 @@
   free(delim);
 }
 
+static void pop_bracket(subject *subj) {
+  bracket *b;
+  if (subj->last_bracket == NULL)
+    return;
+  b = subj->last_bracket;
+  subj->last_bracket = subj->last_bracket->previous;
+  free(b);
+}
+
 static void push_delimiter(subject *subj, unsigned char c, bool can_open,
                            bool can_close, cmark_node *inl_text) {
-  delimiter *delim = (delimiter *)malloc(sizeof(delimiter));
-  if (delim == NULL) {
-    return;
-  }
+  delimiter *delim = (delimiter *)subj->mem->calloc(1, sizeof(delimiter));
   delim->delim_char = c;
   delim->can_open = can_open;
   delim->can_close = can_close;
@@ -375,11 +377,24 @@
   if (delim->previous != NULL) {
     delim->previous->next = delim;
   }
-  delim->position = subj->pos;
-  delim->active = true;
   subj->last_delim = delim;
 }
 
+static void push_bracket(subject *subj, bool image, cmark_node *inl_text) {
+  bracket *b = (bracket *)subj->mem->calloc(1, sizeof(bracket));
+  if (subj->last_bracket != NULL) {
+    subj->last_bracket->bracket_after = true;
+  }
+  b->image = image;
+  b->active = true;
+  b->inl_text = inl_text;
+  b->previous = subj->last_bracket;
+  b->previous_delimiter = subj->last_delim;
+  b->position = subj->pos;
+  b->bracket_after = false;
+  subj->last_bracket = b;
+}
+
 // Assumes the subject has a c at the current position.
 static cmark_node *handle_delim(subject *subj, unsigned char c, bool smart) {
   bufsize_t numdelims;
@@ -398,7 +413,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos - numdelims, numdelims);
   }
 
-  inl_text = make_str(contents);
+  inl_text = make_str(subj->mem, contents);
 
   if ((can_open || can_close) && (!(c == '\'' || c == '"') || smart)) {
     push_delimiter(subj, c, can_open, can_close, inl_text);
@@ -414,7 +429,7 @@
   advance(subj);
 
   if (!smart || peek_char(subj) != '-') {
-    return make_str(cmark_chunk_literal("-"));
+    return make_str(subj->mem, cmark_chunk_literal("-"));
   }
 
   while (smart && peek_char(subj) == '-') {
@@ -425,7 +440,7 @@
   int en_count = 0;
   int em_count = 0;
   int i;
-  cmark_strbuf buf = GH_BUF_INIT;
+  cmark_strbuf buf = CMARK_BUF_INIT(subj->mem);
 
   if (numhyphens % 3 == 0) { // if divisible by 3, use all em dashes
     em_count = numhyphens / 3;
@@ -447,7 +462,7 @@
     cmark_strbuf_puts(&buf, ENDASH);
   }
 
-  return make_str(cmark_chunk_buf_detach(&buf));
+  return make_str(subj->mem, cmark_chunk_buf_detach(&buf));
 }
 
 // Assumes we have a period at the current position.
@@ -457,12 +472,12 @@
     advance(subj);
     if (peek_char(subj) == '.') {
       advance(subj);
-      return make_str(cmark_chunk_literal(ELLIPSES));
+      return make_str(subj->mem, cmark_chunk_literal(ELLIPSES));
     } else {
-      return make_str(cmark_chunk_literal(".."));
+      return make_str(subj->mem, cmark_chunk_literal(".."));
     }
   } else {
-    return make_str(cmark_chunk_literal("."));
+    return make_str(subj->mem, cmark_chunk_literal("."));
   }
 }
 
@@ -471,6 +486,7 @@
   delimiter *opener;
   delimiter *old_closer;
   bool opener_found;
+  bool odd_match;
   delimiter *openers_bottom[128];
 
   // initialize openers_bottom:
@@ -486,15 +502,22 @@
 
   // now move forward, looking for closers, and handling each
   while (closer != NULL) {
-    if (closer->can_close &&
-        (closer->delim_char == '*' || closer->delim_char == '_' ||
-         closer->delim_char == '"' || closer->delim_char == '\'')) {
+    if (closer->can_close) {
       // Now look backwards for first matching opener:
       opener = closer->previous;
       opener_found = false;
+      odd_match = false;
       while (opener != NULL && opener != stack_bottom &&
              opener != openers_bottom[closer->delim_char]) {
-        if (opener->delim_char == closer->delim_char && opener->can_open) {
+        // interior closer of size 2 can't match opener of size 1
+        // or of size 1 can't match 2
+        odd_match = (closer->can_open || opener->can_close) &&
+                    ((opener->inl_text->as.literal.len +
+                      closer->inl_text->as.literal.len) %
+                         3 ==
+                     0);
+        if (opener->delim_char == closer->delim_char && opener->can_open &&
+            !odd_match) {
           opener_found = true;
           break;
         }
@@ -508,24 +531,28 @@
           closer = closer->next;
         }
       } else if (closer->delim_char == '\'') {
-        cmark_chunk_free(&closer->inl_text->as.literal);
+        cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
         closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);
         if (opener_found) {
-          cmark_chunk_free(&opener->inl_text->as.literal);
+          cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
           opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);
         }
         closer = closer->next;
       } else if (closer->delim_char == '"') {
-        cmark_chunk_free(&closer->inl_text->as.literal);
+        cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
         closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);
         if (opener_found) {
-          cmark_chunk_free(&opener->inl_text->as.literal);
+          cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
           opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);
         }
         closer = closer->next;
       }
-      if (!opener_found) {
-        // set lower bound for future searches for openers:
+      if (!opener_found && !odd_match) {
+        // set lower bound for future searches for openers
+        // (we don't do this with 'odd_match' set because
+        // a ** that didn't match an earlier * might turn into
+        // an opener, and the * might be matched by something
+        // else.
         openers_bottom[old_closer->delim_char] = old_closer->previous;
         if (!old_closer->can_open) {
           // we can remove a closer that can't be an
@@ -552,7 +579,7 @@
   cmark_node *closer_inl = closer->inl_text;
   bufsize_t opener_num_chars = opener_inl->as.literal.len;
   bufsize_t closer_num_chars = closer_inl->as.literal.len;
-  cmark_node *tmp, *emph, *first_child, *last_child;
+  cmark_node *tmp, *tmpnext, *emph;
 
   // calculate the actual number of characters used from this closer
   if (closer_num_chars < 3 || opener_num_chars < 3) {
@@ -576,39 +603,24 @@
     delim = tmp_delim;
   }
 
-  first_child = opener_inl->next;
-  last_child = closer_inl->prev;
+  // create new emph or strong, and splice it in to our inlines
+  // between the opener and closer
+  emph = use_delims == 1 ? make_emph(subj->mem) : make_strong(subj->mem);
 
+  tmp = opener_inl->next;
+  while (tmp && tmp != closer_inl) {
+    tmpnext = tmp->next;
+    cmark_node_append_child(emph, tmp);
+    tmp = tmpnext;
+  }
+  cmark_node_insert_after(opener_inl, emph);
+
   // if opener has 0 characters, remove it and its associated inline
   if (opener_num_chars == 0) {
-    // replace empty opener inline with emph
-    cmark_chunk_free(&(opener_inl->as.literal));
-    emph = opener_inl;
-    emph->type = use_delims == 1 ? CMARK_NODE_EMPH : CMARK_NODE_STRONG;
-    // remove opener from list
+    cmark_node_free(opener_inl);
     remove_delimiter(subj, opener);
-  } else {
-    // create new emph or strong, and splice it in to our inlines
-    // between the opener and closer
-    emph = use_delims == 1 ? make_emph() : make_strong();
-    emph->parent = opener_inl->parent;
-    emph->prev = opener_inl;
-    opener_inl->next = emph;
   }
 
-  // push children below emph
-  emph->next = closer_inl;
-  closer_inl->prev = emph;
-  emph->first_child = first_child;
-  emph->last_child = last_child;
-
-  // fix children pointers
-  first_child->prev = NULL;
-  last_child->next = NULL;
-  for (tmp = first_child; tmp != NULL; tmp = tmp->next) {
-    tmp->parent = emph;
-  }
-
   // if closer has 0 characters, remove it and its associated inline
   if (closer_num_chars == 0) {
     // remove empty closer inline
@@ -629,18 +641,18 @@
   if (cmark_ispunct(
           nextchar)) { // only ascii symbols and newline can be escaped
     advance(subj);
-    return make_str(cmark_chunk_dup(&subj->input, subj->pos - 1, 1));
+    return make_str(subj->mem, cmark_chunk_dup(&subj->input, subj->pos - 1, 1));
   } else if (!is_eof(subj) && skip_line_end(subj)) {
-    return make_linebreak();
+    return make_linebreak(subj->mem);
   } else {
-    return make_str(cmark_chunk_literal("\\"));
+    return make_str(subj->mem, cmark_chunk_literal("\\"));
   }
 }
 
 // Parse an entity or a regular "&" string.
 // Assumes the subject has an '&' character at the current position.
 static cmark_node *handle_entity(subject *subj) {
-  cmark_strbuf ent = GH_BUF_INIT;
+  cmark_strbuf ent = CMARK_BUF_INIT(subj->mem);
   bufsize_t len;
 
   advance(subj);
@@ -649,16 +661,16 @@
                              subj->input.len - subj->pos);
 
   if (len == 0)
-    return make_str(cmark_chunk_literal("&"));
+    return make_str(subj->mem, cmark_chunk_literal("&"));
 
   subj->pos += len;
-  return make_str(cmark_chunk_buf_detach(&ent));
+  return make_str(subj->mem, cmark_chunk_buf_detach(&ent));
 }
 
 // Clean a URL: remove surrounding whitespace and surrounding <>,
 // and remove \ that escape punctuation.
-cmark_chunk cmark_clean_url(cmark_chunk *url) {
-  cmark_strbuf buf = GH_BUF_INIT;
+cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) {
+  cmark_strbuf buf = CMARK_BUF_INIT(mem);
 
   cmark_chunk_trim(url);
 
@@ -677,8 +689,8 @@
   return cmark_chunk_buf_detach(&buf);
 }
 
-cmark_chunk cmark_clean_title(cmark_chunk *title) {
-  cmark_strbuf buf = GH_BUF_INIT;
+cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title) {
+  cmark_strbuf buf = CMARK_BUF_INIT(mem);
   unsigned char first, last;
 
   if (title->len == 0) {
@@ -715,7 +727,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
     subj->pos += matchlen;
 
-    return make_autolink(contents, 0);
+    return make_autolink(subj->mem, contents, 0);
   }
 
   // next try to match an email autolink
@@ -724,7 +736,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
     subj->pos += matchlen;
 
-    return make_autolink(contents, 1);
+    return make_autolink(subj->mem, contents, 1);
   }
 
   // finally, try to match an html tag
@@ -732,11 +744,11 @@
   if (matchlen > 0) {
     contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1);
     subj->pos += matchlen;
-    return make_raw_html(contents);
+    return make_raw_html(subj->mem, contents);
   }
 
   // if nothing matches, just return the opening <:
-  return make_str(cmark_chunk_literal("<"));
+  return make_str(subj->mem, cmark_chunk_literal("<"));
 }
 
 // Parse a link label.  Returns 1 if successful.
@@ -786,48 +798,40 @@
 }
 
 // Return a link, an image, or a literal close bracket.
-static cmark_node *handle_close_bracket(subject *subj, cmark_node *parent) {
+static cmark_node *handle_close_bracket(subject *subj) {
   bufsize_t initial_pos;
   bufsize_t starturl, endurl, starttitle, endtitle, endall;
   bufsize_t n;
   bufsize_t sps;
-  cmark_reference *ref;
-  bool is_image = false;
+  cmark_reference *ref = NULL;
   cmark_chunk url_chunk, title_chunk;
   cmark_chunk url, title;
-  delimiter *opener;
-  cmark_node *link_text;
+  bracket *opener;
   cmark_node *inl;
   cmark_chunk raw_label;
   int found_label;
+  cmark_node *tmp, *tmpnext;
+  bool is_image;
 
   advance(subj); // advance past ]
   initial_pos = subj->pos;
 
-  // look through list of delimiters for a [ or !
-  opener = subj->last_delim;
-  while (opener) {
-    if (opener->delim_char == '[' || opener->delim_char == '!') {
-      break;
-    }
-    opener = opener->previous;
-  }
+  // get last [ or ![
+  opener = subj->last_bracket;
 
   if (opener == NULL) {
-    return make_str(cmark_chunk_literal("]"));
+    return make_str(subj->mem, cmark_chunk_literal("]"));
   }
 
   if (!opener->active) {
     // take delimiter off stack
-    remove_delimiter(subj, opener);
-    return make_str(cmark_chunk_literal("]"));
+    pop_bracket(subj);
+    return make_str(subj->mem, cmark_chunk_literal("]"));
   }
 
   // If we got here, we matched a potential link/image text.
-  is_image = opener->delim_char == '!';
-  link_text = opener->inl_text->next;
-
   // Now we check to see if it's a link/image.
+  is_image = opener->image;
 
   // First, look for an inline link.
   if (peek_char(subj) == '(' &&
@@ -852,10 +856,10 @@
       url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl);
       title_chunk =
           cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle);
-      url = cmark_clean_url(&url_chunk);
-      title = cmark_clean_title(&title_chunk);
-      cmark_chunk_free(&url_chunk);
-      cmark_chunk_free(&title_chunk);
+      url = cmark_clean_url(subj->mem, &url_chunk);
+      title = cmark_clean_title(subj->mem, &title_chunk);
+      cmark_chunk_free(subj->mem, &url_chunk);
+      cmark_chunk_free(subj->mem, &title_chunk);
       goto match;
 
     } else {
@@ -867,24 +871,27 @@
   // skip spaces
   raw_label = cmark_chunk_literal("");
   found_label = link_label(subj, &raw_label);
-  if (!found_label || raw_label.len == 0) {
-    cmark_chunk_free(&raw_label);
-    raw_label = cmark_chunk_dup(&subj->input, opener->position,
-                                initial_pos - opener->position - 1);
-  }
-
   if (!found_label) {
     // If we have a shortcut reference link, back up
     // to before the spacse we skipped.
     subj->pos = initial_pos;
   }
 
-  ref = cmark_reference_lookup(subj->refmap, &raw_label);
-  cmark_chunk_free(&raw_label);
+  if ((!found_label || raw_label.len == 0) && !opener->bracket_after) {
+    cmark_chunk_free(subj->mem, &raw_label);
+    raw_label = cmark_chunk_dup(&subj->input, opener->position,
+                                initial_pos - opener->position - 1);
+    found_label = true;
+  }
 
+  if (found_label) {
+    ref = cmark_reference_lookup(subj->refmap, &raw_label);
+    cmark_chunk_free(subj->mem, &raw_label);
+  }
+
   if (ref != NULL) { // found
-    url = chunk_clone(&ref->url);
-    title = chunk_clone(&ref->title);
+    url = chunk_clone(subj->mem, &ref->url);
+    title = chunk_clone(subj->mem, &ref->title);
     goto match;
   } else {
     goto noMatch;
@@ -892,38 +899,36 @@
 
 noMatch:
   // If we fall through to here, it means we didn't match a link:
-  remove_delimiter(subj, opener); // remove this opener from delimiter list
+  pop_bracket(subj); // remove this opener from delimiter list
   subj->pos = initial_pos;
-  return make_str(cmark_chunk_literal("]"));
+  return make_str(subj->mem, cmark_chunk_literal("]"));
 
 match:
-  inl = opener->inl_text;
-  inl->type = is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK;
-  cmark_chunk_free(&inl->as.literal);
-  inl->first_child = link_text;
-  process_emphasis(subj, opener);
+  inl = make_simple(subj->mem, is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK);
   inl->as.link.url = url;
   inl->as.link.title = title;
-  inl->next = NULL;
-  if (link_text) {
-    cmark_node *tmp;
-    link_text->prev = NULL;
-    for (tmp = link_text; tmp->next != NULL; tmp = tmp->next) {
-      tmp->parent = inl;
-    }
-    tmp->parent = inl;
-    inl->last_child = tmp;
+  cmark_node_insert_before(opener->inl_text, inl);
+  // Add link text:
+  tmp = opener->inl_text->next;
+  while (tmp) {
+    tmpnext = tmp->next;
+    cmark_node_append_child(inl, tmp);
+    tmp = tmpnext;
   }
-  parent->last_child = inl;
 
+  // Free the bracket [:
+  cmark_node_free(opener->inl_text);
+
+  process_emphasis(subj, opener->previous_delimiter);
+  pop_bracket(subj);
+
   // Now, if we have a link, we also want to deactivate earlier link
   // delimiters. (This code can be removed if we decide to allow links
   // inside links.)
-  remove_delimiter(subj, opener);
   if (!is_image) {
-    opener = subj->last_delim;
+    opener = subj->last_bracket;
     while (opener != NULL) {
-      if (opener->delim_char == '[') {
+      if (!opener->image) {
         if (!opener->active) {
           break;
         } else {
@@ -952,9 +957,9 @@
   skip_spaces(subj);
   if (nlpos > 1 && peek_at(subj, nlpos - 1) == ' ' &&
       peek_at(subj, nlpos - 2) == ' ') {
-    return make_linebreak();
+    return make_linebreak(subj->mem);
   } else {
-    return make_softbreak();
+    return make_softbreak(subj->mem);
   }
 }
 
@@ -1043,20 +1048,20 @@
     break;
   case '[':
     advance(subj);
-    new_inl = make_str(cmark_chunk_literal("["));
-    push_delimiter(subj, '[', true, false, new_inl);
+    new_inl = make_str(subj->mem, cmark_chunk_literal("["));
+    push_bracket(subj, false, new_inl);
     break;
   case ']':
-    new_inl = handle_close_bracket(subj, parent);
+    new_inl = handle_close_bracket(subj);
     break;
   case '!':
     advance(subj);
     if (peek_char(subj) == '[') {
       advance(subj);
-      new_inl = make_str(cmark_chunk_literal("!["));
-      push_delimiter(subj, '!', false, true, new_inl);
+      new_inl = make_str(subj->mem, cmark_chunk_literal("!["));
+      push_bracket(subj, true, new_inl);
     } else {
-      new_inl = make_str(cmark_chunk_literal("!"));
+      new_inl = make_str(subj->mem, cmark_chunk_literal("!"));
     }
     break;
   default:
@@ -1069,7 +1074,7 @@
       cmark_chunk_rtrim(&contents);
     }
 
-    new_inl = make_str(contents);
+    new_inl = make_str(subj->mem, contents);
   }
   if (new_inl != NULL) {
     cmark_node_append_child(parent, new_inl);
@@ -1079,16 +1084,20 @@
 }
 
 // Parse inlines from parent's string_content, adding as children of parent.
-extern void cmark_parse_inlines(cmark_node *parent, cmark_reference_map *refmap,
-                                int options) {
+extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent,
+                                cmark_reference_map *refmap, int options) {
   subject subj;
-  subject_from_buf(&subj, &parent->string_content, refmap);
+  subject_from_buf(mem, &subj, &parent->content, refmap);
   cmark_chunk_rtrim(&subj.input);
 
   while (!is_eof(&subj) && parse_inline(&subj, parent, options))
     ;
 
   process_emphasis(&subj, NULL);
+  // free bracket stack
+  while (subj.last_bracket) {
+    pop_bracket(&subj);
+  }
 }
 
 // Parse zero or more space characters, including at most one newline.
@@ -1103,7 +1112,7 @@
 // Modify refmap if a reference is encountered.
 // Return 0 if no reference found, otherwise position of subject
 // after reference is parsed.
-bufsize_t cmark_parse_reference_inline(cmark_strbuf *input,
+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,
                                        cmark_reference_map *refmap) {
   subject subj;
 
@@ -1114,7 +1123,7 @@
   bufsize_t matchlen = 0;
   bufsize_t beforetitle;
 
-  subject_from_buf(&subj, input, NULL);
+  subject_from_buf(mem, &subj, input, NULL);
 
   // parse label:
   if (!link_label(&subj, &lab) || lab.len == 0)
diff --git a/cbits/inlines.h b/cbits/inlines.h
--- a/cbits/inlines.h
+++ b/cbits/inlines.h
@@ -5,13 +5,13 @@
 extern "C" {
 #endif
 
-cmark_chunk cmark_clean_url(cmark_chunk *url);
-cmark_chunk cmark_clean_title(cmark_chunk *title);
+cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url);
+cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title);
 
-void cmark_parse_inlines(cmark_node *parent, cmark_reference_map *refmap,
-                         int options);
+void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent,
+                         cmark_reference_map *refmap, int options);
 
-bufsize_t cmark_parse_reference_inline(cmark_strbuf *input,
+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,
                                        cmark_reference_map *refmap);
 
 #ifdef __cplusplus
diff --git a/cbits/iterator.c b/cbits/iterator.c
--- a/cbits/iterator.c
+++ b/cbits/iterator.c
@@ -16,10 +16,9 @@
   if (root == NULL) {
     return NULL;
   }
-  cmark_iter *iter = (cmark_iter *)malloc(sizeof(cmark_iter));
-  if (iter == NULL) {
-    return NULL;
-  }
+  cmark_mem *mem = root->content.mem;
+  cmark_iter *iter = (cmark_iter *)mem->calloc(1, sizeof(cmark_iter));
+  iter->mem = mem;
   iter->root = root;
   iter->cur.ev_type = CMARK_EVENT_NONE;
   iter->cur.node = NULL;
@@ -28,7 +27,7 @@
   return iter;
 }
 
-void cmark_iter_free(cmark_iter *iter) { free(iter); }
+void cmark_iter_free(cmark_iter *iter) { iter->mem->free(iter); }
 
 static bool S_is_leaf(cmark_node *node) {
   return ((1 << node->type) & S_leaf_mask) != 0;
@@ -93,7 +92,7 @@
     return;
   }
   cmark_iter *iter = cmark_iter_new(root);
-  cmark_strbuf buf = GH_BUF_INIT;
+  cmark_strbuf buf = CMARK_BUF_INIT(iter->mem);
   cmark_event_type ev_type;
   cmark_node *cur, *tmp, *next;
 
@@ -111,7 +110,7 @@
         cmark_node_free(tmp);
         tmp = next;
       }
-      cmark_chunk_free(&cur->as.literal);
+      cmark_chunk_free(iter->mem, &cur->as.literal);
       cur->as.literal = cmark_chunk_buf_detach(&buf);
     }
   }
diff --git a/cbits/iterator.h b/cbits/iterator.h
--- a/cbits/iterator.h
+++ b/cbits/iterator.h
@@ -6,6 +6,7 @@
 #endif
 
 #include "cmark.h"
+#include "memory.h"
 
 typedef struct {
   cmark_event_type ev_type;
@@ -13,6 +14,7 @@
 } cmark_iter_state;
 
 struct cmark_iter {
+  cmark_mem *mem;
   cmark_node *root;
   cmark_iter_state cur;
   cmark_iter_state next;
diff --git a/cbits/latex.c b/cbits/latex.c
--- a/cbits/latex.c
+++ b/cbits/latex.c
@@ -2,7 +2,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
-#include <ctype.h>
 
 #include "config.h"
 #include "cmark.h"
@@ -12,7 +11,6 @@
 #include "scanners.h"
 #include "render.h"
 
-#define safe_strlen(s) cmark_strbuf_safe_strlen(s)
 #define OUT(s, wrap, escaping) renderer->out(renderer, s, wrap, escaping)
 #define LIT(s) renderer->out(renderer, s, false, LITERAL)
 #define CR() renderer->cr(renderer)
@@ -20,7 +18,7 @@
 #define LIST_NUMBER_STRING_SIZE 20
 
 static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape,
-                        int32_t c, unsigned char nextc) {
+                              int32_t c, unsigned char nextc) {
   if (escape == LITERAL) {
     cmark_render_code_point(renderer, c);
     return;
@@ -169,13 +167,13 @@
     return INTERNAL_LINK;
   }
 
-  url_len = safe_strlen(url);
+  url_len = strlen(url);
   if (url_len == 0 || scan_scheme(&url_chunk, 0) == 0) {
     return NO_LINK;
   }
 
   const char *title = cmark_node_get_title(node);
-  title_len = safe_strlen(title);
+  title_len = strlen(title);
   // if it has a title, we can't treat it as an autolink:
   if (title_len == 0) {
 
@@ -223,6 +221,7 @@
   cmark_list_type list_type;
   const char *roman_numerals[] = {"",   "i",   "ii",   "iii", "iv", "v",
                                   "vi", "vii", "viii", "ix",  "x"};
+  bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);
 
   // avoid warning about unused parameter:
   (void)(options);
@@ -334,7 +333,7 @@
     break;
 
   case CMARK_NODE_TEXT:
-    OUT(cmark_node_get_literal(node), true, NORMAL);
+    OUT(cmark_node_get_literal(node), allow_wrap, NORMAL);
     break;
 
   case CMARK_NODE_LINEBREAK:
@@ -343,10 +342,13 @@
     break;
 
   case CMARK_NODE_SOFTBREAK:
-    if (renderer->width == 0) {
+    if (options & CMARK_OPT_HARDBREAKS) {
+      LIT("\\\\");
       CR();
+    } else if (renderer->width == 0 && !(CMARK_OPT_NOBREAKS & options)) {
+      CR();
     } else {
-      OUT(" ", true, NORMAL);
+      OUT(" ", allow_wrap, NORMAL);
     }
     break;
 
diff --git a/cbits/man.c b/cbits/man.c
--- a/cbits/man.c
+++ b/cbits/man.c
@@ -75,6 +75,7 @@
   cmark_node *tmp;
   int list_number;
   bool entering = (ev_type == CMARK_EVENT_ENTER);
+  bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);
 
   // avoid unused parameter error:
   (void)(options);
@@ -173,7 +174,7 @@
     break;
 
   case CMARK_NODE_TEXT:
-    OUT(cmark_node_get_literal(node), true, NORMAL);
+    OUT(cmark_node_get_literal(node), allow_wrap, NORMAL);
     break;
 
   case CMARK_NODE_LINEBREAK:
@@ -182,16 +183,19 @@
     break;
 
   case CMARK_NODE_SOFTBREAK:
-    if (renderer->width == 0) {
+    if (options & CMARK_OPT_HARDBREAKS) {
+      LIT(".PD 0\n.P\n.PD");
       CR();
+    } else if (renderer->width == 0 && !(CMARK_OPT_NOBREAKS & options)) {
+      CR();
     } else {
-      OUT(" ", true, LITERAL);
+      OUT(" ", allow_wrap, LITERAL);
     }
     break;
 
   case CMARK_NODE_CODE:
     LIT("\\f[C]");
-    OUT(cmark_node_get_literal(node), true, NORMAL);
+    OUT(cmark_node_get_literal(node), allow_wrap, NORMAL);
     LIT("\\f[]");
     break;
 
@@ -222,7 +226,7 @@
   case CMARK_NODE_LINK:
     if (!entering) {
       LIT(" (");
-      OUT(cmark_node_get_url(node), true, URL);
+      OUT(cmark_node_get_url(node), allow_wrap, URL);
       LIT(")");
     }
     break;
diff --git a/cbits/node.c b/cbits/node.c
--- a/cbits/node.c
+++ b/cbits/node.c
@@ -6,6 +6,8 @@
 
 static void S_node_unlink(cmark_node *node);
 
+#define NODE_MEM(node) cmark_node_mem(node)
+
 static CMARK_INLINE bool S_is_block(cmark_node *node) {
   if (node == NULL) {
     return false;
@@ -70,9 +72,10 @@
   return false;
 }
 
-cmark_node *cmark_node_new(cmark_node_type type) {
-  cmark_node *node = (cmark_node *)calloc(1, sizeof(*node));
-  node->type = type;
+cmark_node *cmark_node_new_with_mem(cmark_node_type type, cmark_mem *mem) {
+  cmark_node *node = (cmark_node *)mem->calloc(1, sizeof(*node));
+  cmark_strbuf_init(mem, &node->content, 0);
+  node->type = (uint16_t)type;
 
   switch (node->type) {
   case CMARK_NODE_HEADING:
@@ -94,33 +97,36 @@
   return node;
 }
 
+cmark_node *cmark_node_new(cmark_node_type type) {
+  extern cmark_mem DEFAULT_MEM_ALLOCATOR;
+  return cmark_node_new_with_mem(type, &DEFAULT_MEM_ALLOCATOR);
+}
+
 // Free a cmark_node list and any children.
 static void S_free_nodes(cmark_node *e) {
   cmark_node *next;
   while (e != NULL) {
-    if (S_is_block(e)) {
-      cmark_strbuf_free(&e->string_content);
-    }
+    cmark_strbuf_free(&e->content);
     switch (e->type) {
     case CMARK_NODE_CODE_BLOCK:
-      cmark_chunk_free(&e->as.code.info);
-      cmark_chunk_free(&e->as.code.literal);
+      cmark_chunk_free(NODE_MEM(e), &e->as.code.info);
+      cmark_chunk_free(NODE_MEM(e), &e->as.code.literal);
       break;
     case CMARK_NODE_TEXT:
     case CMARK_NODE_HTML_INLINE:
     case CMARK_NODE_CODE:
     case CMARK_NODE_HTML_BLOCK:
-      cmark_chunk_free(&e->as.literal);
+      cmark_chunk_free(NODE_MEM(e), &e->as.literal);
       break;
     case CMARK_NODE_LINK:
     case CMARK_NODE_IMAGE:
-      cmark_chunk_free(&e->as.link.url);
-      cmark_chunk_free(&e->as.link.title);
+      cmark_chunk_free(NODE_MEM(e), &e->as.link.url);
+      cmark_chunk_free(NODE_MEM(e), &e->as.link.title);
       break;
     case CMARK_NODE_CUSTOM_BLOCK:
     case CMARK_NODE_CUSTOM_INLINE:
-      cmark_chunk_free(&e->as.custom.on_enter);
-      cmark_chunk_free(&e->as.custom.on_exit);
+      cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_enter);
+      cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_exit);
       break;
     default:
       break;
@@ -131,7 +137,7 @@
       e->next = e->first_child;
     }
     next = e->next;
-    free(e);
+    NODE_MEM(e)->free(e);
     e = next;
   }
 }
@@ -146,7 +152,7 @@
   if (node == NULL) {
     return CMARK_NODE_NONE;
   } else {
-    return node->type;
+    return (cmark_node_type)node->type;
   }
 }
 
@@ -269,10 +275,10 @@
   case CMARK_NODE_TEXT:
   case CMARK_NODE_HTML_INLINE:
   case CMARK_NODE_CODE:
-    return cmark_chunk_to_cstr(&node->as.literal);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal);
 
   case CMARK_NODE_CODE_BLOCK:
-    return cmark_chunk_to_cstr(&node->as.code.literal);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.literal);
 
   default:
     break;
@@ -291,11 +297,11 @@
   case CMARK_NODE_TEXT:
   case CMARK_NODE_HTML_INLINE:
   case CMARK_NODE_CODE:
-    cmark_chunk_set_cstr(&node->as.literal, content);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.literal, content);
     return 1;
 
   case CMARK_NODE_CODE_BLOCK:
-    cmark_chunk_set_cstr(&node->as.code.literal, content);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.literal, content);
     return 1;
 
   default:
@@ -452,7 +458,7 @@
   }
 
   if (node->type == CMARK_NODE_CODE_BLOCK) {
-    return cmark_chunk_to_cstr(&node->as.code.info);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.info);
   } else {
     return NULL;
   }
@@ -464,7 +470,7 @@
   }
 
   if (node->type == CMARK_NODE_CODE_BLOCK) {
-    cmark_chunk_set_cstr(&node->as.code.info, info);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.info, info);
     return 1;
   } else {
     return 0;
@@ -479,7 +485,7 @@
   switch (node->type) {
   case CMARK_NODE_LINK:
   case CMARK_NODE_IMAGE:
-    return cmark_chunk_to_cstr(&node->as.link.url);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.url);
   default:
     break;
   }
@@ -495,7 +501,7 @@
   switch (node->type) {
   case CMARK_NODE_LINK:
   case CMARK_NODE_IMAGE:
-    cmark_chunk_set_cstr(&node->as.link.url, url);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.url, url);
     return 1;
   default:
     break;
@@ -512,7 +518,7 @@
   switch (node->type) {
   case CMARK_NODE_LINK:
   case CMARK_NODE_IMAGE:
-    return cmark_chunk_to_cstr(&node->as.link.title);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.title);
   default:
     break;
   }
@@ -528,7 +534,7 @@
   switch (node->type) {
   case CMARK_NODE_LINK:
   case CMARK_NODE_IMAGE:
-    cmark_chunk_set_cstr(&node->as.link.title, title);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.title, title);
     return 1;
   default:
     break;
@@ -545,7 +551,7 @@
   switch (node->type) {
   case CMARK_NODE_CUSTOM_INLINE:
   case CMARK_NODE_CUSTOM_BLOCK:
-    return cmark_chunk_to_cstr(&node->as.custom.on_enter);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_enter);
   default:
     break;
   }
@@ -561,7 +567,7 @@
   switch (node->type) {
   case CMARK_NODE_CUSTOM_INLINE:
   case CMARK_NODE_CUSTOM_BLOCK:
-    cmark_chunk_set_cstr(&node->as.custom.on_enter, on_enter);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_enter, on_enter);
     return 1;
   default:
     break;
@@ -578,7 +584,7 @@
   switch (node->type) {
   case CMARK_NODE_CUSTOM_INLINE:
   case CMARK_NODE_CUSTOM_BLOCK:
-    return cmark_chunk_to_cstr(&node->as.custom.on_exit);
+    return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_exit);
   default:
     break;
   }
@@ -594,7 +600,7 @@
   switch (node->type) {
   case CMARK_NODE_CUSTOM_INLINE:
   case CMARK_NODE_CUSTOM_BLOCK:
-    cmark_chunk_set_cstr(&node->as.custom.on_exit, on_exit);
+    cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_exit, on_exit);
     return 1;
   default:
     break;
diff --git a/cbits/node.h b/cbits/node.h
--- a/cbits/node.h
+++ b/cbits/node.h
@@ -25,11 +25,10 @@
 typedef struct {
   cmark_chunk info;
   cmark_chunk literal;
-  int fence_length;
-  /* fence_offset must be 0-3, so we can use int8_t */
-  int8_t fence_offset;
+  uint8_t fence_length;
+  uint8_t fence_offset;
   unsigned char fence_char;
-  bool fenced;
+  int8_t fenced;
 } cmark_code;
 
 typedef struct {
@@ -47,7 +46,14 @@
   cmark_chunk on_exit;
 } cmark_custom;
 
+enum cmark_node__internal_flags {
+  CMARK_NODE__OPEN = (1 << 0),
+  CMARK_NODE__LAST_LINE_BLANK = (1 << 1),
+};
+
 struct cmark_node {
+  cmark_strbuf content;
+
   struct cmark_node *next;
   struct cmark_node *prev;
   struct cmark_node *parent;
@@ -60,13 +66,8 @@
   int start_column;
   int end_line;
   int end_column;
-
-  cmark_node_type type;
-
-  bool open;
-  bool last_line_blank;
-
-  cmark_strbuf string_content;
+  uint16_t type;
+  uint16_t flags;
 
   union {
     cmark_chunk literal;
@@ -79,6 +80,9 @@
   } as;
 };
 
+static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) {
+  return node->content.mem;
+}
 CMARK_EXPORT int cmark_node_check(cmark_node *node, FILE *out);
 
 #ifdef __cplusplus
diff --git a/cbits/parser.h b/cbits/parser.h
--- a/cbits/parser.h
+++ b/cbits/parser.h
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include "node.h"
 #include "buffer.h"
+#include "memory.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -12,6 +13,7 @@
 #define MAX_LINK_LABEL_LENGTH 1000
 
 struct cmark_parser {
+  struct cmark_mem *mem;
   struct cmark_reference_map *refmap;
   struct cmark_node *root;
   struct cmark_node *current;
@@ -23,9 +25,9 @@
   int indent;
   bool blank;
   bool partially_consumed_tab;
-  cmark_strbuf *curline;
+  cmark_strbuf curline;
   bufsize_t last_line_length;
-  cmark_strbuf *linebuf;
+  cmark_strbuf linebuf;
   int options;
   bool last_buffer_ended_with_cr;
 };
diff --git a/cbits/references.c b/cbits/references.c
--- a/cbits/references.c
+++ b/cbits/references.c
@@ -14,12 +14,13 @@
   return hash;
 }
 
-static void reference_free(cmark_reference *ref) {
+static void reference_free(cmark_reference_map *map, cmark_reference *ref) {
+  cmark_mem *mem = map->mem;
   if (ref != NULL) {
-    free(ref->label);
-    cmark_chunk_free(&ref->url);
-    cmark_chunk_free(&ref->title);
-    free(ref);
+    mem->free(ref->label);
+    cmark_chunk_free(mem, &ref->url);
+    cmark_chunk_free(mem, &ref->title);
+    mem->free(ref);
   }
 }
 
@@ -27,8 +28,8 @@
 // remove leading/trailing whitespace, case fold
 // Return NULL if the reference name is actually empty (i.e. composed
 // solely from whitespace)
-static unsigned char *normalize_reference(cmark_chunk *ref) {
-  cmark_strbuf normalized = GH_BUF_INIT;
+static unsigned char *normalize_reference(cmark_mem *mem, cmark_chunk *ref) {
+  cmark_strbuf normalized = CMARK_BUF_INIT(mem);
   unsigned char *result;
 
   if (ref == NULL)
@@ -57,7 +58,7 @@
 
   while (t) {
     if (t->hash == ref->hash && !strcmp((char *)t->label, (char *)ref->label)) {
-      reference_free(ref);
+      reference_free(map, ref);
       return;
     }
 
@@ -70,22 +71,20 @@
 void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label,
                             cmark_chunk *url, cmark_chunk *title) {
   cmark_reference *ref;
-  unsigned char *reflabel = normalize_reference(label);
+  unsigned char *reflabel = normalize_reference(map->mem, label);
 
   /* empty reference name, or composed from only whitespace */
   if (reflabel == NULL)
     return;
 
-  ref = (cmark_reference *)calloc(1, sizeof(*ref));
-  if (ref != NULL) {
-    ref->label = reflabel;
-    ref->hash = refhash(ref->label);
-    ref->url = cmark_clean_url(url);
-    ref->title = cmark_clean_title(title);
-    ref->next = NULL;
+  ref = (cmark_reference *)map->mem->calloc(1, sizeof(*ref));
+  ref->label = reflabel;
+  ref->hash = refhash(ref->label);
+  ref->url = cmark_clean_url(map->mem, url);
+  ref->title = cmark_clean_title(map->mem, title);
+  ref->next = NULL;
 
-    add_reference(map, ref);
-  }
+  add_reference(map, ref);
 }
 
 // Returns reference if refmap contains a reference with matching
@@ -96,13 +95,13 @@
   unsigned char *norm;
   unsigned int hash;
 
-  if (label->len > MAX_LINK_LABEL_LENGTH)
+  if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)
     return NULL;
 
   if (map == NULL)
     return NULL;
 
-  norm = normalize_reference(label);
+  norm = normalize_reference(map->mem, label);
   if (norm == NULL)
     return NULL;
 
@@ -131,7 +130,7 @@
 
     while (ref) {
       next = ref->next;
-      reference_free(ref);
+      reference_free(map, ref);
       ref = next;
     }
   }
@@ -139,6 +138,9 @@
   free(map);
 }
 
-cmark_reference_map *cmark_reference_map_new(void) {
-  return (cmark_reference_map *)calloc(1, sizeof(cmark_reference_map));
+cmark_reference_map *cmark_reference_map_new(cmark_mem *mem) {
+  cmark_reference_map *map =
+      (cmark_reference_map *)mem->calloc(1, sizeof(cmark_reference_map));
+  map->mem = mem;
+  return map;
 }
diff --git a/cbits/references.h b/cbits/references.h
--- a/cbits/references.h
+++ b/cbits/references.h
@@ -1,6 +1,7 @@
 #ifndef CMARK_REFERENCES_H
 #define CMARK_REFERENCES_H
 
+#include "memory.h"
 #include "chunk.h"
 
 #ifdef __cplusplus
@@ -20,12 +21,13 @@
 typedef struct cmark_reference cmark_reference;
 
 struct cmark_reference_map {
+  cmark_mem *mem;
   cmark_reference *table[REFMAP_SIZE];
 };
 
 typedef struct cmark_reference_map cmark_reference_map;
 
-cmark_reference_map *cmark_reference_map_new(void);
+cmark_reference_map *cmark_reference_map_new(cmark_mem *mem);
 void cmark_reference_map_free(cmark_reference_map *map);
 cmark_reference *cmark_reference_lookup(cmark_reference_map *map,
                                         cmark_chunk *label);
diff --git a/cbits/render.c b/cbits/render.c
--- a/cbits/render.c
+++ b/cbits/render.c
@@ -4,6 +4,7 @@
 #include "cmark.h"
 #include "utf8.h"
 #include "render.h"
+#include "node.h"
 
 static CMARK_INLINE void S_cr(cmark_renderer *renderer) {
   if (renderer->need_cr < 1) {
@@ -19,7 +20,7 @@
 
 static void S_out(cmark_renderer *renderer, const char *source, bool wrap,
                   cmark_escaping escape) {
-  int length = cmark_strbuf_safe_strlen(source);
+  int length = strlen(source);
   unsigned char nextc;
   int32_t c;
   int i = 0;
@@ -28,7 +29,7 @@
   cmark_chunk remainder = cmark_chunk_literal("");
   int k = renderer->buffer->size - 1;
 
-  wrap = wrap && !renderer->no_wrap;
+  wrap = wrap && !renderer->no_linebreaks;
 
   if (renderer->in_tight_list_item && renderer->need_cr > 1) {
     renderer->need_cr = 1;
@@ -108,8 +109,9 @@
         !renderer->begin_line && renderer->last_breakable > 0) {
 
       // copy from last_breakable to remainder
-      cmark_chunk_set_cstr(&remainder, (char *)renderer->buffer->ptr +
-                                           renderer->last_breakable + 1);
+      cmark_chunk_set_cstr(renderer->mem, &remainder,
+                           (char *)renderer->buffer->ptr +
+                               renderer->last_breakable + 1);
       // truncate at last_breakable
       cmark_strbuf_truncate(renderer->buffer, renderer->last_breakable);
       // add newline, prefix, and remainder
@@ -118,7 +120,7 @@
                        renderer->prefix->size);
       cmark_strbuf_put(renderer->buffer, remainder.data, remainder.len);
       renderer->column = renderer->prefix->size + remainder.len;
-      cmark_chunk_free(&remainder);
+      cmark_chunk_free(renderer->mem, &remainder);
       renderer->last_breakable = 0;
       renderer->begin_line = false;
       renderer->begin_content = false;
@@ -146,16 +148,17 @@
                    int (*render_node)(cmark_renderer *renderer,
                                       cmark_node *node,
                                       cmark_event_type ev_type, int options)) {
-  cmark_strbuf pref = GH_BUF_INIT;
-  cmark_strbuf buf = GH_BUF_INIT;
+  cmark_mem *mem = cmark_node_mem(root);
+  cmark_strbuf pref = CMARK_BUF_INIT(mem);
+  cmark_strbuf buf = CMARK_BUF_INIT(mem);
   cmark_node *cur;
   cmark_event_type ev_type;
   char *result;
   cmark_iter *iter = cmark_iter_new(root);
 
-  cmark_renderer renderer = {&buf, &pref, 0,           width, 0,
-                             0,    true,  true,        false, false,
-                             outc, S_cr,  S_blankline, S_out};
+  cmark_renderer renderer = {mem,   &buf, &pref, 0,           width,
+                             0,     0,    true,  true,        false,
+                             false, outc, S_cr,  S_blankline, S_out};
 
   while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
     cur = cmark_iter_get_node(iter);
diff --git a/cbits/render.h b/cbits/render.h
--- a/cbits/render.h
+++ b/cbits/render.h
@@ -8,10 +8,12 @@
 #include <stdlib.h>
 #include "buffer.h"
 #include "chunk.h"
+#include "memory.h"
 
 typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping;
 
 struct cmark_renderer {
+  cmark_mem *mem;
   cmark_strbuf *buffer;
   cmark_strbuf *prefix;
   int column;
@@ -20,7 +22,7 @@
   bufsize_t last_breakable;
   bool begin_line;
   bool begin_content;
-  bool no_wrap;
+  bool no_linebreaks;
   bool in_tight_list_item;
   void (*outc)(struct cmark_renderer *, cmark_escaping, int32_t, unsigned char);
   void (*cr)(struct cmark_renderer *);
diff --git a/cbits/scanners.c b/cbits/scanners.c
--- a/cbits/scanners.c
+++ b/cbits/scanners.c
@@ -1,19791 +1,19607 @@
-/* Generated by re2c 0.14.3 */
-#include <stdlib.h>
-#include "chunk.h"
-#include "scanners.h"
-
-bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
-                   bufsize_t offset) {
-  bufsize_t res;
-  unsigned char *ptr = (unsigned char *)c->data;
-
-  if (ptr == NULL || offset > c->len) {
-    return 0;
-  } else {
-    unsigned char lim = ptr[c->len];
-
-    ptr[c->len] = '\0';
-    res = scanner(ptr + offset);
-    ptr[c->len] = lim;
-  }
-
-  return res;
-}
-
-// Try to match a scheme including colon.
-bufsize_t _scan_scheme(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-
-    yych = *(marker = p);
-    if (yych <= 0x7F) {
-      if (yych <= ' ') {
-        if (yych == '\n')
-          goto yy2;
-        if (yych <= 0x1F)
-          goto yy4;
-        goto yy3;
-      } else {
-        if (yych <= 'Z') {
-          if (yych <= '@')
-            goto yy4;
-          goto yy3;
-        } else {
-          if (yych <= '`')
-            goto yy4;
-          if (yych <= 'z')
-            goto yy3;
-          goto yy4;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych >= 0xC2)
-            goto yy5;
-        } else {
-          if (yych <= 0xE0)
-            goto yy7;
-          if (yych <= 0xEC)
-            goto yy8;
-          goto yy12;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy8;
-          goto yy9;
-        } else {
-          if (yych <= 0xF3)
-            goto yy10;
-          if (yych <= 0xF4)
-            goto yy11;
-        }
-      }
-    }
-  yy2 : { return 0; }
-  yy3:
-    yych = *(marker = ++p);
-    if (yych <= '.') {
-      if (yych == '+')
-        goto yy13;
-      if (yych <= ',')
-        goto yy2;
-      goto yy13;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy2;
-        goto yy13;
-      } else {
-        if (yych <= '`')
-          goto yy2;
-        if (yych <= 'z')
-          goto yy13;
-        goto yy2;
-      }
-    }
-  yy4:
-    yych = *++p;
-    goto yy2;
-  yy5:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy4;
-  yy6:
-    p = marker;
-    goto yy2;
-  yy7:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy5;
-    goto yy6;
-  yy8:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy5;
-    goto yy6;
-  yy9:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy8;
-    goto yy6;
-  yy10:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0xBF)
-      goto yy8;
-    goto yy6;
-  yy11:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0x8F)
-      goto yy8;
-    goto yy6;
-  yy12:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy6;
-    if (yych <= 0x9F)
-      goto yy5;
-    goto yy6;
-  yy13:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-        goto yy16;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych <= '.')
-          goto yy16;
-        goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-        goto yy16;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych <= 'z')
-          goto yy16;
-        goto yy6;
-      }
-    }
-  yy14:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy16:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy6;
-      } else {
-        if (yych <= ',')
-          goto yy6;
-        if (yych >= '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy14;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    ++p;
-    if ((yych = *p) == ':')
-      goto yy14;
-    goto yy6;
-  }
-}
-
-// Try to match URI autolink after first <, returning number of chars matched.
-bufsize_t _scan_autolink_uri(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0x7F) {
-      if (yych <= ' ') {
-        if (yych == '\n')
-          goto yy48;
-        if (yych <= 0x1F)
-          goto yy50;
-        goto yy49;
-      } else {
-        if (yych <= 'Z') {
-          if (yych <= '@')
-            goto yy50;
-          goto yy49;
-        } else {
-          if (yych <= '`')
-            goto yy50;
-          if (yych <= 'z')
-            goto yy49;
-          goto yy50;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych >= 0xC2)
-            goto yy51;
-        } else {
-          if (yych <= 0xE0)
-            goto yy53;
-          if (yych <= 0xEC)
-            goto yy54;
-          goto yy58;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy54;
-          goto yy55;
-        } else {
-          if (yych <= 0xF3)
-            goto yy56;
-          if (yych <= 0xF4)
-            goto yy57;
-        }
-      }
-    }
-  yy48 : { return 0; }
-  yy49:
-    yych = *(marker = ++p);
-    if (yych <= '.') {
-      if (yych == '+')
-        goto yy59;
-      if (yych <= ',')
-        goto yy48;
-      goto yy59;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy48;
-        goto yy59;
-      } else {
-        if (yych <= '`')
-          goto yy48;
-        if (yych <= 'z')
-          goto yy59;
-        goto yy48;
-      }
-    }
-  yy50:
-    yych = *++p;
-    goto yy48;
-  yy51:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy50;
-  yy52:
-    p = marker;
-    goto yy48;
-  yy53:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy51;
-    goto yy52;
-  yy54:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy51;
-    goto yy52;
-  yy55:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy54;
-    goto yy52;
-  yy56:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy54;
-    goto yy52;
-  yy57:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x8F)
-      goto yy54;
-    goto yy52;
-  yy58:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x9F)
-      goto yy51;
-    goto yy52;
-  yy59:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-        goto yy62;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych <= '.')
-          goto yy62;
-        goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-        goto yy62;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych <= 'z')
-          goto yy62;
-        goto yy52;
-      }
-    }
-  yy60:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy60;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '<')
-          goto yy52;
-        if (yych <= '>')
-          goto yy99;
-        goto yy52;
-      } else {
-        if (yych <= 0xDF)
-          goto yy92;
-        if (yych <= 0xE0)
-          goto yy93;
-        goto yy94;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy98;
-        if (yych <= 0xEF)
-          goto yy94;
-        goto yy95;
-      } else {
-        if (yych <= 0xF3)
-          goto yy96;
-        if (yych <= 0xF4)
-          goto yy97;
-        goto yy52;
-      }
-    }
-  yy62:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy52;
-      } else {
-        if (yych <= ',')
-          goto yy52;
-        if (yych >= '/')
-          goto yy52;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy60;
-        if (yych <= '@')
-          goto yy52;
-      } else {
-        if (yych <= '`')
-          goto yy52;
-        if (yych >= '{')
-          goto yy52;
-      }
-    }
-    yych = *++p;
-    if (yych == ':')
-      goto yy60;
-    goto yy52;
-  yy92:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy60;
-    goto yy52;
-  yy93:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy92;
-    goto yy52;
-  yy94:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy92;
-    goto yy52;
-  yy95:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy94;
-    goto yy52;
-  yy96:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0xBF)
-      goto yy94;
-    goto yy52;
-  yy97:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x8F)
-      goto yy94;
-    goto yy52;
-  yy98:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy52;
-    if (yych <= 0x9F)
-      goto yy92;
-    goto yy52;
-  yy99:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match email autolink after first <, returning num of chars matched.
-bufsize_t _scan_autolink_email(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
-        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= '?') {
-      if (yych <= ')') {
-        if (yych <= ' ') {
-          if (yych != '\n')
-            goto yy105;
-        } else {
-          if (yych == '"')
-            goto yy105;
-          if (yych <= '\'')
-            goto yy104;
-          goto yy105;
-        }
-      } else {
-        if (yych <= '9') {
-          if (yych == ',')
-            goto yy105;
-          goto yy104;
-        } else {
-          if (yych == '=')
-            goto yy104;
-          if (yych <= '>')
-            goto yy105;
-          goto yy104;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= ']') {
-          if (yych <= '@')
-            goto yy105;
-          if (yych <= 'Z')
-            goto yy104;
-          goto yy105;
-        } else {
-          if (yych <= '~')
-            goto yy104;
-          if (yych <= 0x7F)
-            goto yy105;
-          if (yych >= 0xC2)
-            goto yy106;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy108;
-          if (yych == 0xED)
-            goto yy113;
-          goto yy109;
-        } else {
-          if (yych <= 0xF0)
-            goto yy110;
-          if (yych <= 0xF3)
-            goto yy111;
-          if (yych <= 0xF4)
-            goto yy112;
-        }
-      }
-    }
-  yy103 : { return 0; }
-  yy104:
-    yych = *(marker = ++p);
-    if (yych <= ',') {
-      if (yych <= '"') {
-        if (yych == '!')
-          goto yy116;
-        goto yy103;
-      } else {
-        if (yych <= '\'')
-          goto yy116;
-        if (yych <= ')')
-          goto yy103;
-        if (yych <= '+')
-          goto yy116;
-        goto yy103;
-      }
-    } else {
-      if (yych <= '>') {
-        if (yych <= '9')
-          goto yy116;
-        if (yych == '=')
-          goto yy116;
-        goto yy103;
-      } else {
-        if (yych <= 'Z')
-          goto yy116;
-        if (yych <= ']')
-          goto yy103;
-        if (yych <= '~')
-          goto yy116;
-        goto yy103;
-      }
-    }
-  yy105:
-    yych = *++p;
-    goto yy103;
-  yy106:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy105;
-  yy107:
-    p = marker;
-    goto yy103;
-  yy108:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy106;
-    goto yy107;
-  yy109:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy106;
-    goto yy107;
-  yy110:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy109;
-    goto yy107;
-  yy111:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0xBF)
-      goto yy109;
-    goto yy107;
-  yy112:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0x8F)
-      goto yy109;
-    goto yy107;
-  yy113:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy107;
-    if (yych <= 0x9F)
-      goto yy106;
-    goto yy107;
-  yy114:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy117;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy117;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy117;
-      goto yy107;
-    }
-  yy115:
-    ++p;
-    yych = *p;
-  yy116:
-    if (yybm[0 + yych] & 128) {
-      goto yy115;
-    }
-    if (yych <= '>')
-      goto yy107;
-    if (yych <= '@')
-      goto yy114;
-    goto yy107;
-  yy117:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy119;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy119;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy119;
-        goto yy107;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy247;
-      if (yych <= '/')
-        goto yy107;
-      goto yy248;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy248;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy248;
-        goto yy107;
-      }
-    }
-  yy119:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych <= '-')
-          goto yy247;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy248;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy248;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy248;
-        goto yy107;
-      }
-    }
-  yy120:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy123;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy123;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy123;
-      goto yy107;
-    }
-  yy121:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy123:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy125;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy125;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy125;
-        goto yy107;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy126;
-      if (yych <= '/')
-        goto yy107;
-      goto yy127;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy127;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy127;
-        goto yy107;
-      }
-    }
-  yy125:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy127;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy127;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy127;
-        goto yy107;
-      }
-    }
-  yy126:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy128;
-      if (yych <= '/')
-        goto yy107;
-      goto yy129;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy129;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy129;
-        goto yy107;
-      }
-    }
-  yy127:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy129;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy129;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy129;
-        goto yy107;
-      }
-    }
-  yy128:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy130;
-      if (yych <= '/')
-        goto yy107;
-      goto yy131;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy131;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy131;
-        goto yy107;
-      }
-    }
-  yy129:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy131;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy131;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy131;
-        goto yy107;
-      }
-    }
-  yy130:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy132;
-      if (yych <= '/')
-        goto yy107;
-      goto yy133;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy133;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy133;
-        goto yy107;
-      }
-    }
-  yy131:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy133;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy133;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy133;
-        goto yy107;
-      }
-    }
-  yy132:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy134;
-      if (yych <= '/')
-        goto yy107;
-      goto yy135;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy135;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy135;
-        goto yy107;
-      }
-    }
-  yy133:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy135;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy135;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy135;
-        goto yy107;
-      }
-    }
-  yy134:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy136;
-      if (yych <= '/')
-        goto yy107;
-      goto yy137;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy137;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy137;
-        goto yy107;
-      }
-    }
-  yy135:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy137;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy137;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy137;
-        goto yy107;
-      }
-    }
-  yy136:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy138;
-      if (yych <= '/')
-        goto yy107;
-      goto yy139;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy139;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy139;
-        goto yy107;
-      }
-    }
-  yy137:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy139;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy139;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy139;
-        goto yy107;
-      }
-    }
-  yy138:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy140;
-      if (yych <= '/')
-        goto yy107;
-      goto yy141;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy141;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy141;
-        goto yy107;
-      }
-    }
-  yy139:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy141;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy141;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy141;
-        goto yy107;
-      }
-    }
-  yy140:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy142;
-      if (yych <= '/')
-        goto yy107;
-      goto yy143;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy143;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy143;
-        goto yy107;
-      }
-    }
-  yy141:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy143;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy143;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy143;
-        goto yy107;
-      }
-    }
-  yy142:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy144;
-      if (yych <= '/')
-        goto yy107;
-      goto yy145;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy145;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy145;
-        goto yy107;
-      }
-    }
-  yy143:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy145;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy145;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy145;
-        goto yy107;
-      }
-    }
-  yy144:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy146;
-      if (yych <= '/')
-        goto yy107;
-      goto yy147;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy147;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy147;
-        goto yy107;
-      }
-    }
-  yy145:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy147;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy147;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy147;
-        goto yy107;
-      }
-    }
-  yy146:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy148;
-      if (yych <= '/')
-        goto yy107;
-      goto yy149;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy149;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy149;
-        goto yy107;
-      }
-    }
-  yy147:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy149;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy149;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy149;
-        goto yy107;
-      }
-    }
-  yy148:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy150;
-      if (yych <= '/')
-        goto yy107;
-      goto yy151;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy151;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy151;
-        goto yy107;
-      }
-    }
-  yy149:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy151;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy151;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy151;
-        goto yy107;
-      }
-    }
-  yy150:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy152;
-      if (yych <= '/')
-        goto yy107;
-      goto yy153;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy153;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy153;
-        goto yy107;
-      }
-    }
-  yy151:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy153;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy153;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy153;
-        goto yy107;
-      }
-    }
-  yy152:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy154;
-      if (yych <= '/')
-        goto yy107;
-      goto yy155;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy155;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy155;
-        goto yy107;
-      }
-    }
-  yy153:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy155;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy155;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy155;
-        goto yy107;
-      }
-    }
-  yy154:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy156;
-      if (yych <= '/')
-        goto yy107;
-      goto yy157;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy157;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy157;
-        goto yy107;
-      }
-    }
-  yy155:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy157;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy157;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy157;
-        goto yy107;
-      }
-    }
-  yy156:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy158;
-      if (yych <= '/')
-        goto yy107;
-      goto yy159;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy159;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy159;
-        goto yy107;
-      }
-    }
-  yy157:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy159;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy159;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy159;
-        goto yy107;
-      }
-    }
-  yy158:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy160;
-      if (yych <= '/')
-        goto yy107;
-      goto yy161;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy161;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy161;
-        goto yy107;
-      }
-    }
-  yy159:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy161;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy161;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy161;
-        goto yy107;
-      }
-    }
-  yy160:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy162;
-      if (yych <= '/')
-        goto yy107;
-      goto yy163;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy163;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy163;
-        goto yy107;
-      }
-    }
-  yy161:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy163;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy163;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy163;
-        goto yy107;
-      }
-    }
-  yy162:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy164;
-      if (yych <= '/')
-        goto yy107;
-      goto yy165;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy165;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy165;
-        goto yy107;
-      }
-    }
-  yy163:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy165;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy165;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy165;
-        goto yy107;
-      }
-    }
-  yy164:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy166;
-      if (yych <= '/')
-        goto yy107;
-      goto yy167;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy167;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy167;
-        goto yy107;
-      }
-    }
-  yy165:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy167;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy167;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy167;
-        goto yy107;
-      }
-    }
-  yy166:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy168;
-      if (yych <= '/')
-        goto yy107;
-      goto yy169;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy169;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy169;
-        goto yy107;
-      }
-    }
-  yy167:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy169;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy169;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy169;
-        goto yy107;
-      }
-    }
-  yy168:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy170;
-      if (yych <= '/')
-        goto yy107;
-      goto yy171;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy171;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy171;
-        goto yy107;
-      }
-    }
-  yy169:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy171;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy171;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy171;
-        goto yy107;
-      }
-    }
-  yy170:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy172;
-      if (yych <= '/')
-        goto yy107;
-      goto yy173;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy173;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy173;
-        goto yy107;
-      }
-    }
-  yy171:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy173;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy173;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy173;
-        goto yy107;
-      }
-    }
-  yy172:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy174;
-      if (yych <= '/')
-        goto yy107;
-      goto yy175;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy175;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy175;
-        goto yy107;
-      }
-    }
-  yy173:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy175;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy175;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy175;
-        goto yy107;
-      }
-    }
-  yy174:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy176;
-      if (yych <= '/')
-        goto yy107;
-      goto yy177;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy177;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy177;
-        goto yy107;
-      }
-    }
-  yy175:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy177;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy177;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy177;
-        goto yy107;
-      }
-    }
-  yy176:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy178;
-      if (yych <= '/')
-        goto yy107;
-      goto yy179;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy179;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy179;
-        goto yy107;
-      }
-    }
-  yy177:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy179;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy179;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy179;
-        goto yy107;
-      }
-    }
-  yy178:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy180;
-      if (yych <= '/')
-        goto yy107;
-      goto yy181;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy181;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy181;
-        goto yy107;
-      }
-    }
-  yy179:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy181;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy181;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy181;
-        goto yy107;
-      }
-    }
-  yy180:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy182;
-      if (yych <= '/')
-        goto yy107;
-      goto yy183;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy183;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy183;
-        goto yy107;
-      }
-    }
-  yy181:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy183;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy183;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy183;
-        goto yy107;
-      }
-    }
-  yy182:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy184;
-      if (yych <= '/')
-        goto yy107;
-      goto yy185;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy185;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy185;
-        goto yy107;
-      }
-    }
-  yy183:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy185;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy185;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy185;
-        goto yy107;
-      }
-    }
-  yy184:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy186;
-      if (yych <= '/')
-        goto yy107;
-      goto yy187;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy187;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy187;
-        goto yy107;
-      }
-    }
-  yy185:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy187;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy187;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy187;
-        goto yy107;
-      }
-    }
-  yy186:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy188;
-      if (yych <= '/')
-        goto yy107;
-      goto yy189;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy189;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy189;
-        goto yy107;
-      }
-    }
-  yy187:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy189;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy189;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy189;
-        goto yy107;
-      }
-    }
-  yy188:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy190;
-      if (yych <= '/')
-        goto yy107;
-      goto yy191;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy191;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy191;
-        goto yy107;
-      }
-    }
-  yy189:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy191;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy191;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy191;
-        goto yy107;
-      }
-    }
-  yy190:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy192;
-      if (yych <= '/')
-        goto yy107;
-      goto yy193;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy193;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy193;
-        goto yy107;
-      }
-    }
-  yy191:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy193;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy193;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy193;
-        goto yy107;
-      }
-    }
-  yy192:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy194;
-      if (yych <= '/')
-        goto yy107;
-      goto yy195;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy195;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy195;
-        goto yy107;
-      }
-    }
-  yy193:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy195;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy195;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy195;
-        goto yy107;
-      }
-    }
-  yy194:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy196;
-      if (yych <= '/')
-        goto yy107;
-      goto yy197;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy197;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy197;
-        goto yy107;
-      }
-    }
-  yy195:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy197;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy197;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy197;
-        goto yy107;
-      }
-    }
-  yy196:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy198;
-      if (yych <= '/')
-        goto yy107;
-      goto yy199;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy199;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy199;
-        goto yy107;
-      }
-    }
-  yy197:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy199;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy199;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy199;
-        goto yy107;
-      }
-    }
-  yy198:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy200;
-      if (yych <= '/')
-        goto yy107;
-      goto yy201;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy201;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy201;
-        goto yy107;
-      }
-    }
-  yy199:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy201;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy201;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy201;
-        goto yy107;
-      }
-    }
-  yy200:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy202;
-      if (yych <= '/')
-        goto yy107;
-      goto yy203;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy203;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy203;
-        goto yy107;
-      }
-    }
-  yy201:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy203;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy203;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy203;
-        goto yy107;
-      }
-    }
-  yy202:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy204;
-      if (yych <= '/')
-        goto yy107;
-      goto yy205;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy205;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy205;
-        goto yy107;
-      }
-    }
-  yy203:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy205;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy205;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy205;
-        goto yy107;
-      }
-    }
-  yy204:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy206;
-      if (yych <= '/')
-        goto yy107;
-      goto yy207;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy207;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy207;
-        goto yy107;
-      }
-    }
-  yy205:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy207;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy207;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy207;
-        goto yy107;
-      }
-    }
-  yy206:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy208;
-      if (yych <= '/')
-        goto yy107;
-      goto yy209;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy209;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy209;
-        goto yy107;
-      }
-    }
-  yy207:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy209;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy209;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy209;
-        goto yy107;
-      }
-    }
-  yy208:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy210;
-      if (yych <= '/')
-        goto yy107;
-      goto yy211;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy211;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy211;
-        goto yy107;
-      }
-    }
-  yy209:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy211;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy211;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy211;
-        goto yy107;
-      }
-    }
-  yy210:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy212;
-      if (yych <= '/')
-        goto yy107;
-      goto yy213;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy213;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy213;
-        goto yy107;
-      }
-    }
-  yy211:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy213;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy213;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy213;
-        goto yy107;
-      }
-    }
-  yy212:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy214;
-      if (yych <= '/')
-        goto yy107;
-      goto yy215;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy215;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy215;
-        goto yy107;
-      }
-    }
-  yy213:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy215;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy215;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy215;
-        goto yy107;
-      }
-    }
-  yy214:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy216;
-      if (yych <= '/')
-        goto yy107;
-      goto yy217;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy217;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy217;
-        goto yy107;
-      }
-    }
-  yy215:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy217;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy217;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy217;
-        goto yy107;
-      }
-    }
-  yy216:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy218;
-      if (yych <= '/')
-        goto yy107;
-      goto yy219;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy219;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy219;
-        goto yy107;
-      }
-    }
-  yy217:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy219;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy219;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy219;
-        goto yy107;
-      }
-    }
-  yy218:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy220;
-      if (yych <= '/')
-        goto yy107;
-      goto yy221;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy221;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy221;
-        goto yy107;
-      }
-    }
-  yy219:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy221;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy221;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy221;
-        goto yy107;
-      }
-    }
-  yy220:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy222;
-      if (yych <= '/')
-        goto yy107;
-      goto yy223;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy223;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy223;
-        goto yy107;
-      }
-    }
-  yy221:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy223;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy223;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy223;
-        goto yy107;
-      }
-    }
-  yy222:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy224;
-      if (yych <= '/')
-        goto yy107;
-      goto yy225;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy225;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy225;
-        goto yy107;
-      }
-    }
-  yy223:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy225;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy225;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy225;
-        goto yy107;
-      }
-    }
-  yy224:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy226;
-      if (yych <= '/')
-        goto yy107;
-      goto yy227;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy227;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy227;
-        goto yy107;
-      }
-    }
-  yy225:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy227;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy227;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy227;
-        goto yy107;
-      }
-    }
-  yy226:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy228;
-      if (yych <= '/')
-        goto yy107;
-      goto yy229;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy229;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy229;
-        goto yy107;
-      }
-    }
-  yy227:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy229;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy229;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy229;
-        goto yy107;
-      }
-    }
-  yy228:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy230;
-      if (yych <= '/')
-        goto yy107;
-      goto yy231;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy231;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy231;
-        goto yy107;
-      }
-    }
-  yy229:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy231;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy231;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy231;
-        goto yy107;
-      }
-    }
-  yy230:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy232;
-      if (yych <= '/')
-        goto yy107;
-      goto yy233;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy233;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy233;
-        goto yy107;
-      }
-    }
-  yy231:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy233;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy233;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy233;
-        goto yy107;
-      }
-    }
-  yy232:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy234;
-      if (yych <= '/')
-        goto yy107;
-      goto yy235;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy235;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy235;
-        goto yy107;
-      }
-    }
-  yy233:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy235;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy235;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy235;
-        goto yy107;
-      }
-    }
-  yy234:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy236;
-      if (yych <= '/')
-        goto yy107;
-      goto yy237;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy237;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy237;
-        goto yy107;
-      }
-    }
-  yy235:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy237;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy237;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy237;
-        goto yy107;
-      }
-    }
-  yy236:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy238;
-      if (yych <= '/')
-        goto yy107;
-      goto yy239;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy239;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy239;
-        goto yy107;
-      }
-    }
-  yy237:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy239;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy239;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy239;
-        goto yy107;
-      }
-    }
-  yy238:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy240;
-      if (yych <= '/')
-        goto yy107;
-      goto yy241;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy241;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy241;
-        goto yy107;
-      }
-    }
-  yy239:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy241;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy241;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy241;
-        goto yy107;
-      }
-    }
-  yy240:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy242;
-      if (yych <= '/')
-        goto yy107;
-      goto yy243;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy243;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy243;
-        goto yy107;
-      }
-    }
-  yy241:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy243;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy243;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy243;
-        goto yy107;
-      }
-    }
-  yy242:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy244;
-      if (yych <= '/')
-        goto yy107;
-      goto yy245;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy245;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy245;
-        goto yy107;
-      }
-    }
-  yy243:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy245;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy245;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy245;
-        goto yy107;
-      }
-    }
-  yy244:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy246;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy246;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy246;
-      goto yy107;
-    }
-  yy245:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy107;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych >= ':')
-          goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych >= '{')
-          goto yy107;
-      }
-    }
-  yy246:
-    ++p;
-    yych = *p;
-    if (yych == '.')
-      goto yy120;
-    if (yych == '>')
-      goto yy121;
-    goto yy107;
-  yy247:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy249;
-      if (yych <= '/')
-        goto yy107;
-      goto yy250;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy250;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy250;
-        goto yy107;
-      }
-    }
-  yy248:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy250;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy250;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy250;
-        goto yy107;
-      }
-    }
-  yy249:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy251;
-      if (yych <= '/')
-        goto yy107;
-      goto yy252;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy252;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy252;
-        goto yy107;
-      }
-    }
-  yy250:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy252;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy252;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy252;
-        goto yy107;
-      }
-    }
-  yy251:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy253;
-      if (yych <= '/')
-        goto yy107;
-      goto yy254;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy254;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy254;
-        goto yy107;
-      }
-    }
-  yy252:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy254;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy254;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy254;
-        goto yy107;
-      }
-    }
-  yy253:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy255;
-      if (yych <= '/')
-        goto yy107;
-      goto yy256;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy256;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy256;
-        goto yy107;
-      }
-    }
-  yy254:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy256;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy256;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy256;
-        goto yy107;
-      }
-    }
-  yy255:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy257;
-      if (yych <= '/')
-        goto yy107;
-      goto yy258;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy258;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy258;
-        goto yy107;
-      }
-    }
-  yy256:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy258;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy258;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy258;
-        goto yy107;
-      }
-    }
-  yy257:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy259;
-      if (yych <= '/')
-        goto yy107;
-      goto yy260;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy260;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy260;
-        goto yy107;
-      }
-    }
-  yy258:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy260;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy260;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy260;
-        goto yy107;
-      }
-    }
-  yy259:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy261;
-      if (yych <= '/')
-        goto yy107;
-      goto yy262;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy262;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy262;
-        goto yy107;
-      }
-    }
-  yy260:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy262;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy262;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy262;
-        goto yy107;
-      }
-    }
-  yy261:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy263;
-      if (yych <= '/')
-        goto yy107;
-      goto yy264;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy264;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy264;
-        goto yy107;
-      }
-    }
-  yy262:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy264;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy264;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy264;
-        goto yy107;
-      }
-    }
-  yy263:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy265;
-      if (yych <= '/')
-        goto yy107;
-      goto yy266;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy266;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy266;
-        goto yy107;
-      }
-    }
-  yy264:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy266;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy266;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy266;
-        goto yy107;
-      }
-    }
-  yy265:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy267;
-      if (yych <= '/')
-        goto yy107;
-      goto yy268;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy268;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy268;
-        goto yy107;
-      }
-    }
-  yy266:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy268;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy268;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy268;
-        goto yy107;
-      }
-    }
-  yy267:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy269;
-      if (yych <= '/')
-        goto yy107;
-      goto yy270;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy270;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy270;
-        goto yy107;
-      }
-    }
-  yy268:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy270;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy270;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy270;
-        goto yy107;
-      }
-    }
-  yy269:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy271;
-      if (yych <= '/')
-        goto yy107;
-      goto yy272;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy272;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy272;
-        goto yy107;
-      }
-    }
-  yy270:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy272;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy272;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy272;
-        goto yy107;
-      }
-    }
-  yy271:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy273;
-      if (yych <= '/')
-        goto yy107;
-      goto yy274;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy274;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy274;
-        goto yy107;
-      }
-    }
-  yy272:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy274;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy274;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy274;
-        goto yy107;
-      }
-    }
-  yy273:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy275;
-      if (yych <= '/')
-        goto yy107;
-      goto yy276;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy276;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy276;
-        goto yy107;
-      }
-    }
-  yy274:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy276;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy276;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy276;
-        goto yy107;
-      }
-    }
-  yy275:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy277;
-      if (yych <= '/')
-        goto yy107;
-      goto yy278;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy278;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy278;
-        goto yy107;
-      }
-    }
-  yy276:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy278;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy278;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy278;
-        goto yy107;
-      }
-    }
-  yy277:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy279;
-      if (yych <= '/')
-        goto yy107;
-      goto yy280;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy280;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy280;
-        goto yy107;
-      }
-    }
-  yy278:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy280;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy280;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy280;
-        goto yy107;
-      }
-    }
-  yy279:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy281;
-      if (yych <= '/')
-        goto yy107;
-      goto yy282;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy282;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy282;
-        goto yy107;
-      }
-    }
-  yy280:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy282;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy282;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy282;
-        goto yy107;
-      }
-    }
-  yy281:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy283;
-      if (yych <= '/')
-        goto yy107;
-      goto yy284;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy284;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy284;
-        goto yy107;
-      }
-    }
-  yy282:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy284;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy284;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy284;
-        goto yy107;
-      }
-    }
-  yy283:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy285;
-      if (yych <= '/')
-        goto yy107;
-      goto yy286;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy286;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy286;
-        goto yy107;
-      }
-    }
-  yy284:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy286;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy286;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy286;
-        goto yy107;
-      }
-    }
-  yy285:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy287;
-      if (yych <= '/')
-        goto yy107;
-      goto yy288;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy288;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy288;
-        goto yy107;
-      }
-    }
-  yy286:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy288;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy288;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy288;
-        goto yy107;
-      }
-    }
-  yy287:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy289;
-      if (yych <= '/')
-        goto yy107;
-      goto yy290;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy290;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy290;
-        goto yy107;
-      }
-    }
-  yy288:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy290;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy290;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy290;
-        goto yy107;
-      }
-    }
-  yy289:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy291;
-      if (yych <= '/')
-        goto yy107;
-      goto yy292;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy292;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy292;
-        goto yy107;
-      }
-    }
-  yy290:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy292;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy292;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy292;
-        goto yy107;
-      }
-    }
-  yy291:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy293;
-      if (yych <= '/')
-        goto yy107;
-      goto yy294;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy294;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy294;
-        goto yy107;
-      }
-    }
-  yy292:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy294;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy294;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy294;
-        goto yy107;
-      }
-    }
-  yy293:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy295;
-      if (yych <= '/')
-        goto yy107;
-      goto yy296;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy296;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy296;
-        goto yy107;
-      }
-    }
-  yy294:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy296;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy296;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy296;
-        goto yy107;
-      }
-    }
-  yy295:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy297;
-      if (yych <= '/')
-        goto yy107;
-      goto yy298;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy298;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy298;
-        goto yy107;
-      }
-    }
-  yy296:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy298;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy298;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy298;
-        goto yy107;
-      }
-    }
-  yy297:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy299;
-      if (yych <= '/')
-        goto yy107;
-      goto yy300;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy300;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy300;
-        goto yy107;
-      }
-    }
-  yy298:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy300;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy300;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy300;
-        goto yy107;
-      }
-    }
-  yy299:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy301;
-      if (yych <= '/')
-        goto yy107;
-      goto yy302;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy302;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy302;
-        goto yy107;
-      }
-    }
-  yy300:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy302;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy302;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy302;
-        goto yy107;
-      }
-    }
-  yy301:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy303;
-      if (yych <= '/')
-        goto yy107;
-      goto yy304;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy304;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy304;
-        goto yy107;
-      }
-    }
-  yy302:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy304;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy304;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy304;
-        goto yy107;
-      }
-    }
-  yy303:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy305;
-      if (yych <= '/')
-        goto yy107;
-      goto yy306;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy306;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy306;
-        goto yy107;
-      }
-    }
-  yy304:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy306;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy306;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy306;
-        goto yy107;
-      }
-    }
-  yy305:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy307;
-      if (yych <= '/')
-        goto yy107;
-      goto yy308;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy308;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy308;
-        goto yy107;
-      }
-    }
-  yy306:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy308;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy308;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy308;
-        goto yy107;
-      }
-    }
-  yy307:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy309;
-      if (yych <= '/')
-        goto yy107;
-      goto yy310;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy310;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy310;
-        goto yy107;
-      }
-    }
-  yy308:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy310;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy310;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy310;
-        goto yy107;
-      }
-    }
-  yy309:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy311;
-      if (yych <= '/')
-        goto yy107;
-      goto yy312;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy312;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy312;
-        goto yy107;
-      }
-    }
-  yy310:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy312;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy312;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy312;
-        goto yy107;
-      }
-    }
-  yy311:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy313;
-      if (yych <= '/')
-        goto yy107;
-      goto yy314;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy314;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy314;
-        goto yy107;
-      }
-    }
-  yy312:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy314;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy314;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy314;
-        goto yy107;
-      }
-    }
-  yy313:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy315;
-      if (yych <= '/')
-        goto yy107;
-      goto yy316;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy316;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy316;
-        goto yy107;
-      }
-    }
-  yy314:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy316;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy316;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy316;
-        goto yy107;
-      }
-    }
-  yy315:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy317;
-      if (yych <= '/')
-        goto yy107;
-      goto yy318;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy318;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy318;
-        goto yy107;
-      }
-    }
-  yy316:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy318;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy318;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy318;
-        goto yy107;
-      }
-    }
-  yy317:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy319;
-      if (yych <= '/')
-        goto yy107;
-      goto yy320;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy320;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy320;
-        goto yy107;
-      }
-    }
-  yy318:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy320;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy320;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy320;
-        goto yy107;
-      }
-    }
-  yy319:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy321;
-      if (yych <= '/')
-        goto yy107;
-      goto yy322;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy322;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy322;
-        goto yy107;
-      }
-    }
-  yy320:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy322;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy322;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy322;
-        goto yy107;
-      }
-    }
-  yy321:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy323;
-      if (yych <= '/')
-        goto yy107;
-      goto yy324;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy324;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy324;
-        goto yy107;
-      }
-    }
-  yy322:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy324;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy324;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy324;
-        goto yy107;
-      }
-    }
-  yy323:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy325;
-      if (yych <= '/')
-        goto yy107;
-      goto yy326;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy326;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy326;
-        goto yy107;
-      }
-    }
-  yy324:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy326;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy326;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy326;
-        goto yy107;
-      }
-    }
-  yy325:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy327;
-      if (yych <= '/')
-        goto yy107;
-      goto yy328;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy328;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy328;
-        goto yy107;
-      }
-    }
-  yy326:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy328;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy328;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy328;
-        goto yy107;
-      }
-    }
-  yy327:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy329;
-      if (yych <= '/')
-        goto yy107;
-      goto yy330;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy330;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy330;
-        goto yy107;
-      }
-    }
-  yy328:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy330;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy330;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy330;
-        goto yy107;
-      }
-    }
-  yy329:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy331;
-      if (yych <= '/')
-        goto yy107;
-      goto yy332;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy332;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy332;
-        goto yy107;
-      }
-    }
-  yy330:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy332;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy332;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy332;
-        goto yy107;
-      }
-    }
-  yy331:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy333;
-      if (yych <= '/')
-        goto yy107;
-      goto yy334;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy334;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy334;
-        goto yy107;
-      }
-    }
-  yy332:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy334;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy334;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy334;
-        goto yy107;
-      }
-    }
-  yy333:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy335;
-      if (yych <= '/')
-        goto yy107;
-      goto yy336;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy336;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy336;
-        goto yy107;
-      }
-    }
-  yy334:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy336;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy336;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy336;
-        goto yy107;
-      }
-    }
-  yy335:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy337;
-      if (yych <= '/')
-        goto yy107;
-      goto yy338;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy338;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy338;
-        goto yy107;
-      }
-    }
-  yy336:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy338;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy338;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy338;
-        goto yy107;
-      }
-    }
-  yy337:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy339;
-      if (yych <= '/')
-        goto yy107;
-      goto yy340;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy340;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy340;
-        goto yy107;
-      }
-    }
-  yy338:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy340;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy340;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy340;
-        goto yy107;
-      }
-    }
-  yy339:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy341;
-      if (yych <= '/')
-        goto yy107;
-      goto yy342;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy342;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy342;
-        goto yy107;
-      }
-    }
-  yy340:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy342;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy342;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy342;
-        goto yy107;
-      }
-    }
-  yy341:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy343;
-      if (yych <= '/')
-        goto yy107;
-      goto yy344;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy344;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy344;
-        goto yy107;
-      }
-    }
-  yy342:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy344;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy344;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy344;
-        goto yy107;
-      }
-    }
-  yy343:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy345;
-      if (yych <= '/')
-        goto yy107;
-      goto yy346;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy346;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy346;
-        goto yy107;
-      }
-    }
-  yy344:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy346;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy346;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy346;
-        goto yy107;
-      }
-    }
-  yy345:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy347;
-      if (yych <= '/')
-        goto yy107;
-      goto yy348;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy348;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy348;
-        goto yy107;
-      }
-    }
-  yy346:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy348;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy348;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy348;
-        goto yy107;
-      }
-    }
-  yy347:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy349;
-      if (yych <= '/')
-        goto yy107;
-      goto yy350;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy350;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy350;
-        goto yy107;
-      }
-    }
-  yy348:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy350;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy350;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy350;
-        goto yy107;
-      }
-    }
-  yy349:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy351;
-      if (yych <= '/')
-        goto yy107;
-      goto yy352;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy352;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy352;
-        goto yy107;
-      }
-    }
-  yy350:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy352;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy352;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy352;
-        goto yy107;
-      }
-    }
-  yy351:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy353;
-      if (yych <= '/')
-        goto yy107;
-      goto yy354;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy354;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy354;
-        goto yy107;
-      }
-    }
-  yy352:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy354;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy354;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy354;
-        goto yy107;
-      }
-    }
-  yy353:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy355;
-      if (yych <= '/')
-        goto yy107;
-      goto yy356;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy356;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy356;
-        goto yy107;
-      }
-    }
-  yy354:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy356;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy356;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy356;
-        goto yy107;
-      }
-    }
-  yy355:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy357;
-      if (yych <= '/')
-        goto yy107;
-      goto yy358;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy358;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy358;
-        goto yy107;
-      }
-    }
-  yy356:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy358;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy358;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy358;
-        goto yy107;
-      }
-    }
-  yy357:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy359;
-      if (yych <= '/')
-        goto yy107;
-      goto yy360;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy360;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy360;
-        goto yy107;
-      }
-    }
-  yy358:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy360;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy360;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy360;
-        goto yy107;
-      }
-    }
-  yy359:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy361;
-      if (yych <= '/')
-        goto yy107;
-      goto yy362;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy362;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy362;
-        goto yy107;
-      }
-    }
-  yy360:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy362;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy362;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy362;
-        goto yy107;
-      }
-    }
-  yy361:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy363;
-      if (yych <= '/')
-        goto yy107;
-      goto yy364;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy364;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy364;
-        goto yy107;
-      }
-    }
-  yy362:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy364;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy364;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy364;
-        goto yy107;
-      }
-    }
-  yy363:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy365;
-      if (yych <= '/')
-        goto yy107;
-      goto yy366;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy107;
-        goto yy366;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy366;
-        goto yy107;
-      }
-    }
-  yy364:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy107;
-        if (yych >= '.')
-          goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy366;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy366;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy366;
-        goto yy107;
-      }
-    }
-  yy365:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy107;
-      if (yych <= '9')
-        goto yy246;
-      goto yy107;
-    } else {
-      if (yych <= 'Z')
-        goto yy246;
-      if (yych <= '`')
-        goto yy107;
-      if (yych <= 'z')
-        goto yy246;
-      goto yy107;
-    }
-  yy366:
-    ++p;
-    if ((yych = *p) <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy107;
-        goto yy120;
-      } else {
-        if (yych <= '/')
-          goto yy107;
-        if (yych <= '9')
-          goto yy246;
-        goto yy107;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy121;
-        if (yych <= '@')
-          goto yy107;
-        goto yy246;
-      } else {
-        if (yych <= '`')
-          goto yy107;
-        if (yych <= 'z')
-          goto yy246;
-        goto yy107;
-      }
-    }
-  }
-}
-
-// Try to match an HTML tag after first <, returning num of chars matched.
-bufsize_t _scan_html_tag(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        /* table 1 .. 8: 0 */
-        0, 230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199, 230,
-        230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
-        230, 230, 230, 199, 230, 70, 230, 230, 230, 230, 134, 230, 230, 230,
-        230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 246, 230, 198, 198, 196, 230, 230, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 230, 230, 226, 230, 246, 198, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 230, 230, 230, 230,
-        230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        /* table 9 .. 11: 256 */
-        0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 32, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 128, 160, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= '`') {
-      if (yych <= '.') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy374;
-        } else {
-          if (yych == '!')
-            goto yy372;
-          goto yy374;
-        }
-      } else {
-        if (yych <= '?') {
-          if (yych <= '/')
-            goto yy371;
-          if (yych <= '>')
-            goto yy374;
-          goto yy373;
-        } else {
-          if (yych <= '@')
-            goto yy374;
-          if (yych <= 'Z')
-            goto yy370;
-          goto yy374;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 'z')
-            goto yy370;
-          if (yych <= 0x7F)
-            goto yy374;
-        } else {
-          if (yych <= 0xDF)
-            goto yy375;
-          if (yych <= 0xE0)
-            goto yy377;
-          goto yy378;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy382;
-          if (yych <= 0xEF)
-            goto yy378;
-          goto yy379;
-        } else {
-          if (yych <= 0xF3)
-            goto yy380;
-          if (yych <= 0xF4)
-            goto yy381;
-        }
-      }
-    }
-  yy369 : { return 0; }
-  yy370:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy369;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy369;
-        goto yy474;
-      } else {
-        if (yych == '-')
-          goto yy472;
-        if (yych <= '.')
-          goto yy369;
-        goto yy476;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy472;
-        if (yych == '>')
-          goto yy393;
-        goto yy369;
-      } else {
-        if (yych <= 'Z')
-          goto yy472;
-        if (yych <= '`')
-          goto yy369;
-        if (yych <= 'z')
-          goto yy472;
-        goto yy369;
-      }
-    }
-  yy371:
-    yych = *(marker = ++p);
-    if (yych <= '@')
-      goto yy369;
-    if (yych <= 'Z')
-      goto yy468;
-    if (yych <= '`')
-      goto yy369;
-    if (yych <= 'z')
-      goto yy468;
-    goto yy369;
-  yy372:
-    yych = *(marker = ++p);
-    if (yybm[256 + yych] & 64) {
-      goto yy403;
-    }
-    if (yych == '-')
-      goto yy405;
-    if (yych <= '@')
-      goto yy369;
-    if (yych <= '[')
-      goto yy402;
-    goto yy369;
-  yy373:
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy369;
-    if (yych <= 0x7F)
-      goto yy384;
-    if (yych <= 0xC1)
-      goto yy369;
-    if (yych <= 0xF4)
-      goto yy384;
-    goto yy369;
-  yy374:
-    yych = *++p;
-    goto yy369;
-  yy375:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy374;
-  yy376:
-    p = marker;
-    goto yy369;
-  yy377:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy375;
-    goto yy376;
-  yy378:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy375;
-    goto yy376;
-  yy379:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy378;
-    goto yy376;
-  yy380:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy378;
-    goto yy376;
-  yy381:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy378;
-    goto yy376;
-  yy382:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy375;
-    goto yy376;
-  yy383:
-    ++p;
-    yych = *p;
-  yy384:
-    if (yybm[256 + yych] & 32) {
-      goto yy383;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '?')
-          goto yy392;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy385;
-        if (yych <= 0xE0)
-          goto yy386;
-        goto yy387;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy391;
-        if (yych <= 0xEF)
-          goto yy387;
-        goto yy388;
-      } else {
-        if (yych <= 0xF3)
-          goto yy389;
-        if (yych <= 0xF4)
-          goto yy390;
-        goto yy376;
-      }
-    }
-  yy385:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy376;
-  yy386:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy385;
-    goto yy376;
-  yy387:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy385;
-    goto yy376;
-  yy388:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy387;
-    goto yy376;
-  yy389:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy387;
-    goto yy376;
-  yy390:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy387;
-    goto yy376;
-  yy391:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy385;
-    goto yy376;
-  yy392:
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '=')
-          goto yy383;
-      } else {
-        if (yych <= 0x7F)
-          goto yy383;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy395;
-        goto yy396;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy401;
-        goto yy397;
-      } else {
-        if (yych <= 0xF0)
-          goto yy398;
-        if (yych <= 0xF3)
-          goto yy399;
-        if (yych <= 0xF4)
-          goto yy400;
-        goto yy376;
-      }
-    }
-  yy393:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy395:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy376;
-  yy396:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy395;
-    goto yy376;
-  yy397:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy395;
-    goto yy376;
-  yy398:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy397;
-    goto yy376;
-  yy399:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy397;
-    goto yy376;
-  yy400:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy397;
-    goto yy376;
-  yy401:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy395;
-    goto yy376;
-  yy402:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy438;
-    if (yych == 'c')
-      goto yy438;
-    goto yy376;
-  yy403:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy427;
-    }
-    if (yych <= '@')
-      goto yy376;
-    if (yych <= 'Z')
-      goto yy403;
-    goto yy376;
-  yy405:
-    yych = *++p;
-    if (yych != '-')
-      goto yy376;
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych != '-')
-          goto yy409;
-      } else {
-        if (yych <= '>')
-          goto yy376;
-        if (yych <= 0xC1)
-          goto yy409;
-        if (yych <= 0xDF)
-          goto yy410;
-        goto yy411;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy416;
-        goto yy412;
-      } else {
-        if (yych <= 0xF0)
-          goto yy413;
-        if (yych <= 0xF3)
-          goto yy414;
-        if (yych <= 0xF4)
-          goto yy415;
-        goto yy409;
-      }
-    }
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych == '-')
-          goto yy426;
-        goto yy409;
-      } else {
-        if (yych <= '>')
-          goto yy376;
-        if (yych <= 0xC1)
-          goto yy409;
-        if (yych <= 0xDF)
-          goto yy410;
-        goto yy411;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy416;
-        goto yy412;
-      } else {
-        if (yych <= 0xF0)
-          goto yy413;
-        if (yych <= 0xF3)
-          goto yy414;
-        if (yych <= 0xF4)
-          goto yy415;
-        goto yy409;
-      }
-    }
-  yy408:
-    ++p;
-    yych = *p;
-  yy409:
-    if (yybm[256 + yych] & 128) {
-      goto yy408;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '-')
-          goto yy417;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy418;
-        if (yych <= 0xE0)
-          goto yy419;
-        goto yy420;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy424;
-        if (yych <= 0xEF)
-          goto yy420;
-        goto yy421;
-      } else {
-        if (yych <= 0xF3)
-          goto yy422;
-        if (yych <= 0xF4)
-          goto yy423;
-        goto yy376;
-      }
-    }
-  yy410:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy376;
-  yy411:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy410;
-    goto yy376;
-  yy412:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy410;
-    goto yy376;
-  yy413:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy412;
-    goto yy376;
-  yy414:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy412;
-    goto yy376;
-  yy415:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy412;
-    goto yy376;
-  yy416:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy410;
-    goto yy376;
-  yy417:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 128) {
-      goto yy408;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '-')
-          goto yy425;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy418;
-        if (yych <= 0xE0)
-          goto yy419;
-        goto yy420;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy424;
-        if (yych <= 0xEF)
-          goto yy420;
-        goto yy421;
-      } else {
-        if (yych <= 0xF3)
-          goto yy422;
-        if (yych <= 0xF4)
-          goto yy423;
-        goto yy376;
-      }
-    }
-  yy418:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy376;
-  yy419:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy418;
-    goto yy376;
-  yy420:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy418;
-    goto yy376;
-  yy421:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy420;
-    goto yy376;
-  yy422:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy420;
-    goto yy376;
-  yy423:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy420;
-    goto yy376;
-  yy424:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy418;
-    goto yy376;
-  yy425:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy426:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy427:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy427;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '>')
-          goto yy393;
-      } else {
-        if (yych <= 0x7F)
-          goto yy429;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy431;
-        goto yy432;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy437;
-        goto yy433;
-      } else {
-        if (yych <= 0xF0)
-          goto yy434;
-        if (yych <= 0xF3)
-          goto yy435;
-        if (yych <= 0xF4)
-          goto yy436;
-        goto yy376;
-      }
-    }
-  yy429:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy429;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '>')
-          goto yy393;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy431;
-        if (yych <= 0xE0)
-          goto yy432;
-        goto yy433;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy437;
-        if (yych <= 0xEF)
-          goto yy433;
-        goto yy434;
-      } else {
-        if (yych <= 0xF3)
-          goto yy435;
-        if (yych <= 0xF4)
-          goto yy436;
-        goto yy376;
-      }
-    }
-  yy431:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy429;
-    goto yy376;
-  yy432:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy376;
-  yy433:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy376;
-  yy434:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy376;
-  yy435:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy376;
-  yy436:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy433;
-    goto yy376;
-  yy437:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy431;
-    goto yy376;
-  yy438:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy439;
-    if (yych != 'd')
-      goto yy376;
-  yy439:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy440;
-    if (yych != 'a')
-      goto yy376;
-  yy440:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy441;
-    if (yych != 't')
-      goto yy376;
-  yy441:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy442;
-    if (yych != 'a')
-      goto yy376;
-  yy442:
-    yych = *++p;
-    if (yych != '[')
-      goto yy376;
-  yy443:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy443;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ']')
-          goto yy452;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy445;
-        if (yych <= 0xE0)
-          goto yy446;
-        goto yy447;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy451;
-        if (yych <= 0xEF)
-          goto yy447;
-        goto yy448;
-      } else {
-        if (yych <= 0xF3)
-          goto yy449;
-        if (yych <= 0xF4)
-          goto yy450;
-        goto yy376;
-      }
-    }
-  yy445:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy446:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy445;
-    goto yy376;
-  yy447:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy445;
-    goto yy376;
-  yy448:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy447;
-    goto yy376;
-  yy449:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy447;
-    goto yy376;
-  yy450:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy447;
-    goto yy376;
-  yy451:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy445;
-    goto yy376;
-  yy452:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy443;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '^')
-          goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy454;
-        if (yych <= 0xE0)
-          goto yy455;
-        goto yy456;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy460;
-        if (yych <= 0xEF)
-          goto yy456;
-        goto yy457;
-      } else {
-        if (yych <= 0xF3)
-          goto yy458;
-        if (yych <= 0xF4)
-          goto yy459;
-        goto yy376;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '=')
-          goto yy443;
-        goto yy393;
-      } else {
-        if (yych <= 0x7F)
-          goto yy443;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy461;
-        goto yy462;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy467;
-        goto yy463;
-      } else {
-        if (yych <= 0xF0)
-          goto yy464;
-        if (yych <= 0xF3)
-          goto yy465;
-        if (yych <= 0xF4)
-          goto yy466;
-        goto yy376;
-      }
-    }
-  yy454:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy455:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy376;
-  yy456:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy376;
-  yy457:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy376;
-  yy458:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy376;
-  yy459:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy456;
-    goto yy376;
-  yy460:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy454;
-    goto yy376;
-  yy461:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy376;
-  yy462:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy461;
-    goto yy376;
-  yy463:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy461;
-    goto yy376;
-  yy464:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy463;
-    goto yy376;
-  yy465:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy463;
-    goto yy376;
-  yy466:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy463;
-    goto yy376;
-  yy467:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy461;
-    goto yy376;
-  yy468:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 8) {
-      goto yy468;
-    }
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych >= 0x0E)
-        goto yy376;
-    } else {
-      if (yych <= ' ')
-        goto yy470;
-      if (yych == '>')
-        goto yy393;
-      goto yy376;
-    }
-  yy470:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych <= '\r')
-        goto yy470;
-      goto yy376;
-    } else {
-      if (yych <= ' ')
-        goto yy470;
-      if (yych == '>')
-        goto yy393;
-      goto yy376;
-    }
-  yy472:
-    ++p;
-    yych = *p;
-    if (yych <= '/') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy376;
-      } else {
-        if (yych == '-')
-          goto yy472;
-        if (yych <= '.')
-          goto yy376;
-        goto yy476;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy472;
-        if (yych == '>')
-          goto yy393;
-        goto yy376;
-      } else {
-        if (yych <= 'Z')
-          goto yy472;
-        if (yych <= '`')
-          goto yy376;
-        if (yych <= 'z')
-          goto yy472;
-        goto yy376;
-      }
-    }
-  yy474:
-    ++p;
-    yych = *p;
-    if (yych <= ':') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy474;
-        if (yych <= 0x1F)
-          goto yy376;
-        goto yy474;
-      } else {
-        if (yych == '/')
-          goto yy476;
-        if (yych <= '9')
-          goto yy376;
-        goto yy477;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych == '>')
-          goto yy393;
-        if (yych <= '@')
-          goto yy376;
-        goto yy477;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy376;
-          goto yy477;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    }
-  yy476:
-    yych = *++p;
-    if (yych == '>')
-      goto yy393;
-    goto yy376;
-  yy477:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy477;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy376;
-      } else {
-        if (yych != ' ')
-          goto yy376;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy476;
-        goto yy376;
-      } else {
-        if (yych <= '=')
-          goto yy481;
-        if (yych <= '>')
-          goto yy393;
-        goto yy376;
-      }
-    }
-  yy479:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy376;
-        if (yych <= '\r')
-          goto yy479;
-        if (yych <= 0x1F)
-          goto yy376;
-        goto yy479;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy376;
-          goto yy476;
-        } else {
-          if (yych == ':')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy481;
-        if (yych <= '>')
-          goto yy393;
-        if (yych <= '@')
-          goto yy376;
-        goto yy477;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy376;
-          goto yy477;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy477;
-          goto yy376;
-        }
-      }
-    }
-  yy481:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych >= '!')
-          goto yy494;
-      } else {
-        if (yych <= '\'')
-          goto yy492;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych <= 0xDF)
-          goto yy485;
-        goto yy486;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ' ')
-          goto yy517;
-        if (yych <= '"')
-          goto yy494;
-        goto yy492;
-      } else {
-        if (yych == '>')
-          goto yy393;
-        if (yych <= 0xC1)
-          goto yy376;
-        goto yy485;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy486;
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-  yy483:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy483;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= ' ')
-          goto yy511;
-        goto yy376;
-      } else {
-        if (yych <= '>')
-          goto yy393;
-        if (yych <= 0xC1)
-          goto yy376;
-        if (yych >= 0xE0)
-          goto yy486;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy491;
-        goto yy487;
-      } else {
-        if (yych <= 0xF0)
-          goto yy488;
-        if (yych <= 0xF3)
-          goto yy489;
-        if (yych <= 0xF4)
-          goto yy490;
-        goto yy376;
-      }
-    }
-  yy485:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy483;
-    goto yy376;
-  yy486:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy485;
-    goto yy376;
-  yy487:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy485;
-    goto yy376;
-  yy488:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy487;
-    goto yy376;
-  yy489:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy487;
-    goto yy376;
-  yy490:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy487;
-    goto yy376;
-  yy491:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy485;
-    goto yy376;
-  yy492:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy492;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '\'')
-          goto yy503;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy504;
-        if (yych <= 0xE0)
-          goto yy505;
-        goto yy506;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy510;
-        if (yych <= 0xEF)
-          goto yy506;
-        goto yy507;
-      } else {
-        if (yych <= 0xF3)
-          goto yy508;
-        if (yych <= 0xF4)
-          goto yy509;
-        goto yy376;
-      }
-    }
-  yy494:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy494;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy376;
-        if (yych <= '"')
-          goto yy503;
-        goto yy376;
-      } else {
-        if (yych <= 0xDF)
-          goto yy496;
-        if (yych <= 0xE0)
-          goto yy497;
-        goto yy498;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy502;
-        if (yych <= 0xEF)
-          goto yy498;
-        goto yy499;
-      } else {
-        if (yych <= 0xF3)
-          goto yy500;
-        if (yych <= 0xF4)
-          goto yy501;
-        goto yy376;
-      }
-    }
-  yy496:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy494;
-    goto yy376;
-  yy497:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy496;
-    goto yy376;
-  yy498:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy496;
-    goto yy376;
-  yy499:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy498;
-    goto yy376;
-  yy500:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy498;
-    goto yy376;
-  yy501:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy498;
-    goto yy376;
-  yy502:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy496;
-    goto yy376;
-  yy503:
-    ++p;
-    yych = *p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy376;
-      if (yych <= '\r')
-        goto yy474;
-      if (yych <= 0x1F)
-        goto yy376;
-      goto yy474;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy376;
-        goto yy476;
-      } else {
-        if (yych == '>')
-          goto yy393;
-        goto yy376;
-      }
-    }
-  yy504:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy492;
-    goto yy376;
-  yy505:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy504;
-    goto yy376;
-  yy506:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy504;
-    goto yy376;
-  yy507:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy506;
-    goto yy376;
-  yy508:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0xBF)
-      goto yy506;
-    goto yy376;
-  yy509:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x8F)
-      goto yy506;
-    goto yy376;
-  yy510:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy376;
-    if (yych <= 0x9F)
-      goto yy504;
-    goto yy376;
-  yy511:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          goto yy511;
-        } else {
-          if (yych == ' ')
-            goto yy511;
-          if (yych <= '!')
-            goto yy483;
-          goto yy376;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy376;
-          if (yych <= '9')
-            goto yy483;
-        } else {
-          if (yych <= ';')
-            goto yy483;
-          if (yych <= '=')
-            goto yy376;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych >= '`')
-            goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  yy513:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          if (yych >= 0x0E)
-            goto yy483;
-        } else {
-          if (yych <= ' ')
-            goto yy515;
-          if (yych == '"')
-            goto yy376;
-          goto yy483;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy376;
-          if (yych <= ',')
-            goto yy483;
-          if (yych <= '.')
-            goto yy513;
-          goto yy483;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy513;
-            goto yy483;
-          } else {
-            if (yych <= '<')
-              goto yy376;
-            if (yych <= '=')
-              goto yy481;
-            goto yy393;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy483;
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          goto yy513;
-        } else {
-          if (yych <= '`')
-            goto yy376;
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          goto yy376;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy485;
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych <= 0xEC)
-            goto yy487;
-          goto yy491;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy487;
-            goto yy488;
-          } else {
-            if (yych <= 0xF3)
-              goto yy489;
-            if (yych <= 0xF4)
-              goto yy490;
-            goto yy376;
-          }
-        }
-      }
-    }
-  yy515:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          if (yych <= '\r')
-            goto yy515;
-          goto yy483;
-        } else {
-          if (yych <= ' ')
-            goto yy515;
-          if (yych == '"')
-            goto yy376;
-          goto yy483;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy376;
-          if (yych == ':')
-            goto yy513;
-          goto yy483;
-        } else {
-          if (yych <= '<')
-            goto yy376;
-          if (yych <= '=')
-            goto yy481;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych <= '_')
-            goto yy513;
-          goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  yy517:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy376;
-          if (yych <= 0x08)
-            goto yy483;
-          goto yy517;
-        } else {
-          if (yych == ' ')
-            goto yy517;
-          if (yych <= '!')
-            goto yy483;
-          goto yy494;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy492;
-          if (yych <= '9')
-            goto yy483;
-          goto yy513;
-        } else {
-          if (yych <= ';')
-            goto yy483;
-          if (yych <= '=')
-            goto yy376;
-          if (yych <= '>')
-            goto yy393;
-          goto yy483;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy513;
-          if (yych <= '^')
-            goto yy483;
-          if (yych <= '_')
-            goto yy513;
-          goto yy376;
-        } else {
-          if (yych <= 'z')
-            goto yy513;
-          if (yych <= 0x7F)
-            goto yy483;
-          if (yych <= 0xC1)
-            goto yy376;
-          goto yy485;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy486;
-          if (yych == 0xED)
-            goto yy491;
-          goto yy487;
-        } else {
-          if (yych <= 0xF0)
-            goto yy488;
-          if (yych <= 0xF3)
-            goto yy489;
-          if (yych <= 0xF4)
-            goto yy490;
-          goto yy376;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block tag start line, returning
-// an integer code for the type of block (1-6, matching the spec).
-// #7 is handled by a separate function, below.
-bufsize_t _scan_html_block_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy523;
-      } else {
-        if (yych <= '<')
-          goto yy522;
-        if (yych <= 0x7F)
-          goto yy523;
-        if (yych >= 0xC2)
-          goto yy524;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy526;
-        if (yych == 0xED)
-          goto yy531;
-        goto yy527;
-      } else {
-        if (yych <= 0xF0)
-          goto yy528;
-        if (yych <= 0xF3)
-          goto yy529;
-        if (yych <= 0xF4)
-          goto yy530;
-      }
-    }
-  yy521 : { return 0; }
-  yy522:
-    yych = *(marker = ++p);
-    switch (yych) {
-    case '!':
-      goto yy548;
-    case '/':
-      goto yy532;
-    case '?':
-      goto yy549;
-    case 'A':
-    case 'a':
-      goto yy534;
-    case 'B':
-    case 'b':
-      goto yy535;
-    case 'C':
-    case 'c':
-      goto yy536;
-    case 'D':
-    case 'd':
-      goto yy537;
-    case 'F':
-    case 'f':
-      goto yy538;
-    case 'H':
-    case 'h':
-      goto yy539;
-    case 'I':
-    case 'i':
-      goto yy540;
-    case 'L':
-    case 'l':
-      goto yy541;
-    case 'M':
-    case 'm':
-      goto yy542;
-    case 'N':
-    case 'n':
-      goto yy543;
-    case 'O':
-    case 'o':
-      goto yy544;
-    case 'P':
-    case 'p':
-      goto yy533;
-    case 'S':
-    case 's':
-      goto yy545;
-    case 'T':
-    case 't':
-      goto yy546;
-    case 'U':
-    case 'u':
-      goto yy547;
-    default:
-      goto yy521;
-    }
-  yy523:
-    yych = *++p;
-    goto yy521;
-  yy524:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy523;
-  yy525:
-    p = marker;
-    goto yy521;
-  yy526:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy524;
-    goto yy525;
-  yy527:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy524;
-    goto yy525;
-  yy528:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy527;
-    goto yy525;
-  yy529:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0xBF)
-      goto yy527;
-    goto yy525;
-  yy530:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0x8F)
-      goto yy527;
-    goto yy525;
-  yy531:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy525;
-    if (yych <= 0x9F)
-      goto yy524;
-    goto yy525;
-  yy532:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy534;
-    case 'B':
-    case 'b':
-      goto yy535;
-    case 'C':
-    case 'c':
-      goto yy536;
-    case 'D':
-    case 'd':
-      goto yy537;
-    case 'F':
-    case 'f':
-      goto yy538;
-    case 'H':
-    case 'h':
-      goto yy539;
-    case 'I':
-    case 'i':
-      goto yy540;
-    case 'L':
-    case 'l':
-      goto yy541;
-    case 'M':
-    case 'm':
-      goto yy542;
-    case 'N':
-    case 'n':
-      goto yy543;
-    case 'O':
-    case 'o':
-      goto yy544;
-    case 'P':
-    case 'p':
-      goto yy733;
-    case 'S':
-    case 's':
-      goto yy734;
-    case 'T':
-    case 't':
-      goto yy546;
-    case 'U':
-    case 'u':
-      goto yy547;
-    default:
-      goto yy525;
-    }
-  yy533:
-    yych = *++p;
-    if (yych <= '>') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        if (yych <= 0x1F)
-          goto yy525;
-        goto yy565;
-      } else {
-        if (yych == '/')
-          goto yy567;
-        if (yych <= '=')
-          goto yy525;
-        goto yy565;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == 'A')
-          goto yy730;
-        if (yych <= 'Q')
-          goto yy525;
-        goto yy729;
-      } else {
-        if (yych <= 'a') {
-          if (yych <= '`')
-            goto yy525;
-          goto yy730;
-        } else {
-          if (yych == 'r')
-            goto yy729;
-          goto yy525;
-        }
-      }
-    }
-  yy534:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych <= 'C')
-          goto yy525;
-        goto yy718;
-      } else {
-        if (yych <= 'Q')
-          goto yy525;
-        if (yych <= 'R')
-          goto yy717;
-        goto yy716;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'd')
-          goto yy718;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy717;
-        if (yych <= 's')
-          goto yy716;
-        goto yy525;
-      }
-    }
-  yy535:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'K') {
-        if (yych == 'A')
-          goto yy702;
-        goto yy525;
-      } else {
-        if (yych <= 'L')
-          goto yy701;
-        if (yych <= 'N')
-          goto yy525;
-        goto yy700;
-      }
-    } else {
-      if (yych <= 'k') {
-        if (yych == 'a')
-          goto yy702;
-        goto yy525;
-      } else {
-        if (yych <= 'l')
-          goto yy701;
-        if (yych == 'o')
-          goto yy700;
-        goto yy525;
-      }
-    }
-  yy536:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'D') {
-        if (yych == 'A')
-          goto yy687;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy686;
-        if (yych <= 'N')
-          goto yy525;
-        goto yy685;
-      }
-    } else {
-      if (yych <= 'd') {
-        if (yych == 'a')
-          goto yy687;
-        goto yy525;
-      } else {
-        if (yych <= 'e')
-          goto yy686;
-        if (yych == 'o')
-          goto yy685;
-        goto yy525;
-      }
-    }
-  yy537:
-    yych = *++p;
-    switch (yych) {
-    case 'D':
-    case 'L':
-    case 'T':
-    case 'd':
-    case 'l':
-    case 't':
-      goto yy564;
-    case 'E':
-    case 'e':
-      goto yy677;
-    case 'I':
-    case 'i':
-      goto yy676;
-    default:
-      goto yy525;
-    }
-  yy538:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych <= 'N') {
-        if (yych == 'I')
-          goto yy652;
-        goto yy525;
-      } else {
-        if (yych <= 'O')
-          goto yy651;
-        if (yych <= 'Q')
-          goto yy525;
-        goto yy650;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'i')
-          goto yy652;
-        goto yy525;
-      } else {
-        if (yych <= 'o')
-          goto yy651;
-        if (yych == 'r')
-          goto yy650;
-        goto yy525;
-      }
-    }
-  yy539:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych == '1')
-          goto yy564;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy645;
-        if (yych == 'R')
-          goto yy564;
-        goto yy525;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych <= 'T')
-          goto yy644;
-        if (yych == 'e')
-          goto yy645;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy564;
-        if (yych == 't')
-          goto yy644;
-        goto yy525;
-      }
-    }
-  yy540:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy640;
-    if (yych == 'f')
-      goto yy640;
-    goto yy525;
-  yy541:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'E')
-        goto yy635;
-      if (yych <= 'H')
-        goto yy525;
-      goto yy634;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy525;
-        goto yy635;
-      } else {
-        if (yych == 'i')
-          goto yy634;
-        goto yy525;
-      }
-    }
-  yy542:
-    yych = *++p;
-    if (yych <= 'E') {
-      if (yych == 'A')
-        goto yy626;
-      if (yych <= 'D')
-        goto yy525;
-      goto yy625;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy525;
-        goto yy626;
-      } else {
-        if (yych == 'e')
-          goto yy625;
-        goto yy525;
-      }
-    }
-  yy543:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych == 'A')
-        goto yy619;
-      if (yych <= 'N')
-        goto yy525;
-      goto yy618;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy525;
-        goto yy619;
-      } else {
-        if (yych == 'o')
-          goto yy618;
-        goto yy525;
-      }
-    }
-  yy544:
-    yych = *++p;
-    if (yych <= 'P') {
-      if (yych == 'L')
-        goto yy564;
-      if (yych <= 'O')
-        goto yy525;
-      goto yy610;
-    } else {
-      if (yych <= 'l') {
-        if (yych <= 'k')
-          goto yy525;
-        goto yy564;
-      } else {
-        if (yych == 'p')
-          goto yy610;
-        goto yy525;
-      }
-    }
-  yy545:
-    yych = *++p;
-    if (yych <= 'U') {
-      if (yych <= 'E') {
-        if (yych == 'C')
-          goto yy587;
-        if (yych <= 'D')
-          goto yy525;
-        goto yy590;
-      } else {
-        if (yych <= 'O') {
-          if (yych <= 'N')
-            goto yy525;
-          goto yy589;
-        } else {
-          if (yych <= 'S')
-            goto yy525;
-          if (yych <= 'T')
-            goto yy586;
-          goto yy588;
-        }
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych <= 'c') {
-          if (yych <= 'b')
-            goto yy525;
-          goto yy587;
-        } else {
-          if (yych == 'e')
-            goto yy590;
-          goto yy525;
-        }
-      } else {
-        if (yych <= 's') {
-          if (yych <= 'o')
-            goto yy589;
-          goto yy525;
-        } else {
-          if (yych <= 't')
-            goto yy586;
-          if (yych <= 'u')
-            goto yy588;
-          goto yy525;
-        }
-      }
-    }
-  yy546:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy573;
-    case 'B':
-    case 'b':
-      goto yy572;
-    case 'D':
-    case 'd':
-      goto yy564;
-    case 'F':
-    case 'f':
-      goto yy571;
-    case 'H':
-    case 'h':
-      goto yy570;
-    case 'I':
-    case 'i':
-      goto yy569;
-    case 'R':
-    case 'r':
-      goto yy568;
-    default:
-      goto yy525;
-    }
-  yy547:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy564;
-    if (yych == 'l')
-      goto yy564;
-    goto yy525;
-  yy548:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych == '-')
-        goto yy551;
-      goto yy525;
-    } else {
-      if (yych <= 'Z')
-        goto yy552;
-      if (yych <= '[')
-        goto yy554;
-      goto yy525;
-    }
-  yy549:
-    ++p;
-    { return 3; }
-  yy551:
-    yych = *++p;
-    if (yych == '-')
-      goto yy562;
-    goto yy525;
-  yy552:
-    ++p;
-    { return 4; }
-  yy554:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy555;
-    if (yych != 'c')
-      goto yy525;
-  yy555:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy556;
-    if (yych != 'd')
-      goto yy525;
-  yy556:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy557;
-    if (yych != 'a')
-      goto yy525;
-  yy557:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy558;
-    if (yych != 't')
-      goto yy525;
-  yy558:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy559;
-    if (yych != 'a')
-      goto yy525;
-  yy559:
-    yych = *++p;
-    if (yych != '[')
-      goto yy525;
-    ++p;
-    { return 5; }
-  yy562:
-    ++p;
-    { return 2; }
-  yy564:
-    yych = *++p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy525;
-      if (yych <= '\r')
-        goto yy565;
-      if (yych <= 0x1F)
-        goto yy525;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      } else {
-        if (yych != '>')
-          goto yy525;
-      }
-    }
-  yy565:
-    ++p;
-    { return 6; }
-  yy567:
-    yych = *++p;
-    if (yych == '>')
-      goto yy565;
-    goto yy525;
-  yy568:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'A')
-          goto yy584;
-        if (yych == 'a')
-          goto yy584;
-        goto yy525;
-      }
-    }
-  yy569:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy582;
-    if (yych == 't')
-      goto yy582;
-    goto yy525;
-  yy570:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy580;
-        if (yych == 'e')
-          goto yy580;
-        goto yy525;
-      }
-    }
-  yy571:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy578;
-    if (yych == 'o')
-      goto yy578;
-    goto yy525;
-  yy572:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy576;
-    if (yych == 'o')
-      goto yy576;
-    goto yy525;
-  yy573:
-    yych = *++p;
-    if (yych == 'B')
-      goto yy574;
-    if (yych != 'b')
-      goto yy525;
-  yy574:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy575;
-    if (yych != 'l')
-      goto yy525;
-  yy575:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy576:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy577;
-    if (yych != 'd')
-      goto yy525;
-  yy577:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy578:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy579;
-    if (yych != 'o')
-      goto yy525;
-  yy579:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy580:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy581;
-    if (yych != 'a')
-      goto yy525;
-  yy581:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy564;
-    if (yych == 'd')
-      goto yy564;
-    goto yy525;
-  yy582:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy583;
-    if (yych != 'l')
-      goto yy525;
-  yy583:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy584:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy585;
-    if (yych != 'c')
-      goto yy525;
-  yy585:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy564;
-    if (yych == 'k')
-      goto yy564;
-    goto yy525;
-  yy586:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy608;
-    if (yych == 'y')
-      goto yy608;
-    goto yy525;
-  yy587:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy602;
-    if (yych == 'r')
-      goto yy602;
-    goto yy525;
-  yy588:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy598;
-    if (yych == 'm')
-      goto yy598;
-    goto yy525;
-  yy589:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy595;
-    if (yych == 'u')
-      goto yy595;
-    goto yy525;
-  yy590:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy591;
-    if (yych != 'c')
-      goto yy525;
-  yy591:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy592;
-    if (yych != 't')
-      goto yy525;
-  yy592:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy593;
-    if (yych != 'i')
-      goto yy525;
-  yy593:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy594;
-    if (yych != 'o')
-      goto yy525;
-  yy594:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy595:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy596;
-    if (yych != 'r')
-      goto yy525;
-  yy596:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy597;
-    if (yych != 'c')
-      goto yy525;
-  yy597:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy598:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy599;
-    if (yych != 'm')
-      goto yy525;
-  yy599:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy600;
-    if (yych != 'a')
-      goto yy525;
-  yy600:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy601;
-    if (yych != 'r')
-      goto yy525;
-  yy601:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy602:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy603;
-    if (yych != 'i')
-      goto yy525;
-  yy603:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy604;
-    if (yych != 'p')
-      goto yy525;
-  yy604:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy605;
-    if (yych != 't')
-      goto yy525;
-  yy605:
-    yych = *++p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy525;
-      if (yych >= 0x0E)
-        goto yy525;
-    } else {
-      if (yych <= ' ')
-        goto yy606;
-      if (yych != '>')
-        goto yy525;
-    }
-  yy606:
-    ++p;
-    { return 1; }
-  yy608:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy609;
-    if (yych != 'l')
-      goto yy525;
-  yy609:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy605;
-    if (yych == 'e')
-      goto yy605;
-    goto yy525;
-  yy610:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy611;
-    if (yych != 't')
-      goto yy525;
-  yy611:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'G')
-        goto yy613;
-      if (yych <= 'H')
-        goto yy525;
-    } else {
-      if (yych <= 'g') {
-        if (yych <= 'f')
-          goto yy525;
-        goto yy613;
-      } else {
-        if (yych != 'i')
-          goto yy525;
-      }
-    }
-    yych = *++p;
-    if (yych == 'O')
-      goto yy617;
-    if (yych == 'o')
-      goto yy617;
-    goto yy525;
-  yy613:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy614;
-    if (yych != 'r')
-      goto yy525;
-  yy614:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy615;
-    if (yych != 'o')
-      goto yy525;
-  yy615:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy616;
-    if (yych != 'u')
-      goto yy525;
-  yy616:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy564;
-    if (yych == 'p')
-      goto yy564;
-    goto yy525;
-  yy617:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy618:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy620;
-    if (yych == 'f')
-      goto yy620;
-    goto yy525;
-  yy619:
-    yych = *++p;
-    if (yych == 'V')
-      goto yy564;
-    if (yych == 'v')
-      goto yy564;
-    goto yy525;
-  yy620:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy621;
-    if (yych != 'r')
-      goto yy525;
-  yy621:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy622;
-    if (yych != 'a')
-      goto yy525;
-  yy622:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy623;
-    if (yych != 'm')
-      goto yy525;
-  yy623:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy624;
-    if (yych != 'e')
-      goto yy525;
-  yy624:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy625:
-    yych = *++p;
-    if (yych <= 'T') {
-      if (yych == 'N')
-        goto yy628;
-      if (yych <= 'S')
-        goto yy525;
-      goto yy629;
-    } else {
-      if (yych <= 'n') {
-        if (yych <= 'm')
-          goto yy525;
-        goto yy628;
-      } else {
-        if (yych == 't')
-          goto yy629;
-        goto yy525;
-      }
-    }
-  yy626:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy627;
-    if (yych != 'i')
-      goto yy525;
-  yy627:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy628:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy630;
-    if (yych == 'u')
-      goto yy630;
-    goto yy525;
-  yy629:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy564;
-    if (yych == 'a')
-      goto yy564;
-    goto yy525;
-  yy630:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'H') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'I')
-          goto yy631;
-        if (yych != 'i')
-          goto yy525;
-      }
-    }
-  yy631:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy632;
-    if (yych != 't')
-      goto yy525;
-  yy632:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy633;
-    if (yych != 'e')
-      goto yy525;
-  yy633:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy634:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'M') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'N')
-          goto yy639;
-        if (yych == 'n')
-          goto yy639;
-        goto yy525;
-      }
-    }
-  yy635:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy636;
-    if (yych != 'g')
-      goto yy525;
-  yy636:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy637;
-    if (yych != 'e')
-      goto yy525;
-  yy637:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy638;
-    if (yych != 'n')
-      goto yy525;
-  yy638:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy564;
-    if (yych == 'd')
-      goto yy564;
-    goto yy525;
-  yy639:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy564;
-    if (yych == 'k')
-      goto yy564;
-    goto yy525;
-  yy640:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy641;
-    if (yych != 'r')
-      goto yy525;
-  yy641:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy642;
-    if (yych != 'a')
-      goto yy525;
-  yy642:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy643;
-    if (yych != 'm')
-      goto yy525;
-  yy643:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy644:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy649;
-    if (yych == 'm')
-      goto yy649;
-    goto yy525;
-  yy645:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy646;
-    if (yych != 'a')
-      goto yy525;
-  yy646:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy647;
-    if (yych != 'd')
-      goto yy525;
-  yy647:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'E')
-          goto yy648;
-        if (yych != 'e')
-          goto yy525;
-      }
-    }
-  yy648:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy649:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy564;
-    if (yych == 'l')
-      goto yy564;
-    goto yy525;
-  yy650:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy671;
-    if (yych == 'a')
-      goto yy671;
-    goto yy525;
-  yy651:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych == 'O')
-        goto yy667;
-      if (yych <= 'Q')
-        goto yy525;
-      goto yy668;
-    } else {
-      if (yych <= 'o') {
-        if (yych <= 'n')
-          goto yy525;
-        goto yy667;
-      } else {
-        if (yych == 'r')
-          goto yy668;
-        goto yy525;
-      }
-    }
-  yy652:
-    yych = *++p;
-    if (yych <= 'G') {
-      if (yych == 'E')
-        goto yy653;
-      if (yych <= 'F')
-        goto yy525;
-      goto yy654;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy525;
-      } else {
-        if (yych == 'g')
-          goto yy654;
-        goto yy525;
-      }
-    }
-  yy653:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy663;
-    if (yych == 'l')
-      goto yy663;
-    goto yy525;
-  yy654:
-    yych = *++p;
-    if (yych <= 'U') {
-      if (yych == 'C')
-        goto yy656;
-      if (yych <= 'T')
-        goto yy525;
-    } else {
-      if (yych <= 'c') {
-        if (yych <= 'b')
-          goto yy525;
-        goto yy656;
-      } else {
-        if (yych != 'u')
-          goto yy525;
-      }
-    }
-    yych = *++p;
-    if (yych == 'R')
-      goto yy662;
-    if (yych == 'r')
-      goto yy662;
-    goto yy525;
-  yy656:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy657;
-    if (yych != 'a')
-      goto yy525;
-  yy657:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy658;
-    if (yych != 'p')
-      goto yy525;
-  yy658:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy659;
-    if (yych != 't')
-      goto yy525;
-  yy659:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy660;
-    if (yych != 'i')
-      goto yy525;
-  yy660:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy661;
-    if (yych != 'o')
-      goto yy525;
-  yy661:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy662:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy663:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy664;
-    if (yych != 'd')
-      goto yy525;
-  yy664:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy665;
-    if (yych != 's')
-      goto yy525;
-  yy665:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy666;
-    if (yych != 'e')
-      goto yy525;
-  yy666:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy667:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy669;
-    if (yych == 't')
-      goto yy669;
-    goto yy525;
-  yy668:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy669:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy670;
-    if (yych != 'e')
-      goto yy525;
-  yy670:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy671:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy672;
-    if (yych != 'm')
-      goto yy525;
-  yy672:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy673;
-    if (yych != 'e')
-      goto yy525;
-  yy673:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'S')
-          goto yy674;
-        if (yych != 's')
-          goto yy525;
-      }
-    }
-  yy674:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy675;
-    if (yych != 'e')
-      goto yy525;
-  yy675:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy676:
-    yych = *++p;
-    if (yych <= 'V') {
-      if (yych <= 'Q') {
-        if (yych == 'A')
-          goto yy682;
-        goto yy525;
-      } else {
-        if (yych <= 'R')
-          goto yy564;
-        if (yych <= 'U')
-          goto yy525;
-        goto yy564;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'a')
-          goto yy682;
-        goto yy525;
-      } else {
-        if (yych <= 'r')
-          goto yy564;
-        if (yych == 'v')
-          goto yy564;
-        goto yy525;
-      }
-    }
-  yy677:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy678;
-    if (yych != 't')
-      goto yy525;
-  yy678:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy679;
-    if (yych != 'a')
-      goto yy525;
-  yy679:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy680;
-    if (yych != 'i')
-      goto yy525;
-  yy680:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy681;
-    if (yych != 'l')
-      goto yy525;
-  yy681:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy682:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy683;
-    if (yych != 'l')
-      goto yy525;
-  yy683:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy684;
-    if (yych != 'o')
-      goto yy525;
-  yy684:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy564;
-    if (yych == 'g')
-      goto yy564;
-    goto yy525;
-  yy685:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy695;
-    if (yych == 'l')
-      goto yy695;
-    goto yy525;
-  yy686:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy692;
-    if (yych == 'n')
-      goto yy692;
-    goto yy525;
-  yy687:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy688;
-    if (yych != 'p')
-      goto yy525;
-  yy688:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy689;
-    if (yych != 't')
-      goto yy525;
-  yy689:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy690;
-    if (yych != 'i')
-      goto yy525;
-  yy690:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy691;
-    if (yych != 'o')
-      goto yy525;
-  yy691:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy564;
-    if (yych == 'n')
-      goto yy564;
-    goto yy525;
-  yy692:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy693;
-    if (yych != 't')
-      goto yy525;
-  yy693:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy694;
-    if (yych != 'e')
-      goto yy525;
-  yy694:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy564;
-    if (yych == 'r')
-      goto yy564;
-    goto yy525;
-  yy695:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'F') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'G')
-          goto yy696;
-        if (yych != 'g')
-          goto yy525;
-      }
-    }
-  yy696:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy697;
-    if (yych != 'r')
-      goto yy525;
-  yy697:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy698;
-    if (yych != 'o')
-      goto yy525;
-  yy698:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy699;
-    if (yych != 'u')
-      goto yy525;
-  yy699:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy564;
-    if (yych == 'p')
-      goto yy564;
-    goto yy525;
-  yy700:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy715;
-    if (yych == 'd')
-      goto yy715;
-    goto yy525;
-  yy701:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy708;
-    if (yych == 'o')
-      goto yy708;
-    goto yy525;
-  yy702:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy703;
-    if (yych != 's')
-      goto yy525;
-  yy703:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy704;
-    if (yych != 'e')
-      goto yy525;
-  yy704:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= 'E') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'F')
-          goto yy705;
-        if (yych != 'f')
-          goto yy525;
-      }
-    }
-  yy705:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy706;
-    if (yych != 'o')
-      goto yy525;
-  yy706:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy707;
-    if (yych != 'n')
-      goto yy525;
-  yy707:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy564;
-    if (yych == 't')
-      goto yy564;
-    goto yy525;
-  yy708:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy709;
-    if (yych != 'c')
-      goto yy525;
-  yy709:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy710;
-    if (yych != 'k')
-      goto yy525;
-  yy710:
-    yych = *++p;
-    if (yych == 'Q')
-      goto yy711;
-    if (yych != 'q')
-      goto yy525;
-  yy711:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy712;
-    if (yych != 'u')
-      goto yy525;
-  yy712:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy713;
-    if (yych != 'o')
-      goto yy525;
-  yy713:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy714;
-    if (yych != 't')
-      goto yy525;
-  yy714:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy715:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy564;
-    if (yych == 'y')
-      goto yy564;
-    goto yy525;
-  yy716:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy727;
-    if (yych == 'i')
-      goto yy727;
-    goto yy525;
-  yy717:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy723;
-    if (yych == 't')
-      goto yy723;
-    goto yy525;
-  yy718:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy719;
-    if (yych != 'd')
-      goto yy525;
-  yy719:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy720;
-    if (yych != 'r')
-      goto yy525;
-  yy720:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy721;
-    if (yych != 'e')
-      goto yy525;
-  yy721:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy722;
-    if (yych != 's')
-      goto yy525;
-  yy722:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy564;
-    if (yych == 's')
-      goto yy564;
-    goto yy525;
-  yy723:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy724;
-    if (yych != 'i')
-      goto yy525;
-  yy724:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy725;
-    if (yych != 'c')
-      goto yy525;
-  yy725:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy726;
-    if (yych != 'l')
-      goto yy525;
-  yy726:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy727:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy728;
-    if (yych != 'd')
-      goto yy525;
-  yy728:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy564;
-    if (yych == 'e')
-      goto yy564;
-    goto yy525;
-  yy729:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy605;
-    if (yych == 'e')
-      goto yy605;
-    goto yy525;
-  yy730:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy731;
-    if (yych != 'r')
-      goto yy525;
-  yy731:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy732;
-    if (yych != 'a')
-      goto yy525;
-  yy732:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych == 'm')
-      goto yy564;
-    goto yy525;
-  yy733:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy525;
-        if (yych <= '\r')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= ' ')
-          goto yy565;
-        if (yych <= '.')
-          goto yy525;
-        goto yy567;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy565;
-        goto yy525;
-      } else {
-        if (yych <= 'A')
-          goto yy730;
-        if (yych == 'a')
-          goto yy730;
-        goto yy525;
-      }
-    }
-  yy734:
-    ++p;
-    if ((yych = *p) <= 'U') {
-      if (yych <= 'N') {
-        if (yych == 'E')
-          goto yy590;
-        goto yy525;
-      } else {
-        if (yych <= 'O')
-          goto yy589;
-        if (yych <= 'T')
-          goto yy525;
-        goto yy588;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'e')
-          goto yy590;
-        goto yy525;
-      } else {
-        if (yych <= 'o')
-          goto yy589;
-        if (yych == 'u')
-          goto yy588;
-        goto yy525;
-      }
-    }
-  }
-}
-
-// Try to match an HTML block tag start line of type 7, returning
-// 7 if successful, 0 if not.
-bufsize_t _scan_html_block_start_7(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
-        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy739;
-      } else {
-        if (yych <= '<')
-          goto yy738;
-        if (yych <= 0x7F)
-          goto yy739;
-        if (yych >= 0xC2)
-          goto yy740;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy742;
-        if (yych == 0xED)
-          goto yy747;
-        goto yy743;
-      } else {
-        if (yych <= 0xF0)
-          goto yy744;
-        if (yych <= 0xF3)
-          goto yy745;
-        if (yych <= 0xF4)
-          goto yy746;
-      }
-    }
-  yy737 : { return 0; }
-  yy738:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '@') {
-      if (yych == '/')
-        goto yy750;
-      goto yy737;
-    } else {
-      if (yych <= 'Z')
-        goto yy748;
-      if (yych <= '`')
-        goto yy737;
-      if (yych <= 'z')
-        goto yy748;
-      goto yy737;
-    }
-  yy739:
-    yych = *++p;
-    goto yy737;
-  yy740:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy739;
-  yy741:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy737;
-    } else {
-      goto yy759;
-    }
-  yy742:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy740;
-    goto yy741;
-  yy743:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy740;
-    goto yy741;
-  yy744:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy741;
-  yy745:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy741;
-  yy746:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy743;
-    goto yy741;
-  yy747:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy740;
-    goto yy741;
-  yy748:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy748;
-    }
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy741;
-      if (yych <= '\r')
-        goto yy761;
-      if (yych <= 0x1F)
-        goto yy741;
-      goto yy761;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy741;
-        goto yy763;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy750:
-    yych = *++p;
-    if (yych <= '@')
-      goto yy741;
-    if (yych <= 'Z')
-      goto yy751;
-    if (yych <= '`')
-      goto yy741;
-    if (yych >= '{')
-      goto yy741;
-  yy751:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy753;
-    }
-    if (yych <= '=') {
-      if (yych <= '-') {
-        if (yych <= ',')
-          goto yy741;
-        goto yy751;
-      } else {
-        if (yych <= '/')
-          goto yy741;
-        if (yych <= '9')
-          goto yy751;
-        goto yy741;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy751;
-      } else {
-        if (yych <= '`')
-          goto yy741;
-        if (yych <= 'z')
-          goto yy751;
-        goto yy741;
-      }
-    }
-  yy753:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy753;
-    }
-    if (yych != '>')
-      goto yy741;
-  yy755:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy755;
-    }
-    if (yych <= 0x08)
-      goto yy741;
-    if (yych <= '\n')
-      goto yy757;
-    if (yych <= '\v')
-      goto yy741;
-    if (yych <= '\r')
-      goto yy760;
-    goto yy741;
-  yy757:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy755;
-    }
-    if (yych <= 0x08)
-      goto yy759;
-    if (yych <= '\n')
-      goto yy757;
-    if (yych <= '\v')
-      goto yy759;
-    if (yych <= '\r')
-      goto yy760;
-  yy759 : { return 7; }
-  yy760:
-    yych = *++p;
-    goto yy759;
-  yy761:
-    ++p;
-    yych = *p;
-    if (yych <= ':') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy741;
-        if (yych <= '\r')
-          goto yy761;
-        if (yych <= 0x1F)
-          goto yy741;
-        goto yy761;
-      } else {
-        if (yych == '/')
-          goto yy763;
-        if (yych <= '9')
-          goto yy741;
-        goto yy764;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych == '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy764;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy741;
-          goto yy764;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    }
-  yy763:
-    yych = *++p;
-    if (yych == '>')
-      goto yy755;
-    goto yy741;
-  yy764:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy764;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy741;
-      } else {
-        if (yych != ' ')
-          goto yy741;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy763;
-        goto yy741;
-      } else {
-        if (yych <= '=')
-          goto yy768;
-        if (yych <= '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy766:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy741;
-        if (yych <= '\r')
-          goto yy766;
-        if (yych <= 0x1F)
-          goto yy741;
-        goto yy766;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy741;
-          goto yy763;
-        } else {
-          if (yych == ':')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy768;
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= '@')
-          goto yy741;
-        goto yy764;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy741;
-          goto yy764;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy764;
-          goto yy741;
-        }
-      }
-    }
-  yy768:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych >= '!')
-          goto yy781;
-      } else {
-        if (yych <= '\'')
-          goto yy779;
-        if (yych <= 0xC1)
-          goto yy741;
-        if (yych <= 0xDF)
-          goto yy772;
-        goto yy773;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= ' ')
-          goto yy804;
-        if (yych <= '"')
-          goto yy781;
-        goto yy779;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        if (yych <= 0xC1)
-          goto yy741;
-        goto yy772;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy773;
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-  yy770:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy770;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= ' ')
-          goto yy798;
-        goto yy741;
-      } else {
-        if (yych <= '>')
-          goto yy755;
-        if (yych <= 0xC1)
-          goto yy741;
-        if (yych >= 0xE0)
-          goto yy773;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy778;
-        goto yy774;
-      } else {
-        if (yych <= 0xF0)
-          goto yy775;
-        if (yych <= 0xF3)
-          goto yy776;
-        if (yych <= 0xF4)
-          goto yy777;
-        goto yy741;
-      }
-    }
-  yy772:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy770;
-    goto yy741;
-  yy773:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy772;
-    goto yy741;
-  yy774:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy772;
-    goto yy741;
-  yy775:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy774;
-    goto yy741;
-  yy776:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy774;
-    goto yy741;
-  yy777:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy774;
-    goto yy741;
-  yy778:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy772;
-    goto yy741;
-  yy779:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy779;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= '\'')
-          goto yy790;
-        goto yy741;
-      } else {
-        if (yych <= 0xDF)
-          goto yy791;
-        if (yych <= 0xE0)
-          goto yy792;
-        goto yy793;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy797;
-        if (yych <= 0xEF)
-          goto yy793;
-        goto yy794;
-      } else {
-        if (yych <= 0xF3)
-          goto yy795;
-        if (yych <= 0xF4)
-          goto yy796;
-        goto yy741;
-      }
-    }
-  yy781:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy781;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy741;
-        if (yych <= '"')
-          goto yy790;
-        goto yy741;
-      } else {
-        if (yych <= 0xDF)
-          goto yy783;
-        if (yych <= 0xE0)
-          goto yy784;
-        goto yy785;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy789;
-        if (yych <= 0xEF)
-          goto yy785;
-        goto yy786;
-      } else {
-        if (yych <= 0xF3)
-          goto yy787;
-        if (yych <= 0xF4)
-          goto yy788;
-        goto yy741;
-      }
-    }
-  yy783:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy781;
-    goto yy741;
-  yy784:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy783;
-    goto yy741;
-  yy785:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy783;
-    goto yy741;
-  yy786:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy785;
-    goto yy741;
-  yy787:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy785;
-    goto yy741;
-  yy788:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy785;
-    goto yy741;
-  yy789:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy783;
-    goto yy741;
-  yy790:
-    ++p;
-    yych = *p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy741;
-      if (yych <= '\r')
-        goto yy761;
-      if (yych <= 0x1F)
-        goto yy741;
-      goto yy761;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy741;
-        goto yy763;
-      } else {
-        if (yych == '>')
-          goto yy755;
-        goto yy741;
-      }
-    }
-  yy791:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy779;
-    goto yy741;
-  yy792:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy791;
-    goto yy741;
-  yy793:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy791;
-    goto yy741;
-  yy794:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy793;
-    goto yy741;
-  yy795:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0xBF)
-      goto yy793;
-    goto yy741;
-  yy796:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x8F)
-      goto yy793;
-    goto yy741;
-  yy797:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy741;
-    if (yych <= 0x9F)
-      goto yy791;
-    goto yy741;
-  yy798:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          goto yy798;
-        } else {
-          if (yych == ' ')
-            goto yy798;
-          if (yych <= '!')
-            goto yy770;
-          goto yy741;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy741;
-          if (yych <= '9')
-            goto yy770;
-        } else {
-          if (yych <= ';')
-            goto yy770;
-          if (yych <= '=')
-            goto yy741;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych >= '`')
-            goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  yy800:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          if (yych >= 0x0E)
-            goto yy770;
-        } else {
-          if (yych <= ' ')
-            goto yy802;
-          if (yych == '"')
-            goto yy741;
-          goto yy770;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy741;
-          if (yych <= ',')
-            goto yy770;
-          if (yych <= '.')
-            goto yy800;
-          goto yy770;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy800;
-            goto yy770;
-          } else {
-            if (yych <= '<')
-              goto yy741;
-            if (yych <= '=')
-              goto yy768;
-            goto yy755;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy770;
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          goto yy800;
-        } else {
-          if (yych <= '`')
-            goto yy741;
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          goto yy741;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy772;
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych <= 0xEC)
-            goto yy774;
-          goto yy778;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy774;
-            goto yy775;
-          } else {
-            if (yych <= 0xF3)
-              goto yy776;
-            if (yych <= 0xF4)
-              goto yy777;
-            goto yy741;
-          }
-        }
-      }
-    }
-  yy802:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          if (yych <= '\r')
-            goto yy802;
-          goto yy770;
-        } else {
-          if (yych <= ' ')
-            goto yy802;
-          if (yych == '"')
-            goto yy741;
-          goto yy770;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy741;
-          if (yych == ':')
-            goto yy800;
-          goto yy770;
-        } else {
-          if (yych <= '<')
-            goto yy741;
-          if (yych <= '=')
-            goto yy768;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych <= '_')
-            goto yy800;
-          goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  yy804:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy741;
-          if (yych <= 0x08)
-            goto yy770;
-          goto yy804;
-        } else {
-          if (yych == ' ')
-            goto yy804;
-          if (yych <= '!')
-            goto yy770;
-          goto yy781;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy779;
-          if (yych <= '9')
-            goto yy770;
-          goto yy800;
-        } else {
-          if (yych <= ';')
-            goto yy770;
-          if (yych <= '=')
-            goto yy741;
-          if (yych <= '>')
-            goto yy755;
-          goto yy770;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy800;
-          if (yych <= '^')
-            goto yy770;
-          if (yych <= '_')
-            goto yy800;
-          goto yy741;
-        } else {
-          if (yych <= 'z')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy770;
-          if (yych <= 0xC1)
-            goto yy741;
-          goto yy772;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy773;
-          if (yych == 0xED)
-            goto yy778;
-          goto yy774;
-        } else {
-          if (yych <= 0xF0)
-            goto yy775;
-          if (yych <= 0xF3)
-            goto yy776;
-          if (yych <= 0xF4)
-            goto yy777;
-          goto yy741;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 1
-bufsize_t _scan_html_block_end_1(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych != '\n')
-          goto yy809;
-      } else {
-        if (yych <= '<')
-          goto yy810;
-        if (yych <= 0x7F)
-          goto yy809;
-        if (yych >= 0xC2)
-          goto yy811;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy813;
-        if (yych == 0xED)
-          goto yy818;
-        goto yy814;
-      } else {
-        if (yych <= 0xF0)
-          goto yy815;
-        if (yych <= 0xF3)
-          goto yy816;
-        if (yych <= 0xF4)
-          goto yy817;
-      }
-    }
-  yy808 : { return 0; }
-  yy809:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy808;
-      goto yy823;
-    } else {
-      if (yych <= 0xC1)
-        goto yy808;
-      if (yych <= 0xF4)
-        goto yy823;
-      goto yy808;
-    }
-  yy810:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych == '\n')
-        goto yy808;
-      if (yych <= '.')
-        goto yy823;
-      goto yy819;
-    } else {
-      if (yych <= 0x7F)
-        goto yy823;
-      if (yych <= 0xC1)
-        goto yy808;
-      if (yych <= 0xF4)
-        goto yy823;
-      goto yy808;
-    }
-  yy811:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy809;
-  yy812:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy808;
-    } else {
-      goto yy840;
-    }
-  yy813:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy811;
-    goto yy812;
-  yy814:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy811;
-    goto yy812;
-  yy815:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy814;
-    goto yy812;
-  yy816:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy814;
-    goto yy812;
-  yy817:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x8F)
-      goto yy814;
-    goto yy812;
-  yy818:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x9F)
-      goto yy811;
-    goto yy812;
-  yy819:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 's') {
-      if (yych <= 'R') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych == 'P')
-            goto yy831;
-          goto yy822;
-        }
-      } else {
-        if (yych <= 'o') {
-          if (yych <= 'S')
-            goto yy832;
-          goto yy822;
-        } else {
-          if (yych <= 'p')
-            goto yy831;
-          if (yych <= 'r')
-            goto yy822;
-          goto yy832;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych <= 0xDF)
-            goto yy824;
-          if (yych <= 0xE0)
-            goto yy825;
-          goto yy826;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy830;
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy820:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '.') {
-        if (yych == '\n')
-          goto yy812;
-      } else {
-        if (yych <= '/')
-          goto yy819;
-        if (yych <= 0x7F)
-          goto yy822;
-        if (yych <= 0xC1)
-          goto yy812;
-        goto yy824;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych == 0xED)
-          goto yy830;
-        goto yy826;
-      } else {
-        if (yych <= 0xF0)
-          goto yy827;
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy822:
-    ++p;
-    yych = *p;
-  yy823:
-    if (yybm[0 + yych] & 128) {
-      goto yy822;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy812;
-        if (yych <= '<')
-          goto yy820;
-        goto yy812;
-      } else {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        goto yy826;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy830;
-        if (yych <= 0xEF)
-          goto yy826;
-        goto yy827;
-      } else {
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy824:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy822;
-    goto yy812;
-  yy825:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy824;
-    goto yy812;
-  yy826:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy824;
-    goto yy812;
-  yy827:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy826;
-    goto yy812;
-  yy828:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0xBF)
-      goto yy826;
-    goto yy812;
-  yy829:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x8F)
-      goto yy826;
-    goto yy812;
-  yy830:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy812;
-    if (yych <= 0x9F)
-      goto yy824;
-    goto yy812;
-  yy831:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'R') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'Q')
-          goto yy822;
-        goto yy843;
-      } else {
-        if (yych == 'r')
-          goto yy843;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy832:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 't') {
-      if (yych <= 'S') {
-        if (yych <= '\n') {
-          if (yych <= '\t')
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych == 'C')
-            goto yy834;
-          goto yy822;
-        }
-      } else {
-        if (yych <= 'b') {
-          if (yych >= 'U')
-            goto yy822;
-        } else {
-          if (yych <= 'c')
-            goto yy834;
-          if (yych <= 's')
-            goto yy822;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy822;
-          goto yy812;
-        } else {
-          if (yych <= 0xDF)
-            goto yy824;
-          if (yych <= 0xE0)
-            goto yy825;
-          goto yy826;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy830;
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'Y') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'X')
-          goto yy822;
-        goto yy841;
-      } else {
-        if (yych == 'y')
-          goto yy841;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy834:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'R') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'Q')
-          goto yy822;
-      } else {
-        if (yych == 'r')
-          goto yy835;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy835:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'I') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'H')
-          goto yy822;
-      } else {
-        if (yych == 'i')
-          goto yy836;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy836:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'P') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'O')
-          goto yy822;
-      } else {
-        if (yych == 'p')
-          goto yy837;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy837:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'T') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'S')
-          goto yy822;
-      } else {
-        if (yych == 't')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy838:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy812;
-        goto yy822;
-      } else {
-        if (yych <= '>')
-          goto yy839;
-        if (yych <= 0x7F)
-          goto yy822;
-        if (yych <= 0xC1)
-          goto yy812;
-        goto yy824;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych == 0xED)
-          goto yy830;
-        goto yy826;
-      } else {
-        if (yych <= 0xF0)
-          goto yy827;
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-        goto yy812;
-      }
-    }
-  yy839:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy822;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy840;
-        if (yych <= '<')
-          goto yy820;
-      } else {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        goto yy826;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy830;
-        if (yych <= 0xEF)
-          goto yy826;
-        goto yy827;
-      } else {
-        if (yych <= 0xF3)
-          goto yy828;
-        if (yych <= 0xF4)
-          goto yy829;
-      }
-    }
-  yy840 : { return (bufsize_t)(p - start); }
-  yy841:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'L') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'K')
-          goto yy822;
-      } else {
-        if (yych == 'l')
-          goto yy842;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy842:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'E') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'D')
-          goto yy822;
-        goto yy838;
-      } else {
-        if (yych == 'e')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  yy843:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy820;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'E') {
-        if (yych == '\n')
-          goto yy812;
-        if (yych <= 'D')
-          goto yy822;
-        goto yy838;
-      } else {
-        if (yych == 'e')
-          goto yy838;
-        if (yych <= 0x7F)
-          goto yy822;
-        goto yy812;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy824;
-        if (yych <= 0xE0)
-          goto yy825;
-        if (yych <= 0xEC)
-          goto yy826;
-        goto yy830;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy826;
-          goto yy827;
-        } else {
-          if (yych <= 0xF3)
-            goto yy828;
-          if (yych <= 0xF4)
-            goto yy829;
-          goto yy812;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 2
-bufsize_t _scan_html_block_end_2(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= ',') {
-        if (yych != '\n')
-          goto yy847;
-      } else {
-        if (yych <= '-')
-          goto yy848;
-        if (yych <= 0x7F)
-          goto yy847;
-        if (yych >= 0xC2)
-          goto yy849;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy851;
-        if (yych == 0xED)
-          goto yy856;
-        goto yy852;
-      } else {
-        if (yych <= 0xF0)
-          goto yy853;
-        if (yych <= 0xF3)
-          goto yy854;
-        if (yych <= 0xF4)
-          goto yy855;
-      }
-    }
-  yy846 : { return 0; }
-  yy847:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy846;
-      goto yy860;
-    } else {
-      if (yych <= 0xC1)
-        goto yy846;
-      if (yych <= 0xF4)
-        goto yy860;
-      goto yy846;
-    }
-  yy848:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy857;
-    }
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy846;
-      goto yy860;
-    } else {
-      if (yych <= 0xC1)
-        goto yy846;
-      if (yych <= 0xF4)
-        goto yy860;
-      goto yy846;
-    }
-  yy849:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy847;
-  yy850:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy846;
-    } else {
-      goto yy870;
-    }
-  yy851:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy849;
-    goto yy850;
-  yy852:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy849;
-    goto yy850;
-  yy853:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy852;
-    goto yy850;
-  yy854:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy852;
-    goto yy850;
-  yy855:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x8F)
-      goto yy852;
-    goto yy850;
-  yy856:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x9F)
-      goto yy849;
-    goto yy850;
-  yy857:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy857;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy850;
-      } else {
-        if (yych <= '>')
-          goto yy869;
-        if (yych <= 0x7F)
-          goto yy859;
-        if (yych <= 0xC1)
-          goto yy850;
-        goto yy861;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy862;
-        if (yych == 0xED)
-          goto yy867;
-        goto yy863;
-      } else {
-        if (yych <= 0xF0)
-          goto yy864;
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy859:
-    ++p;
-    yych = *p;
-  yy860:
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy850;
-        if (yych <= '-')
-          goto yy868;
-        goto yy850;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy861:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy859;
-    goto yy850;
-  yy862:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy861;
-    goto yy850;
-  yy863:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy861;
-    goto yy850;
-  yy864:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy863;
-    goto yy850;
-  yy865:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0xBF)
-      goto yy863;
-    goto yy850;
-  yy866:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x8F)
-      goto yy863;
-    goto yy850;
-  yy867:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy850;
-    if (yych <= 0x9F)
-      goto yy861;
-    goto yy850;
-  yy868:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy850;
-        if (yych <= '-')
-          goto yy857;
-        goto yy850;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-        goto yy850;
-      }
-    }
-  yy869:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy859;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy870;
-        if (yych <= '-')
-          goto yy868;
-      } else {
-        if (yych <= 0xDF)
-          goto yy861;
-        if (yych <= 0xE0)
-          goto yy862;
-        goto yy863;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy867;
-        if (yych <= 0xEF)
-          goto yy863;
-        goto yy864;
-      } else {
-        if (yych <= 0xF3)
-          goto yy865;
-        if (yych <= 0xF4)
-          goto yy866;
-      }
-    }
-  yy870 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match an HTML block end line of type 3
-bufsize_t _scan_html_block_end_3(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '>') {
-        if (yych != '\n')
-          goto yy874;
-      } else {
-        if (yych <= '?')
-          goto yy875;
-        if (yych <= 0x7F)
-          goto yy874;
-        if (yych >= 0xC2)
-          goto yy876;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy878;
-        if (yych == 0xED)
-          goto yy883;
-        goto yy879;
-      } else {
-        if (yych <= 0xF0)
-          goto yy880;
-        if (yych <= 0xF3)
-          goto yy881;
-        if (yych <= 0xF4)
-          goto yy882;
-      }
-    }
-  yy873 : { return 0; }
-  yy874:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy873;
-      goto yy889;
-    } else {
-      if (yych <= 0xC1)
-        goto yy873;
-      if (yych <= 0xF4)
-        goto yy889;
-      goto yy873;
-    }
-  yy875:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '>') {
-      if (yych == '\n')
-        goto yy873;
-      if (yych <= '=')
-        goto yy889;
-      goto yy884;
-    } else {
-      if (yych <= 0x7F)
-        goto yy889;
-      if (yych <= 0xC1)
-        goto yy873;
-      if (yych <= 0xF4)
-        goto yy889;
-      goto yy873;
-    }
-  yy876:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy874;
-  yy877:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy873;
-    } else {
-      goto yy885;
-    }
-  yy878:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy876;
-    goto yy877;
-  yy879:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy876;
-    goto yy877;
-  yy880:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy879;
-    goto yy877;
-  yy881:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy879;
-    goto yy877;
-  yy882:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x8F)
-      goto yy879;
-    goto yy877;
-  yy883:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x9F)
-      goto yy876;
-    goto yy877;
-  yy884:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy888;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy885;
-        if (yych <= '?')
-          goto yy886;
-      } else {
-        if (yych <= 0xDF)
-          goto yy890;
-        if (yych <= 0xE0)
-          goto yy891;
-        goto yy892;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy896;
-        if (yych <= 0xEF)
-          goto yy892;
-        goto yy893;
-      } else {
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-      }
-    }
-  yy885 : { return (bufsize_t)(p - start); }
-  yy886:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy886;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy877;
-      } else {
-        if (yych <= '>')
-          goto yy884;
-        if (yych <= 0x7F)
-          goto yy888;
-        if (yych <= 0xC1)
-          goto yy877;
-        goto yy890;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy891;
-        if (yych == 0xED)
-          goto yy896;
-        goto yy892;
-      } else {
-        if (yych <= 0xF0)
-          goto yy893;
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-        goto yy877;
-      }
-    }
-  yy888:
-    ++p;
-    yych = *p;
-  yy889:
-    if (yybm[0 + yych] & 128) {
-      goto yy888;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy877;
-        if (yych <= '?')
-          goto yy886;
-        goto yy877;
-      } else {
-        if (yych <= 0xDF)
-          goto yy890;
-        if (yych <= 0xE0)
-          goto yy891;
-        goto yy892;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy896;
-        if (yych <= 0xEF)
-          goto yy892;
-        goto yy893;
-      } else {
-        if (yych <= 0xF3)
-          goto yy894;
-        if (yych <= 0xF4)
-          goto yy895;
-        goto yy877;
-      }
-    }
-  yy890:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy888;
-    goto yy877;
-  yy891:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy890;
-    goto yy877;
-  yy892:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy890;
-    goto yy877;
-  yy893:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy892;
-    goto yy877;
-  yy894:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0xBF)
-      goto yy892;
-    goto yy877;
-  yy895:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x8F)
-      goto yy892;
-    goto yy877;
-  yy896:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy877;
-    if (yych <= 0x9F)
-      goto yy890;
-    goto yy877;
-  }
-}
-
-// Try to match an HTML block end line of type 4
-bufsize_t _scan_html_block_end_4(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych != '\n')
-          goto yy900;
-      } else {
-        if (yych <= '>')
-          goto yy901;
-        if (yych <= 0x7F)
-          goto yy900;
-        if (yych >= 0xC2)
-          goto yy903;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy905;
-        if (yych == 0xED)
-          goto yy910;
-        goto yy906;
-      } else {
-        if (yych <= 0xF0)
-          goto yy907;
-        if (yych <= 0xF3)
-          goto yy908;
-        if (yych <= 0xF4)
-          goto yy909;
-      }
-    }
-  yy899 : { return 0; }
-  yy900:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy899;
-      goto yy914;
-    } else {
-      if (yych <= 0xC1)
-        goto yy899;
-      if (yych <= 0xF4)
-        goto yy914;
-      goto yy899;
-    }
-  yy901:
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych != '\n')
-        goto yy914;
-    } else {
-      if (yych <= 0xC1)
-        goto yy902;
-      if (yych <= 0xF4)
-        goto yy914;
-    }
-  yy902 : { return (bufsize_t)(p - start); }
-  yy903:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy900;
-  yy904:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy899;
-    } else {
-      goto yy902;
-    }
-  yy905:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy903;
-    goto yy904;
-  yy906:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy903;
-    goto yy904;
-  yy907:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy906;
-    goto yy904;
-  yy908:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy906;
-    goto yy904;
-  yy909:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x8F)
-      goto yy906;
-    goto yy904;
-  yy910:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x9F)
-      goto yy903;
-    goto yy904;
-  yy911:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy913;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy902;
-        if (yych <= '>')
-          goto yy911;
-        goto yy902;
-      } else {
-        if (yych <= 0xDF)
-          goto yy915;
-        if (yych <= 0xE0)
-          goto yy916;
-        goto yy917;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy921;
-        if (yych <= 0xEF)
-          goto yy917;
-        goto yy918;
-      } else {
-        if (yych <= 0xF3)
-          goto yy919;
-        if (yych <= 0xF4)
-          goto yy920;
-        goto yy902;
-      }
-    }
-  yy913:
-    ++p;
-    yych = *p;
-  yy914:
-    if (yybm[0 + yych] & 128) {
-      goto yy913;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy904;
-        if (yych <= '>')
-          goto yy911;
-        goto yy904;
-      } else {
-        if (yych <= 0xDF)
-          goto yy915;
-        if (yych <= 0xE0)
-          goto yy916;
-        goto yy917;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy921;
-        if (yych <= 0xEF)
-          goto yy917;
-        goto yy918;
-      } else {
-        if (yych <= 0xF3)
-          goto yy919;
-        if (yych <= 0xF4)
-          goto yy920;
-        goto yy904;
-      }
-    }
-  yy915:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy913;
-    goto yy904;
-  yy916:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy915;
-    goto yy904;
-  yy917:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy915;
-    goto yy904;
-  yy918:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy917;
-    goto yy904;
-  yy919:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0xBF)
-      goto yy917;
-    goto yy904;
-  yy920:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x8F)
-      goto yy917;
-    goto yy904;
-  yy921:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy904;
-    if (yych <= 0x9F)
-      goto yy915;
-    goto yy904;
-  }
-}
-
-// Try to match an HTML block end line of type 5
-bufsize_t _scan_html_block_end_5(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '\\') {
-        if (yych != '\n')
-          goto yy925;
-      } else {
-        if (yych <= ']')
-          goto yy926;
-        if (yych <= 0x7F)
-          goto yy925;
-        if (yych >= 0xC2)
-          goto yy927;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy929;
-        if (yych == 0xED)
-          goto yy934;
-        goto yy930;
-      } else {
-        if (yych <= 0xF0)
-          goto yy931;
-        if (yych <= 0xF3)
-          goto yy932;
-        if (yych <= 0xF4)
-          goto yy933;
-      }
-    }
-  yy924 : { return 0; }
-  yy925:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy924;
-      goto yy938;
-    } else {
-      if (yych <= 0xC1)
-        goto yy924;
-      if (yych <= 0xF4)
-        goto yy938;
-      goto yy924;
-    }
-  yy926:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy935;
-    }
-    if (yych <= 0x7F) {
-      if (yych == '\n')
-        goto yy924;
-      goto yy938;
-    } else {
-      if (yych <= 0xC1)
-        goto yy924;
-      if (yych <= 0xF4)
-        goto yy938;
-      goto yy924;
-    }
-  yy927:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy925;
-  yy928:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy924;
-    } else {
-      goto yy948;
-    }
-  yy929:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy927;
-    goto yy928;
-  yy930:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy927;
-    goto yy928;
-  yy931:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy930;
-    goto yy928;
-  yy932:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy930;
-    goto yy928;
-  yy933:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x8F)
-      goto yy930;
-    goto yy928;
-  yy934:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x9F)
-      goto yy927;
-    goto yy928;
-  yy935:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy935;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych == '\n')
-          goto yy928;
-      } else {
-        if (yych <= '>')
-          goto yy947;
-        if (yych <= 0x7F)
-          goto yy937;
-        if (yych <= 0xC1)
-          goto yy928;
-        goto yy939;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy940;
-        if (yych == 0xED)
-          goto yy945;
-        goto yy941;
-      } else {
-        if (yych <= 0xF0)
-          goto yy942;
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy937:
-    ++p;
-    yych = *p;
-  yy938:
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy928;
-        if (yych <= ']')
-          goto yy946;
-        goto yy928;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy939:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy937;
-    goto yy928;
-  yy940:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy939;
-    goto yy928;
-  yy941:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy939;
-    goto yy928;
-  yy942:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy941;
-    goto yy928;
-  yy943:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0xBF)
-      goto yy941;
-    goto yy928;
-  yy944:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x8F)
-      goto yy941;
-    goto yy928;
-  yy945:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy928;
-    if (yych <= 0x9F)
-      goto yy939;
-    goto yy928;
-  yy946:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy928;
-        if (yych <= ']')
-          goto yy935;
-        goto yy928;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-        goto yy928;
-      }
-    }
-  yy947:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy937;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy948;
-        if (yych <= ']')
-          goto yy946;
-      } else {
-        if (yych <= 0xDF)
-          goto yy939;
-        if (yych <= 0xE0)
-          goto yy940;
-        goto yy941;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy945;
-        if (yych <= 0xEF)
-          goto yy941;
-        goto yy942;
-      } else {
-        if (yych <= 0xF3)
-          goto yy943;
-        if (yych <= 0xF4)
-          goto yy944;
-      }
-    }
-  yy948 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match a URL in a link or reference, return number of chars matched.
-// This may optionally be contained in <..>; otherwise
-// whitespace and unbalanced right parentheses aren't allowed.
-// Newlines aren't ever allowed.
-bufsize_t _scan_link_url(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   128, 128, 128, 128, 128, 128, 128, 128, 0,   8,   128, 128, 8,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 8,   224, 224, 224, 224, 224, 224, 224, 128, 128,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 32,  224, 32,  224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= '[') {
-      if (yych <= ' ') {
-        if (yych <= '\f') {
-          if (yych == '\n')
-            goto yy952;
-          goto yy968;
-        } else {
-          if (yych <= '\r')
-            goto yy954;
-          if (yych <= 0x1F)
-            goto yy968;
-          goto yy954;
-        }
-      } else {
-        if (yych <= ')') {
-          if (yych <= '\'')
-            goto yy956;
-          if (yych <= '(')
-            goto yy966;
-          goto yy968;
-        } else {
-          if (yych == '<')
-            goto yy955;
-          goto yy956;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy965;
-          if (yych <= 0x7F)
-            goto yy956;
-        } else {
-          if (yych <= 0xDF)
-            goto yy957;
-          if (yych <= 0xE0)
-            goto yy959;
-          goto yy960;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy964;
-          if (yych <= 0xEF)
-            goto yy960;
-          goto yy961;
-        } else {
-          if (yych <= 0xF3)
-            goto yy962;
-          if (yych <= 0xF4)
-            goto yy963;
-        }
-      }
-    }
-  yy951 : { return (bufsize_t)(p - start); }
-  yy952:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy953:
-    if (yybm[0 + yych] & 8) {
-      goto yy952;
-    }
-    if (yych <= 0x7F) {
-      if (yych <= ')') {
-        if (yych <= 0x1F)
-          goto yy951;
-        if (yych <= '\'')
-          goto yy980;
-        if (yych <= '(')
-          goto yy971;
-        goto yy951;
-      } else {
-        if (yych <= '<') {
-          if (yych <= ';')
-            goto yy980;
-          goto yy1016;
-        } else {
-          if (yych == '\\')
-            goto yy982;
-          goto yy980;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych <= 0xC1)
-            goto yy951;
-          goto yy983;
-        } else {
-          if (yych <= 0xE0)
-            goto yy984;
-          if (yych <= 0xEC)
-            goto yy985;
-          goto yy989;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy985;
-          goto yy986;
-        } else {
-          if (yych <= 0xF3)
-            goto yy987;
-          if (yych <= 0xF4)
-            goto yy988;
-          goto yy951;
-        }
-      }
-    }
-  yy954:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    goto yy953;
-  yy955:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy951;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-          goto yy1018;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy956:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    goto yy981;
-  yy957:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy956;
-  yy958:
-    p = marker;
-    if (yyaccept <= 1) {
-      if (yyaccept == 0) {
-        goto yy951;
-      } else {
-        goto yy967;
-      }
-    } else {
-      goto yy1019;
-    }
-  yy959:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy957;
-    goto yy958;
-  yy960:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy957;
-    goto yy958;
-  yy961:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy960;
-    goto yy958;
-  yy962:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy960;
-    goto yy958;
-  yy963:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy960;
-    goto yy958;
-  yy964:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy957;
-    goto yy958;
-  yy965:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0xDF) {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        goto yy980;
-      } else {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= 0x7F)
-          goto yy980;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy990;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy991;
-        if (yych == 0xED)
-          goto yy996;
-        goto yy992;
-      } else {
-        if (yych <= 0xF0)
-          goto yy993;
-        if (yych <= 0xF3)
-          goto yy994;
-        if (yych <= 0xF4)
-          goto yy995;
-        goto yy951;
-      }
-    }
-  yy966:
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych <= '(') {
-      if (yych <= ' ')
-        goto yy967;
-      if (yych <= '\'')
-        goto yy972;
-    } else {
-      if (yych <= 0x7F)
-        goto yy972;
-      if (yych <= 0xC1)
-        goto yy967;
-      if (yych <= 0xF4)
-        goto yy972;
-    }
-  yy967 : { return 0; }
-  yy968:
-    yych = *++p;
-    goto yy967;
-  yy969:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy969;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy958;
-        if (yych >= ')')
-          goto yy997;
-      } else {
-        if (yych <= 0x7F)
-          goto yy971;
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych <= 0xDF)
-          goto yy973;
-        goto yy974;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy979;
-        goto yy975;
-      } else {
-        if (yych <= 0xF0)
-          goto yy976;
-        if (yych <= 0xF3)
-          goto yy977;
-        if (yych <= 0xF4)
-          goto yy978;
-        goto yy958;
-      }
-    }
-  yy971:
-    ++p;
-    yych = *p;
-  yy972:
-    if (yybm[0 + yych] & 32) {
-      goto yy971;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '(')
-          goto yy958;
-        if (yych <= ')')
-          goto yy980;
-        goto yy969;
-      } else {
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych >= 0xE0)
-          goto yy974;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy979;
-        goto yy975;
-      } else {
-        if (yych <= 0xF0)
-          goto yy976;
-        if (yych <= 0xF3)
-          goto yy977;
-        if (yych <= 0xF4)
-          goto yy978;
-        goto yy958;
-      }
-    }
-  yy973:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy971;
-    goto yy958;
-  yy974:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy973;
-    goto yy958;
-  yy975:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy973;
-    goto yy958;
-  yy976:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy975;
-    goto yy958;
-  yy977:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy975;
-    goto yy958;
-  yy978:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy975;
-    goto yy958;
-  yy979:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy973;
-    goto yy958;
-  yy980:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy981:
-    if (yych <= 0xC1) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= '\'')
-          goto yy980;
-        if (yych <= '(')
-          goto yy971;
-        goto yy951;
-      } else {
-        if (yych == '\\')
-          goto yy982;
-        if (yych <= 0x7F)
-          goto yy980;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy983;
-        if (yych <= 0xE0)
-          goto yy984;
-        if (yych <= 0xEC)
-          goto yy985;
-        goto yy989;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy985;
-          goto yy986;
-        } else {
-          if (yych <= 0xF3)
-            goto yy987;
-          if (yych <= 0xF4)
-            goto yy988;
-          goto yy951;
-        }
-      }
-    }
-  yy982:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        goto yy980;
-      } else {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= 0x7F)
-          goto yy980;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy990;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy991;
-        if (yych == 0xED)
-          goto yy996;
-        goto yy992;
-      } else {
-        if (yych <= 0xF0)
-          goto yy993;
-        if (yych <= 0xF3)
-          goto yy994;
-        if (yych <= 0xF4)
-          goto yy995;
-        goto yy951;
-      }
-    }
-  yy983:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy980;
-    goto yy958;
-  yy984:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy983;
-    goto yy958;
-  yy985:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy983;
-    goto yy958;
-  yy986:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy985;
-    goto yy958;
-  yy987:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy985;
-    goto yy958;
-  yy988:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy985;
-    goto yy958;
-  yy989:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy983;
-    goto yy958;
-  yy990:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy980;
-    goto yy958;
-  yy991:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy990;
-    goto yy958;
-  yy992:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy990;
-    goto yy958;
-  yy993:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy992;
-    goto yy958;
-  yy994:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy992;
-    goto yy958;
-  yy995:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy992;
-    goto yy958;
-  yy996:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy990;
-    goto yy958;
-  yy997:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-  yy998:
-    if (yych <= 0xC1) {
-      if (yych <= ')') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych <= '\'')
-          goto yy997;
-        if (yych <= '(')
-          goto yy971;
-        goto yy980;
-      } else {
-        if (yych == '\\')
-          goto yy999;
-        if (yych <= 0x7F)
-          goto yy997;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1000;
-        if (yych <= 0xE0)
-          goto yy1001;
-        if (yych <= 0xEC)
-          goto yy1002;
-        goto yy1006;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1002;
-          goto yy1003;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1004;
-          if (yych <= 0xF4)
-            goto yy1005;
-          goto yy951;
-        }
-      }
-    }
-  yy999:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xC1) {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy980;
-        if (yych <= '\r')
-          goto yy951;
-        if (yych <= 0x1F)
-          goto yy980;
-        goto yy951;
-      } else {
-        if (yych == '\\')
-          goto yy1007;
-        if (yych <= 0x7F)
-          goto yy997;
-        goto yy951;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1008;
-        if (yych <= 0xE0)
-          goto yy1009;
-        if (yych <= 0xEC)
-          goto yy1010;
-        goto yy1014;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1010;
-          goto yy1011;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1012;
-          if (yych <= 0xF4)
-            goto yy1013;
-          goto yy951;
-        }
-      }
-    }
-  yy1000:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy997;
-    goto yy958;
-  yy1001:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1000;
-    goto yy958;
-  yy1002:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1000;
-    goto yy958;
-  yy1003:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1002;
-    goto yy958;
-  yy1004:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1002;
-    goto yy958;
-  yy1005:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1002;
-    goto yy958;
-  yy1006:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1000;
-    goto yy958;
-  yy1007:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= '[') {
-        if (yych <= ' ')
-          goto yy951;
-        if (yych == '(')
-          goto yy971;
-        goto yy997;
-      } else {
-        if (yych <= '\\')
-          goto yy999;
-        if (yych <= 0x7F)
-          goto yy997;
-        if (yych <= 0xC1)
-          goto yy951;
-        goto yy1000;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy1001;
-        if (yych == 0xED)
-          goto yy1006;
-        goto yy1002;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1003;
-        if (yych <= 0xF3)
-          goto yy1004;
-        if (yych <= 0xF4)
-          goto yy1005;
-        goto yy951;
-      }
-    }
-  yy1008:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy997;
-    goto yy958;
-  yy1009:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1008;
-    goto yy958;
-  yy1010:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1008;
-    goto yy958;
-  yy1011:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1010;
-    goto yy958;
-  yy1012:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1010;
-    goto yy958;
-  yy1013:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1010;
-    goto yy958;
-  yy1014:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1008;
-    goto yy958;
-  yy1015:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy980;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych == ' ')
-            goto yy951;
-        } else {
-          if (yych <= '>')
-            goto yy1073;
-          if (yych >= '\\')
-            goto yy1074;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych >= 0x80)
-            goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1075;
-          if (yych <= 0xE0)
-            goto yy1076;
-          goto yy1077;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1081;
-          if (yych <= 0xEF)
-            goto yy1077;
-          goto yy1078;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1079;
-          if (yych <= 0xF4)
-            goto yy1080;
-          goto yy951;
-        }
-      }
-    }
-  yy1016:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy951;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy1018:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= ')') {
-      if (yych <= ' ')
-        goto yy1019;
-      if (yych <= '(')
-        goto yy981;
-    } else {
-      if (yych <= 0x7F)
-        goto yy981;
-      if (yych <= 0xC1)
-        goto yy1019;
-      if (yych <= 0xF4)
-        goto yy981;
-    }
-  yy1019 : { return (bufsize_t)(p - start); }
-  yy1020:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1016;
-    goto yy958;
-  yy1021:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1020;
-    goto yy958;
-  yy1022:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1020;
-    goto yy958;
-  yy1023:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1022;
-    goto yy958;
-  yy1024:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1022;
-    goto yy958;
-  yy1025:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1022;
-    goto yy958;
-  yy1026:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1020;
-    goto yy958;
-  yy1027:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy958;
-          if (yych >= '\t')
-            goto yy958;
-        } else {
-          if (yych == '\r')
-            goto yy958;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy958;
-          if (yych <= '\'')
-            goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy971;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1042;
-          if (yych <= '[')
-            goto yy1027;
-          goto yy1043;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1027;
-          if (yych <= 0xC1)
-            goto yy958;
-          if (yych <= 0xDF)
-            goto yy1045;
-          goto yy1046;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1051;
-          goto yy1047;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1048;
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy958;
-        }
-      }
-    }
-  yy1029:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1029;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '<')
-          goto yy958;
-        if (yych >= '?')
-          goto yy1032;
-      } else {
-        if (yych <= 0xC1)
-          goto yy958;
-        if (yych <= 0xDF)
-          goto yy1034;
-        goto yy1035;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1040;
-        goto yy1036;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1037;
-        if (yych <= 0xF3)
-          goto yy1038;
-        if (yych <= 0xF4)
-          goto yy1039;
-        goto yy958;
-      }
-    }
-  yy1031:
-    yych = *++p;
-    goto yy1019;
-  yy1032:
-    ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy958;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy958;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy958;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych == ' ')
-            goto yy958;
-          goto yy1029;
-        } else {
-          if (yych <= '>')
-            goto yy1041;
-          if (yych <= '[')
-            goto yy1029;
-          goto yy1032;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy1029;
-          goto yy958;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1034;
-          if (yych <= 0xE0)
-            goto yy1035;
-          goto yy1036;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1040;
-          if (yych <= 0xEF)
-            goto yy1036;
-          goto yy1037;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1038;
-          if (yych <= 0xF4)
-            goto yy1039;
-          goto yy958;
-        }
-      }
-    }
-  yy1034:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1029;
-    goto yy958;
-  yy1035:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1034;
-    goto yy958;
-  yy1036:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1034;
-    goto yy958;
-  yy1037:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1036;
-    goto yy958;
-  yy1038:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1036;
-    goto yy958;
-  yy1039:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1036;
-    goto yy958;
-  yy1040:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1034;
-    goto yy958;
-  yy1041:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1029;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= '<')
-          goto yy1019;
-        if (yych <= '>')
-          goto yy1031;
-        goto yy1032;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1019;
-        if (yych <= 0xDF)
-          goto yy1034;
-        goto yy1035;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1040;
-        goto yy1036;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1037;
-        if (yych <= 0xF3)
-          goto yy1038;
-        if (yych <= 0xF4)
-          goto yy1039;
-        goto yy1019;
-      }
-    }
-  yy1042:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= '(') {
-      if (yych <= ' ')
-        goto yy1019;
-      if (yych <= '\'')
-        goto yy972;
-      goto yy1019;
-    } else {
-      if (yych <= 0x7F)
-        goto yy972;
-      if (yych <= 0xC1)
-        goto yy1019;
-      if (yych <= 0xF4)
-        goto yy972;
-      goto yy1019;
-    }
-  yy1043:
-    ++p;
-    yych = *p;
-    if (yych <= '[') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy958;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy958;
-        } else {
-          if (yych == '\r')
-            goto yy958;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= ')') {
-          if (yych <= ' ')
-            goto yy958;
-          if (yych <= '(')
-            goto yy1027;
-          goto yy1052;
-        } else {
-          if (yych == '>')
-            goto yy1054;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1043;
-          if (yych <= 0x7F)
-            goto yy1027;
-          goto yy958;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1045;
-          if (yych <= 0xE0)
-            goto yy1046;
-          goto yy1047;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1051;
-          if (yych <= 0xEF)
-            goto yy1047;
-          goto yy1048;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy958;
-        }
-      }
-    }
-  yy1045:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1027;
-    goto yy958;
-  yy1046:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1045;
-    goto yy958;
-  yy1047:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1045;
-    goto yy958;
-  yy1048:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1047;
-    goto yy958;
-  yy1049:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1047;
-    goto yy958;
-  yy1050:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1047;
-    goto yy958;
-  yy1051:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1045;
-    goto yy958;
-  yy1052:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy997;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1055;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1056;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1052;
-          if (yych <= 0xC1)
-            goto yy951;
-          if (yych <= 0xDF)
-            goto yy1057;
-          goto yy1058;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1063;
-          goto yy1059;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1060;
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy951;
-        }
-      }
-    }
-  yy1054:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy1019;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy1019;
-        } else {
-          if (yych == '\r')
-            goto yy1019;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy1019;
-          if (yych <= '\'')
-            goto yy1027;
-          goto yy1029;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy971;
-          goto yy1027;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1042;
-          if (yych <= '[')
-            goto yy1027;
-          goto yy1043;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1027;
-          if (yych <= 0xC1)
-            goto yy1019;
-          if (yych <= 0xDF)
-            goto yy1045;
-          goto yy1046;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1051;
-          goto yy1047;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1048;
-          if (yych <= 0xF3)
-            goto yy1049;
-          if (yych <= 0xF4)
-            goto yy1050;
-          goto yy1019;
-        }
-      }
-    }
-  yy1055:
-    yyaccept = 2;
-    yych = *(marker = ++p);
-    if (yych <= ' ')
-      goto yy1019;
-    if (yych <= 0x7F)
-      goto yy998;
-    if (yych <= 0xC1)
-      goto yy1019;
-    if (yych <= 0xF4)
-      goto yy998;
-    goto yy1019;
-  yy1056:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '\\') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy980;
-          goto yy1016;
-        } else {
-          if (yych <= '\n')
-            goto yy951;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy951;
-        }
-      } else {
-        if (yych <= '=') {
-          if (yych <= 0x1F)
-            goto yy1016;
-          if (yych <= ' ')
-            goto yy951;
-          goto yy1052;
-        } else {
-          if (yych <= '>')
-            goto yy1064;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1065;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy1052;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1066;
-          if (yych <= 0xE0)
-            goto yy1067;
-          goto yy1068;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1072;
-          if (yych <= 0xEF)
-            goto yy1068;
-          goto yy1069;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1070;
-          if (yych <= 0xF4)
-            goto yy1071;
-          goto yy951;
-        }
-      }
-    }
-  yy1057:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1052;
-    goto yy958;
-  yy1058:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1057;
-    goto yy958;
-  yy1059:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1057;
-    goto yy958;
-  yy1060:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1059;
-    goto yy958;
-  yy1061:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1059;
-    goto yy958;
-  yy1062:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1059;
-    goto yy958;
-  yy1063:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1057;
-    goto yy958;
-  yy1064:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy1019;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy1019;
-        } else {
-          if (yych == '\r')
-            goto yy1019;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy1019;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1016;
-          if (yych == '<')
-            goto yy997;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= '\\') {
-          if (yych <= '>')
-            goto yy1055;
-          if (yych <= '[')
-            goto yy1052;
-          goto yy1056;
-        } else {
-          if (yych <= 0x7F)
-            goto yy1052;
-          if (yych <= 0xC1)
-            goto yy1019;
-          if (yych <= 0xDF)
-            goto yy1057;
-          goto yy1058;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1063;
-          goto yy1059;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1060;
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy1019;
-        }
-      }
-    }
-  yy1065:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '[') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1052;
-          goto yy1027;
-        } else {
-          if (yych == '>')
-            goto yy1064;
-          goto yy1052;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1056;
-          if (yych <= 0x7F)
-            goto yy1052;
-          goto yy951;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1057;
-          if (yych <= 0xE0)
-            goto yy1058;
-          goto yy1059;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1063;
-          if (yych <= 0xEF)
-            goto yy1059;
-          goto yy1060;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1061;
-          if (yych <= 0xF4)
-            goto yy1062;
-          goto yy951;
-        }
-      }
-    }
-  yy1066:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1052;
-    goto yy958;
-  yy1067:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1066;
-    goto yy958;
-  yy1068:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1066;
-    goto yy958;
-  yy1069:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy958;
-  yy1070:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy958;
-  yy1071:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1068;
-    goto yy958;
-  yy1072:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1066;
-    goto yy958;
-  yy1073:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1016;
-    }
-    if (yych <= '>') {
-      if (yych <= '\r') {
-        if (yych <= 0x08) {
-          if (yych <= 0x00)
-            goto yy1019;
-          goto yy1029;
-        } else {
-          if (yych <= '\n')
-            goto yy1019;
-          if (yych <= '\f')
-            goto yy1029;
-          goto yy1019;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= 0x1F)
-            goto yy1029;
-          if (yych <= ' ')
-            goto yy1019;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '<')
-            goto yy980;
-          goto yy1018;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= '\\')
-            goto yy1015;
-          goto yy1019;
-        } else {
-          if (yych <= 0xDF)
-            goto yy1020;
-          if (yych <= 0xE0)
-            goto yy1021;
-          goto yy1022;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy1026;
-          if (yych <= 0xEF)
-            goto yy1022;
-          goto yy1023;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy1019;
-        }
-      }
-    }
-  yy1074:
-    yyaccept = 0;
-    marker = ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= 0x1F) {
-        if (yych <= '\n') {
-          if (yych <= 0x00)
-            goto yy951;
-          if (yych <= 0x08)
-            goto yy1029;
-          goto yy951;
-        } else {
-          if (yych == '\r')
-            goto yy951;
-          goto yy1029;
-        }
-      } else {
-        if (yych <= '(') {
-          if (yych <= ' ')
-            goto yy951;
-          if (yych <= '\'')
-            goto yy1016;
-          goto yy1027;
-        } else {
-          if (yych <= ')')
-            goto yy1029;
-          if (yych <= '=')
-            goto yy1016;
-          goto yy1073;
-        }
-      }
-    } else {
-      if (yych <= 0xE0) {
-        if (yych <= 0x7F) {
-          if (yych == '\\')
-            goto yy1015;
-          goto yy1016;
-        } else {
-          if (yych <= 0xC1)
-            goto yy951;
-          if (yych <= 0xDF)
-            goto yy1020;
-          goto yy1021;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych == 0xED)
-            goto yy1026;
-          goto yy1022;
-        } else {
-          if (yych <= 0xF0)
-            goto yy1023;
-          if (yych <= 0xF3)
-            goto yy1024;
-          if (yych <= 0xF4)
-            goto yy1025;
-          goto yy951;
-        }
-      }
-    }
-  yy1075:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1016;
-    goto yy958;
-  yy1076:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1075;
-    goto yy958;
-  yy1077:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1075;
-    goto yy958;
-  yy1078:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1077;
-    goto yy958;
-  yy1079:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0xBF)
-      goto yy1077;
-    goto yy958;
-  yy1080:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x8F)
-      goto yy1077;
-    goto yy958;
-  yy1081:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy958;
-    if (yych <= 0x9F)
-      goto yy1075;
-    goto yy958;
-  }
-}
-
-// Try to match a link title (in single quotes, in double quotes, or
-// in parentheses), returning number of chars matched.  Allow one
-// level of internal nesting (quotes within quotes).
-bufsize_t _scan_link_title(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '"') {
-        if (yych == '\n')
-          goto yy1084;
-        if (yych <= '!')
-          goto yy1088;
-        goto yy1085;
-      } else {
-        if (yych <= '\'') {
-          if (yych <= '&')
-            goto yy1088;
-          goto yy1086;
-        } else {
-          if (yych <= '(')
-            goto yy1087;
-          if (yych <= 0x7F)
-            goto yy1088;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1089;
-        if (yych <= 0xE0)
-          goto yy1091;
-        if (yych <= 0xEC)
-          goto yy1092;
-        goto yy1096;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1092;
-          goto yy1093;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1094;
-          if (yych <= 0xF4)
-            goto yy1095;
-        }
-      }
-    }
-  yy1084 : { return 0; }
-  yy1085:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1128;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1128;
-    goto yy1084;
-  yy1086:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1114;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1114;
-    goto yy1084;
-  yy1087:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy1084;
-    if (yych <= 0x7F)
-      goto yy1100;
-    if (yych <= 0xC1)
-      goto yy1084;
-    if (yych <= 0xF4)
-      goto yy1100;
-    goto yy1084;
-  yy1088:
-    yych = *++p;
-    goto yy1084;
-  yy1089:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1088;
-  yy1090:
-    p = marker;
-    if (yyaccept <= 1) {
-      if (yyaccept == 0) {
-        goto yy1084;
-      } else {
-        goto yy1109;
-      }
-    } else {
-      if (yyaccept == 2) {
-        goto yy1123;
-      } else {
-        goto yy1137;
-      }
-    }
-  yy1091:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1089;
-    goto yy1090;
-  yy1092:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1089;
-    goto yy1090;
-  yy1093:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1092;
-    goto yy1090;
-  yy1094:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1092;
-    goto yy1090;
-  yy1095:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1092;
-    goto yy1090;
-  yy1096:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1089;
-    goto yy1090;
-  yy1097:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= ')')
-          goto yy1110;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1101;
-        goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1090;
-      }
-    }
-  yy1099:
-    ++p;
-    yych = *p;
-  yy1100:
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= ')')
-          goto yy1108;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1090;
-      }
-    }
-  yy1101:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1099;
-    goto yy1090;
-  yy1102:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1101;
-    goto yy1090;
-  yy1103:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1101;
-    goto yy1090;
-  yy1104:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1103;
-    goto yy1090;
-  yy1105:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1103;
-    goto yy1090;
-  yy1106:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1103;
-    goto yy1090;
-  yy1107:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1101;
-    goto yy1090;
-  yy1108:
-    ++p;
-  yy1109 : { return (bufsize_t)(p - start); }
-  yy1110:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1099;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1109;
-        if (yych <= ')')
-          goto yy1108;
-        goto yy1097;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1109;
-        if (yych <= 0xDF)
-          goto yy1101;
-        goto yy1102;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1107;
-        goto yy1103;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1104;
-        if (yych <= 0xF3)
-          goto yy1105;
-        if (yych <= 0xF4)
-          goto yy1106;
-        goto yy1109;
-      }
-    }
-  yy1111:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '\'')
-          goto yy1124;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1115;
-        goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1090;
-      }
-    }
-  yy1113:
-    ++p;
-    yych = *p;
-  yy1114:
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '\'')
-          goto yy1122;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1090;
-      }
-    }
-  yy1115:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1113;
-    goto yy1090;
-  yy1116:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1115;
-    goto yy1090;
-  yy1117:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1115;
-    goto yy1090;
-  yy1118:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1117;
-    goto yy1090;
-  yy1119:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1117;
-    goto yy1090;
-  yy1120:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1117;
-    goto yy1090;
-  yy1121:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1115;
-    goto yy1090;
-  yy1122:
-    ++p;
-  yy1123 : { return (bufsize_t)(p - start); }
-  yy1124:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1113;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1123;
-        if (yych <= '\'')
-          goto yy1122;
-        goto yy1111;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1123;
-        if (yych <= 0xDF)
-          goto yy1115;
-        goto yy1116;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1121;
-        goto yy1117;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1118;
-        if (yych <= 0xF3)
-          goto yy1119;
-        if (yych <= 0xF4)
-          goto yy1120;
-        goto yy1123;
-      }
-    }
-  yy1125:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '"')
-          goto yy1138;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych <= 0xDF)
-          goto yy1129;
-        goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1090;
-      }
-    }
-  yy1127:
-    ++p;
-    yych = *p;
-  yy1128:
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1090;
-        if (yych <= '"')
-          goto yy1136;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1090;
-        if (yych >= 0xE0)
-          goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1090;
-      }
-    }
-  yy1129:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1127;
-    goto yy1090;
-  yy1130:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1129;
-    goto yy1090;
-  yy1131:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1129;
-    goto yy1090;
-  yy1132:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1131;
-    goto yy1090;
-  yy1133:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0xBF)
-      goto yy1131;
-    goto yy1090;
-  yy1134:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x8F)
-      goto yy1131;
-    goto yy1090;
-  yy1135:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1090;
-    if (yych <= 0x9F)
-      goto yy1129;
-    goto yy1090;
-  yy1136:
-    ++p;
-  yy1137 : { return (bufsize_t)(p - start); }
-  yy1138:
-    yyaccept = 3;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1127;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy1137;
-        if (yych <= '"')
-          goto yy1136;
-        goto yy1125;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1137;
-        if (yych <= 0xDF)
-          goto yy1129;
-        goto yy1130;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1135;
-        goto yy1131;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1132;
-        if (yych <= 0xF3)
-          goto yy1133;
-        if (yych <= 0xF4)
-          goto yy1134;
-        goto yy1137;
-      }
-    }
-  }
-}
-
-// Match space characters, including newlines.
-bufsize_t _scan_spacechars(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy1145;
-        if (yych == '\n')
-          goto yy1143;
-        goto yy1142;
-      } else {
-        if (yych == ' ')
-          goto yy1142;
-        if (yych <= 0x7F)
-          goto yy1145;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1147;
-        if (yych <= 0xE0)
-          goto yy1149;
-        if (yych <= 0xEC)
-          goto yy1150;
-        goto yy1154;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1150;
-          goto yy1151;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1152;
-          if (yych <= 0xF4)
-            goto yy1153;
-        }
-      }
-    }
-  yy1141 : { return (bufsize_t)(p - start); }
-  yy1142:
-    yych = *++p;
-    goto yy1144;
-  yy1143:
-    ++p;
-    yych = *p;
-  yy1144:
-    if (yybm[0 + yych] & 128) {
-      goto yy1143;
-    }
-    goto yy1141;
-  yy1145:
-    ++p;
-    { return 0; }
-  yy1147:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1145;
-  yy1148:
-    p = marker;
-    goto yy1141;
-  yy1149:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1147;
-    goto yy1148;
-  yy1150:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1147;
-    goto yy1148;
-  yy1151:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1150;
-    goto yy1148;
-  yy1152:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0xBF)
-      goto yy1150;
-    goto yy1148;
-  yy1153:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1148;
-    if (yych <= 0x8F)
-      goto yy1150;
-    goto yy1148;
-  yy1154:
-    ++p;
-    if ((yych = *p) <= 0x7F)
-      goto yy1148;
-    if (yych <= 0x9F)
-      goto yy1147;
-    goto yy1148;
-  }
-}
-
-// Match ATX heading start.
-bufsize_t _scan_atx_heading_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xDF) {
-      if (yych <= '"') {
-        if (yych != '\n')
-          goto yy1159;
-      } else {
-        if (yych <= '#')
-          goto yy1158;
-        if (yych <= 0x7F)
-          goto yy1159;
-        if (yych >= 0xC2)
-          goto yy1160;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy1162;
-        if (yych == 0xED)
-          goto yy1167;
-        goto yy1163;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1164;
-        if (yych <= 0xF3)
-          goto yy1165;
-        if (yych <= 0xF4)
-          goto yy1166;
-      }
-    }
-  yy1157 : { return 0; }
-  yy1158:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1168;
-      goto yy1157;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych == '#')
-        goto yy1172;
-      goto yy1157;
-    }
-  yy1159:
-    yych = *++p;
-    goto yy1157;
-  yy1160:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1159;
-  yy1161:
-    p = marker;
-    goto yy1157;
-  yy1162:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1160;
-    goto yy1161;
-  yy1163:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1160;
-    goto yy1161;
-  yy1164:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1163;
-    goto yy1161;
-  yy1165:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0xBF)
-      goto yy1163;
-    goto yy1161;
-  yy1166:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0x8F)
-      goto yy1163;
-    goto yy1161;
-  yy1167:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1161;
-    if (yych <= 0x9F)
-      goto yy1160;
-    goto yy1161;
-  yy1168:
-    ++p;
-  yy1169 : { return (bufsize_t)(p - start); }
-  yy1170:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    goto yy1169;
-  yy1172:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1170;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1168;
-      goto yy1161;
-    } else {
-      if (yych <= '\r')
-        goto yy1168;
-      if (yych != '#')
-        goto yy1161;
-    }
-    ++p;
-    if (yybm[0 + (yych = *p)] & 128) {
-      goto yy1170;
-    }
-    if (yych == '\n')
-      goto yy1168;
-    if (yych == '\r')
-      goto yy1168;
-    goto yy1161;
-  }
-}
-
-// Match setext heading line.  Return 1 for level-1 heading,
-// 2 for level-2, 0 for no match.
-bufsize_t _scan_setext_heading_line(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
-        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '-') {
-        if (yych == '\n')
-          goto yy1179;
-        if (yych <= ',')
-          goto yy1182;
-        goto yy1181;
-      } else {
-        if (yych == '=')
-          goto yy1180;
-        if (yych <= 0x7F)
-          goto yy1182;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1183;
-        if (yych <= 0xE0)
-          goto yy1185;
-        if (yych <= 0xEC)
-          goto yy1186;
-        goto yy1190;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1186;
-          goto yy1187;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1188;
-          if (yych <= 0xF4)
-            goto yy1189;
-        }
-      }
-    }
-  yy1179 : { return 0; }
-  yy1180:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy1201;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1199;
-      goto yy1179;
-    } else {
-      if (yych <= '\r')
-        goto yy1199;
-      if (yych == ' ')
-        goto yy1197;
-      goto yy1179;
-    }
-  yy1181:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 32) {
-      goto yy1191;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1193;
-      goto yy1179;
-    } else {
-      if (yych <= '\r')
-        goto yy1193;
-      if (yych == '-')
-        goto yy1195;
-      goto yy1179;
-    }
-  yy1182:
-    yych = *++p;
-    goto yy1179;
-  yy1183:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1182;
-  yy1184:
-    p = marker;
-    goto yy1179;
-  yy1185:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1186:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1183;
-    goto yy1184;
-  yy1187:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1188:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0xBF)
-      goto yy1186;
-    goto yy1184;
-  yy1189:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0x8F)
-      goto yy1186;
-    goto yy1184;
-  yy1190:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1184;
-    if (yych <= 0x9F)
-      goto yy1183;
-    goto yy1184;
-  yy1191:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1191;
-    }
-    if (yych == '\n')
-      goto yy1193;
-    if (yych != '\r')
-      goto yy1184;
-  yy1193:
-    ++p;
-    { return 2; }
-  yy1195:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1191;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1193;
-      goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1193;
-      if (yych == '-')
-        goto yy1195;
-      goto yy1184;
-    }
-  yy1197:
-    ++p;
-    yych = *p;
-    if (yych <= '\f') {
-      if (yych != '\n')
-        goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1199;
-      if (yych == ' ')
-        goto yy1197;
-      goto yy1184;
-    }
-  yy1199:
-    ++p;
-    { return 1; }
-  yy1201:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1201;
-    }
-    if (yych <= '\f') {
-      if (yych == '\n')
-        goto yy1199;
-      goto yy1184;
-    } else {
-      if (yych <= '\r')
-        goto yy1199;
-      if (yych == ' ')
-        goto yy1197;
-      goto yy1184;
-    }
-  }
-}
-
-// Scan a thematic break line: "...three or more hyphens, asterisks,
-// or underscores on a line by themselves. If you wish, you may use
-// spaces between the hyphens or asterisks."
-bufsize_t _scan_thematic_break(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 32, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,
-        0, 16, 0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 64, 0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
-        0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,   0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0x7F) {
-      if (yych <= '*') {
-        if (yych == '\n')
-          goto yy1205;
-        if (yych <= ')')
-          goto yy1209;
-        goto yy1206;
-      } else {
-        if (yych <= '-') {
-          if (yych <= ',')
-            goto yy1209;
-          goto yy1208;
-        } else {
-          if (yych == '_')
-            goto yy1207;
-          goto yy1209;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF) {
-          if (yych >= 0xC2)
-            goto yy1210;
-        } else {
-          if (yych <= 0xE0)
-            goto yy1212;
-          if (yych <= 0xEC)
-            goto yy1213;
-          goto yy1217;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1213;
-          goto yy1214;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1215;
-          if (yych <= 0xF4)
-            goto yy1216;
-        }
-      }
-    }
-  yy1205 : { return 0; }
-  yy1206:
-    yych = *(marker = ++p);
-    if (yych == ' ')
-      goto yy1238;
-    if (yych == '*')
-      goto yy1240;
-    goto yy1205;
-  yy1207:
-    yych = *(marker = ++p);
-    if (yych == ' ')
-      goto yy1228;
-    if (yych == '_')
-      goto yy1230;
-    goto yy1205;
-  yy1208:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 8) {
-      goto yy1218;
-    }
-    if (yych == '-')
-      goto yy1220;
-    goto yy1205;
-  yy1209:
-    yych = *++p;
-    goto yy1205;
-  yy1210:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1209;
-  yy1211:
-    p = marker;
-    goto yy1205;
-  yy1212:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1210;
-    goto yy1211;
-  yy1213:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1210;
-    goto yy1211;
-  yy1214:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1213;
-    goto yy1211;
-  yy1215:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0xBF)
-      goto yy1213;
-    goto yy1211;
-  yy1216:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0x8F)
-      goto yy1213;
-    goto yy1211;
-  yy1217:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1211;
-    if (yych <= 0x9F)
-      goto yy1210;
-    goto yy1211;
-  yy1218:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 8) {
-      goto yy1218;
-    }
-    if (yych != '-')
-      goto yy1211;
-  yy1220:
-    ++p;
-    yych = *p;
-    if (yych == ' ')
-      goto yy1220;
-    if (yych != '-')
-      goto yy1211;
-  yy1222:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1222;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1211;
-      if (yych >= '\n')
-        goto yy1226;
-    } else {
-      if (yych == '\r')
-        goto yy1226;
-      goto yy1211;
-    }
-  yy1224:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1224;
-    }
-    if (yych <= 0x08)
-      goto yy1211;
-    if (yych <= '\n')
-      goto yy1226;
-    if (yych != '\r')
-      goto yy1211;
-  yy1226:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1228:
-    ++p;
-    yych = *p;
-    if (yych == ' ')
-      goto yy1228;
-    if (yych != '_')
-      goto yy1211;
-  yy1230:
-    ++p;
-    yych = *p;
-    if (yych == ' ')
-      goto yy1230;
-    if (yych != '_')
-      goto yy1211;
-  yy1232:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1232;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1211;
-      if (yych >= '\n')
-        goto yy1236;
-    } else {
-      if (yych == '\r')
-        goto yy1236;
-      goto yy1211;
-    }
-  yy1234:
-    ++p;
-    yych = *p;
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1211;
-      if (yych <= '\t')
-        goto yy1234;
-      if (yych >= '\v')
-        goto yy1211;
-    } else {
-      if (yych <= '\r')
-        goto yy1236;
-      if (yych == ' ')
-        goto yy1234;
-      goto yy1211;
-    }
-  yy1236:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1238:
-    ++p;
-    yych = *p;
-    if (yych == ' ')
-      goto yy1238;
-    if (yych != '*')
-      goto yy1211;
-  yy1240:
-    ++p;
-    yych = *p;
-    if (yych == ' ')
-      goto yy1240;
-    if (yych != '*')
-      goto yy1211;
-  yy1242:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1242;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x08)
-        goto yy1211;
-      if (yych >= '\n')
-        goto yy1246;
-    } else {
-      if (yych == '\r')
-        goto yy1246;
-      goto yy1211;
-    }
-  yy1244:
-    ++p;
-    yych = *p;
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1211;
-      if (yych <= '\t')
-        goto yy1244;
-      if (yych >= '\v')
-        goto yy1211;
-    } else {
-      if (yych <= '\r')
-        goto yy1246;
-      if (yych == ' ')
-        goto yy1244;
-      goto yy1211;
-    }
-  yy1246:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scan an opening code fence.
-bufsize_t _scan_open_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '`') {
-        if (yych == '\n')
-          goto yy1250;
-        if (yych <= '_')
-          goto yy1253;
-        goto yy1251;
-      } else {
-        if (yych == '~')
-          goto yy1252;
-        if (yych <= 0x7F)
-          goto yy1253;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1254;
-        if (yych <= 0xE0)
-          goto yy1256;
-        if (yych <= 0xEC)
-          goto yy1257;
-        goto yy1261;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1257;
-          goto yy1258;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1259;
-          if (yych <= 0xF4)
-            goto yy1260;
-        }
-      }
-    }
-  yy1250 : { return 0; }
-  yy1251:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1276;
-    goto yy1250;
-  yy1252:
-    yych = *(marker = ++p);
-    if (yych == '~')
-      goto yy1262;
-    goto yy1250;
-  yy1253:
-    yych = *++p;
-    goto yy1250;
-  yy1254:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1253;
-  yy1255:
-    p = marker;
-    goto yy1250;
-  yy1256:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1254;
-    goto yy1255;
-  yy1257:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1254;
-    goto yy1255;
-  yy1258:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1257;
-    goto yy1255;
-  yy1259:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1257;
-    goto yy1255;
-  yy1260:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1257;
-    goto yy1255;
-  yy1261:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1254;
-    goto yy1255;
-  yy1262:
-    yych = *++p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1263;
-    }
-    goto yy1255;
-  yy1263:
-    marker = p + 1;
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1265;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '~') {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1274;
-        goto yy1263;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1255;
-        if (yych <= 0xDF)
-          goto yy1267;
-        goto yy1268;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1273;
-        goto yy1269;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1270;
-        if (yych <= 0xF3)
-          goto yy1271;
-        if (yych <= 0xF4)
-          goto yy1272;
-        goto yy1255;
-      }
-    }
-  yy1265:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1265;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1274;
-        goto yy1255;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1267;
-        if (yych <= 0xE0)
-          goto yy1268;
-        goto yy1269;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1273;
-        if (yych <= 0xEF)
-          goto yy1269;
-        goto yy1270;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1271;
-        if (yych <= 0xF4)
-          goto yy1272;
-        goto yy1255;
-      }
-    }
-  yy1267:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1265;
-    goto yy1255;
-  yy1268:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1267;
-    goto yy1255;
-  yy1269:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1267;
-    goto yy1255;
-  yy1270:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1269;
-    goto yy1255;
-  yy1271:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1269;
-    goto yy1255;
-  yy1272:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1269;
-    goto yy1255;
-  yy1273:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1267;
-    goto yy1255;
-  yy1274:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1276:
-    yych = *++p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1277;
-    }
-    goto yy1255;
-  yy1277:
-    marker = p + 1;
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1279;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '`') {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1288;
-        goto yy1277;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1255;
-        if (yych <= 0xDF)
-          goto yy1281;
-        goto yy1282;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1287;
-        goto yy1283;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1284;
-        if (yych <= 0xF3)
-          goto yy1285;
-        if (yych <= 0xF4)
-          goto yy1286;
-        goto yy1255;
-      }
-    }
-  yy1279:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1279;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1255;
-        if (yych <= '\r')
-          goto yy1288;
-        goto yy1255;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1281;
-        if (yych <= 0xE0)
-          goto yy1282;
-        goto yy1283;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1287;
-        if (yych <= 0xEF)
-          goto yy1283;
-        goto yy1284;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1285;
-        if (yych <= 0xF4)
-          goto yy1286;
-        goto yy1255;
-      }
-    }
-  yy1281:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1279;
-    goto yy1255;
-  yy1282:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1281;
-    goto yy1255;
-  yy1283:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1281;
-    goto yy1255;
-  yy1284:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1283;
-    goto yy1255;
-  yy1285:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0xBF)
-      goto yy1283;
-    goto yy1255;
-  yy1286:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x8F)
-      goto yy1283;
-    goto yy1255;
-  yy1287:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1255;
-    if (yych <= 0x9F)
-      goto yy1281;
-    goto yy1255;
-  yy1288:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scan a closing code fence with length at least len.
-bufsize_t _scan_close_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
-    };
-    yych = *(marker = p);
-    if (yych <= 0xC1) {
-      if (yych <= '`') {
-        if (yych == '\n')
-          goto yy1292;
-        if (yych <= '_')
-          goto yy1295;
-        goto yy1293;
-      } else {
-        if (yych == '~')
-          goto yy1294;
-        if (yych <= 0x7F)
-          goto yy1295;
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy1296;
-        if (yych <= 0xE0)
-          goto yy1298;
-        if (yych <= 0xEC)
-          goto yy1299;
-        goto yy1303;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy1299;
-          goto yy1300;
-        } else {
-          if (yych <= 0xF3)
-            goto yy1301;
-          if (yych <= 0xF4)
-            goto yy1302;
-        }
-      }
-    }
-  yy1292 : { return 0; }
-  yy1293:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1311;
-    goto yy1292;
-  yy1294:
-    yych = *(marker = ++p);
-    if (yych == '~')
-      goto yy1304;
-    goto yy1292;
-  yy1295:
-    yych = *++p;
-    goto yy1292;
-  yy1296:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1295;
-  yy1297:
-    p = marker;
-    goto yy1292;
-  yy1298:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1296;
-    goto yy1297;
-  yy1299:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1296;
-    goto yy1297;
-  yy1300:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1299;
-    goto yy1297;
-  yy1301:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0xBF)
-      goto yy1299;
-    goto yy1297;
-  yy1302:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0x8F)
-      goto yy1299;
-    goto yy1297;
-  yy1303:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy1297;
-    if (yych <= 0x9F)
-      goto yy1296;
-    goto yy1297;
-  yy1304:
-    yych = *++p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1305;
-    }
-    goto yy1297;
-  yy1305:
-    marker = p + 1;
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1307;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1297;
-      if (yych <= '\n')
-        goto yy1309;
-      goto yy1297;
-    } else {
-      if (yych <= '\r')
-        goto yy1309;
-      if (yych == '~')
-        goto yy1305;
-      goto yy1297;
-    }
-  yy1307:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1307;
-    }
-    if (yych <= 0x08)
-      goto yy1297;
-    if (yych <= '\n')
-      goto yy1309;
-    if (yych != '\r')
-      goto yy1297;
-  yy1309:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1311:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1312;
-    }
-    goto yy1297;
-  yy1312:
-    marker = p + 1;
-    ++p;
-    yych = *p;
+/* Generated by re2c 0.15.3 */
+#include <stdlib.h>
+#include "chunk.h"
+#include "scanners.h"
+
+bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
+                   bufsize_t offset) {
+  bufsize_t res;
+  unsigned char *ptr = (unsigned char *)c->data;
+
+  if (ptr == NULL || offset > c->len) {
+    return 0;
+  } else {
+    unsigned char lim = ptr[c->len];
+
+    ptr[c->len] = '\0';
+    res = scanner(ptr + offset);
+    ptr[c->len] = lim;
+  }
+
+  return res;
+}
+
+// Try to match a scheme including colon.
+bufsize_t _scan_scheme(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    yych = *(marker = p);
+    if (yych <= 0x7F) {
+      if (yych <= ' ') {
+        if (yych == '\n')
+          goto yy2;
+        if (yych <= 0x1F)
+          goto yy4;
+        goto yy3;
+      } else {
+        if (yych <= 'Z') {
+          if (yych <= '@')
+            goto yy4;
+          goto yy3;
+        } else {
+          if (yych <= '`')
+            goto yy4;
+          if (yych <= 'z')
+            goto yy3;
+          goto yy4;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF) {
+          if (yych >= 0xC2)
+            goto yy5;
+        } else {
+          if (yych <= 0xE0)
+            goto yy7;
+          if (yych <= 0xEC)
+            goto yy8;
+          goto yy12;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy8;
+          goto yy9;
+        } else {
+          if (yych <= 0xF3)
+            goto yy10;
+          if (yych <= 0xF4)
+            goto yy11;
+        }
+      }
+    }
+  yy2 : { return 0; }
+  yy3:
+    yych = *(marker = ++p);
+    if (yych <= '.') {
+      if (yych == '+')
+        goto yy13;
+      if (yych <= ',')
+        goto yy2;
+      goto yy13;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy2;
+        goto yy13;
+      } else {
+        if (yych <= '`')
+          goto yy2;
+        if (yych <= 'z')
+          goto yy13;
+        goto yy2;
+      }
+    }
+  yy4:
+    yych = *++p;
+    goto yy2;
+  yy5:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy6;
+    if (yych <= 0xBF)
+      goto yy4;
+  yy6:
+    p = marker;
+    goto yy2;
+  yy7:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy6;
+    if (yych <= 0xBF)
+      goto yy5;
+    goto yy6;
+  yy8:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy6;
+    if (yych <= 0xBF)
+      goto yy5;
+    goto yy6;
+  yy9:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy6;
+    if (yych <= 0xBF)
+      goto yy8;
+    goto yy6;
+  yy10:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy6;
+    if (yych <= 0xBF)
+      goto yy8;
+    goto yy6;
+  yy11:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy6;
+    if (yych <= 0x8F)
+      goto yy8;
+    goto yy6;
+  yy12:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy6;
+    if (yych <= 0x9F)
+      goto yy5;
+    goto yy6;
+  yy13:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+        goto yy16;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych <= '.')
+          goto yy16;
+        goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+        goto yy16;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych <= 'z')
+          goto yy16;
+        goto yy6;
+      }
+    }
+  yy14:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy16:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy6;
+      } else {
+        if (yych <= ',')
+          goto yy6;
+        if (yych >= '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy14;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    ++p;
+    if ((yych = *p) == ':')
+      goto yy14;
+    goto yy6;
+  }
+}
+
+// Try to match URI autolink after first <, returning number of chars matched.
+bufsize_t _scan_autolink_uri(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0x7F) {
+      if (yych <= ' ') {
+        if (yych == '\n')
+          goto yy48;
+        if (yych <= 0x1F)
+          goto yy50;
+        goto yy49;
+      } else {
+        if (yych <= 'Z') {
+          if (yych <= '@')
+            goto yy50;
+          goto yy49;
+        } else {
+          if (yych <= '`')
+            goto yy50;
+          if (yych <= 'z')
+            goto yy49;
+          goto yy50;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF) {
+          if (yych >= 0xC2)
+            goto yy51;
+        } else {
+          if (yych <= 0xE0)
+            goto yy53;
+          if (yych <= 0xEC)
+            goto yy54;
+          goto yy58;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy54;
+          goto yy55;
+        } else {
+          if (yych <= 0xF3)
+            goto yy56;
+          if (yych <= 0xF4)
+            goto yy57;
+        }
+      }
+    }
+  yy48 : { return 0; }
+  yy49:
+    yych = *(marker = ++p);
+    if (yych <= '.') {
+      if (yych == '+')
+        goto yy59;
+      if (yych <= ',')
+        goto yy48;
+      goto yy59;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy48;
+        goto yy59;
+      } else {
+        if (yych <= '`')
+          goto yy48;
+        if (yych <= 'z')
+          goto yy59;
+        goto yy48;
+      }
+    }
+  yy50:
+    yych = *++p;
+    goto yy48;
+  yy51:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy50;
+  yy52:
+    p = marker;
+    goto yy48;
+  yy53:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy51;
+    goto yy52;
+  yy54:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy51;
+    goto yy52;
+  yy55:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy54;
+    goto yy52;
+  yy56:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy54;
+    goto yy52;
+  yy57:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0x8F)
+      goto yy54;
+    goto yy52;
+  yy58:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0x9F)
+      goto yy51;
+    goto yy52;
+  yy59:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+        goto yy62;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych <= '.')
+          goto yy62;
+        goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+        goto yy62;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych <= 'z')
+          goto yy62;
+        goto yy52;
+      }
+    }
+  yy60:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy60;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '<')
+          goto yy52;
+        if (yych <= '>')
+          goto yy99;
+        goto yy52;
+      } else {
+        if (yych <= 0xDF)
+          goto yy92;
+        if (yych <= 0xE0)
+          goto yy93;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy98;
+        if (yych <= 0xEF)
+          goto yy94;
+        goto yy95;
+      } else {
+        if (yych <= 0xF3)
+          goto yy96;
+        if (yych <= 0xF4)
+          goto yy97;
+        goto yy52;
+      }
+    }
+  yy62:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy52;
+      } else {
+        if (yych <= ',')
+          goto yy52;
+        if (yych >= '/')
+          goto yy52;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy60;
+        if (yych <= '@')
+          goto yy52;
+      } else {
+        if (yych <= '`')
+          goto yy52;
+        if (yych >= '{')
+          goto yy52;
+      }
+    }
+    yych = *++p;
+    if (yych == ':')
+      goto yy60;
+    goto yy52;
+  yy92:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy60;
+    goto yy52;
+  yy93:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy92;
+    goto yy52;
+  yy94:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy92;
+    goto yy52;
+  yy95:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy94;
+    goto yy52;
+  yy96:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0xBF)
+      goto yy94;
+    goto yy52;
+  yy97:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0x8F)
+      goto yy94;
+    goto yy52;
+  yy98:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy52;
+    if (yych <= 0x9F)
+      goto yy92;
+    goto yy52;
+  yy99:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match email autolink after first <, returning num of chars matched.
+bufsize_t _scan_autolink_email(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
+        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= '?') {
+      if (yych <= ')') {
+        if (yych <= ' ') {
+          if (yych != '\n')
+            goto yy105;
+        } else {
+          if (yych == '"')
+            goto yy105;
+          if (yych <= '\'')
+            goto yy104;
+          goto yy105;
+        }
+      } else {
+        if (yych <= '9') {
+          if (yych == ',')
+            goto yy105;
+          goto yy104;
+        } else {
+          if (yych == '=')
+            goto yy104;
+          if (yych <= '>')
+            goto yy105;
+          goto yy104;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= ']') {
+          if (yych <= '@')
+            goto yy105;
+          if (yych <= 'Z')
+            goto yy104;
+          goto yy105;
+        } else {
+          if (yych <= '~')
+            goto yy104;
+          if (yych <= 0x7F)
+            goto yy105;
+          if (yych >= 0xC2)
+            goto yy106;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy108;
+          if (yych == 0xED)
+            goto yy113;
+          goto yy109;
+        } else {
+          if (yych <= 0xF0)
+            goto yy110;
+          if (yych <= 0xF3)
+            goto yy111;
+          if (yych <= 0xF4)
+            goto yy112;
+        }
+      }
+    }
+  yy103 : { return 0; }
+  yy104:
+    yych = *(marker = ++p);
+    if (yych <= ',') {
+      if (yych <= '"') {
+        if (yych == '!')
+          goto yy116;
+        goto yy103;
+      } else {
+        if (yych <= '\'')
+          goto yy116;
+        if (yych <= ')')
+          goto yy103;
+        if (yych <= '+')
+          goto yy116;
+        goto yy103;
+      }
+    } else {
+      if (yych <= '>') {
+        if (yych <= '9')
+          goto yy116;
+        if (yych == '=')
+          goto yy116;
+        goto yy103;
+      } else {
+        if (yych <= 'Z')
+          goto yy116;
+        if (yych <= ']')
+          goto yy103;
+        if (yych <= '~')
+          goto yy116;
+        goto yy103;
+      }
+    }
+  yy105:
+    yych = *++p;
+    goto yy103;
+  yy106:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy107;
+    if (yych <= 0xBF)
+      goto yy105;
+  yy107:
+    p = marker;
+    goto yy103;
+  yy108:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy107;
+    if (yych <= 0xBF)
+      goto yy106;
+    goto yy107;
+  yy109:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy107;
+    if (yych <= 0xBF)
+      goto yy106;
+    goto yy107;
+  yy110:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy107;
+    if (yych <= 0xBF)
+      goto yy109;
+    goto yy107;
+  yy111:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy107;
+    if (yych <= 0xBF)
+      goto yy109;
+    goto yy107;
+  yy112:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy107;
+    if (yych <= 0x8F)
+      goto yy109;
+    goto yy107;
+  yy113:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy107;
+    if (yych <= 0x9F)
+      goto yy106;
+    goto yy107;
+  yy114:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy107;
+      if (yych <= '9')
+        goto yy117;
+      goto yy107;
+    } else {
+      if (yych <= 'Z')
+        goto yy117;
+      if (yych <= '`')
+        goto yy107;
+      if (yych <= 'z')
+        goto yy117;
+      goto yy107;
+    }
+  yy115:
+    ++p;
+    yych = *p;
+  yy116:
+    if (yybm[0 + yych] & 128) {
+      goto yy115;
+    }
+    if (yych <= '>')
+      goto yy107;
+    if (yych <= '@')
+      goto yy114;
+    goto yy107;
+  yy117:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy119;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych >= ':')
+          goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy248;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy247;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy247;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy247;
+        goto yy107;
+      }
+    }
+  yy119:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy248;
+      if (yych <= '/')
+        goto yy107;
+      goto yy247;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+        goto yy247;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy247;
+        goto yy107;
+      }
+    }
+  yy120:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy107;
+      if (yych <= '9')
+        goto yy123;
+      goto yy107;
+    } else {
+      if (yych <= 'Z')
+        goto yy123;
+      if (yych <= '`')
+        goto yy107;
+      if (yych <= 'z')
+        goto yy123;
+      goto yy107;
+    }
+  yy121:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy123:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy125;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych >= ':')
+          goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy127;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy126;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy126;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy126;
+        goto yy107;
+      }
+    }
+  yy125:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy127;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy126:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy129;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy128;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy128;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy128;
+        goto yy107;
+      }
+    }
+  yy127:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy129;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy128:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy131;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy130;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy130;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy130;
+        goto yy107;
+      }
+    }
+  yy129:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy131;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy130:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy133;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy132;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy132;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy132;
+        goto yy107;
+      }
+    }
+  yy131:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy133;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy132:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy135;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy134;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy134;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy134;
+        goto yy107;
+      }
+    }
+  yy133:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy135;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy134:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy137;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy136;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy136;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy136;
+        goto yy107;
+      }
+    }
+  yy135:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy137;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy136:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy139;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy138;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy138;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy138;
+        goto yy107;
+      }
+    }
+  yy137:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy139;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy138:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy141;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy140;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy140;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy140;
+        goto yy107;
+      }
+    }
+  yy139:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy141;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy140:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy143;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy142;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy142;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy142;
+        goto yy107;
+      }
+    }
+  yy141:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy143;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy142:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy145;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy144;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy144;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy144;
+        goto yy107;
+      }
+    }
+  yy143:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy145;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy144:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy147;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy146;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy146;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy146;
+        goto yy107;
+      }
+    }
+  yy145:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy147;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy146:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy149;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy148;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy148;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy148;
+        goto yy107;
+      }
+    }
+  yy147:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy149;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy148:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy151;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy150;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy150;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy150;
+        goto yy107;
+      }
+    }
+  yy149:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy151;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy150:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy153;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy152;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy152;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy152;
+        goto yy107;
+      }
+    }
+  yy151:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy153;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy152:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy155;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy154;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy154;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy154;
+        goto yy107;
+      }
+    }
+  yy153:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy155;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy154:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy157;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy156;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy156;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy156;
+        goto yy107;
+      }
+    }
+  yy155:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy157;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy156:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy159;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy158;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy158;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy158;
+        goto yy107;
+      }
+    }
+  yy157:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy159;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy158:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy161;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy160;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy160;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy160;
+        goto yy107;
+      }
+    }
+  yy159:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy161;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy160:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy163;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy162;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy162;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy162;
+        goto yy107;
+      }
+    }
+  yy161:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy163;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy162:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy165;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy164;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy164;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy164;
+        goto yy107;
+      }
+    }
+  yy163:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy165;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy164:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy167;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy166;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy166;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy166;
+        goto yy107;
+      }
+    }
+  yy165:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy167;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy166:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy169;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy168;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy168;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy168;
+        goto yy107;
+      }
+    }
+  yy167:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy169;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy168:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy171;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy170;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy170;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy170;
+        goto yy107;
+      }
+    }
+  yy169:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy171;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy170:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy173;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy172;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy172;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy172;
+        goto yy107;
+      }
+    }
+  yy171:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy173;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy172:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy175;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy174;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy174;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy174;
+        goto yy107;
+      }
+    }
+  yy173:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy175;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy174:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy177;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy176;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy176;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy176;
+        goto yy107;
+      }
+    }
+  yy175:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy177;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy176:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy179;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy178;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy178;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy178;
+        goto yy107;
+      }
+    }
+  yy177:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy179;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy178:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy181;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy180;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy180;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy180;
+        goto yy107;
+      }
+    }
+  yy179:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy181;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy180:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy183;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy182;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy182;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy182;
+        goto yy107;
+      }
+    }
+  yy181:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy183;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy182:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy185;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy184;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy184;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy184;
+        goto yy107;
+      }
+    }
+  yy183:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy185;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy184:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy187;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy186;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy186;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy186;
+        goto yy107;
+      }
+    }
+  yy185:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy187;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy186:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy189;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy188;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy188;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy188;
+        goto yy107;
+      }
+    }
+  yy187:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy189;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy188:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy191;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy190;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy190;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy190;
+        goto yy107;
+      }
+    }
+  yy189:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy191;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy190:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy193;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy192;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy192;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy192;
+        goto yy107;
+      }
+    }
+  yy191:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy193;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy192:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy195;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy194;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy194;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy194;
+        goto yy107;
+      }
+    }
+  yy193:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy195;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy194:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy197;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy196;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy196;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy196;
+        goto yy107;
+      }
+    }
+  yy195:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy197;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy196:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy199;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy198;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy198;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy198;
+        goto yy107;
+      }
+    }
+  yy197:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy199;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy198:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy201;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy200;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy200;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy200;
+        goto yy107;
+      }
+    }
+  yy199:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy201;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy200:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy203;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy202;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy202;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy202;
+        goto yy107;
+      }
+    }
+  yy201:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy203;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy202:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy205;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy204;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy204;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy204;
+        goto yy107;
+      }
+    }
+  yy203:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy205;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy204:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy207;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy206;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy206;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy206;
+        goto yy107;
+      }
+    }
+  yy205:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy207;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy206:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy209;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy208;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy208;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy208;
+        goto yy107;
+      }
+    }
+  yy207:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy209;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy208:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy211;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy210;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy210;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy210;
+        goto yy107;
+      }
+    }
+  yy209:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy211;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy210:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy213;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy212;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy212;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy212;
+        goto yy107;
+      }
+    }
+  yy211:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy213;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy212:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy215;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy214;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy214;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy214;
+        goto yy107;
+      }
+    }
+  yy213:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy215;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy214:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy217;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy216;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy216;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy216;
+        goto yy107;
+      }
+    }
+  yy215:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy217;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy216:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy219;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy218;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy218;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy218;
+        goto yy107;
+      }
+    }
+  yy217:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy219;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy218:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy221;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy220;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy220;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy220;
+        goto yy107;
+      }
+    }
+  yy219:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy221;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy220:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy223;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy222;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy222;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy222;
+        goto yy107;
+      }
+    }
+  yy221:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy223;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy222:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy225;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy224;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy224;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy224;
+        goto yy107;
+      }
+    }
+  yy223:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy225;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy224:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy227;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy226;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy226;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy226;
+        goto yy107;
+      }
+    }
+  yy225:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy227;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy226:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy229;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy228;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy228;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy228;
+        goto yy107;
+      }
+    }
+  yy227:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy229;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy228:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy231;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy230;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy230;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy230;
+        goto yy107;
+      }
+    }
+  yy229:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy231;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy230:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy233;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy232;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy232;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy232;
+        goto yy107;
+      }
+    }
+  yy231:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy233;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy232:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy235;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy234;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy234;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy234;
+        goto yy107;
+      }
+    }
+  yy233:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy235;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy234:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy237;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy236;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy236;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy236;
+        goto yy107;
+      }
+    }
+  yy235:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy237;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy236:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy239;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy238;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy238;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy238;
+        goto yy107;
+      }
+    }
+  yy237:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy239;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy238:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy241;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy240;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy240;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy240;
+        goto yy107;
+      }
+    }
+  yy239:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy241;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy240:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy243;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy242;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy242;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy242;
+        goto yy107;
+      }
+    }
+  yy241:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy243;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy242:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy245;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy244;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy244;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy244;
+        goto yy107;
+      }
+    }
+  yy243:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy245;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy244:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= '-')
+          goto yy107;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy246;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy246;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy246;
+        goto yy107;
+      }
+    }
+  yy245:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy107;
+      if (yych >= ':')
+        goto yy107;
+    } else {
+      if (yych <= 'Z')
+        goto yy246;
+      if (yych <= '`')
+        goto yy107;
+      if (yych >= '{')
+        goto yy107;
+    }
+  yy246:
+    ++p;
+    yych = *p;
+    if (yych == '.')
+      goto yy120;
+    if (yych == '>')
+      goto yy121;
+    goto yy107;
+  yy247:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy250;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy249;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy249;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy249;
+        goto yy107;
+      }
+    }
+  yy248:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy250;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy249:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy252;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy251;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy251;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy251;
+        goto yy107;
+      }
+    }
+  yy250:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy252;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy251:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy254;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy253;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy253;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy253;
+        goto yy107;
+      }
+    }
+  yy252:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy254;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy253:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy256;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy255;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy255;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy255;
+        goto yy107;
+      }
+    }
+  yy254:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy256;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy255:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy258;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy257;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy257;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy257;
+        goto yy107;
+      }
+    }
+  yy256:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy258;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy257:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy260;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy259;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy259;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy259;
+        goto yy107;
+      }
+    }
+  yy258:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy260;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy259:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy262;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy261;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy261;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy261;
+        goto yy107;
+      }
+    }
+  yy260:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy262;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy261:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy264;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy263;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy263;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy263;
+        goto yy107;
+      }
+    }
+  yy262:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy264;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy263:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy266;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy265;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy265;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy265;
+        goto yy107;
+      }
+    }
+  yy264:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy266;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy265:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy268;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy267;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy267;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy267;
+        goto yy107;
+      }
+    }
+  yy266:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy268;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy267:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy270;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy269;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy269;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy269;
+        goto yy107;
+      }
+    }
+  yy268:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy270;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy269:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy272;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy271;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy271;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy271;
+        goto yy107;
+      }
+    }
+  yy270:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy272;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy271:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy274;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy273;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy273;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy273;
+        goto yy107;
+      }
+    }
+  yy272:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy274;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy273:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy276;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy275;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy275;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy275;
+        goto yy107;
+      }
+    }
+  yy274:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy276;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy275:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy278;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy277;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy277;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy277;
+        goto yy107;
+      }
+    }
+  yy276:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy278;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy277:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy280;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy279;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy279;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy279;
+        goto yy107;
+      }
+    }
+  yy278:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy280;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy279:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy282;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy281;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy281;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy281;
+        goto yy107;
+      }
+    }
+  yy280:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy282;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy281:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy284;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy283;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy283;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy283;
+        goto yy107;
+      }
+    }
+  yy282:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy284;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy283:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy286;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy285;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy285;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy285;
+        goto yy107;
+      }
+    }
+  yy284:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy286;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy285:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy288;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy287;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy287;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy287;
+        goto yy107;
+      }
+    }
+  yy286:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy288;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy287:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy290;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy289;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy289;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy289;
+        goto yy107;
+      }
+    }
+  yy288:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy290;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy289:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy292;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy291;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy291;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy291;
+        goto yy107;
+      }
+    }
+  yy290:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy292;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy291:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy294;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy293;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy293;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy293;
+        goto yy107;
+      }
+    }
+  yy292:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy294;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy293:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy296;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy295;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy295;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy295;
+        goto yy107;
+      }
+    }
+  yy294:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy296;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy295:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy298;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy297;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy297;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy297;
+        goto yy107;
+      }
+    }
+  yy296:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy298;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy297:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy300;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy299;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy299;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy299;
+        goto yy107;
+      }
+    }
+  yy298:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy300;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy299:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy302;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy301;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy301;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy301;
+        goto yy107;
+      }
+    }
+  yy300:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy302;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy301:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy304;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy303;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy303;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy303;
+        goto yy107;
+      }
+    }
+  yy302:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy304;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy303:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy306;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy305;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy305;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy305;
+        goto yy107;
+      }
+    }
+  yy304:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy306;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy305:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy308;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy307;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy307;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy307;
+        goto yy107;
+      }
+    }
+  yy306:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy308;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy307:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy310;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy309;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy309;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy309;
+        goto yy107;
+      }
+    }
+  yy308:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy310;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy309:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy312;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy311;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy311;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy311;
+        goto yy107;
+      }
+    }
+  yy310:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy312;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy311:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy314;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy313;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy313;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy313;
+        goto yy107;
+      }
+    }
+  yy312:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy314;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy313:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy316;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy315;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy315;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy315;
+        goto yy107;
+      }
+    }
+  yy314:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy316;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy315:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy318;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy317;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy317;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy317;
+        goto yy107;
+      }
+    }
+  yy316:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy318;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy317:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy320;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy319;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy319;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy319;
+        goto yy107;
+      }
+    }
+  yy318:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy320;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy319:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy322;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy321;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy321;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy321;
+        goto yy107;
+      }
+    }
+  yy320:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy322;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy321:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy324;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy323;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy323;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy323;
+        goto yy107;
+      }
+    }
+  yy322:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy324;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy323:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy326;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy325;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy325;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy325;
+        goto yy107;
+      }
+    }
+  yy324:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy326;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy325:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy328;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy327;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy327;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy327;
+        goto yy107;
+      }
+    }
+  yy326:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy328;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy327:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy330;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy329;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy329;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy329;
+        goto yy107;
+      }
+    }
+  yy328:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy330;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy329:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy332;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy331;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy331;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy331;
+        goto yy107;
+      }
+    }
+  yy330:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy332;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy331:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy334;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy333;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy333;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy333;
+        goto yy107;
+      }
+    }
+  yy332:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy334;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy333:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy336;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy335;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy335;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy335;
+        goto yy107;
+      }
+    }
+  yy334:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy336;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy335:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy338;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy337;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy337;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy337;
+        goto yy107;
+      }
+    }
+  yy336:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy338;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy337:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy340;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy339;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy339;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy339;
+        goto yy107;
+      }
+    }
+  yy338:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy340;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy339:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy342;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy341;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy341;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy341;
+        goto yy107;
+      }
+    }
+  yy340:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy342;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy341:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy344;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy343;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy343;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy343;
+        goto yy107;
+      }
+    }
+  yy342:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy344;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy343:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy346;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy345;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy345;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy345;
+        goto yy107;
+      }
+    }
+  yy344:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy346;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy345:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy348;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy347;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy347;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy347;
+        goto yy107;
+      }
+    }
+  yy346:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy348;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy347:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy350;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy349;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy349;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy349;
+        goto yy107;
+      }
+    }
+  yy348:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy350;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy349:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy352;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy351;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy351;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy351;
+        goto yy107;
+      }
+    }
+  yy350:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy352;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy351:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy354;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy353;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy353;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy353;
+        goto yy107;
+      }
+    }
+  yy352:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy354;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy353:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy356;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy355;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy355;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy355;
+        goto yy107;
+      }
+    }
+  yy354:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy356;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy355:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy358;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy357;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy357;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy357;
+        goto yy107;
+      }
+    }
+  yy356:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy358;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy357:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy360;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy359;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy359;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy359;
+        goto yy107;
+      }
+    }
+  yy358:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy360;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy359:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy362;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy361;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy361;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy361;
+        goto yy107;
+      }
+    }
+  yy360:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy362;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy361:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy364;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy363;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy363;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy363;
+        goto yy107;
+      }
+    }
+  yy362:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy364;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy363:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy107;
+        if (yych <= '-')
+          goto yy366;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy365;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy365;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy365;
+        goto yy107;
+      }
+    }
+  yy364:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy366;
+      if (yych <= '/')
+        goto yy107;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy107;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych >= '{')
+          goto yy107;
+      }
+    }
+  yy365:
+    yych = *++p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= '-')
+          goto yy107;
+        goto yy120;
+      } else {
+        if (yych <= '/')
+          goto yy107;
+        if (yych <= '9')
+          goto yy246;
+        goto yy107;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy121;
+        if (yych <= '@')
+          goto yy107;
+        goto yy246;
+      } else {
+        if (yych <= '`')
+          goto yy107;
+        if (yych <= 'z')
+          goto yy246;
+        goto yy107;
+      }
+    }
+  yy366:
+    ++p;
+    if ((yych = *p) <= '@') {
+      if (yych <= '/')
+        goto yy107;
+      if (yych <= '9')
+        goto yy246;
+      goto yy107;
+    } else {
+      if (yych <= 'Z')
+        goto yy246;
+      if (yych <= '`')
+        goto yy107;
+      if (yych <= 'z')
+        goto yy246;
+      goto yy107;
+    }
+  }
+}
+
+// Try to match an HTML tag after first <, returning num of chars matched.
+bufsize_t _scan_html_tag(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+        0,   230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199,
+        230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+        230, 230, 230, 230, 199, 230, 70,  230, 230, 230, 230, 134, 230, 230,
+        230, 230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254,
+        254, 254, 246, 230, 198, 198, 196, 230, 230, 254, 254, 254, 254, 254,
+        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+        254, 254, 254, 254, 254, 254, 254, 230, 230, 226, 230, 246, 198, 254,
+        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 230, 230, 230,
+        230, 230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+        /* table 9 .. 11: 256 */
+        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 32,  160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 128, 160, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= '`') {
+      if (yych <= '.') {
+        if (yych <= '\n') {
+          if (yych <= '\t')
+            goto yy374;
+        } else {
+          if (yych == '!')
+            goto yy372;
+          goto yy374;
+        }
+      } else {
+        if (yych <= '?') {
+          if (yych <= '/')
+            goto yy371;
+          if (yych <= '>')
+            goto yy374;
+          goto yy373;
+        } else {
+          if (yych <= '@')
+            goto yy374;
+          if (yych <= 'Z')
+            goto yy370;
+          goto yy374;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 'z')
+            goto yy370;
+          if (yych <= 0x7F)
+            goto yy374;
+        } else {
+          if (yych <= 0xDF)
+            goto yy375;
+          if (yych <= 0xE0)
+            goto yy377;
+          goto yy378;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy382;
+          if (yych <= 0xEF)
+            goto yy378;
+          goto yy379;
+        } else {
+          if (yych <= 0xF3)
+            goto yy380;
+          if (yych <= 0xF4)
+            goto yy381;
+        }
+      }
+    }
+  yy369 : { return 0; }
+  yy370:
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy369;
+        if (yych <= '\r')
+          goto yy474;
+        if (yych <= 0x1F)
+          goto yy369;
+        goto yy474;
+      } else {
+        if (yych == '-')
+          goto yy472;
+        if (yych <= '.')
+          goto yy369;
+        goto yy476;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych <= '9')
+          goto yy472;
+        if (yych == '>')
+          goto yy393;
+        goto yy369;
+      } else {
+        if (yych <= 'Z')
+          goto yy472;
+        if (yych <= '`')
+          goto yy369;
+        if (yych <= 'z')
+          goto yy472;
+        goto yy369;
+      }
+    }
+  yy371:
+    yych = *(marker = ++p);
+    if (yych <= '@')
+      goto yy369;
+    if (yych <= 'Z')
+      goto yy468;
+    if (yych <= '`')
+      goto yy369;
+    if (yych <= 'z')
+      goto yy468;
+    goto yy369;
+  yy372:
+    yych = *(marker = ++p);
+    if (yybm[256 + yych] & 64) {
+      goto yy403;
+    }
+    if (yych == '-')
+      goto yy405;
+    if (yych <= '@')
+      goto yy369;
+    if (yych <= '[')
+      goto yy402;
+    goto yy369;
+  yy373:
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy369;
+    if (yych <= 0x7F)
+      goto yy384;
+    if (yych <= 0xC1)
+      goto yy369;
+    if (yych <= 0xF4)
+      goto yy384;
+    goto yy369;
+  yy374:
+    yych = *++p;
+    goto yy369;
+  yy375:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy374;
+  yy376:
+    p = marker;
+    goto yy369;
+  yy377:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy375;
+    goto yy376;
+  yy378:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy375;
+    goto yy376;
+  yy379:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy378;
+    goto yy376;
+  yy380:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy378;
+    goto yy376;
+  yy381:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy378;
+    goto yy376;
+  yy382:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy375;
+    goto yy376;
+  yy383:
+    ++p;
+    yych = *p;
+  yy384:
+    if (yybm[256 + yych] & 32) {
+      goto yy383;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '?')
+          goto yy392;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy385;
+        if (yych <= 0xE0)
+          goto yy386;
+        goto yy387;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy391;
+        if (yych <= 0xEF)
+          goto yy387;
+        goto yy388;
+      } else {
+        if (yych <= 0xF3)
+          goto yy389;
+        if (yych <= 0xF4)
+          goto yy390;
+        goto yy376;
+      }
+    }
+  yy385:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy383;
+    goto yy376;
+  yy386:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy385;
+    goto yy376;
+  yy387:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy385;
+    goto yy376;
+  yy388:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy387;
+    goto yy376;
+  yy389:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy387;
+    goto yy376;
+  yy390:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy387;
+    goto yy376;
+  yy391:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy385;
+    goto yy376;
+  yy392:
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '=')
+          goto yy383;
+      } else {
+        if (yych <= 0x7F)
+          goto yy383;
+        if (yych <= 0xC1)
+          goto yy376;
+        if (yych <= 0xDF)
+          goto yy395;
+        goto yy396;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy401;
+        goto yy397;
+      } else {
+        if (yych <= 0xF0)
+          goto yy398;
+        if (yych <= 0xF3)
+          goto yy399;
+        if (yych <= 0xF4)
+          goto yy400;
+        goto yy376;
+      }
+    }
+  yy393:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy395:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy383;
+    goto yy376;
+  yy396:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy395;
+    goto yy376;
+  yy397:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy395;
+    goto yy376;
+  yy398:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy397;
+    goto yy376;
+  yy399:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy397;
+    goto yy376;
+  yy400:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy397;
+    goto yy376;
+  yy401:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy395;
+    goto yy376;
+  yy402:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy438;
+    if (yych == 'c')
+      goto yy438;
+    goto yy376;
+  yy403:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy427;
+    }
+    if (yych <= '@')
+      goto yy376;
+    if (yych <= 'Z')
+      goto yy403;
+    goto yy376;
+  yy405:
+    yych = *++p;
+    if (yych != '-')
+      goto yy376;
+    yych = *++p;
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych != '-')
+          goto yy409;
+      } else {
+        if (yych <= '>')
+          goto yy376;
+        if (yych <= 0xC1)
+          goto yy409;
+        if (yych <= 0xDF)
+          goto yy410;
+        goto yy411;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy416;
+        goto yy412;
+      } else {
+        if (yych <= 0xF0)
+          goto yy413;
+        if (yych <= 0xF3)
+          goto yy414;
+        if (yych <= 0xF4)
+          goto yy415;
+        goto yy409;
+      }
+    }
+    yych = *++p;
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych == '-')
+          goto yy426;
+        goto yy409;
+      } else {
+        if (yych <= '>')
+          goto yy376;
+        if (yych <= 0xC1)
+          goto yy409;
+        if (yych <= 0xDF)
+          goto yy410;
+        goto yy411;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy416;
+        goto yy412;
+      } else {
+        if (yych <= 0xF0)
+          goto yy413;
+        if (yych <= 0xF3)
+          goto yy414;
+        if (yych <= 0xF4)
+          goto yy415;
+        goto yy409;
+      }
+    }
+  yy408:
+    ++p;
+    yych = *p;
+  yy409:
+    if (yybm[256 + yych] & 128) {
+      goto yy408;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '-')
+          goto yy417;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy418;
+        if (yych <= 0xE0)
+          goto yy419;
+        goto yy420;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy424;
+        if (yych <= 0xEF)
+          goto yy420;
+        goto yy421;
+      } else {
+        if (yych <= 0xF3)
+          goto yy422;
+        if (yych <= 0xF4)
+          goto yy423;
+        goto yy376;
+      }
+    }
+  yy410:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy408;
+    goto yy376;
+  yy411:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy410;
+    goto yy376;
+  yy412:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy410;
+    goto yy376;
+  yy413:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy412;
+    goto yy376;
+  yy414:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy412;
+    goto yy376;
+  yy415:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy412;
+    goto yy376;
+  yy416:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy410;
+    goto yy376;
+  yy417:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 128) {
+      goto yy408;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '-')
+          goto yy425;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy418;
+        if (yych <= 0xE0)
+          goto yy419;
+        goto yy420;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy424;
+        if (yych <= 0xEF)
+          goto yy420;
+        goto yy421;
+      } else {
+        if (yych <= 0xF3)
+          goto yy422;
+        if (yych <= 0xF4)
+          goto yy423;
+        goto yy376;
+      }
+    }
+  yy418:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy408;
+    goto yy376;
+  yy419:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy418;
+    goto yy376;
+  yy420:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy418;
+    goto yy376;
+  yy421:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy420;
+    goto yy376;
+  yy422:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy420;
+    goto yy376;
+  yy423:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy420;
+    goto yy376;
+  yy424:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy418;
+    goto yy376;
+  yy425:
+    yych = *++p;
+    if (yych == '>')
+      goto yy393;
+    goto yy376;
+  yy426:
+    yych = *++p;
+    if (yych == '>')
+      goto yy393;
+    goto yy376;
+  yy427:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy427;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych >= '>')
+          goto yy393;
+      } else {
+        if (yych <= 0x7F)
+          goto yy429;
+        if (yych <= 0xC1)
+          goto yy376;
+        if (yych <= 0xDF)
+          goto yy431;
+        goto yy432;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy437;
+        goto yy433;
+      } else {
+        if (yych <= 0xF0)
+          goto yy434;
+        if (yych <= 0xF3)
+          goto yy435;
+        if (yych <= 0xF4)
+          goto yy436;
+        goto yy376;
+      }
+    }
+  yy429:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy429;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '>')
+          goto yy393;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy431;
+        if (yych <= 0xE0)
+          goto yy432;
+        goto yy433;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy437;
+        if (yych <= 0xEF)
+          goto yy433;
+        goto yy434;
+      } else {
+        if (yych <= 0xF3)
+          goto yy435;
+        if (yych <= 0xF4)
+          goto yy436;
+        goto yy376;
+      }
+    }
+  yy431:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy429;
+    goto yy376;
+  yy432:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy431;
+    goto yy376;
+  yy433:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy431;
+    goto yy376;
+  yy434:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy433;
+    goto yy376;
+  yy435:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy433;
+    goto yy376;
+  yy436:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy433;
+    goto yy376;
+  yy437:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy431;
+    goto yy376;
+  yy438:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy439;
+    if (yych != 'd')
+      goto yy376;
+  yy439:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy440;
+    if (yych != 'a')
+      goto yy376;
+  yy440:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy441;
+    if (yych != 't')
+      goto yy376;
+  yy441:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy442;
+    if (yych != 'a')
+      goto yy376;
+  yy442:
+    yych = *++p;
+    if (yych != '[')
+      goto yy376;
+  yy443:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy443;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= ']')
+          goto yy452;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy445;
+        if (yych <= 0xE0)
+          goto yy446;
+        goto yy447;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy451;
+        if (yych <= 0xEF)
+          goto yy447;
+        goto yy448;
+      } else {
+        if (yych <= 0xF3)
+          goto yy449;
+        if (yych <= 0xF4)
+          goto yy450;
+        goto yy376;
+      }
+    }
+  yy445:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy443;
+    goto yy376;
+  yy446:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy445;
+    goto yy376;
+  yy447:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy445;
+    goto yy376;
+  yy448:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy447;
+    goto yy376;
+  yy449:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy447;
+    goto yy376;
+  yy450:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy447;
+    goto yy376;
+  yy451:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy445;
+    goto yy376;
+  yy452:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy443;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych >= '^')
+          goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy454;
+        if (yych <= 0xE0)
+          goto yy455;
+        goto yy456;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy460;
+        if (yych <= 0xEF)
+          goto yy456;
+        goto yy457;
+      } else {
+        if (yych <= 0xF3)
+          goto yy458;
+        if (yych <= 0xF4)
+          goto yy459;
+        goto yy376;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '=')
+          goto yy443;
+        goto yy393;
+      } else {
+        if (yych <= 0x7F)
+          goto yy443;
+        if (yych <= 0xC1)
+          goto yy376;
+        if (yych <= 0xDF)
+          goto yy461;
+        goto yy462;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy467;
+        goto yy463;
+      } else {
+        if (yych <= 0xF0)
+          goto yy464;
+        if (yych <= 0xF3)
+          goto yy465;
+        if (yych <= 0xF4)
+          goto yy466;
+        goto yy376;
+      }
+    }
+  yy454:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy443;
+    goto yy376;
+  yy455:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy454;
+    goto yy376;
+  yy456:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy454;
+    goto yy376;
+  yy457:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy456;
+    goto yy376;
+  yy458:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy456;
+    goto yy376;
+  yy459:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy456;
+    goto yy376;
+  yy460:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy454;
+    goto yy376;
+  yy461:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy443;
+    goto yy376;
+  yy462:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy461;
+    goto yy376;
+  yy463:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy461;
+    goto yy376;
+  yy464:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy463;
+    goto yy376;
+  yy465:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy463;
+    goto yy376;
+  yy466:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy463;
+    goto yy376;
+  yy467:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy461;
+    goto yy376;
+  yy468:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 8) {
+      goto yy468;
+    }
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy376;
+      if (yych >= 0x0E)
+        goto yy376;
+    } else {
+      if (yych <= ' ')
+        goto yy470;
+      if (yych == '>')
+        goto yy393;
+      goto yy376;
+    }
+  yy470:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy376;
+      if (yych <= '\r')
+        goto yy470;
+      goto yy376;
+    } else {
+      if (yych <= ' ')
+        goto yy470;
+      if (yych == '>')
+        goto yy393;
+      goto yy376;
+    }
+  yy472:
+    ++p;
+    yych = *p;
+    if (yych <= '/') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy376;
+        if (yych <= '\r')
+          goto yy474;
+        if (yych <= 0x1F)
+          goto yy376;
+      } else {
+        if (yych == '-')
+          goto yy472;
+        if (yych <= '.')
+          goto yy376;
+        goto yy476;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych <= '9')
+          goto yy472;
+        if (yych == '>')
+          goto yy393;
+        goto yy376;
+      } else {
+        if (yych <= 'Z')
+          goto yy472;
+        if (yych <= '`')
+          goto yy376;
+        if (yych <= 'z')
+          goto yy472;
+        goto yy376;
+      }
+    }
+  yy474:
+    ++p;
+    yych = *p;
+    if (yych <= ':') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy376;
+        if (yych <= '\r')
+          goto yy474;
+        if (yych <= 0x1F)
+          goto yy376;
+        goto yy474;
+      } else {
+        if (yych == '/')
+          goto yy476;
+        if (yych <= '9')
+          goto yy376;
+        goto yy477;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych == '>')
+          goto yy393;
+        if (yych <= '@')
+          goto yy376;
+        goto yy477;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy376;
+          goto yy477;
+        } else {
+          if (yych <= '`')
+            goto yy376;
+          if (yych <= 'z')
+            goto yy477;
+          goto yy376;
+        }
+      }
+    }
+  yy476:
+    yych = *++p;
+    if (yych == '>')
+      goto yy393;
+    goto yy376;
+  yy477:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy477;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy376;
+      } else {
+        if (yych != ' ')
+          goto yy376;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy476;
+        goto yy376;
+      } else {
+        if (yych <= '=')
+          goto yy481;
+        if (yych <= '>')
+          goto yy393;
+        goto yy376;
+      }
+    }
+  yy479:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy376;
+        if (yych <= '\r')
+          goto yy479;
+        if (yych <= 0x1F)
+          goto yy376;
+        goto yy479;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy376;
+          goto yy476;
+        } else {
+          if (yych == ':')
+            goto yy477;
+          goto yy376;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy481;
+        if (yych <= '>')
+          goto yy393;
+        if (yych <= '@')
+          goto yy376;
+        goto yy477;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy376;
+          goto yy477;
+        } else {
+          if (yych <= '`')
+            goto yy376;
+          if (yych <= 'z')
+            goto yy477;
+          goto yy376;
+        }
+      }
+    }
+  yy481:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy483;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych >= '!')
+          goto yy494;
+      } else {
+        if (yych <= '\'')
+          goto yy492;
+        if (yych <= 0xC1)
+          goto yy376;
+        if (yych <= 0xDF)
+          goto yy485;
+        goto yy486;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy491;
+        goto yy487;
+      } else {
+        if (yych <= 0xF0)
+          goto yy488;
+        if (yych <= 0xF3)
+          goto yy489;
+        if (yych <= 0xF4)
+          goto yy490;
+        goto yy376;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy483;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '\'') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= ' ')
+          goto yy517;
+        if (yych <= '"')
+          goto yy494;
+        goto yy492;
+      } else {
+        if (yych == '>')
+          goto yy393;
+        if (yych <= 0xC1)
+          goto yy376;
+        goto yy485;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy486;
+        if (yych == 0xED)
+          goto yy491;
+        goto yy487;
+      } else {
+        if (yych <= 0xF0)
+          goto yy488;
+        if (yych <= 0xF3)
+          goto yy489;
+        if (yych <= 0xF4)
+          goto yy490;
+        goto yy376;
+      }
+    }
+  yy483:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy483;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= ' ')
+          goto yy511;
+        goto yy376;
+      } else {
+        if (yych <= '>')
+          goto yy393;
+        if (yych <= 0xC1)
+          goto yy376;
+        if (yych >= 0xE0)
+          goto yy486;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy491;
+        goto yy487;
+      } else {
+        if (yych <= 0xF0)
+          goto yy488;
+        if (yych <= 0xF3)
+          goto yy489;
+        if (yych <= 0xF4)
+          goto yy490;
+        goto yy376;
+      }
+    }
+  yy485:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy483;
+    goto yy376;
+  yy486:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy485;
+    goto yy376;
+  yy487:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy485;
+    goto yy376;
+  yy488:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy487;
+    goto yy376;
+  yy489:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy487;
+    goto yy376;
+  yy490:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy487;
+    goto yy376;
+  yy491:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy485;
+    goto yy376;
+  yy492:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy492;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '\'')
+          goto yy503;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy504;
+        if (yych <= 0xE0)
+          goto yy505;
+        goto yy506;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy510;
+        if (yych <= 0xEF)
+          goto yy506;
+        goto yy507;
+      } else {
+        if (yych <= 0xF3)
+          goto yy508;
+        if (yych <= 0xF4)
+          goto yy509;
+        goto yy376;
+      }
+    }
+  yy494:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy494;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy376;
+        if (yych <= '"')
+          goto yy503;
+        goto yy376;
+      } else {
+        if (yych <= 0xDF)
+          goto yy496;
+        if (yych <= 0xE0)
+          goto yy497;
+        goto yy498;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy502;
+        if (yych <= 0xEF)
+          goto yy498;
+        goto yy499;
+      } else {
+        if (yych <= 0xF3)
+          goto yy500;
+        if (yych <= 0xF4)
+          goto yy501;
+        goto yy376;
+      }
+    }
+  yy496:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy494;
+    goto yy376;
+  yy497:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy496;
+    goto yy376;
+  yy498:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy496;
+    goto yy376;
+  yy499:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy498;
+    goto yy376;
+  yy500:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy498;
+    goto yy376;
+  yy501:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy498;
+    goto yy376;
+  yy502:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy496;
+    goto yy376;
+  yy503:
+    ++p;
+    yych = *p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy376;
+      if (yych <= '\r')
+        goto yy474;
+      if (yych <= 0x1F)
+        goto yy376;
+      goto yy474;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy376;
+        goto yy476;
+      } else {
+        if (yych == '>')
+          goto yy393;
+        goto yy376;
+      }
+    }
+  yy504:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy492;
+    goto yy376;
+  yy505:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy504;
+    goto yy376;
+  yy506:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy504;
+    goto yy376;
+  yy507:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy506;
+    goto yy376;
+  yy508:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0xBF)
+      goto yy506;
+    goto yy376;
+  yy509:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x8F)
+      goto yy506;
+    goto yy376;
+  yy510:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy376;
+    if (yych <= 0x9F)
+      goto yy504;
+    goto yy376;
+  yy511:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy376;
+          if (yych <= 0x08)
+            goto yy483;
+          goto yy511;
+        } else {
+          if (yych == ' ')
+            goto yy511;
+          if (yych <= '!')
+            goto yy483;
+          goto yy376;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy376;
+          if (yych <= '9')
+            goto yy483;
+        } else {
+          if (yych <= ';')
+            goto yy483;
+          if (yych <= '=')
+            goto yy376;
+          if (yych <= '>')
+            goto yy393;
+          goto yy483;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy513;
+          if (yych <= '^')
+            goto yy483;
+          if (yych >= '`')
+            goto yy376;
+        } else {
+          if (yych <= 'z')
+            goto yy513;
+          if (yych <= 0x7F)
+            goto yy483;
+          if (yych <= 0xC1)
+            goto yy376;
+          goto yy485;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy486;
+          if (yych == 0xED)
+            goto yy491;
+          goto yy487;
+        } else {
+          if (yych <= 0xF0)
+            goto yy488;
+          if (yych <= 0xF3)
+            goto yy489;
+          if (yych <= 0xF4)
+            goto yy490;
+          goto yy376;
+        }
+      }
+    }
+  yy513:
+    ++p;
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy376;
+          if (yych <= 0x08)
+            goto yy483;
+          if (yych >= 0x0E)
+            goto yy483;
+        } else {
+          if (yych <= ' ')
+            goto yy515;
+          if (yych == '"')
+            goto yy376;
+          goto yy483;
+        }
+      } else {
+        if (yych <= '/') {
+          if (yych <= '\'')
+            goto yy376;
+          if (yych <= ',')
+            goto yy483;
+          if (yych <= '.')
+            goto yy513;
+          goto yy483;
+        } else {
+          if (yych <= ';') {
+            if (yych <= ':')
+              goto yy513;
+            goto yy483;
+          } else {
+            if (yych <= '<')
+              goto yy376;
+            if (yych <= '=')
+              goto yy481;
+            goto yy393;
+          }
+        }
+      }
+    } else {
+      if (yych <= 0xC1) {
+        if (yych <= '_') {
+          if (yych <= '@')
+            goto yy483;
+          if (yych <= 'Z')
+            goto yy513;
+          if (yych <= '^')
+            goto yy483;
+          goto yy513;
+        } else {
+          if (yych <= '`')
+            goto yy376;
+          if (yych <= 'z')
+            goto yy513;
+          if (yych <= 0x7F)
+            goto yy483;
+          goto yy376;
+        }
+      } else {
+        if (yych <= 0xED) {
+          if (yych <= 0xDF)
+            goto yy485;
+          if (yych <= 0xE0)
+            goto yy486;
+          if (yych <= 0xEC)
+            goto yy487;
+          goto yy491;
+        } else {
+          if (yych <= 0xF0) {
+            if (yych <= 0xEF)
+              goto yy487;
+            goto yy488;
+          } else {
+            if (yych <= 0xF3)
+              goto yy489;
+            if (yych <= 0xF4)
+              goto yy490;
+            goto yy376;
+          }
+        }
+      }
+    }
+  yy515:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy376;
+          if (yych <= 0x08)
+            goto yy483;
+          if (yych <= '\r')
+            goto yy515;
+          goto yy483;
+        } else {
+          if (yych <= ' ')
+            goto yy515;
+          if (yych == '"')
+            goto yy376;
+          goto yy483;
+        }
+      } else {
+        if (yych <= ';') {
+          if (yych <= '\'')
+            goto yy376;
+          if (yych == ':')
+            goto yy513;
+          goto yy483;
+        } else {
+          if (yych <= '<')
+            goto yy376;
+          if (yych <= '=')
+            goto yy481;
+          if (yych <= '>')
+            goto yy393;
+          goto yy483;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy513;
+          if (yych <= '^')
+            goto yy483;
+          if (yych <= '_')
+            goto yy513;
+          goto yy376;
+        } else {
+          if (yych <= 'z')
+            goto yy513;
+          if (yych <= 0x7F)
+            goto yy483;
+          if (yych <= 0xC1)
+            goto yy376;
+          goto yy485;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy486;
+          if (yych == 0xED)
+            goto yy491;
+          goto yy487;
+        } else {
+          if (yych <= 0xF0)
+            goto yy488;
+          if (yych <= 0xF3)
+            goto yy489;
+          if (yych <= 0xF4)
+            goto yy490;
+          goto yy376;
+        }
+      }
+    }
+  yy517:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy376;
+          if (yych <= 0x08)
+            goto yy483;
+          goto yy517;
+        } else {
+          if (yych == ' ')
+            goto yy517;
+          if (yych <= '!')
+            goto yy483;
+          goto yy494;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy492;
+          if (yych <= '9')
+            goto yy483;
+          goto yy513;
+        } else {
+          if (yych <= ';')
+            goto yy483;
+          if (yych <= '=')
+            goto yy376;
+          if (yych <= '>')
+            goto yy393;
+          goto yy483;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy513;
+          if (yych <= '^')
+            goto yy483;
+          if (yych <= '_')
+            goto yy513;
+          goto yy376;
+        } else {
+          if (yych <= 'z')
+            goto yy513;
+          if (yych <= 0x7F)
+            goto yy483;
+          if (yych <= 0xC1)
+            goto yy376;
+          goto yy485;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy486;
+          if (yych == 0xED)
+            goto yy491;
+          goto yy487;
+        } else {
+          if (yych <= 0xF0)
+            goto yy488;
+          if (yych <= 0xF3)
+            goto yy489;
+          if (yych <= 0xF4)
+            goto yy490;
+          goto yy376;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block tag start line, returning
+// an integer code for the type of block (1-6, matching the spec).
+// #7 is handled by a separate function, below.
+bufsize_t _scan_html_block_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= ';') {
+        if (yych != '\n')
+          goto yy523;
+      } else {
+        if (yych <= '<')
+          goto yy522;
+        if (yych <= 0x7F)
+          goto yy523;
+        if (yych >= 0xC2)
+          goto yy524;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy526;
+        if (yych == 0xED)
+          goto yy531;
+        goto yy527;
+      } else {
+        if (yych <= 0xF0)
+          goto yy528;
+        if (yych <= 0xF3)
+          goto yy529;
+        if (yych <= 0xF4)
+          goto yy530;
+      }
+    }
+  yy521 : { return 0; }
+  yy522:
+    yych = *(marker = ++p);
+    switch (yych) {
+    case '!':
+      goto yy548;
+    case '/':
+      goto yy532;
+    case '?':
+      goto yy549;
+    case 'A':
+    case 'a':
+      goto yy534;
+    case 'B':
+    case 'b':
+      goto yy535;
+    case 'C':
+    case 'c':
+      goto yy536;
+    case 'D':
+    case 'd':
+      goto yy537;
+    case 'F':
+    case 'f':
+      goto yy538;
+    case 'H':
+    case 'h':
+      goto yy539;
+    case 'I':
+    case 'i':
+      goto yy540;
+    case 'L':
+    case 'l':
+      goto yy541;
+    case 'M':
+    case 'm':
+      goto yy542;
+    case 'N':
+    case 'n':
+      goto yy543;
+    case 'O':
+    case 'o':
+      goto yy544;
+    case 'P':
+    case 'p':
+      goto yy533;
+    case 'S':
+    case 's':
+      goto yy545;
+    case 'T':
+    case 't':
+      goto yy546;
+    case 'U':
+    case 'u':
+      goto yy547;
+    default:
+      goto yy521;
+    }
+  yy523:
+    yych = *++p;
+    goto yy521;
+  yy524:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy525;
+    if (yych <= 0xBF)
+      goto yy523;
+  yy525:
+    p = marker;
+    goto yy521;
+  yy526:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy525;
+    if (yych <= 0xBF)
+      goto yy524;
+    goto yy525;
+  yy527:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy525;
+    if (yych <= 0xBF)
+      goto yy524;
+    goto yy525;
+  yy528:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy525;
+    if (yych <= 0xBF)
+      goto yy527;
+    goto yy525;
+  yy529:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy525;
+    if (yych <= 0xBF)
+      goto yy527;
+    goto yy525;
+  yy530:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy525;
+    if (yych <= 0x8F)
+      goto yy527;
+    goto yy525;
+  yy531:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy525;
+    if (yych <= 0x9F)
+      goto yy524;
+    goto yy525;
+  yy532:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy534;
+    case 'B':
+    case 'b':
+      goto yy535;
+    case 'C':
+    case 'c':
+      goto yy536;
+    case 'D':
+    case 'd':
+      goto yy537;
+    case 'F':
+    case 'f':
+      goto yy538;
+    case 'H':
+    case 'h':
+      goto yy539;
+    case 'I':
+    case 'i':
+      goto yy540;
+    case 'L':
+    case 'l':
+      goto yy541;
+    case 'M':
+    case 'm':
+      goto yy542;
+    case 'N':
+    case 'n':
+      goto yy543;
+    case 'O':
+    case 'o':
+      goto yy544;
+    case 'P':
+    case 'p':
+      goto yy733;
+    case 'S':
+    case 's':
+      goto yy734;
+    case 'T':
+    case 't':
+      goto yy546;
+    case 'U':
+    case 'u':
+      goto yy547;
+    default:
+      goto yy525;
+    }
+  yy533:
+    yych = *++p;
+    if (yych <= '>') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        if (yych <= 0x1F)
+          goto yy525;
+        goto yy565;
+      } else {
+        if (yych == '/')
+          goto yy567;
+        if (yych <= '=')
+          goto yy525;
+        goto yy565;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == 'A')
+          goto yy730;
+        if (yych <= 'Q')
+          goto yy525;
+        goto yy729;
+      } else {
+        if (yych <= 'a') {
+          if (yych <= '`')
+            goto yy525;
+          goto yy730;
+        } else {
+          if (yych == 'r')
+            goto yy729;
+          goto yy525;
+        }
+      }
+    }
+  yy534:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych <= 'C')
+          goto yy525;
+        goto yy718;
+      } else {
+        if (yych <= 'Q')
+          goto yy525;
+        if (yych <= 'R')
+          goto yy717;
+        goto yy716;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'd')
+          goto yy718;
+        goto yy525;
+      } else {
+        if (yych <= 'r')
+          goto yy717;
+        if (yych <= 's')
+          goto yy716;
+        goto yy525;
+      }
+    }
+  yy535:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'K') {
+        if (yych == 'A')
+          goto yy702;
+        goto yy525;
+      } else {
+        if (yych <= 'L')
+          goto yy701;
+        if (yych <= 'N')
+          goto yy525;
+        goto yy700;
+      }
+    } else {
+      if (yych <= 'k') {
+        if (yych == 'a')
+          goto yy702;
+        goto yy525;
+      } else {
+        if (yych <= 'l')
+          goto yy701;
+        if (yych == 'o')
+          goto yy700;
+        goto yy525;
+      }
+    }
+  yy536:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'D') {
+        if (yych == 'A')
+          goto yy687;
+        goto yy525;
+      } else {
+        if (yych <= 'E')
+          goto yy686;
+        if (yych <= 'N')
+          goto yy525;
+        goto yy685;
+      }
+    } else {
+      if (yych <= 'd') {
+        if (yych == 'a')
+          goto yy687;
+        goto yy525;
+      } else {
+        if (yych <= 'e')
+          goto yy686;
+        if (yych == 'o')
+          goto yy685;
+        goto yy525;
+      }
+    }
+  yy537:
+    yych = *++p;
+    switch (yych) {
+    case 'D':
+    case 'L':
+    case 'T':
+    case 'd':
+    case 'l':
+    case 't':
+      goto yy564;
+    case 'E':
+    case 'e':
+      goto yy677;
+    case 'I':
+    case 'i':
+      goto yy676;
+    default:
+      goto yy525;
+    }
+  yy538:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych <= 'N') {
+        if (yych == 'I')
+          goto yy652;
+        goto yy525;
+      } else {
+        if (yych <= 'O')
+          goto yy651;
+        if (yych <= 'Q')
+          goto yy525;
+        goto yy650;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'i')
+          goto yy652;
+        goto yy525;
+      } else {
+        if (yych <= 'o')
+          goto yy651;
+        if (yych == 'r')
+          goto yy650;
+        goto yy525;
+      }
+    }
+  yy539:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych == '1')
+          goto yy564;
+        goto yy525;
+      } else {
+        if (yych <= 'E')
+          goto yy645;
+        if (yych == 'R')
+          goto yy564;
+        goto yy525;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych <= 'T')
+          goto yy644;
+        if (yych == 'e')
+          goto yy645;
+        goto yy525;
+      } else {
+        if (yych <= 'r')
+          goto yy564;
+        if (yych == 't')
+          goto yy644;
+        goto yy525;
+      }
+    }
+  yy540:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy640;
+    if (yych == 'f')
+      goto yy640;
+    goto yy525;
+  yy541:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'E')
+        goto yy635;
+      if (yych <= 'H')
+        goto yy525;
+      goto yy634;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy525;
+        goto yy635;
+      } else {
+        if (yych == 'i')
+          goto yy634;
+        goto yy525;
+      }
+    }
+  yy542:
+    yych = *++p;
+    if (yych <= 'E') {
+      if (yych == 'A')
+        goto yy626;
+      if (yych <= 'D')
+        goto yy525;
+      goto yy625;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy525;
+        goto yy626;
+      } else {
+        if (yych == 'e')
+          goto yy625;
+        goto yy525;
+      }
+    }
+  yy543:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych == 'A')
+        goto yy619;
+      if (yych <= 'N')
+        goto yy525;
+      goto yy618;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy525;
+        goto yy619;
+      } else {
+        if (yych == 'o')
+          goto yy618;
+        goto yy525;
+      }
+    }
+  yy544:
+    yych = *++p;
+    if (yych <= 'P') {
+      if (yych == 'L')
+        goto yy564;
+      if (yych <= 'O')
+        goto yy525;
+      goto yy610;
+    } else {
+      if (yych <= 'l') {
+        if (yych <= 'k')
+          goto yy525;
+        goto yy564;
+      } else {
+        if (yych == 'p')
+          goto yy610;
+        goto yy525;
+      }
+    }
+  yy545:
+    yych = *++p;
+    switch (yych) {
+    case 'C':
+    case 'c':
+      goto yy587;
+    case 'E':
+    case 'e':
+      goto yy590;
+    case 'O':
+    case 'o':
+      goto yy589;
+    case 'T':
+    case 't':
+      goto yy586;
+    case 'U':
+    case 'u':
+      goto yy588;
+    default:
+      goto yy525;
+    }
+  yy546:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy573;
+    case 'B':
+    case 'b':
+      goto yy572;
+    case 'D':
+    case 'd':
+      goto yy564;
+    case 'F':
+    case 'f':
+      goto yy571;
+    case 'H':
+    case 'h':
+      goto yy570;
+    case 'I':
+    case 'i':
+      goto yy569;
+    case 'R':
+    case 'r':
+      goto yy568;
+    default:
+      goto yy525;
+    }
+  yy547:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy564;
+    if (yych == 'l')
+      goto yy564;
+    goto yy525;
+  yy548:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych == '-')
+        goto yy551;
+      goto yy525;
+    } else {
+      if (yych <= 'Z')
+        goto yy552;
+      if (yych <= '[')
+        goto yy554;
+      goto yy525;
+    }
+  yy549:
+    ++p;
+    { return 3; }
+  yy551:
+    yych = *++p;
+    if (yych == '-')
+      goto yy562;
+    goto yy525;
+  yy552:
+    ++p;
+    { return 4; }
+  yy554:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy555;
+    if (yych != 'c')
+      goto yy525;
+  yy555:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy556;
+    if (yych != 'd')
+      goto yy525;
+  yy556:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy557;
+    if (yych != 'a')
+      goto yy525;
+  yy557:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy558;
+    if (yych != 't')
+      goto yy525;
+  yy558:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy559;
+    if (yych != 'a')
+      goto yy525;
+  yy559:
+    yych = *++p;
+    if (yych != '[')
+      goto yy525;
+    ++p;
+    { return 5; }
+  yy562:
+    ++p;
+    { return 2; }
+  yy564:
+    yych = *++p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy525;
+      if (yych <= '\r')
+        goto yy565;
+      if (yych <= 0x1F)
+        goto yy525;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      } else {
+        if (yych != '>')
+          goto yy525;
+      }
+    }
+  yy565:
+    ++p;
+    { return 6; }
+  yy567:
+    yych = *++p;
+    if (yych == '>')
+      goto yy565;
+    goto yy525;
+  yy568:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'A')
+          goto yy584;
+        if (yych == 'a')
+          goto yy584;
+        goto yy525;
+      }
+    }
+  yy569:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy582;
+    if (yych == 't')
+      goto yy582;
+    goto yy525;
+  yy570:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'E')
+          goto yy580;
+        if (yych == 'e')
+          goto yy580;
+        goto yy525;
+      }
+    }
+  yy571:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy578;
+    if (yych == 'o')
+      goto yy578;
+    goto yy525;
+  yy572:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy576;
+    if (yych == 'o')
+      goto yy576;
+    goto yy525;
+  yy573:
+    yych = *++p;
+    if (yych == 'B')
+      goto yy574;
+    if (yych != 'b')
+      goto yy525;
+  yy574:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy575;
+    if (yych != 'l')
+      goto yy525;
+  yy575:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy576:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy577;
+    if (yych != 'd')
+      goto yy525;
+  yy577:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy564;
+    if (yych == 'y')
+      goto yy564;
+    goto yy525;
+  yy578:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy579;
+    if (yych != 'o')
+      goto yy525;
+  yy579:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy564;
+    if (yych == 't')
+      goto yy564;
+    goto yy525;
+  yy580:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy581;
+    if (yych != 'a')
+      goto yy525;
+  yy581:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy564;
+    if (yych == 'd')
+      goto yy564;
+    goto yy525;
+  yy582:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy583;
+    if (yych != 'l')
+      goto yy525;
+  yy583:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy584:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy585;
+    if (yych != 'c')
+      goto yy525;
+  yy585:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy564;
+    if (yych == 'k')
+      goto yy564;
+    goto yy525;
+  yy586:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy608;
+    if (yych == 'y')
+      goto yy608;
+    goto yy525;
+  yy587:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy602;
+    if (yych == 'r')
+      goto yy602;
+    goto yy525;
+  yy588:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy598;
+    if (yych == 'm')
+      goto yy598;
+    goto yy525;
+  yy589:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy595;
+    if (yych == 'u')
+      goto yy595;
+    goto yy525;
+  yy590:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy591;
+    if (yych != 'c')
+      goto yy525;
+  yy591:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy592;
+    if (yych != 't')
+      goto yy525;
+  yy592:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy593;
+    if (yych != 'i')
+      goto yy525;
+  yy593:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy594;
+    if (yych != 'o')
+      goto yy525;
+  yy594:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy564;
+    if (yych == 'n')
+      goto yy564;
+    goto yy525;
+  yy595:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy596;
+    if (yych != 'r')
+      goto yy525;
+  yy596:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy597;
+    if (yych != 'c')
+      goto yy525;
+  yy597:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy598:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy599;
+    if (yych != 'm')
+      goto yy525;
+  yy599:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy600;
+    if (yych != 'a')
+      goto yy525;
+  yy600:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy601;
+    if (yych != 'r')
+      goto yy525;
+  yy601:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy564;
+    if (yych == 'y')
+      goto yy564;
+    goto yy525;
+  yy602:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy603;
+    if (yych != 'i')
+      goto yy525;
+  yy603:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy604;
+    if (yych != 'p')
+      goto yy525;
+  yy604:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy605;
+    if (yych != 't')
+      goto yy525;
+  yy605:
+    yych = *++p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy525;
+      if (yych >= 0x0E)
+        goto yy525;
+    } else {
+      if (yych <= ' ')
+        goto yy606;
+      if (yych != '>')
+        goto yy525;
+    }
+  yy606:
+    ++p;
+    { return 1; }
+  yy608:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy609;
+    if (yych != 'l')
+      goto yy525;
+  yy609:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy605;
+    if (yych == 'e')
+      goto yy605;
+    goto yy525;
+  yy610:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy611;
+    if (yych != 't')
+      goto yy525;
+  yy611:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'G')
+        goto yy613;
+      if (yych <= 'H')
+        goto yy525;
+    } else {
+      if (yych <= 'g') {
+        if (yych <= 'f')
+          goto yy525;
+        goto yy613;
+      } else {
+        if (yych != 'i')
+          goto yy525;
+      }
+    }
+    yych = *++p;
+    if (yych == 'O')
+      goto yy617;
+    if (yych == 'o')
+      goto yy617;
+    goto yy525;
+  yy613:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy614;
+    if (yych != 'r')
+      goto yy525;
+  yy614:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy615;
+    if (yych != 'o')
+      goto yy525;
+  yy615:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy616;
+    if (yych != 'u')
+      goto yy525;
+  yy616:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy564;
+    if (yych == 'p')
+      goto yy564;
+    goto yy525;
+  yy617:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy564;
+    if (yych == 'n')
+      goto yy564;
+    goto yy525;
+  yy618:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy620;
+    if (yych == 'f')
+      goto yy620;
+    goto yy525;
+  yy619:
+    yych = *++p;
+    if (yych == 'V')
+      goto yy564;
+    if (yych == 'v')
+      goto yy564;
+    goto yy525;
+  yy620:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy621;
+    if (yych != 'r')
+      goto yy525;
+  yy621:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy622;
+    if (yych != 'a')
+      goto yy525;
+  yy622:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy623;
+    if (yych != 'm')
+      goto yy525;
+  yy623:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy624;
+    if (yych != 'e')
+      goto yy525;
+  yy624:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy564;
+    if (yych == 's')
+      goto yy564;
+    goto yy525;
+  yy625:
+    yych = *++p;
+    if (yych <= 'T') {
+      if (yych == 'N')
+        goto yy628;
+      if (yych <= 'S')
+        goto yy525;
+      goto yy629;
+    } else {
+      if (yych <= 'n') {
+        if (yych <= 'm')
+          goto yy525;
+        goto yy628;
+      } else {
+        if (yych == 't')
+          goto yy629;
+        goto yy525;
+      }
+    }
+  yy626:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy627;
+    if (yych != 'i')
+      goto yy525;
+  yy627:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy564;
+    if (yych == 'n')
+      goto yy564;
+    goto yy525;
+  yy628:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy630;
+    if (yych == 'u')
+      goto yy630;
+    goto yy525;
+  yy629:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy564;
+    if (yych == 'a')
+      goto yy564;
+    goto yy525;
+  yy630:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'H') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'I')
+          goto yy631;
+        if (yych != 'i')
+          goto yy525;
+      }
+    }
+  yy631:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy632;
+    if (yych != 't')
+      goto yy525;
+  yy632:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy633;
+    if (yych != 'e')
+      goto yy525;
+  yy633:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy564;
+    if (yych == 'm')
+      goto yy564;
+    goto yy525;
+  yy634:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'M') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'N')
+          goto yy639;
+        if (yych == 'n')
+          goto yy639;
+        goto yy525;
+      }
+    }
+  yy635:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy636;
+    if (yych != 'g')
+      goto yy525;
+  yy636:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy637;
+    if (yych != 'e')
+      goto yy525;
+  yy637:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy638;
+    if (yych != 'n')
+      goto yy525;
+  yy638:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy564;
+    if (yych == 'd')
+      goto yy564;
+    goto yy525;
+  yy639:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy564;
+    if (yych == 'k')
+      goto yy564;
+    goto yy525;
+  yy640:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy641;
+    if (yych != 'r')
+      goto yy525;
+  yy641:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy642;
+    if (yych != 'a')
+      goto yy525;
+  yy642:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy643;
+    if (yych != 'm')
+      goto yy525;
+  yy643:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy644:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy649;
+    if (yych == 'm')
+      goto yy649;
+    goto yy525;
+  yy645:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy646;
+    if (yych != 'a')
+      goto yy525;
+  yy646:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy647;
+    if (yych != 'd')
+      goto yy525;
+  yy647:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'E')
+          goto yy648;
+        if (yych != 'e')
+          goto yy525;
+      }
+    }
+  yy648:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy564;
+    if (yych == 'r')
+      goto yy564;
+    goto yy525;
+  yy649:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy564;
+    if (yych == 'l')
+      goto yy564;
+    goto yy525;
+  yy650:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy671;
+    if (yych == 'a')
+      goto yy671;
+    goto yy525;
+  yy651:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych == 'O')
+        goto yy667;
+      if (yych <= 'Q')
+        goto yy525;
+      goto yy668;
+    } else {
+      if (yych <= 'o') {
+        if (yych <= 'n')
+          goto yy525;
+        goto yy667;
+      } else {
+        if (yych == 'r')
+          goto yy668;
+        goto yy525;
+      }
+    }
+  yy652:
+    yych = *++p;
+    if (yych <= 'G') {
+      if (yych == 'E')
+        goto yy653;
+      if (yych <= 'F')
+        goto yy525;
+      goto yy654;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy525;
+      } else {
+        if (yych == 'g')
+          goto yy654;
+        goto yy525;
+      }
+    }
+  yy653:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy663;
+    if (yych == 'l')
+      goto yy663;
+    goto yy525;
+  yy654:
+    yych = *++p;
+    if (yych <= 'U') {
+      if (yych == 'C')
+        goto yy656;
+      if (yych <= 'T')
+        goto yy525;
+    } else {
+      if (yych <= 'c') {
+        if (yych <= 'b')
+          goto yy525;
+        goto yy656;
+      } else {
+        if (yych != 'u')
+          goto yy525;
+      }
+    }
+    yych = *++p;
+    if (yych == 'R')
+      goto yy662;
+    if (yych == 'r')
+      goto yy662;
+    goto yy525;
+  yy656:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy657;
+    if (yych != 'a')
+      goto yy525;
+  yy657:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy658;
+    if (yych != 'p')
+      goto yy525;
+  yy658:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy659;
+    if (yych != 't')
+      goto yy525;
+  yy659:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy660;
+    if (yych != 'i')
+      goto yy525;
+  yy660:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy661;
+    if (yych != 'o')
+      goto yy525;
+  yy661:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy564;
+    if (yych == 'n')
+      goto yy564;
+    goto yy525;
+  yy662:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy663:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy664;
+    if (yych != 'd')
+      goto yy525;
+  yy664:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy665;
+    if (yych != 's')
+      goto yy525;
+  yy665:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy666;
+    if (yych != 'e')
+      goto yy525;
+  yy666:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy564;
+    if (yych == 't')
+      goto yy564;
+    goto yy525;
+  yy667:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy669;
+    if (yych == 't')
+      goto yy669;
+    goto yy525;
+  yy668:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy564;
+    if (yych == 'm')
+      goto yy564;
+    goto yy525;
+  yy669:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy670;
+    if (yych != 'e')
+      goto yy525;
+  yy670:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy564;
+    if (yych == 'r')
+      goto yy564;
+    goto yy525;
+  yy671:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy672;
+    if (yych != 'm')
+      goto yy525;
+  yy672:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy673;
+    if (yych != 'e')
+      goto yy525;
+  yy673:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'S')
+          goto yy674;
+        if (yych != 's')
+          goto yy525;
+      }
+    }
+  yy674:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy675;
+    if (yych != 'e')
+      goto yy525;
+  yy675:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy564;
+    if (yych == 't')
+      goto yy564;
+    goto yy525;
+  yy676:
+    yych = *++p;
+    if (yych <= 'V') {
+      if (yych <= 'Q') {
+        if (yych == 'A')
+          goto yy682;
+        goto yy525;
+      } else {
+        if (yych <= 'R')
+          goto yy564;
+        if (yych <= 'U')
+          goto yy525;
+        goto yy564;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'a')
+          goto yy682;
+        goto yy525;
+      } else {
+        if (yych <= 'r')
+          goto yy564;
+        if (yych == 'v')
+          goto yy564;
+        goto yy525;
+      }
+    }
+  yy677:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy678;
+    if (yych != 't')
+      goto yy525;
+  yy678:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy679;
+    if (yych != 'a')
+      goto yy525;
+  yy679:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy680;
+    if (yych != 'i')
+      goto yy525;
+  yy680:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy681;
+    if (yych != 'l')
+      goto yy525;
+  yy681:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy564;
+    if (yych == 's')
+      goto yy564;
+    goto yy525;
+  yy682:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy683;
+    if (yych != 'l')
+      goto yy525;
+  yy683:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy684;
+    if (yych != 'o')
+      goto yy525;
+  yy684:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy564;
+    if (yych == 'g')
+      goto yy564;
+    goto yy525;
+  yy685:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy695;
+    if (yych == 'l')
+      goto yy695;
+    goto yy525;
+  yy686:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy692;
+    if (yych == 'n')
+      goto yy692;
+    goto yy525;
+  yy687:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy688;
+    if (yych != 'p')
+      goto yy525;
+  yy688:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy689;
+    if (yych != 't')
+      goto yy525;
+  yy689:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy690;
+    if (yych != 'i')
+      goto yy525;
+  yy690:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy691;
+    if (yych != 'o')
+      goto yy525;
+  yy691:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy564;
+    if (yych == 'n')
+      goto yy564;
+    goto yy525;
+  yy692:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy693;
+    if (yych != 't')
+      goto yy525;
+  yy693:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy694;
+    if (yych != 'e')
+      goto yy525;
+  yy694:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy564;
+    if (yych == 'r')
+      goto yy564;
+    goto yy525;
+  yy695:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'F') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'G')
+          goto yy696;
+        if (yych != 'g')
+          goto yy525;
+      }
+    }
+  yy696:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy697;
+    if (yych != 'r')
+      goto yy525;
+  yy697:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy698;
+    if (yych != 'o')
+      goto yy525;
+  yy698:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy699;
+    if (yych != 'u')
+      goto yy525;
+  yy699:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy564;
+    if (yych == 'p')
+      goto yy564;
+    goto yy525;
+  yy700:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy715;
+    if (yych == 'd')
+      goto yy715;
+    goto yy525;
+  yy701:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy708;
+    if (yych == 'o')
+      goto yy708;
+    goto yy525;
+  yy702:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy703;
+    if (yych != 's')
+      goto yy525;
+  yy703:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy704;
+    if (yych != 'e')
+      goto yy525;
+  yy704:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 'E') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'F')
+          goto yy705;
+        if (yych != 'f')
+          goto yy525;
+      }
+    }
+  yy705:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy706;
+    if (yych != 'o')
+      goto yy525;
+  yy706:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy707;
+    if (yych != 'n')
+      goto yy525;
+  yy707:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy564;
+    if (yych == 't')
+      goto yy564;
+    goto yy525;
+  yy708:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy709;
+    if (yych != 'c')
+      goto yy525;
+  yy709:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy710;
+    if (yych != 'k')
+      goto yy525;
+  yy710:
+    yych = *++p;
+    if (yych == 'Q')
+      goto yy711;
+    if (yych != 'q')
+      goto yy525;
+  yy711:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy712;
+    if (yych != 'u')
+      goto yy525;
+  yy712:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy713;
+    if (yych != 'o')
+      goto yy525;
+  yy713:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy714;
+    if (yych != 't')
+      goto yy525;
+  yy714:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy715:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy564;
+    if (yych == 'y')
+      goto yy564;
+    goto yy525;
+  yy716:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy727;
+    if (yych == 'i')
+      goto yy727;
+    goto yy525;
+  yy717:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy723;
+    if (yych == 't')
+      goto yy723;
+    goto yy525;
+  yy718:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy719;
+    if (yych != 'd')
+      goto yy525;
+  yy719:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy720;
+    if (yych != 'r')
+      goto yy525;
+  yy720:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy721;
+    if (yych != 'e')
+      goto yy525;
+  yy721:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy722;
+    if (yych != 's')
+      goto yy525;
+  yy722:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy564;
+    if (yych == 's')
+      goto yy564;
+    goto yy525;
+  yy723:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy724;
+    if (yych != 'i')
+      goto yy525;
+  yy724:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy725;
+    if (yych != 'c')
+      goto yy525;
+  yy725:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy726;
+    if (yych != 'l')
+      goto yy525;
+  yy726:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy727:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy728;
+    if (yych != 'd')
+      goto yy525;
+  yy728:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy564;
+    if (yych == 'e')
+      goto yy564;
+    goto yy525;
+  yy729:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy605;
+    if (yych == 'e')
+      goto yy605;
+    goto yy525;
+  yy730:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy731;
+    if (yych != 'r')
+      goto yy525;
+  yy731:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy732;
+    if (yych != 'a')
+      goto yy525;
+  yy732:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy564;
+    if (yych == 'm')
+      goto yy564;
+    goto yy525;
+  yy733:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy525;
+        if (yych <= '\r')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= ' ')
+          goto yy565;
+        if (yych <= '.')
+          goto yy525;
+        goto yy567;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy565;
+        goto yy525;
+      } else {
+        if (yych <= 'A')
+          goto yy730;
+        if (yych == 'a')
+          goto yy730;
+        goto yy525;
+      }
+    }
+  yy734:
+    ++p;
+    if ((yych = *p) <= 'U') {
+      if (yych <= 'N') {
+        if (yych == 'E')
+          goto yy590;
+        goto yy525;
+      } else {
+        if (yych <= 'O')
+          goto yy589;
+        if (yych <= 'T')
+          goto yy525;
+        goto yy588;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'e')
+          goto yy590;
+        goto yy525;
+      } else {
+        if (yych <= 'o')
+          goto yy589;
+        if (yych == 'u')
+          goto yy588;
+        goto yy525;
+      }
+    }
+  }
+}
+
+// Try to match an HTML block tag start line of type 7, returning
+// 7 if successful, 0 if not.
+bufsize_t _scan_html_block_start_7(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
+        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= ';') {
+        if (yych != '\n')
+          goto yy739;
+      } else {
+        if (yych <= '<')
+          goto yy738;
+        if (yych <= 0x7F)
+          goto yy739;
+        if (yych >= 0xC2)
+          goto yy740;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy742;
+        if (yych == 0xED)
+          goto yy747;
+        goto yy743;
+      } else {
+        if (yych <= 0xF0)
+          goto yy744;
+        if (yych <= 0xF3)
+          goto yy745;
+        if (yych <= 0xF4)
+          goto yy746;
+      }
+    }
+  yy737 : { return 0; }
+  yy738:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '@') {
+      if (yych == '/')
+        goto yy750;
+      goto yy737;
+    } else {
+      if (yych <= 'Z')
+        goto yy748;
+      if (yych <= '`')
+        goto yy737;
+      if (yych <= 'z')
+        goto yy748;
+      goto yy737;
+    }
+  yy739:
+    yych = *++p;
+    goto yy737;
+  yy740:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy739;
+  yy741:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy737;
+    } else {
+      goto yy759;
+    }
+  yy742:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy740;
+    goto yy741;
+  yy743:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy740;
+    goto yy741;
+  yy744:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy743;
+    goto yy741;
+  yy745:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy743;
+    goto yy741;
+  yy746:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x8F)
+      goto yy743;
+    goto yy741;
+  yy747:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x9F)
+      goto yy740;
+    goto yy741;
+  yy748:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy748;
+    }
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy741;
+      if (yych <= '\r')
+        goto yy761;
+      if (yych <= 0x1F)
+        goto yy741;
+      goto yy761;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy741;
+        goto yy763;
+      } else {
+        if (yych == '>')
+          goto yy755;
+        goto yy741;
+      }
+    }
+  yy750:
+    yych = *++p;
+    if (yych <= '@')
+      goto yy741;
+    if (yych <= 'Z')
+      goto yy751;
+    if (yych <= '`')
+      goto yy741;
+    if (yych >= '{')
+      goto yy741;
+  yy751:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy753;
+    }
+    if (yych <= '=') {
+      if (yych <= '-') {
+        if (yych <= ',')
+          goto yy741;
+        goto yy751;
+      } else {
+        if (yych <= '/')
+          goto yy741;
+        if (yych <= '9')
+          goto yy751;
+        goto yy741;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy755;
+        if (yych <= '@')
+          goto yy741;
+        goto yy751;
+      } else {
+        if (yych <= '`')
+          goto yy741;
+        if (yych <= 'z')
+          goto yy751;
+        goto yy741;
+      }
+    }
+  yy753:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy753;
+    }
+    if (yych != '>')
+      goto yy741;
+  yy755:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy755;
+    }
+    if (yych <= 0x08)
+      goto yy741;
+    if (yych <= '\n')
+      goto yy757;
+    if (yych <= '\v')
+      goto yy741;
+    if (yych <= '\r')
+      goto yy760;
+    goto yy741;
+  yy757:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy755;
+    }
+    if (yych <= 0x08)
+      goto yy759;
+    if (yych <= '\n')
+      goto yy757;
+    if (yych <= '\v')
+      goto yy759;
+    if (yych <= '\r')
+      goto yy760;
+  yy759 : { return 7; }
+  yy760:
+    yych = *++p;
+    goto yy759;
+  yy761:
+    ++p;
+    yych = *p;
+    if (yych <= ':') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy741;
+        if (yych <= '\r')
+          goto yy761;
+        if (yych <= 0x1F)
+          goto yy741;
+        goto yy761;
+      } else {
+        if (yych == '/')
+          goto yy763;
+        if (yych <= '9')
+          goto yy741;
+        goto yy764;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych == '>')
+          goto yy755;
+        if (yych <= '@')
+          goto yy741;
+        goto yy764;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy741;
+          goto yy764;
+        } else {
+          if (yych <= '`')
+            goto yy741;
+          if (yych <= 'z')
+            goto yy764;
+          goto yy741;
+        }
+      }
+    }
+  yy763:
+    yych = *++p;
+    if (yych == '>')
+      goto yy755;
+    goto yy741;
+  yy764:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy764;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy741;
+      } else {
+        if (yych != ' ')
+          goto yy741;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy763;
+        goto yy741;
+      } else {
+        if (yych <= '=')
+          goto yy768;
+        if (yych <= '>')
+          goto yy755;
+        goto yy741;
+      }
+    }
+  yy766:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy741;
+        if (yych <= '\r')
+          goto yy766;
+        if (yych <= 0x1F)
+          goto yy741;
+        goto yy766;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy741;
+          goto yy763;
+        } else {
+          if (yych == ':')
+            goto yy764;
+          goto yy741;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy768;
+        if (yych <= '>')
+          goto yy755;
+        if (yych <= '@')
+          goto yy741;
+        goto yy764;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy741;
+          goto yy764;
+        } else {
+          if (yych <= '`')
+            goto yy741;
+          if (yych <= 'z')
+            goto yy764;
+          goto yy741;
+        }
+      }
+    }
+  yy768:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy770;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy741;
+        if (yych >= '!')
+          goto yy781;
+      } else {
+        if (yych <= '\'')
+          goto yy779;
+        if (yych <= 0xC1)
+          goto yy741;
+        if (yych <= 0xDF)
+          goto yy772;
+        goto yy773;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy778;
+        goto yy774;
+      } else {
+        if (yych <= 0xF0)
+          goto yy775;
+        if (yych <= 0xF3)
+          goto yy776;
+        if (yych <= 0xF4)
+          goto yy777;
+        goto yy741;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy770;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '\'') {
+        if (yych <= 0x00)
+          goto yy741;
+        if (yych <= ' ')
+          goto yy804;
+        if (yych <= '"')
+          goto yy781;
+        goto yy779;
+      } else {
+        if (yych == '>')
+          goto yy755;
+        if (yych <= 0xC1)
+          goto yy741;
+        goto yy772;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy773;
+        if (yych == 0xED)
+          goto yy778;
+        goto yy774;
+      } else {
+        if (yych <= 0xF0)
+          goto yy775;
+        if (yych <= 0xF3)
+          goto yy776;
+        if (yych <= 0xF4)
+          goto yy777;
+        goto yy741;
+      }
+    }
+  yy770:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy770;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy741;
+        if (yych <= ' ')
+          goto yy798;
+        goto yy741;
+      } else {
+        if (yych <= '>')
+          goto yy755;
+        if (yych <= 0xC1)
+          goto yy741;
+        if (yych >= 0xE0)
+          goto yy773;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy778;
+        goto yy774;
+      } else {
+        if (yych <= 0xF0)
+          goto yy775;
+        if (yych <= 0xF3)
+          goto yy776;
+        if (yych <= 0xF4)
+          goto yy777;
+        goto yy741;
+      }
+    }
+  yy772:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy770;
+    goto yy741;
+  yy773:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy772;
+    goto yy741;
+  yy774:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy772;
+    goto yy741;
+  yy775:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy774;
+    goto yy741;
+  yy776:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy774;
+    goto yy741;
+  yy777:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x8F)
+      goto yy774;
+    goto yy741;
+  yy778:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x9F)
+      goto yy772;
+    goto yy741;
+  yy779:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy779;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy741;
+        if (yych <= '\'')
+          goto yy790;
+        goto yy741;
+      } else {
+        if (yych <= 0xDF)
+          goto yy791;
+        if (yych <= 0xE0)
+          goto yy792;
+        goto yy793;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy797;
+        if (yych <= 0xEF)
+          goto yy793;
+        goto yy794;
+      } else {
+        if (yych <= 0xF3)
+          goto yy795;
+        if (yych <= 0xF4)
+          goto yy796;
+        goto yy741;
+      }
+    }
+  yy781:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy781;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy741;
+        if (yych <= '"')
+          goto yy790;
+        goto yy741;
+      } else {
+        if (yych <= 0xDF)
+          goto yy783;
+        if (yych <= 0xE0)
+          goto yy784;
+        goto yy785;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy789;
+        if (yych <= 0xEF)
+          goto yy785;
+        goto yy786;
+      } else {
+        if (yych <= 0xF3)
+          goto yy787;
+        if (yych <= 0xF4)
+          goto yy788;
+        goto yy741;
+      }
+    }
+  yy783:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy781;
+    goto yy741;
+  yy784:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy783;
+    goto yy741;
+  yy785:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy783;
+    goto yy741;
+  yy786:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy785;
+    goto yy741;
+  yy787:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy785;
+    goto yy741;
+  yy788:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x8F)
+      goto yy785;
+    goto yy741;
+  yy789:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x9F)
+      goto yy783;
+    goto yy741;
+  yy790:
+    ++p;
+    yych = *p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy741;
+      if (yych <= '\r')
+        goto yy761;
+      if (yych <= 0x1F)
+        goto yy741;
+      goto yy761;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy741;
+        goto yy763;
+      } else {
+        if (yych == '>')
+          goto yy755;
+        goto yy741;
+      }
+    }
+  yy791:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy779;
+    goto yy741;
+  yy792:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy791;
+    goto yy741;
+  yy793:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy791;
+    goto yy741;
+  yy794:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy793;
+    goto yy741;
+  yy795:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0xBF)
+      goto yy793;
+    goto yy741;
+  yy796:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x8F)
+      goto yy793;
+    goto yy741;
+  yy797:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy741;
+    if (yych <= 0x9F)
+      goto yy791;
+    goto yy741;
+  yy798:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy741;
+          if (yych <= 0x08)
+            goto yy770;
+          goto yy798;
+        } else {
+          if (yych == ' ')
+            goto yy798;
+          if (yych <= '!')
+            goto yy770;
+          goto yy741;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy741;
+          if (yych <= '9')
+            goto yy770;
+        } else {
+          if (yych <= ';')
+            goto yy770;
+          if (yych <= '=')
+            goto yy741;
+          if (yych <= '>')
+            goto yy755;
+          goto yy770;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy800;
+          if (yych <= '^')
+            goto yy770;
+          if (yych >= '`')
+            goto yy741;
+        } else {
+          if (yych <= 'z')
+            goto yy800;
+          if (yych <= 0x7F)
+            goto yy770;
+          if (yych <= 0xC1)
+            goto yy741;
+          goto yy772;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy773;
+          if (yych == 0xED)
+            goto yy778;
+          goto yy774;
+        } else {
+          if (yych <= 0xF0)
+            goto yy775;
+          if (yych <= 0xF3)
+            goto yy776;
+          if (yych <= 0xF4)
+            goto yy777;
+          goto yy741;
+        }
+      }
+    }
+  yy800:
+    ++p;
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy741;
+          if (yych <= 0x08)
+            goto yy770;
+          if (yych >= 0x0E)
+            goto yy770;
+        } else {
+          if (yych <= ' ')
+            goto yy802;
+          if (yych == '"')
+            goto yy741;
+          goto yy770;
+        }
+      } else {
+        if (yych <= '/') {
+          if (yych <= '\'')
+            goto yy741;
+          if (yych <= ',')
+            goto yy770;
+          if (yych <= '.')
+            goto yy800;
+          goto yy770;
+        } else {
+          if (yych <= ';') {
+            if (yych <= ':')
+              goto yy800;
+            goto yy770;
+          } else {
+            if (yych <= '<')
+              goto yy741;
+            if (yych <= '=')
+              goto yy768;
+            goto yy755;
+          }
+        }
+      }
+    } else {
+      if (yych <= 0xC1) {
+        if (yych <= '_') {
+          if (yych <= '@')
+            goto yy770;
+          if (yych <= 'Z')
+            goto yy800;
+          if (yych <= '^')
+            goto yy770;
+          goto yy800;
+        } else {
+          if (yych <= '`')
+            goto yy741;
+          if (yych <= 'z')
+            goto yy800;
+          if (yych <= 0x7F)
+            goto yy770;
+          goto yy741;
+        }
+      } else {
+        if (yych <= 0xED) {
+          if (yych <= 0xDF)
+            goto yy772;
+          if (yych <= 0xE0)
+            goto yy773;
+          if (yych <= 0xEC)
+            goto yy774;
+          goto yy778;
+        } else {
+          if (yych <= 0xF0) {
+            if (yych <= 0xEF)
+              goto yy774;
+            goto yy775;
+          } else {
+            if (yych <= 0xF3)
+              goto yy776;
+            if (yych <= 0xF4)
+              goto yy777;
+            goto yy741;
+          }
+        }
+      }
+    }
+  yy802:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '&') {
+        if (yych <= 0x1F) {
+          if (yych <= 0x00)
+            goto yy741;
+          if (yych <= 0x08)
+            goto yy770;
+          if (yych <= '\r')
+            goto yy802;
+          goto yy770;
+        } else {
+          if (yych <= ' ')
+            goto yy802;
+          if (yych == '"')
+            goto yy741;
+          goto yy770;
+        }
+      } else {
+        if (yych <= ';') {
+          if (yych <= '\'')
+            goto yy741;
+          if (yych == ':')
+            goto yy800;
+          goto yy770;
+        } else {
+          if (yych <= '<')
+            goto yy741;
+          if (yych <= '=')
+            goto yy768;
+          if (yych <= '>')
+            goto yy755;
+          goto yy770;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy800;
+          if (yych <= '^')
+            goto yy770;
+          if (yych <= '_')
+            goto yy800;
+          goto yy741;
+        } else {
+          if (yych <= 'z')
+            goto yy800;
+          if (yych <= 0x7F)
+            goto yy770;
+          if (yych <= 0xC1)
+            goto yy741;
+          goto yy772;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy773;
+          if (yych == 0xED)
+            goto yy778;
+          goto yy774;
+        } else {
+          if (yych <= 0xF0)
+            goto yy775;
+          if (yych <= 0xF3)
+            goto yy776;
+          if (yych <= 0xF4)
+            goto yy777;
+          goto yy741;
+        }
+      }
+    }
+  yy804:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '"') {
+        if (yych <= '\r') {
+          if (yych <= 0x00)
+            goto yy741;
+          if (yych <= 0x08)
+            goto yy770;
+          goto yy804;
+        } else {
+          if (yych == ' ')
+            goto yy804;
+          if (yych <= '!')
+            goto yy770;
+          goto yy781;
+        }
+      } else {
+        if (yych <= ':') {
+          if (yych == '\'')
+            goto yy779;
+          if (yych <= '9')
+            goto yy770;
+          goto yy800;
+        } else {
+          if (yych <= ';')
+            goto yy770;
+          if (yych <= '=')
+            goto yy741;
+          if (yych <= '>')
+            goto yy755;
+          goto yy770;
+        }
+      }
+    } else {
+      if (yych <= 0xDF) {
+        if (yych <= '`') {
+          if (yych <= 'Z')
+            goto yy800;
+          if (yych <= '^')
+            goto yy770;
+          if (yych <= '_')
+            goto yy800;
+          goto yy741;
+        } else {
+          if (yych <= 'z')
+            goto yy800;
+          if (yych <= 0x7F)
+            goto yy770;
+          if (yych <= 0xC1)
+            goto yy741;
+          goto yy772;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych <= 0xE0)
+            goto yy773;
+          if (yych == 0xED)
+            goto yy778;
+          goto yy774;
+        } else {
+          if (yych <= 0xF0)
+            goto yy775;
+          if (yych <= 0xF3)
+            goto yy776;
+          if (yych <= 0xF4)
+            goto yy777;
+          goto yy741;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block end line of type 1
+bufsize_t _scan_html_block_end_1(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= ';') {
+        if (yych != '\n')
+          goto yy809;
+      } else {
+        if (yych <= '<')
+          goto yy810;
+        if (yych <= 0x7F)
+          goto yy809;
+        if (yych >= 0xC2)
+          goto yy811;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy813;
+        if (yych == 0xED)
+          goto yy818;
+        goto yy814;
+      } else {
+        if (yych <= 0xF0)
+          goto yy815;
+        if (yych <= 0xF3)
+          goto yy816;
+        if (yych <= 0xF4)
+          goto yy817;
+      }
+    }
+  yy808 : { return 0; }
+  yy809:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy808;
+      goto yy823;
+    } else {
+      if (yych <= 0xC1)
+        goto yy808;
+      if (yych <= 0xF4)
+        goto yy823;
+      goto yy808;
+    }
+  yy810:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych == '\n')
+        goto yy808;
+      if (yych <= '.')
+        goto yy823;
+      goto yy819;
+    } else {
+      if (yych <= 0x7F)
+        goto yy823;
+      if (yych <= 0xC1)
+        goto yy808;
+      if (yych <= 0xF4)
+        goto yy823;
+      goto yy808;
+    }
+  yy811:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy809;
+  yy812:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy808;
+    } else {
+      goto yy840;
+    }
+  yy813:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy811;
+    goto yy812;
+  yy814:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy811;
+    goto yy812;
+  yy815:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy814;
+    goto yy812;
+  yy816:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy814;
+    goto yy812;
+  yy817:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0x8F)
+      goto yy814;
+    goto yy812;
+  yy818:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0x9F)
+      goto yy811;
+    goto yy812;
+  yy819:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 's') {
+      if (yych <= 'R') {
+        if (yych <= '\n') {
+          if (yych <= '\t')
+            goto yy822;
+          goto yy812;
+        } else {
+          if (yych == 'P')
+            goto yy831;
+          goto yy822;
+        }
+      } else {
+        if (yych <= 'o') {
+          if (yych <= 'S')
+            goto yy832;
+          goto yy822;
+        } else {
+          if (yych <= 'p')
+            goto yy831;
+          if (yych <= 'r')
+            goto yy822;
+          goto yy832;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy822;
+          goto yy812;
+        } else {
+          if (yych <= 0xDF)
+            goto yy824;
+          if (yych <= 0xE0)
+            goto yy825;
+          goto yy826;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy830;
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy820:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '.') {
+        if (yych == '\n')
+          goto yy812;
+      } else {
+        if (yych <= '/')
+          goto yy819;
+        if (yych <= 0x7F)
+          goto yy822;
+        if (yych <= 0xC1)
+          goto yy812;
+        goto yy824;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych == 0xED)
+          goto yy830;
+        goto yy826;
+      } else {
+        if (yych <= 0xF0)
+          goto yy827;
+        if (yych <= 0xF3)
+          goto yy828;
+        if (yych <= 0xF4)
+          goto yy829;
+        goto yy812;
+      }
+    }
+  yy822:
+    ++p;
+    yych = *p;
+  yy823:
+    if (yybm[0 + yych] & 128) {
+      goto yy822;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy812;
+        if (yych <= '<')
+          goto yy820;
+        goto yy812;
+      } else {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        goto yy826;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy830;
+        if (yych <= 0xEF)
+          goto yy826;
+        goto yy827;
+      } else {
+        if (yych <= 0xF3)
+          goto yy828;
+        if (yych <= 0xF4)
+          goto yy829;
+        goto yy812;
+      }
+    }
+  yy824:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy822;
+    goto yy812;
+  yy825:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy824;
+    goto yy812;
+  yy826:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy824;
+    goto yy812;
+  yy827:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy826;
+    goto yy812;
+  yy828:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0xBF)
+      goto yy826;
+    goto yy812;
+  yy829:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0x8F)
+      goto yy826;
+    goto yy812;
+  yy830:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy812;
+    if (yych <= 0x9F)
+      goto yy824;
+    goto yy812;
+  yy831:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'R') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'Q')
+          goto yy822;
+        goto yy843;
+      } else {
+        if (yych == 'r')
+          goto yy843;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy832:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 't') {
+      if (yych <= 'S') {
+        if (yych <= '\n') {
+          if (yych <= '\t')
+            goto yy822;
+          goto yy812;
+        } else {
+          if (yych == 'C')
+            goto yy834;
+          goto yy822;
+        }
+      } else {
+        if (yych <= 'b') {
+          if (yych >= 'U')
+            goto yy822;
+        } else {
+          if (yych <= 'c')
+            goto yy834;
+          if (yych <= 's')
+            goto yy822;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy822;
+          goto yy812;
+        } else {
+          if (yych <= 0xDF)
+            goto yy824;
+          if (yych <= 0xE0)
+            goto yy825;
+          goto yy826;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy830;
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'Y') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'X')
+          goto yy822;
+        goto yy841;
+      } else {
+        if (yych == 'y')
+          goto yy841;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy834:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'R') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'Q')
+          goto yy822;
+      } else {
+        if (yych == 'r')
+          goto yy835;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy835:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'I') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'H')
+          goto yy822;
+      } else {
+        if (yych == 'i')
+          goto yy836;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy836:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'P') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'O')
+          goto yy822;
+      } else {
+        if (yych == 'p')
+          goto yy837;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy837:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'T') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'S')
+          goto yy822;
+      } else {
+        if (yych == 't')
+          goto yy838;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy838:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych == '\n')
+          goto yy812;
+        goto yy822;
+      } else {
+        if (yych <= '>')
+          goto yy839;
+        if (yych <= 0x7F)
+          goto yy822;
+        if (yych <= 0xC1)
+          goto yy812;
+        goto yy824;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych == 0xED)
+          goto yy830;
+        goto yy826;
+      } else {
+        if (yych <= 0xF0)
+          goto yy827;
+        if (yych <= 0xF3)
+          goto yy828;
+        if (yych <= 0xF4)
+          goto yy829;
+        goto yy812;
+      }
+    }
+  yy839:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy822;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy840;
+        if (yych <= '<')
+          goto yy820;
+      } else {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        goto yy826;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy830;
+        if (yych <= 0xEF)
+          goto yy826;
+        goto yy827;
+      } else {
+        if (yych <= 0xF3)
+          goto yy828;
+        if (yych <= 0xF4)
+          goto yy829;
+      }
+    }
+  yy840 : { return (bufsize_t)(p - start); }
+  yy841:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'L') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'K')
+          goto yy822;
+      } else {
+        if (yych == 'l')
+          goto yy842;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy842:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'E') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'D')
+          goto yy822;
+        goto yy838;
+      } else {
+        if (yych == 'e')
+          goto yy838;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  yy843:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy820;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'E') {
+        if (yych == '\n')
+          goto yy812;
+        if (yych <= 'D')
+          goto yy822;
+        goto yy838;
+      } else {
+        if (yych == 'e')
+          goto yy838;
+        if (yych <= 0x7F)
+          goto yy822;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy824;
+        if (yych <= 0xE0)
+          goto yy825;
+        if (yych <= 0xEC)
+          goto yy826;
+        goto yy830;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy826;
+          goto yy827;
+        } else {
+          if (yych <= 0xF3)
+            goto yy828;
+          if (yych <= 0xF4)
+            goto yy829;
+          goto yy812;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block end line of type 2
+bufsize_t _scan_html_block_end_2(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= ',') {
+        if (yych != '\n')
+          goto yy847;
+      } else {
+        if (yych <= '-')
+          goto yy848;
+        if (yych <= 0x7F)
+          goto yy847;
+        if (yych >= 0xC2)
+          goto yy849;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy851;
+        if (yych == 0xED)
+          goto yy856;
+        goto yy852;
+      } else {
+        if (yych <= 0xF0)
+          goto yy853;
+        if (yych <= 0xF3)
+          goto yy854;
+        if (yych <= 0xF4)
+          goto yy855;
+      }
+    }
+  yy846 : { return 0; }
+  yy847:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy846;
+      goto yy860;
+    } else {
+      if (yych <= 0xC1)
+        goto yy846;
+      if (yych <= 0xF4)
+        goto yy860;
+      goto yy846;
+    }
+  yy848:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 64) {
+      goto yy857;
+    }
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy846;
+      goto yy860;
+    } else {
+      if (yych <= 0xC1)
+        goto yy846;
+      if (yych <= 0xF4)
+        goto yy860;
+      goto yy846;
+    }
+  yy849:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy847;
+  yy850:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy846;
+    } else {
+      goto yy870;
+    }
+  yy851:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy849;
+    goto yy850;
+  yy852:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy849;
+    goto yy850;
+  yy853:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy852;
+    goto yy850;
+  yy854:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy852;
+    goto yy850;
+  yy855:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0x8F)
+      goto yy852;
+    goto yy850;
+  yy856:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0x9F)
+      goto yy849;
+    goto yy850;
+  yy857:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy857;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych == '\n')
+          goto yy850;
+      } else {
+        if (yych <= '>')
+          goto yy869;
+        if (yych <= 0x7F)
+          goto yy859;
+        if (yych <= 0xC1)
+          goto yy850;
+        goto yy861;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy862;
+        if (yych == 0xED)
+          goto yy867;
+        goto yy863;
+      } else {
+        if (yych <= 0xF0)
+          goto yy864;
+        if (yych <= 0xF3)
+          goto yy865;
+        if (yych <= 0xF4)
+          goto yy866;
+        goto yy850;
+      }
+    }
+  yy859:
+    ++p;
+    yych = *p;
+  yy860:
+    if (yybm[0 + yych] & 128) {
+      goto yy859;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy850;
+        if (yych <= '-')
+          goto yy868;
+        goto yy850;
+      } else {
+        if (yych <= 0xDF)
+          goto yy861;
+        if (yych <= 0xE0)
+          goto yy862;
+        goto yy863;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy867;
+        if (yych <= 0xEF)
+          goto yy863;
+        goto yy864;
+      } else {
+        if (yych <= 0xF3)
+          goto yy865;
+        if (yych <= 0xF4)
+          goto yy866;
+        goto yy850;
+      }
+    }
+  yy861:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy859;
+    goto yy850;
+  yy862:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy861;
+    goto yy850;
+  yy863:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy861;
+    goto yy850;
+  yy864:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy863;
+    goto yy850;
+  yy865:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0xBF)
+      goto yy863;
+    goto yy850;
+  yy866:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0x8F)
+      goto yy863;
+    goto yy850;
+  yy867:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy850;
+    if (yych <= 0x9F)
+      goto yy861;
+    goto yy850;
+  yy868:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy859;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy850;
+        if (yych <= '-')
+          goto yy857;
+        goto yy850;
+      } else {
+        if (yych <= 0xDF)
+          goto yy861;
+        if (yych <= 0xE0)
+          goto yy862;
+        goto yy863;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy867;
+        if (yych <= 0xEF)
+          goto yy863;
+        goto yy864;
+      } else {
+        if (yych <= 0xF3)
+          goto yy865;
+        if (yych <= 0xF4)
+          goto yy866;
+        goto yy850;
+      }
+    }
+  yy869:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy859;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy870;
+        if (yych <= '-')
+          goto yy868;
+      } else {
+        if (yych <= 0xDF)
+          goto yy861;
+        if (yych <= 0xE0)
+          goto yy862;
+        goto yy863;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy867;
+        if (yych <= 0xEF)
+          goto yy863;
+        goto yy864;
+      } else {
+        if (yych <= 0xF3)
+          goto yy865;
+        if (yych <= 0xF4)
+          goto yy866;
+      }
+    }
+  yy870 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match an HTML block end line of type 3
+bufsize_t _scan_html_block_end_3(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= '>') {
+        if (yych != '\n')
+          goto yy874;
+      } else {
+        if (yych <= '?')
+          goto yy875;
+        if (yych <= 0x7F)
+          goto yy874;
+        if (yych >= 0xC2)
+          goto yy876;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy878;
+        if (yych == 0xED)
+          goto yy883;
+        goto yy879;
+      } else {
+        if (yych <= 0xF0)
+          goto yy880;
+        if (yych <= 0xF3)
+          goto yy881;
+        if (yych <= 0xF4)
+          goto yy882;
+      }
+    }
+  yy873 : { return 0; }
+  yy874:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy873;
+      goto yy889;
+    } else {
+      if (yych <= 0xC1)
+        goto yy873;
+      if (yych <= 0xF4)
+        goto yy889;
+      goto yy873;
+    }
+  yy875:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '>') {
+      if (yych == '\n')
+        goto yy873;
+      if (yych <= '=')
+        goto yy889;
+      goto yy884;
+    } else {
+      if (yych <= 0x7F)
+        goto yy889;
+      if (yych <= 0xC1)
+        goto yy873;
+      if (yych <= 0xF4)
+        goto yy889;
+      goto yy873;
+    }
+  yy876:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy874;
+  yy877:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy873;
+    } else {
+      goto yy885;
+    }
+  yy878:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy876;
+    goto yy877;
+  yy879:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy876;
+    goto yy877;
+  yy880:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy879;
+    goto yy877;
+  yy881:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy879;
+    goto yy877;
+  yy882:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0x8F)
+      goto yy879;
+    goto yy877;
+  yy883:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0x9F)
+      goto yy876;
+    goto yy877;
+  yy884:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy888;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy885;
+        if (yych <= '?')
+          goto yy886;
+      } else {
+        if (yych <= 0xDF)
+          goto yy890;
+        if (yych <= 0xE0)
+          goto yy891;
+        goto yy892;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy896;
+        if (yych <= 0xEF)
+          goto yy892;
+        goto yy893;
+      } else {
+        if (yych <= 0xF3)
+          goto yy894;
+        if (yych <= 0xF4)
+          goto yy895;
+      }
+    }
+  yy885 : { return (bufsize_t)(p - start); }
+  yy886:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy886;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych == '\n')
+          goto yy877;
+      } else {
+        if (yych <= '>')
+          goto yy884;
+        if (yych <= 0x7F)
+          goto yy888;
+        if (yych <= 0xC1)
+          goto yy877;
+        goto yy890;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy891;
+        if (yych == 0xED)
+          goto yy896;
+        goto yy892;
+      } else {
+        if (yych <= 0xF0)
+          goto yy893;
+        if (yych <= 0xF3)
+          goto yy894;
+        if (yych <= 0xF4)
+          goto yy895;
+        goto yy877;
+      }
+    }
+  yy888:
+    ++p;
+    yych = *p;
+  yy889:
+    if (yybm[0 + yych] & 128) {
+      goto yy888;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy877;
+        if (yych <= '?')
+          goto yy886;
+        goto yy877;
+      } else {
+        if (yych <= 0xDF)
+          goto yy890;
+        if (yych <= 0xE0)
+          goto yy891;
+        goto yy892;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy896;
+        if (yych <= 0xEF)
+          goto yy892;
+        goto yy893;
+      } else {
+        if (yych <= 0xF3)
+          goto yy894;
+        if (yych <= 0xF4)
+          goto yy895;
+        goto yy877;
+      }
+    }
+  yy890:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy888;
+    goto yy877;
+  yy891:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy890;
+    goto yy877;
+  yy892:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy890;
+    goto yy877;
+  yy893:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy892;
+    goto yy877;
+  yy894:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0xBF)
+      goto yy892;
+    goto yy877;
+  yy895:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0x8F)
+      goto yy892;
+    goto yy877;
+  yy896:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy877;
+    if (yych <= 0x9F)
+      goto yy890;
+    goto yy877;
+  }
+}
+
+// Try to match an HTML block end line of type 4
+bufsize_t _scan_html_block_end_4(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych != '\n')
+          goto yy900;
+      } else {
+        if (yych <= '>')
+          goto yy901;
+        if (yych <= 0x7F)
+          goto yy900;
+        if (yych >= 0xC2)
+          goto yy903;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy905;
+        if (yych == 0xED)
+          goto yy910;
+        goto yy906;
+      } else {
+        if (yych <= 0xF0)
+          goto yy907;
+        if (yych <= 0xF3)
+          goto yy908;
+        if (yych <= 0xF4)
+          goto yy909;
+      }
+    }
+  yy899 : { return 0; }
+  yy900:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy899;
+      goto yy914;
+    } else {
+      if (yych <= 0xC1)
+        goto yy899;
+      if (yych <= 0xF4)
+        goto yy914;
+      goto yy899;
+    }
+  yy901:
+    yyaccept = 1;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych != '\n')
+        goto yy914;
+    } else {
+      if (yych <= 0xC1)
+        goto yy902;
+      if (yych <= 0xF4)
+        goto yy914;
+    }
+  yy902 : { return (bufsize_t)(p - start); }
+  yy903:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy900;
+  yy904:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy899;
+    } else {
+      goto yy902;
+    }
+  yy905:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy903;
+    goto yy904;
+  yy906:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy903;
+    goto yy904;
+  yy907:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy906;
+    goto yy904;
+  yy908:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy906;
+    goto yy904;
+  yy909:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0x8F)
+      goto yy906;
+    goto yy904;
+  yy910:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0x9F)
+      goto yy903;
+    goto yy904;
+  yy911:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy913;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy902;
+        if (yych <= '>')
+          goto yy911;
+        goto yy902;
+      } else {
+        if (yych <= 0xDF)
+          goto yy915;
+        if (yych <= 0xE0)
+          goto yy916;
+        goto yy917;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy921;
+        if (yych <= 0xEF)
+          goto yy917;
+        goto yy918;
+      } else {
+        if (yych <= 0xF3)
+          goto yy919;
+        if (yych <= 0xF4)
+          goto yy920;
+        goto yy902;
+      }
+    }
+  yy913:
+    ++p;
+    yych = *p;
+  yy914:
+    if (yybm[0 + yych] & 128) {
+      goto yy913;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy904;
+        if (yych <= '>')
+          goto yy911;
+        goto yy904;
+      } else {
+        if (yych <= 0xDF)
+          goto yy915;
+        if (yych <= 0xE0)
+          goto yy916;
+        goto yy917;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy921;
+        if (yych <= 0xEF)
+          goto yy917;
+        goto yy918;
+      } else {
+        if (yych <= 0xF3)
+          goto yy919;
+        if (yych <= 0xF4)
+          goto yy920;
+        goto yy904;
+      }
+    }
+  yy915:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy913;
+    goto yy904;
+  yy916:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy915;
+    goto yy904;
+  yy917:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy915;
+    goto yy904;
+  yy918:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy917;
+    goto yy904;
+  yy919:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0xBF)
+      goto yy917;
+    goto yy904;
+  yy920:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0x8F)
+      goto yy917;
+    goto yy904;
+  yy921:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy904;
+    if (yych <= 0x9F)
+      goto yy915;
+    goto yy904;
+  }
+}
+
+// Try to match an HTML block end line of type 5
+bufsize_t _scan_html_block_end_5(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= '\\') {
+        if (yych != '\n')
+          goto yy925;
+      } else {
+        if (yych <= ']')
+          goto yy926;
+        if (yych <= 0x7F)
+          goto yy925;
+        if (yych >= 0xC2)
+          goto yy927;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy929;
+        if (yych == 0xED)
+          goto yy934;
+        goto yy930;
+      } else {
+        if (yych <= 0xF0)
+          goto yy931;
+        if (yych <= 0xF3)
+          goto yy932;
+        if (yych <= 0xF4)
+          goto yy933;
+      }
+    }
+  yy924 : { return 0; }
+  yy925:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy924;
+      goto yy938;
+    } else {
+      if (yych <= 0xC1)
+        goto yy924;
+      if (yych <= 0xF4)
+        goto yy938;
+      goto yy924;
+    }
+  yy926:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 64) {
+      goto yy935;
+    }
+    if (yych <= 0x7F) {
+      if (yych == '\n')
+        goto yy924;
+      goto yy938;
+    } else {
+      if (yych <= 0xC1)
+        goto yy924;
+      if (yych <= 0xF4)
+        goto yy938;
+      goto yy924;
+    }
+  yy927:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy925;
+  yy928:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy924;
+    } else {
+      goto yy948;
+    }
+  yy929:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy927;
+    goto yy928;
+  yy930:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy927;
+    goto yy928;
+  yy931:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy930;
+    goto yy928;
+  yy932:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy930;
+    goto yy928;
+  yy933:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0x8F)
+      goto yy930;
+    goto yy928;
+  yy934:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0x9F)
+      goto yy927;
+    goto yy928;
+  yy935:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy935;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych == '\n')
+          goto yy928;
+      } else {
+        if (yych <= '>')
+          goto yy947;
+        if (yych <= 0x7F)
+          goto yy937;
+        if (yych <= 0xC1)
+          goto yy928;
+        goto yy939;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy940;
+        if (yych == 0xED)
+          goto yy945;
+        goto yy941;
+      } else {
+        if (yych <= 0xF0)
+          goto yy942;
+        if (yych <= 0xF3)
+          goto yy943;
+        if (yych <= 0xF4)
+          goto yy944;
+        goto yy928;
+      }
+    }
+  yy937:
+    ++p;
+    yych = *p;
+  yy938:
+    if (yybm[0 + yych] & 128) {
+      goto yy937;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy928;
+        if (yych <= ']')
+          goto yy946;
+        goto yy928;
+      } else {
+        if (yych <= 0xDF)
+          goto yy939;
+        if (yych <= 0xE0)
+          goto yy940;
+        goto yy941;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy945;
+        if (yych <= 0xEF)
+          goto yy941;
+        goto yy942;
+      } else {
+        if (yych <= 0xF3)
+          goto yy943;
+        if (yych <= 0xF4)
+          goto yy944;
+        goto yy928;
+      }
+    }
+  yy939:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy937;
+    goto yy928;
+  yy940:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy939;
+    goto yy928;
+  yy941:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy939;
+    goto yy928;
+  yy942:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy941;
+    goto yy928;
+  yy943:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0xBF)
+      goto yy941;
+    goto yy928;
+  yy944:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0x8F)
+      goto yy941;
+    goto yy928;
+  yy945:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy928;
+    if (yych <= 0x9F)
+      goto yy939;
+    goto yy928;
+  yy946:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy937;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy928;
+        if (yych <= ']')
+          goto yy935;
+        goto yy928;
+      } else {
+        if (yych <= 0xDF)
+          goto yy939;
+        if (yych <= 0xE0)
+          goto yy940;
+        goto yy941;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy945;
+        if (yych <= 0xEF)
+          goto yy941;
+        goto yy942;
+      } else {
+        if (yych <= 0xF3)
+          goto yy943;
+        if (yych <= 0xF4)
+          goto yy944;
+        goto yy928;
+      }
+    }
+  yy947:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy937;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy948;
+        if (yych <= ']')
+          goto yy946;
+      } else {
+        if (yych <= 0xDF)
+          goto yy939;
+        if (yych <= 0xE0)
+          goto yy940;
+        goto yy941;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy945;
+        if (yych <= 0xEF)
+          goto yy941;
+        goto yy942;
+      } else {
+        if (yych <= 0xF3)
+          goto yy943;
+        if (yych <= 0xF4)
+          goto yy944;
+      }
+    }
+  yy948 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match a URL in a link or reference, return number of chars matched.
+// This may optionally be contained in <..>; otherwise
+// whitespace and unbalanced right parentheses aren't allowed.
+// Newlines aren't ever allowed.
+bufsize_t _scan_link_url(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   128, 128, 128, 128, 128, 128, 128, 128, 0,   8,   128, 128, 8,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 8,   224, 224, 224, 224, 224, 224, 224, 128, 128,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 32,  224, 32,  224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= '[') {
+      if (yych <= ' ') {
+        if (yych <= '\f') {
+          if (yych == '\n')
+            goto yy952;
+          goto yy968;
+        } else {
+          if (yych <= '\r')
+            goto yy954;
+          if (yych <= 0x1F)
+            goto yy968;
+          goto yy954;
+        }
+      } else {
+        if (yych <= ')') {
+          if (yych <= '\'')
+            goto yy956;
+          if (yych <= '(')
+            goto yy966;
+          goto yy968;
+        } else {
+          if (yych == '<')
+            goto yy955;
+          goto yy956;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy965;
+          if (yych <= 0x7F)
+            goto yy956;
+        } else {
+          if (yych <= 0xDF)
+            goto yy957;
+          if (yych <= 0xE0)
+            goto yy959;
+          goto yy960;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy964;
+          if (yych <= 0xEF)
+            goto yy960;
+          goto yy961;
+        } else {
+          if (yych <= 0xF3)
+            goto yy962;
+          if (yych <= 0xF4)
+            goto yy963;
+        }
+      }
+    }
+  yy951 : { return (bufsize_t)(p - start); }
+  yy952:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+  yy953:
+    if (yybm[0 + yych] & 8) {
+      goto yy952;
+    }
+    if (yych <= 0x7F) {
+      if (yych <= ')') {
+        if (yych <= 0x1F)
+          goto yy951;
+        if (yych <= '\'')
+          goto yy980;
+        if (yych <= '(')
+          goto yy971;
+        goto yy951;
+      } else {
+        if (yych <= '<') {
+          if (yych <= ';')
+            goto yy980;
+          goto yy1016;
+        } else {
+          if (yych == '\\')
+            goto yy982;
+          goto yy980;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF) {
+          if (yych <= 0xC1)
+            goto yy951;
+          goto yy983;
+        } else {
+          if (yych <= 0xE0)
+            goto yy984;
+          if (yych <= 0xEC)
+            goto yy985;
+          goto yy989;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy985;
+          goto yy986;
+        } else {
+          if (yych <= 0xF3)
+            goto yy987;
+          if (yych <= 0xF4)
+            goto yy988;
+          goto yy951;
+        }
+      }
+    }
+  yy954:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    goto yy953;
+  yy955:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 64) {
+      goto yy1016;
+    }
+    if (yych <= '>') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy951;
+          goto yy1029;
+        } else {
+          if (yych <= '\n')
+            goto yy951;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy951;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= 0x1F)
+            goto yy1029;
+          if (yych <= ' ')
+            goto yy951;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1029;
+          if (yych <= '<')
+            goto yy980;
+          goto yy1018;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy1015;
+          goto yy951;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1020;
+          if (yych <= 0xE0)
+            goto yy1021;
+          goto yy1022;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1026;
+          if (yych <= 0xEF)
+            goto yy1022;
+          goto yy1023;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1024;
+          if (yych <= 0xF4)
+            goto yy1025;
+          goto yy951;
+        }
+      }
+    }
+  yy956:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    goto yy981;
+  yy957:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy956;
+  yy958:
+    p = marker;
+    if (yyaccept <= 1) {
+      if (yyaccept == 0) {
+        goto yy951;
+      } else {
+        goto yy967;
+      }
+    } else {
+      goto yy1019;
+    }
+  yy959:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy957;
+    goto yy958;
+  yy960:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy957;
+    goto yy958;
+  yy961:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy960;
+    goto yy958;
+  yy962:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy960;
+    goto yy958;
+  yy963:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy960;
+    goto yy958;
+  yy964:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy957;
+    goto yy958;
+  yy965:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0xDF) {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy980;
+        if (yych <= '\r')
+          goto yy951;
+        goto yy980;
+      } else {
+        if (yych <= ' ')
+          goto yy951;
+        if (yych <= 0x7F)
+          goto yy980;
+        if (yych <= 0xC1)
+          goto yy951;
+        goto yy990;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy991;
+        if (yych == 0xED)
+          goto yy996;
+        goto yy992;
+      } else {
+        if (yych <= 0xF0)
+          goto yy993;
+        if (yych <= 0xF3)
+          goto yy994;
+        if (yych <= 0xF4)
+          goto yy995;
+        goto yy951;
+      }
+    }
+  yy966:
+    yyaccept = 1;
+    yych = *(marker = ++p);
+    if (yych <= '(') {
+      if (yych <= ' ')
+        goto yy967;
+      if (yych <= '\'')
+        goto yy972;
+    } else {
+      if (yych <= 0x7F)
+        goto yy972;
+      if (yych <= 0xC1)
+        goto yy967;
+      if (yych <= 0xF4)
+        goto yy972;
+    }
+  yy967 : { return 0; }
+  yy968:
+    yych = *++p;
+    goto yy967;
+  yy969:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy969;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= ')') {
+        if (yych <= ' ')
+          goto yy958;
+        if (yych >= ')')
+          goto yy997;
+      } else {
+        if (yych <= 0x7F)
+          goto yy971;
+        if (yych <= 0xC1)
+          goto yy958;
+        if (yych <= 0xDF)
+          goto yy973;
+        goto yy974;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy979;
+        goto yy975;
+      } else {
+        if (yych <= 0xF0)
+          goto yy976;
+        if (yych <= 0xF3)
+          goto yy977;
+        if (yych <= 0xF4)
+          goto yy978;
+        goto yy958;
+      }
+    }
+  yy971:
+    ++p;
+    yych = *p;
+  yy972:
+    if (yybm[0 + yych] & 32) {
+      goto yy971;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= '(')
+          goto yy958;
+        if (yych <= ')')
+          goto yy980;
+        goto yy969;
+      } else {
+        if (yych <= 0xC1)
+          goto yy958;
+        if (yych >= 0xE0)
+          goto yy974;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy979;
+        goto yy975;
+      } else {
+        if (yych <= 0xF0)
+          goto yy976;
+        if (yych <= 0xF3)
+          goto yy977;
+        if (yych <= 0xF4)
+          goto yy978;
+        goto yy958;
+      }
+    }
+  yy973:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy971;
+    goto yy958;
+  yy974:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy973;
+    goto yy958;
+  yy975:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy973;
+    goto yy958;
+  yy976:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy975;
+    goto yy958;
+  yy977:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy975;
+    goto yy958;
+  yy978:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy975;
+    goto yy958;
+  yy979:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy973;
+    goto yy958;
+  yy980:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+  yy981:
+    if (yych <= 0xC1) {
+      if (yych <= ')') {
+        if (yych <= ' ')
+          goto yy951;
+        if (yych <= '\'')
+          goto yy980;
+        if (yych <= '(')
+          goto yy971;
+        goto yy951;
+      } else {
+        if (yych == '\\')
+          goto yy982;
+        if (yych <= 0x7F)
+          goto yy980;
+        goto yy951;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy983;
+        if (yych <= 0xE0)
+          goto yy984;
+        if (yych <= 0xEC)
+          goto yy985;
+        goto yy989;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy985;
+          goto yy986;
+        } else {
+          if (yych <= 0xF3)
+            goto yy987;
+          if (yych <= 0xF4)
+            goto yy988;
+          goto yy951;
+        }
+      }
+    }
+  yy982:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy980;
+        if (yych <= '\r')
+          goto yy951;
+        goto yy980;
+      } else {
+        if (yych <= ' ')
+          goto yy951;
+        if (yych <= 0x7F)
+          goto yy980;
+        if (yych <= 0xC1)
+          goto yy951;
+        goto yy990;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy991;
+        if (yych == 0xED)
+          goto yy996;
+        goto yy992;
+      } else {
+        if (yych <= 0xF0)
+          goto yy993;
+        if (yych <= 0xF3)
+          goto yy994;
+        if (yych <= 0xF4)
+          goto yy995;
+        goto yy951;
+      }
+    }
+  yy983:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy980;
+    goto yy958;
+  yy984:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy983;
+    goto yy958;
+  yy985:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy983;
+    goto yy958;
+  yy986:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy985;
+    goto yy958;
+  yy987:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy985;
+    goto yy958;
+  yy988:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy985;
+    goto yy958;
+  yy989:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy983;
+    goto yy958;
+  yy990:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy980;
+    goto yy958;
+  yy991:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy990;
+    goto yy958;
+  yy992:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy990;
+    goto yy958;
+  yy993:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy992;
+    goto yy958;
+  yy994:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy992;
+    goto yy958;
+  yy995:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy992;
+    goto yy958;
+  yy996:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy990;
+    goto yy958;
+  yy997:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+  yy998:
+    if (yych <= 0xC1) {
+      if (yych <= ')') {
+        if (yych <= ' ')
+          goto yy951;
+        if (yych <= '\'')
+          goto yy997;
+        if (yych <= '(')
+          goto yy971;
+        goto yy980;
+      } else {
+        if (yych == '\\')
+          goto yy999;
+        if (yych <= 0x7F)
+          goto yy997;
+        goto yy951;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1000;
+        if (yych <= 0xE0)
+          goto yy1001;
+        if (yych <= 0xEC)
+          goto yy1002;
+        goto yy1006;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1002;
+          goto yy1003;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1004;
+          if (yych <= 0xF4)
+            goto yy1005;
+          goto yy951;
+        }
+      }
+    }
+  yy999:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= 0xC1) {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy980;
+        if (yych <= '\r')
+          goto yy951;
+        if (yych <= 0x1F)
+          goto yy980;
+        goto yy951;
+      } else {
+        if (yych == '\\')
+          goto yy1007;
+        if (yych <= 0x7F)
+          goto yy997;
+        goto yy951;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1008;
+        if (yych <= 0xE0)
+          goto yy1009;
+        if (yych <= 0xEC)
+          goto yy1010;
+        goto yy1014;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1010;
+          goto yy1011;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1012;
+          if (yych <= 0xF4)
+            goto yy1013;
+          goto yy951;
+        }
+      }
+    }
+  yy1000:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy997;
+    goto yy958;
+  yy1001:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1000;
+    goto yy958;
+  yy1002:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1000;
+    goto yy958;
+  yy1003:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1002;
+    goto yy958;
+  yy1004:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1002;
+    goto yy958;
+  yy1005:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1002;
+    goto yy958;
+  yy1006:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1000;
+    goto yy958;
+  yy1007:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '[') {
+        if (yych <= ' ')
+          goto yy951;
+        if (yych == '(')
+          goto yy971;
+        goto yy997;
+      } else {
+        if (yych <= '\\')
+          goto yy999;
+        if (yych <= 0x7F)
+          goto yy997;
+        if (yych <= 0xC1)
+          goto yy951;
+        goto yy1000;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy1001;
+        if (yych == 0xED)
+          goto yy1006;
+        goto yy1002;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1003;
+        if (yych <= 0xF3)
+          goto yy1004;
+        if (yych <= 0xF4)
+          goto yy1005;
+        goto yy951;
+      }
+    }
+  yy1008:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy997;
+    goto yy958;
+  yy1009:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1008;
+    goto yy958;
+  yy1010:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1008;
+    goto yy958;
+  yy1011:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1010;
+    goto yy958;
+  yy1012:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1010;
+    goto yy958;
+  yy1013:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1010;
+    goto yy958;
+  yy1014:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1008;
+    goto yy958;
+  yy1015:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '\\') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy980;
+        } else {
+          if (yych <= '\n')
+            goto yy951;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy951;
+        }
+      } else {
+        if (yych <= '=') {
+          if (yych == ' ')
+            goto yy951;
+        } else {
+          if (yych <= '>')
+            goto yy1073;
+          if (yych >= '\\')
+            goto yy1074;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych >= 0x80)
+            goto yy951;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1075;
+          if (yych <= 0xE0)
+            goto yy1076;
+          goto yy1077;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1081;
+          if (yych <= 0xEF)
+            goto yy1077;
+          goto yy1078;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1079;
+          if (yych <= 0xF4)
+            goto yy1080;
+          goto yy951;
+        }
+      }
+    }
+  yy1016:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1016;
+    }
+    if (yych <= '>') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy951;
+          goto yy1029;
+        } else {
+          if (yych <= '\n')
+            goto yy951;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy951;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= 0x1F)
+            goto yy1029;
+          if (yych <= ' ')
+            goto yy951;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1029;
+          if (yych <= '<')
+            goto yy980;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy1015;
+          goto yy951;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1020;
+          if (yych <= 0xE0)
+            goto yy1021;
+          goto yy1022;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1026;
+          if (yych <= 0xEF)
+            goto yy1022;
+          goto yy1023;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1024;
+          if (yych <= 0xF4)
+            goto yy1025;
+          goto yy951;
+        }
+      }
+    }
+  yy1018:
+    yyaccept = 2;
+    yych = *(marker = ++p);
+    if (yych <= ')') {
+      if (yych <= ' ')
+        goto yy1019;
+      if (yych <= '(')
+        goto yy981;
+    } else {
+      if (yych <= 0x7F)
+        goto yy981;
+      if (yych <= 0xC1)
+        goto yy1019;
+      if (yych <= 0xF4)
+        goto yy981;
+    }
+  yy1019 : { return (bufsize_t)(p - start); }
+  yy1020:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1016;
+    goto yy958;
+  yy1021:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1020;
+    goto yy958;
+  yy1022:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1020;
+    goto yy958;
+  yy1023:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1022;
+    goto yy958;
+  yy1024:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1022;
+    goto yy958;
+  yy1025:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1022;
+    goto yy958;
+  yy1026:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1020;
+    goto yy958;
+  yy1027:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy958;
+          if (yych >= '\t')
+            goto yy958;
+        } else {
+          if (yych == '\r')
+            goto yy958;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy958;
+          if (yych <= '\'')
+            goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1016;
+          if (yych == '<')
+            goto yy971;
+          goto yy1027;
+        }
+      }
+    } else {
+      if (yych <= 0xE0) {
+        if (yych <= '\\') {
+          if (yych <= '>')
+            goto yy1042;
+          if (yych <= '[')
+            goto yy1027;
+          goto yy1043;
+        } else {
+          if (yych <= 0x7F)
+            goto yy1027;
+          if (yych <= 0xC1)
+            goto yy958;
+          if (yych <= 0xDF)
+            goto yy1045;
+          goto yy1046;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych == 0xED)
+            goto yy1051;
+          goto yy1047;
+        } else {
+          if (yych <= 0xF0)
+            goto yy1048;
+          if (yych <= 0xF3)
+            goto yy1049;
+          if (yych <= 0xF4)
+            goto yy1050;
+          goto yy958;
+        }
+      }
+    }
+  yy1029:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1029;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= '<')
+          goto yy958;
+        if (yych >= '?')
+          goto yy1032;
+      } else {
+        if (yych <= 0xC1)
+          goto yy958;
+        if (yych <= 0xDF)
+          goto yy1034;
+        goto yy1035;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1040;
+        goto yy1036;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1037;
+        if (yych <= 0xF3)
+          goto yy1038;
+        if (yych <= 0xF4)
+          goto yy1039;
+        goto yy958;
+      }
+    }
+  yy1031:
+    yych = *++p;
+    goto yy1019;
+  yy1032:
+    ++p;
+    yych = *p;
+    if (yych <= '\\') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy958;
+          goto yy1029;
+        } else {
+          if (yych <= '\n')
+            goto yy958;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy958;
+        }
+      } else {
+        if (yych <= '=') {
+          if (yych == ' ')
+            goto yy958;
+          goto yy1029;
+        } else {
+          if (yych <= '>')
+            goto yy1041;
+          if (yych <= '[')
+            goto yy1029;
+          goto yy1032;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy1029;
+          goto yy958;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1034;
+          if (yych <= 0xE0)
+            goto yy1035;
+          goto yy1036;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1040;
+          if (yych <= 0xEF)
+            goto yy1036;
+          goto yy1037;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1038;
+          if (yych <= 0xF4)
+            goto yy1039;
+          goto yy958;
+        }
+      }
+    }
+  yy1034:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1029;
+    goto yy958;
+  yy1035:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1034;
+    goto yy958;
+  yy1036:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1034;
+    goto yy958;
+  yy1037:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1036;
+    goto yy958;
+  yy1038:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1036;
+    goto yy958;
+  yy1039:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1036;
+    goto yy958;
+  yy1040:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1034;
+    goto yy958;
+  yy1041:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1029;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= '<')
+          goto yy1019;
+        if (yych <= '>')
+          goto yy1031;
+        goto yy1032;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1019;
+        if (yych <= 0xDF)
+          goto yy1034;
+        goto yy1035;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1040;
+        goto yy1036;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1037;
+        if (yych <= 0xF3)
+          goto yy1038;
+        if (yych <= 0xF4)
+          goto yy1039;
+        goto yy1019;
+      }
+    }
+  yy1042:
+    yyaccept = 2;
+    yych = *(marker = ++p);
+    if (yych <= '(') {
+      if (yych <= ' ')
+        goto yy1019;
+      if (yych <= '\'')
+        goto yy972;
+      goto yy1019;
+    } else {
+      if (yych <= 0x7F)
+        goto yy972;
+      if (yych <= 0xC1)
+        goto yy1019;
+      if (yych <= 0xF4)
+        goto yy972;
+      goto yy1019;
+    }
+  yy1043:
+    ++p;
+    yych = *p;
+    if (yych <= '[') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy958;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy958;
+        } else {
+          if (yych == '\r')
+            goto yy958;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= ')') {
+          if (yych <= ' ')
+            goto yy958;
+          if (yych <= '(')
+            goto yy1027;
+          goto yy1052;
+        } else {
+          if (yych == '>')
+            goto yy1054;
+          goto yy1027;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy1043;
+          if (yych <= 0x7F)
+            goto yy1027;
+          goto yy958;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1045;
+          if (yych <= 0xE0)
+            goto yy1046;
+          goto yy1047;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1051;
+          if (yych <= 0xEF)
+            goto yy1047;
+          goto yy1048;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1049;
+          if (yych <= 0xF4)
+            goto yy1050;
+          goto yy958;
+        }
+      }
+    }
+  yy1045:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1027;
+    goto yy958;
+  yy1046:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1045;
+    goto yy958;
+  yy1047:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1045;
+    goto yy958;
+  yy1048:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1047;
+    goto yy958;
+  yy1049:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1047;
+    goto yy958;
+  yy1050:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1047;
+    goto yy958;
+  yy1051:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1045;
+    goto yy958;
+  yy1052:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy951;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy951;
+        } else {
+          if (yych == '\r')
+            goto yy951;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy951;
+          if (yych <= '\'')
+            goto yy1052;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1016;
+          if (yych == '<')
+            goto yy997;
+          goto yy1052;
+        }
+      }
+    } else {
+      if (yych <= 0xE0) {
+        if (yych <= '\\') {
+          if (yych <= '>')
+            goto yy1055;
+          if (yych <= '[')
+            goto yy1052;
+          goto yy1056;
+        } else {
+          if (yych <= 0x7F)
+            goto yy1052;
+          if (yych <= 0xC1)
+            goto yy951;
+          if (yych <= 0xDF)
+            goto yy1057;
+          goto yy1058;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych == 0xED)
+            goto yy1063;
+          goto yy1059;
+        } else {
+          if (yych <= 0xF0)
+            goto yy1060;
+          if (yych <= 0xF3)
+            goto yy1061;
+          if (yych <= 0xF4)
+            goto yy1062;
+          goto yy951;
+        }
+      }
+    }
+  yy1054:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy1019;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy1019;
+        } else {
+          if (yych == '\r')
+            goto yy1019;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy1019;
+          if (yych <= '\'')
+            goto yy1027;
+          goto yy1029;
+        } else {
+          if (yych <= ')')
+            goto yy1016;
+          if (yych == '<')
+            goto yy971;
+          goto yy1027;
+        }
+      }
+    } else {
+      if (yych <= 0xE0) {
+        if (yych <= '\\') {
+          if (yych <= '>')
+            goto yy1042;
+          if (yych <= '[')
+            goto yy1027;
+          goto yy1043;
+        } else {
+          if (yych <= 0x7F)
+            goto yy1027;
+          if (yych <= 0xC1)
+            goto yy1019;
+          if (yych <= 0xDF)
+            goto yy1045;
+          goto yy1046;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych == 0xED)
+            goto yy1051;
+          goto yy1047;
+        } else {
+          if (yych <= 0xF0)
+            goto yy1048;
+          if (yych <= 0xF3)
+            goto yy1049;
+          if (yych <= 0xF4)
+            goto yy1050;
+          goto yy1019;
+        }
+      }
+    }
+  yy1055:
+    yyaccept = 2;
+    yych = *(marker = ++p);
+    if (yych <= ' ')
+      goto yy1019;
+    if (yych <= 0x7F)
+      goto yy998;
+    if (yych <= 0xC1)
+      goto yy1019;
+    if (yych <= 0xF4)
+      goto yy998;
+    goto yy1019;
+  yy1056:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '\\') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy980;
+          goto yy1016;
+        } else {
+          if (yych <= '\n')
+            goto yy951;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy951;
+        }
+      } else {
+        if (yych <= '=') {
+          if (yych <= 0x1F)
+            goto yy1016;
+          if (yych <= ' ')
+            goto yy951;
+          goto yy1052;
+        } else {
+          if (yych <= '>')
+            goto yy1064;
+          if (yych <= '[')
+            goto yy1052;
+          goto yy1065;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy1052;
+          goto yy951;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1066;
+          if (yych <= 0xE0)
+            goto yy1067;
+          goto yy1068;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1072;
+          if (yych <= 0xEF)
+            goto yy1068;
+          goto yy1069;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1070;
+          if (yych <= 0xF4)
+            goto yy1071;
+          goto yy951;
+        }
+      }
+    }
+  yy1057:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1052;
+    goto yy958;
+  yy1058:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1057;
+    goto yy958;
+  yy1059:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1057;
+    goto yy958;
+  yy1060:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1059;
+    goto yy958;
+  yy1061:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1059;
+    goto yy958;
+  yy1062:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1059;
+    goto yy958;
+  yy1063:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1057;
+    goto yy958;
+  yy1064:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy1019;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy1019;
+        } else {
+          if (yych == '\r')
+            goto yy1019;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy1019;
+          if (yych <= '\'')
+            goto yy1052;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1016;
+          if (yych == '<')
+            goto yy997;
+          goto yy1052;
+        }
+      }
+    } else {
+      if (yych <= 0xE0) {
+        if (yych <= '\\') {
+          if (yych <= '>')
+            goto yy1055;
+          if (yych <= '[')
+            goto yy1052;
+          goto yy1056;
+        } else {
+          if (yych <= 0x7F)
+            goto yy1052;
+          if (yych <= 0xC1)
+            goto yy1019;
+          if (yych <= 0xDF)
+            goto yy1057;
+          goto yy1058;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych == 0xED)
+            goto yy1063;
+          goto yy1059;
+        } else {
+          if (yych <= 0xF0)
+            goto yy1060;
+          if (yych <= 0xF3)
+            goto yy1061;
+          if (yych <= 0xF4)
+            goto yy1062;
+          goto yy1019;
+        }
+      }
+    }
+  yy1065:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '[') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy951;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy951;
+        } else {
+          if (yych == '\r')
+            goto yy951;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy951;
+          if (yych <= '\'')
+            goto yy1052;
+          goto yy1027;
+        } else {
+          if (yych == '>')
+            goto yy1064;
+          goto yy1052;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy1056;
+          if (yych <= 0x7F)
+            goto yy1052;
+          goto yy951;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1057;
+          if (yych <= 0xE0)
+            goto yy1058;
+          goto yy1059;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1063;
+          if (yych <= 0xEF)
+            goto yy1059;
+          goto yy1060;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1061;
+          if (yych <= 0xF4)
+            goto yy1062;
+          goto yy951;
+        }
+      }
+    }
+  yy1066:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1052;
+    goto yy958;
+  yy1067:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1066;
+    goto yy958;
+  yy1068:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1066;
+    goto yy958;
+  yy1069:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1068;
+    goto yy958;
+  yy1070:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1068;
+    goto yy958;
+  yy1071:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1068;
+    goto yy958;
+  yy1072:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1066;
+    goto yy958;
+  yy1073:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1016;
+    }
+    if (yych <= '>') {
+      if (yych <= '\r') {
+        if (yych <= 0x08) {
+          if (yych <= 0x00)
+            goto yy1019;
+          goto yy1029;
+        } else {
+          if (yych <= '\n')
+            goto yy1019;
+          if (yych <= '\f')
+            goto yy1029;
+          goto yy1019;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= 0x1F)
+            goto yy1029;
+          if (yych <= ' ')
+            goto yy1019;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1029;
+          if (yych <= '<')
+            goto yy980;
+          goto yy1018;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= '\\')
+            goto yy1015;
+          goto yy1019;
+        } else {
+          if (yych <= 0xDF)
+            goto yy1020;
+          if (yych <= 0xE0)
+            goto yy1021;
+          goto yy1022;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy1026;
+          if (yych <= 0xEF)
+            goto yy1022;
+          goto yy1023;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1024;
+          if (yych <= 0xF4)
+            goto yy1025;
+          goto yy1019;
+        }
+      }
+    }
+  yy1074:
+    yyaccept = 0;
+    marker = ++p;
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= 0x1F) {
+        if (yych <= '\n') {
+          if (yych <= 0x00)
+            goto yy951;
+          if (yych <= 0x08)
+            goto yy1029;
+          goto yy951;
+        } else {
+          if (yych == '\r')
+            goto yy951;
+          goto yy1029;
+        }
+      } else {
+        if (yych <= '(') {
+          if (yych <= ' ')
+            goto yy951;
+          if (yych <= '\'')
+            goto yy1016;
+          goto yy1027;
+        } else {
+          if (yych <= ')')
+            goto yy1029;
+          if (yych <= '=')
+            goto yy1016;
+          goto yy1073;
+        }
+      }
+    } else {
+      if (yych <= 0xE0) {
+        if (yych <= 0x7F) {
+          if (yych == '\\')
+            goto yy1015;
+          goto yy1016;
+        } else {
+          if (yych <= 0xC1)
+            goto yy951;
+          if (yych <= 0xDF)
+            goto yy1020;
+          goto yy1021;
+        }
+      } else {
+        if (yych <= 0xEF) {
+          if (yych == 0xED)
+            goto yy1026;
+          goto yy1022;
+        } else {
+          if (yych <= 0xF0)
+            goto yy1023;
+          if (yych <= 0xF3)
+            goto yy1024;
+          if (yych <= 0xF4)
+            goto yy1025;
+          goto yy951;
+        }
+      }
+    }
+  yy1075:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1016;
+    goto yy958;
+  yy1076:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1075;
+    goto yy958;
+  yy1077:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1075;
+    goto yy958;
+  yy1078:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1077;
+    goto yy958;
+  yy1079:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0xBF)
+      goto yy1077;
+    goto yy958;
+  yy1080:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x8F)
+      goto yy1077;
+    goto yy958;
+  yy1081:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy958;
+    if (yych <= 0x9F)
+      goto yy1075;
+    goto yy958;
+  }
+}
+
+// Try to match a link title (in single quotes, in double quotes, or
+// in parentheses), returning number of chars matched.  Allow one
+// level of internal nesting (quotes within quotes).
+bufsize_t _scan_link_title(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xC1) {
+      if (yych <= '"') {
+        if (yych == '\n')
+          goto yy1084;
+        if (yych <= '!')
+          goto yy1088;
+        goto yy1085;
+      } else {
+        if (yych <= '\'') {
+          if (yych <= '&')
+            goto yy1088;
+          goto yy1086;
+        } else {
+          if (yych <= '(')
+            goto yy1087;
+          if (yych <= 0x7F)
+            goto yy1088;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1089;
+        if (yych <= 0xE0)
+          goto yy1091;
+        if (yych <= 0xEC)
+          goto yy1092;
+        goto yy1096;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1092;
+          goto yy1093;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1094;
+          if (yych <= 0xF4)
+            goto yy1095;
+        }
+      }
+    }
+  yy1084 : { return 0; }
+  yy1085:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy1084;
+    if (yych <= 0x7F)
+      goto yy1128;
+    if (yych <= 0xC1)
+      goto yy1084;
+    if (yych <= 0xF4)
+      goto yy1128;
+    goto yy1084;
+  yy1086:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy1084;
+    if (yych <= 0x7F)
+      goto yy1114;
+    if (yych <= 0xC1)
+      goto yy1084;
+    if (yych <= 0xF4)
+      goto yy1114;
+    goto yy1084;
+  yy1087:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy1084;
+    if (yych <= 0x7F)
+      goto yy1100;
+    if (yych <= 0xC1)
+      goto yy1084;
+    if (yych <= 0xF4)
+      goto yy1100;
+    goto yy1084;
+  yy1088:
+    yych = *++p;
+    goto yy1084;
+  yy1089:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1088;
+  yy1090:
+    p = marker;
+    if (yyaccept <= 1) {
+      if (yyaccept == 0) {
+        goto yy1084;
+      } else {
+        goto yy1109;
+      }
+    } else {
+      if (yyaccept == 2) {
+        goto yy1123;
+      } else {
+        goto yy1137;
+      }
+    }
+  yy1091:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1089;
+    goto yy1090;
+  yy1092:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1089;
+    goto yy1090;
+  yy1093:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1092;
+    goto yy1090;
+  yy1094:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1092;
+    goto yy1090;
+  yy1095:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x8F)
+      goto yy1092;
+    goto yy1090;
+  yy1096:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x9F)
+      goto yy1089;
+    goto yy1090;
+  yy1097:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1099;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= ')')
+          goto yy1110;
+        goto yy1097;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych <= 0xDF)
+          goto yy1101;
+        goto yy1102;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1107;
+        goto yy1103;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1104;
+        if (yych <= 0xF3)
+          goto yy1105;
+        if (yych <= 0xF4)
+          goto yy1106;
+        goto yy1090;
+      }
+    }
+  yy1099:
+    ++p;
+    yych = *p;
+  yy1100:
+    if (yybm[0 + yych] & 32) {
+      goto yy1099;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= ')')
+          goto yy1108;
+        goto yy1097;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych >= 0xE0)
+          goto yy1102;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1107;
+        goto yy1103;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1104;
+        if (yych <= 0xF3)
+          goto yy1105;
+        if (yych <= 0xF4)
+          goto yy1106;
+        goto yy1090;
+      }
+    }
+  yy1101:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1099;
+    goto yy1090;
+  yy1102:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1101;
+    goto yy1090;
+  yy1103:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1101;
+    goto yy1090;
+  yy1104:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1103;
+    goto yy1090;
+  yy1105:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1103;
+    goto yy1090;
+  yy1106:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x8F)
+      goto yy1103;
+    goto yy1090;
+  yy1107:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x9F)
+      goto yy1101;
+    goto yy1090;
+  yy1108:
+    ++p;
+  yy1109 : { return (bufsize_t)(p - start); }
+  yy1110:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1099;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1109;
+        if (yych <= ')')
+          goto yy1108;
+        goto yy1097;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1109;
+        if (yych <= 0xDF)
+          goto yy1101;
+        goto yy1102;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1107;
+        goto yy1103;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1104;
+        if (yych <= 0xF3)
+          goto yy1105;
+        if (yych <= 0xF4)
+          goto yy1106;
+        goto yy1109;
+      }
+    }
+  yy1111:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1113;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= '\'')
+          goto yy1124;
+        goto yy1111;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych <= 0xDF)
+          goto yy1115;
+        goto yy1116;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1121;
+        goto yy1117;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1118;
+        if (yych <= 0xF3)
+          goto yy1119;
+        if (yych <= 0xF4)
+          goto yy1120;
+        goto yy1090;
+      }
+    }
+  yy1113:
+    ++p;
+    yych = *p;
+  yy1114:
+    if (yybm[0 + yych] & 64) {
+      goto yy1113;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= '\'')
+          goto yy1122;
+        goto yy1111;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych >= 0xE0)
+          goto yy1116;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1121;
+        goto yy1117;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1118;
+        if (yych <= 0xF3)
+          goto yy1119;
+        if (yych <= 0xF4)
+          goto yy1120;
+        goto yy1090;
+      }
+    }
+  yy1115:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1113;
+    goto yy1090;
+  yy1116:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1115;
+    goto yy1090;
+  yy1117:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1115;
+    goto yy1090;
+  yy1118:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1117;
+    goto yy1090;
+  yy1119:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1117;
+    goto yy1090;
+  yy1120:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x8F)
+      goto yy1117;
+    goto yy1090;
+  yy1121:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x9F)
+      goto yy1115;
+    goto yy1090;
+  yy1122:
+    ++p;
+  yy1123 : { return (bufsize_t)(p - start); }
+  yy1124:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1113;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1123;
+        if (yych <= '\'')
+          goto yy1122;
+        goto yy1111;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1123;
+        if (yych <= 0xDF)
+          goto yy1115;
+        goto yy1116;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1121;
+        goto yy1117;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1118;
+        if (yych <= 0xF3)
+          goto yy1119;
+        if (yych <= 0xF4)
+          goto yy1120;
+        goto yy1123;
+      }
+    }
+  yy1125:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1127;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= '"')
+          goto yy1138;
+        goto yy1125;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych <= 0xDF)
+          goto yy1129;
+        goto yy1130;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1135;
+        goto yy1131;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1132;
+        if (yych <= 0xF3)
+          goto yy1133;
+        if (yych <= 0xF4)
+          goto yy1134;
+        goto yy1090;
+      }
+    }
+  yy1127:
+    ++p;
+    yych = *p;
+  yy1128:
+    if (yybm[0 + yych] & 128) {
+      goto yy1127;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1090;
+        if (yych <= '"')
+          goto yy1136;
+        goto yy1125;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1090;
+        if (yych >= 0xE0)
+          goto yy1130;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1135;
+        goto yy1131;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1132;
+        if (yych <= 0xF3)
+          goto yy1133;
+        if (yych <= 0xF4)
+          goto yy1134;
+        goto yy1090;
+      }
+    }
+  yy1129:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1127;
+    goto yy1090;
+  yy1130:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1129;
+    goto yy1090;
+  yy1131:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1129;
+    goto yy1090;
+  yy1132:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1131;
+    goto yy1090;
+  yy1133:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0xBF)
+      goto yy1131;
+    goto yy1090;
+  yy1134:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x8F)
+      goto yy1131;
+    goto yy1090;
+  yy1135:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1090;
+    if (yych <= 0x9F)
+      goto yy1129;
+    goto yy1090;
+  yy1136:
+    ++p;
+  yy1137 : { return (bufsize_t)(p - start); }
+  yy1138:
+    yyaccept = 3;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1127;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy1137;
+        if (yych <= '"')
+          goto yy1136;
+        goto yy1125;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1137;
+        if (yych <= 0xDF)
+          goto yy1129;
+        goto yy1130;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1135;
+        goto yy1131;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1132;
+        if (yych <= 0xF3)
+          goto yy1133;
+        if (yych <= 0xF4)
+          goto yy1134;
+        goto yy1137;
+      }
+    }
+  }
+}
+
+// Match space characters, including newlines.
+bufsize_t _scan_spacechars(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xC1) {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy1145;
+        if (yych == '\n')
+          goto yy1143;
+        goto yy1142;
+      } else {
+        if (yych == ' ')
+          goto yy1142;
+        if (yych <= 0x7F)
+          goto yy1145;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1147;
+        if (yych <= 0xE0)
+          goto yy1149;
+        if (yych <= 0xEC)
+          goto yy1150;
+        goto yy1154;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1150;
+          goto yy1151;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1152;
+          if (yych <= 0xF4)
+            goto yy1153;
+        }
+      }
+    }
+  yy1141 : { return (bufsize_t)(p - start); }
+  yy1142:
+    yych = *++p;
+    goto yy1144;
+  yy1143:
+    ++p;
+    yych = *p;
+  yy1144:
+    if (yybm[0 + yych] & 128) {
+      goto yy1143;
+    }
+    goto yy1141;
+  yy1145:
+    ++p;
+    { return 0; }
+  yy1147:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1148;
+    if (yych <= 0xBF)
+      goto yy1145;
+  yy1148:
+    p = marker;
+    goto yy1141;
+  yy1149:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1148;
+    if (yych <= 0xBF)
+      goto yy1147;
+    goto yy1148;
+  yy1150:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1148;
+    if (yych <= 0xBF)
+      goto yy1147;
+    goto yy1148;
+  yy1151:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1148;
+    if (yych <= 0xBF)
+      goto yy1150;
+    goto yy1148;
+  yy1152:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1148;
+    if (yych <= 0xBF)
+      goto yy1150;
+    goto yy1148;
+  yy1153:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1148;
+    if (yych <= 0x8F)
+      goto yy1150;
+    goto yy1148;
+  yy1154:
+    ++p;
+    if ((yych = *p) <= 0x7F)
+      goto yy1148;
+    if (yych <= 0x9F)
+      goto yy1147;
+    goto yy1148;
+  }
+}
+
+// Match ATX heading start.
+bufsize_t _scan_atx_heading_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xDF) {
+      if (yych <= '"') {
+        if (yych != '\n')
+          goto yy1159;
+      } else {
+        if (yych <= '#')
+          goto yy1158;
+        if (yych <= 0x7F)
+          goto yy1159;
+        if (yych >= 0xC2)
+          goto yy1160;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy1162;
+        if (yych == 0xED)
+          goto yy1167;
+        goto yy1163;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1164;
+        if (yych <= 0xF3)
+          goto yy1165;
+        if (yych <= 0xF4)
+          goto yy1166;
+      }
+    }
+  yy1157 : { return 0; }
+  yy1158:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1157;
+      if (yych <= '\n')
+        goto yy1168;
+      goto yy1157;
+    } else {
+      if (yych <= '\r')
+        goto yy1168;
+      if (yych == '#')
+        goto yy1172;
+      goto yy1157;
+    }
+  yy1159:
+    yych = *++p;
+    goto yy1157;
+  yy1160:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1161;
+    if (yych <= 0xBF)
+      goto yy1159;
+  yy1161:
+    p = marker;
+    goto yy1157;
+  yy1162:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1161;
+    if (yych <= 0xBF)
+      goto yy1160;
+    goto yy1161;
+  yy1163:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1161;
+    if (yych <= 0xBF)
+      goto yy1160;
+    goto yy1161;
+  yy1164:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1161;
+    if (yych <= 0xBF)
+      goto yy1163;
+    goto yy1161;
+  yy1165:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1161;
+    if (yych <= 0xBF)
+      goto yy1163;
+    goto yy1161;
+  yy1166:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1161;
+    if (yych <= 0x8F)
+      goto yy1163;
+    goto yy1161;
+  yy1167:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1161;
+    if (yych <= 0x9F)
+      goto yy1160;
+    goto yy1161;
+  yy1168:
+    ++p;
+  yy1169 : { return (bufsize_t)(p - start); }
+  yy1170:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    goto yy1169;
+  yy1172:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1161;
+      if (yych <= '\n')
+        goto yy1168;
+      goto yy1161;
+    } else {
+      if (yych <= '\r')
+        goto yy1168;
+      if (yych != '#')
+        goto yy1161;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1161;
+      if (yych <= '\n')
+        goto yy1168;
+      goto yy1161;
+    } else {
+      if (yych <= '\r')
+        goto yy1168;
+      if (yych != '#')
+        goto yy1161;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1161;
+      if (yych <= '\n')
+        goto yy1168;
+      goto yy1161;
+    } else {
+      if (yych <= '\r')
+        goto yy1168;
+      if (yych != '#')
+        goto yy1161;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1170;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1161;
+      if (yych <= '\n')
+        goto yy1168;
+      goto yy1161;
+    } else {
+      if (yych <= '\r')
+        goto yy1168;
+      if (yych != '#')
+        goto yy1161;
+    }
+    ++p;
+    if (yybm[0 + (yych = *p)] & 128) {
+      goto yy1170;
+    }
+    if (yych <= 0x08)
+      goto yy1161;
+    if (yych <= '\n')
+      goto yy1168;
+    if (yych == '\r')
+      goto yy1168;
+    goto yy1161;
+  }
+}
+
+// Match setext heading line.  Return 1 for level-1 heading,
+// 2 for level-2, 0 for no match.
+bufsize_t _scan_setext_heading_line(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xC1) {
+      if (yych <= '-') {
+        if (yych == '\n')
+          goto yy1179;
+        if (yych <= ',')
+          goto yy1182;
+        goto yy1181;
+      } else {
+        if (yych == '=')
+          goto yy1180;
+        if (yych <= 0x7F)
+          goto yy1182;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1183;
+        if (yych <= 0xE0)
+          goto yy1185;
+        if (yych <= 0xEC)
+          goto yy1186;
+        goto yy1190;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1186;
+          goto yy1187;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1188;
+          if (yych <= 0xF4)
+            goto yy1189;
+        }
+      }
+    }
+  yy1179 : { return 0; }
+  yy1180:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy1201;
+    }
+    if (yych <= '\f') {
+      if (yych == '\n')
+        goto yy1199;
+      goto yy1179;
+    } else {
+      if (yych <= '\r')
+        goto yy1199;
+      if (yych == ' ')
+        goto yy1197;
+      goto yy1179;
+    }
+  yy1181:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 32) {
+      goto yy1191;
+    }
+    if (yych <= '\f') {
+      if (yych == '\n')
+        goto yy1193;
+      goto yy1179;
+    } else {
+      if (yych <= '\r')
+        goto yy1193;
+      if (yych == '-')
+        goto yy1195;
+      goto yy1179;
+    }
+  yy1182:
+    yych = *++p;
+    goto yy1179;
+  yy1183:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1184;
+    if (yych <= 0xBF)
+      goto yy1182;
+  yy1184:
+    p = marker;
+    goto yy1179;
+  yy1185:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1184;
+    if (yych <= 0xBF)
+      goto yy1183;
+    goto yy1184;
+  yy1186:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1184;
+    if (yych <= 0xBF)
+      goto yy1183;
+    goto yy1184;
+  yy1187:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1184;
+    if (yych <= 0xBF)
+      goto yy1186;
+    goto yy1184;
+  yy1188:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1184;
+    if (yych <= 0xBF)
+      goto yy1186;
+    goto yy1184;
+  yy1189:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1184;
+    if (yych <= 0x8F)
+      goto yy1186;
+    goto yy1184;
+  yy1190:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1184;
+    if (yych <= 0x9F)
+      goto yy1183;
+    goto yy1184;
+  yy1191:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1191;
+    }
+    if (yych == '\n')
+      goto yy1193;
+    if (yych != '\r')
+      goto yy1184;
+  yy1193:
+    ++p;
+    { return 2; }
+  yy1195:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1191;
+    }
+    if (yych <= '\f') {
+      if (yych == '\n')
+        goto yy1193;
+      goto yy1184;
+    } else {
+      if (yych <= '\r')
+        goto yy1193;
+      if (yych == '-')
+        goto yy1195;
+      goto yy1184;
+    }
+  yy1197:
+    ++p;
+    yych = *p;
+    if (yych <= '\f') {
+      if (yych != '\n')
+        goto yy1184;
+    } else {
+      if (yych <= '\r')
+        goto yy1199;
+      if (yych == ' ')
+        goto yy1197;
+      goto yy1184;
+    }
+  yy1199:
+    ++p;
+    { return 1; }
+  yy1201:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1201;
+    }
+    if (yych <= '\f') {
+      if (yych == '\n')
+        goto yy1199;
+      goto yy1184;
+    } else {
+      if (yych <= '\r')
+        goto yy1199;
+      if (yych == ' ')
+        goto yy1197;
+      goto yy1184;
+    }
+  }
+}
+
+// Scan a thematic break line: "...three or more hyphens, asterisks,
+// or underscores on a line by themselves. If you wish, you may use
+// spaces between the hyphens or asterisks."
+bufsize_t _scan_thematic_break(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,
+        0, 0, 128, 0, 0, 32, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 64, 0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
+        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0x7F) {
+      if (yych <= '*') {
+        if (yych == '\n')
+          goto yy1205;
+        if (yych <= ')')
+          goto yy1209;
+        goto yy1206;
+      } else {
+        if (yych <= '-') {
+          if (yych <= ',')
+            goto yy1209;
+          goto yy1208;
+        } else {
+          if (yych == '_')
+            goto yy1207;
+          goto yy1209;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF) {
+          if (yych >= 0xC2)
+            goto yy1210;
+        } else {
+          if (yych <= 0xE0)
+            goto yy1212;
+          if (yych <= 0xEC)
+            goto yy1213;
+          goto yy1217;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1213;
+          goto yy1214;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1215;
+          if (yych <= 0xF4)
+            goto yy1216;
+        }
+      }
+    }
+  yy1205 : { return 0; }
+  yy1206:
+    yych = *(marker = ++p);
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1238;
+      goto yy1205;
+    } else {
+      if (yych <= ' ')
+        goto yy1238;
+      if (yych == '*')
+        goto yy1240;
+      goto yy1205;
+    }
+  yy1207:
+    yych = *(marker = ++p);
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1228;
+      goto yy1205;
+    } else {
+      if (yych <= ' ')
+        goto yy1228;
+      if (yych == '_')
+        goto yy1230;
+      goto yy1205;
+    }
+  yy1208:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 16) {
+      goto yy1218;
+    }
+    if (yych == '-')
+      goto yy1220;
+    goto yy1205;
+  yy1209:
+    yych = *++p;
+    goto yy1205;
+  yy1210:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1211;
+    if (yych <= 0xBF)
+      goto yy1209;
+  yy1211:
+    p = marker;
+    goto yy1205;
+  yy1212:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1211;
+    if (yych <= 0xBF)
+      goto yy1210;
+    goto yy1211;
+  yy1213:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1211;
+    if (yych <= 0xBF)
+      goto yy1210;
+    goto yy1211;
+  yy1214:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1211;
+    if (yych <= 0xBF)
+      goto yy1213;
+    goto yy1211;
+  yy1215:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1211;
+    if (yych <= 0xBF)
+      goto yy1213;
+    goto yy1211;
+  yy1216:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1211;
+    if (yych <= 0x8F)
+      goto yy1213;
+    goto yy1211;
+  yy1217:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1211;
+    if (yych <= 0x9F)
+      goto yy1210;
+    goto yy1211;
+  yy1218:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy1218;
+    }
+    if (yych != '-')
+      goto yy1211;
+  yy1220:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1220;
+      goto yy1211;
+    } else {
+      if (yych <= ' ')
+        goto yy1220;
+      if (yych != '-')
+        goto yy1211;
+    }
+  yy1222:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1211;
+        goto yy1222;
+      } else {
+        if (yych <= '\n')
+          goto yy1224;
+        if (yych <= '\f')
+          goto yy1211;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1211;
+        goto yy1222;
+      } else {
+        if (yych == '-')
+          goto yy1226;
+        goto yy1211;
+      }
+    }
+  yy1224:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1226:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1226;
+    }
+    if (yych <= 0x08)
+      goto yy1211;
+    if (yych <= '\n')
+      goto yy1224;
+    if (yych == '\r')
+      goto yy1224;
+    goto yy1211;
+  yy1228:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1228;
+      goto yy1211;
+    } else {
+      if (yych <= ' ')
+        goto yy1228;
+      if (yych != '_')
+        goto yy1211;
+    }
+  yy1230:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1230;
+      goto yy1211;
+    } else {
+      if (yych <= ' ')
+        goto yy1230;
+      if (yych != '_')
+        goto yy1211;
+    }
+  yy1232:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1211;
+        goto yy1232;
+      } else {
+        if (yych <= '\n')
+          goto yy1234;
+        if (yych <= '\f')
+          goto yy1211;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1211;
+        goto yy1232;
+      } else {
+        if (yych == '_')
+          goto yy1236;
+        goto yy1211;
+      }
+    }
+  yy1234:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1236:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1236;
+    }
+    if (yych <= 0x08)
+      goto yy1211;
+    if (yych <= '\n')
+      goto yy1234;
+    if (yych == '\r')
+      goto yy1234;
+    goto yy1211;
+  yy1238:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1238;
+      goto yy1211;
+    } else {
+      if (yych <= ' ')
+        goto yy1238;
+      if (yych != '*')
+        goto yy1211;
+    }
+  yy1240:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych == '\t')
+        goto yy1240;
+      goto yy1211;
+    } else {
+      if (yych <= ' ')
+        goto yy1240;
+      if (yych != '*')
+        goto yy1211;
+    }
+  yy1242:
+    ++p;
+    yych = *p;
+    if (yych <= '\r') {
+      if (yych <= '\t') {
+        if (yych <= 0x08)
+          goto yy1211;
+        goto yy1242;
+      } else {
+        if (yych <= '\n')
+          goto yy1244;
+        if (yych <= '\f')
+          goto yy1211;
+      }
+    } else {
+      if (yych <= ' ') {
+        if (yych <= 0x1F)
+          goto yy1211;
+        goto yy1242;
+      } else {
+        if (yych == '*')
+          goto yy1246;
+        goto yy1211;
+      }
+    }
+  yy1244:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy1246:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1246;
+    }
+    if (yych <= 0x08)
+      goto yy1211;
+    if (yych <= '\n')
+      goto yy1244;
+    if (yych == '\r')
+      goto yy1244;
+    goto yy1211;
+  }
+}
+
+// Scan an opening code fence.
+bufsize_t _scan_open_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xC1) {
+      if (yych <= '`') {
+        if (yych == '\n')
+          goto yy1250;
+        if (yych <= '_')
+          goto yy1253;
+        goto yy1251;
+      } else {
+        if (yych == '~')
+          goto yy1252;
+        if (yych <= 0x7F)
+          goto yy1253;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1254;
+        if (yych <= 0xE0)
+          goto yy1256;
+        if (yych <= 0xEC)
+          goto yy1257;
+        goto yy1261;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1257;
+          goto yy1258;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1259;
+          if (yych <= 0xF4)
+            goto yy1260;
+        }
+      }
+    }
+  yy1250 : { return 0; }
+  yy1251:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy1276;
+    goto yy1250;
+  yy1252:
+    yych = *(marker = ++p);
+    if (yych == '~')
+      goto yy1262;
+    goto yy1250;
+  yy1253:
+    yych = *++p;
+    goto yy1250;
+  yy1254:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1253;
+  yy1255:
+    p = marker;
+    goto yy1250;
+  yy1256:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1254;
+    goto yy1255;
+  yy1257:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1254;
+    goto yy1255;
+  yy1258:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1257;
+    goto yy1255;
+  yy1259:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1257;
+    goto yy1255;
+  yy1260:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x8F)
+      goto yy1257;
+    goto yy1255;
+  yy1261:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x9F)
+      goto yy1254;
+    goto yy1255;
+  yy1262:
+    yych = *++p;
+    if (yybm[0 + yych] & 16) {
+      goto yy1263;
+    }
+    goto yy1255;
+  yy1263:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1265;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '~') {
+        if (yych <= 0x00)
+          goto yy1255;
+        if (yych <= '\r')
+          goto yy1274;
+        goto yy1263;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1255;
+        if (yych <= 0xDF)
+          goto yy1267;
+        goto yy1268;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1273;
+        goto yy1269;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1270;
+        if (yych <= 0xF3)
+          goto yy1271;
+        if (yych <= 0xF4)
+          goto yy1272;
+        goto yy1255;
+      }
+    }
+  yy1265:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1265;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy1255;
+        if (yych <= '\r')
+          goto yy1274;
+        goto yy1255;
+      } else {
+        if (yych <= 0xDF)
+          goto yy1267;
+        if (yych <= 0xE0)
+          goto yy1268;
+        goto yy1269;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy1273;
+        if (yych <= 0xEF)
+          goto yy1269;
+        goto yy1270;
+      } else {
+        if (yych <= 0xF3)
+          goto yy1271;
+        if (yych <= 0xF4)
+          goto yy1272;
+        goto yy1255;
+      }
+    }
+  yy1267:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1265;
+    goto yy1255;
+  yy1268:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1267;
+    goto yy1255;
+  yy1269:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1267;
+    goto yy1255;
+  yy1270:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1269;
+    goto yy1255;
+  yy1271:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1269;
+    goto yy1255;
+  yy1272:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x8F)
+      goto yy1269;
+    goto yy1255;
+  yy1273:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x9F)
+      goto yy1267;
+    goto yy1255;
+  yy1274:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy1276:
+    yych = *++p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1277;
+    }
+    goto yy1255;
+  yy1277:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1279;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '`') {
+        if (yych <= 0x00)
+          goto yy1255;
+        if (yych <= '\r')
+          goto yy1288;
+        goto yy1277;
+      } else {
+        if (yych <= 0xC1)
+          goto yy1255;
+        if (yych <= 0xDF)
+          goto yy1281;
+        goto yy1282;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy1287;
+        goto yy1283;
+      } else {
+        if (yych <= 0xF0)
+          goto yy1284;
+        if (yych <= 0xF3)
+          goto yy1285;
+        if (yych <= 0xF4)
+          goto yy1286;
+        goto yy1255;
+      }
+    }
+  yy1279:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1279;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy1255;
+        if (yych <= '\r')
+          goto yy1288;
+        goto yy1255;
+      } else {
+        if (yych <= 0xDF)
+          goto yy1281;
+        if (yych <= 0xE0)
+          goto yy1282;
+        goto yy1283;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy1287;
+        if (yych <= 0xEF)
+          goto yy1283;
+        goto yy1284;
+      } else {
+        if (yych <= 0xF3)
+          goto yy1285;
+        if (yych <= 0xF4)
+          goto yy1286;
+        goto yy1255;
+      }
+    }
+  yy1281:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1279;
+    goto yy1255;
+  yy1282:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1281;
+    goto yy1255;
+  yy1283:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1281;
+    goto yy1255;
+  yy1284:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1283;
+    goto yy1255;
+  yy1285:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0xBF)
+      goto yy1283;
+    goto yy1255;
+  yy1286:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x8F)
+      goto yy1283;
+    goto yy1255;
+  yy1287:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy1255;
+    if (yych <= 0x9F)
+      goto yy1281;
+    goto yy1255;
+  yy1288:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Scan a closing code fence with length at least len.
+bufsize_t _scan_close_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
+    };
+    yych = *(marker = p);
+    if (yych <= 0xC1) {
+      if (yych <= '`') {
+        if (yych == '\n')
+          goto yy1292;
+        if (yych <= '_')
+          goto yy1295;
+        goto yy1293;
+      } else {
+        if (yych == '~')
+          goto yy1294;
+        if (yych <= 0x7F)
+          goto yy1295;
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy1296;
+        if (yych <= 0xE0)
+          goto yy1298;
+        if (yych <= 0xEC)
+          goto yy1299;
+        goto yy1303;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy1299;
+          goto yy1300;
+        } else {
+          if (yych <= 0xF3)
+            goto yy1301;
+          if (yych <= 0xF4)
+            goto yy1302;
+        }
+      }
+    }
+  yy1292 : { return 0; }
+  yy1293:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy1311;
+    goto yy1292;
+  yy1294:
+    yych = *(marker = ++p);
+    if (yych == '~')
+      goto yy1304;
+    goto yy1292;
+  yy1295:
+    yych = *++p;
+    goto yy1292;
+  yy1296:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1297;
+    if (yych <= 0xBF)
+      goto yy1295;
+  yy1297:
+    p = marker;
+    goto yy1292;
+  yy1298:
+    yych = *++p;
+    if (yych <= 0x9F)
+      goto yy1297;
+    if (yych <= 0xBF)
+      goto yy1296;
+    goto yy1297;
+  yy1299:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1297;
+    if (yych <= 0xBF)
+      goto yy1296;
+    goto yy1297;
+  yy1300:
+    yych = *++p;
+    if (yych <= 0x8F)
+      goto yy1297;
+    if (yych <= 0xBF)
+      goto yy1299;
+    goto yy1297;
+  yy1301:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1297;
+    if (yych <= 0xBF)
+      goto yy1299;
+    goto yy1297;
+  yy1302:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1297;
+    if (yych <= 0x8F)
+      goto yy1299;
+    goto yy1297;
+  yy1303:
+    yych = *++p;
+    if (yych <= 0x7F)
+      goto yy1297;
+    if (yych <= 0x9F)
+      goto yy1296;
+    goto yy1297;
+  yy1304:
+    yych = *++p;
+    if (yybm[0 + yych] & 32) {
+      goto yy1305;
+    }
+    goto yy1297;
+  yy1305:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1307;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy1297;
+      if (yych <= '\n')
+        goto yy1309;
+      goto yy1297;
+    } else {
+      if (yych <= '\r')
+        goto yy1309;
+      if (yych == '~')
+        goto yy1305;
+      goto yy1297;
+    }
+  yy1307:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy1307;
+    }
+    if (yych <= 0x08)
+      goto yy1297;
+    if (yych <= '\n')
+      goto yy1309;
+    if (yych != '\r')
+      goto yy1297;
+  yy1309:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy1311:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy1312;
+    }
+    goto yy1297;
+  yy1312:
+    ++p;
+    yych = *p;
+    marker = p;
     if (yybm[0 + yych] & 128) {
       goto yy1312;
     }
diff --git a/cbits/xml.c b/cbits/xml.c
--- a/cbits/xml.c
+++ b/cbits/xml.c
@@ -149,7 +149,7 @@
 
 char *cmark_render_xml(cmark_node *root, int options) {
   char *result;
-  cmark_strbuf xml = GH_BUF_INIT;
+  cmark_strbuf xml = CMARK_BUF_INIT(cmark_node_mem(root));
   cmark_event_type ev_type;
   cmark_node *cur;
   struct render_state state = {&xml, 0};
diff --git a/cmark.cabal b/cmark.cabal
--- a/cmark.cabal
+++ b/cmark.cabal
@@ -1,12 +1,12 @@
 name:                cmark
-version:             0.5.2.1
+version:             0.5.3
 synopsis:            Fast, accurate CommonMark (Markdown) parser and renderer
 description:
   This package provides Haskell bindings for
   <https://github.com/jgm/cmark libcmark>, the reference
   parser for <http://commonmark.org CommonMark>, a fully
   specified variant of Markdown. It includes sources for
-  libcmark (0.25.2) and does not require prior installation of the
+  libcmark (0.26.0) and does not require prior installation of the
   C library.
 
 homepage:            https://github.com/jgm/commonmark-hs
