text: /* Generated by libfsm */
  
  #include LF_HEADER
  
  #include <stddef.h>
  
  #include <fsm/fsm.h>
  
  struct fsm *
  utf8_Nd_fsm(const struct fsm_options *opt)
  {
  	struct fsm *fsm;
  	size_t i;
  
  	struct fsm_state *s[22] = { 0 };
  
  	fsm = fsm_new(opt);
  	if (fsm == NULL) {
  		return NULL;
  	}
  
  	for (i = 0; i < 22; i++) {
  		s[i] = fsm_addstate(fsm);
  		if (s[i] == NULL) {
  			goto error;
  		}
  	}
  
  	if (!fsm_addedge_literal(fsm, s[0], s[1], 0xd9)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[2], 0xdb)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[3], 0xdf)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[4], 0xe0)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[5], 0xe1)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[6], 0xea)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[7], 0xef)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[0], s[8], 0xf0)) { goto error; }
  	for (i = 0x30; i <= 0x39; i++) { /* '0' .. '9' */
  		if (!fsm_addedge_literal(fsm, s[0], s[9], i)) { goto error; }
  	}
  	for (i = 0xa0; i <= 0xa9; i++) {
  		if (!fsm_addedge_literal(fsm, s[1], s[9], i)) { goto error; }
  	}
  	for (i = 0xb0; i <= 0xb9; i++) {
  		if (!fsm_addedge_literal(fsm, s[2], s[9], i)) { goto error; }
  	}
  	for (i = 0x80; i <= 0x89; i++) {
  		if (!fsm_addedge_literal(fsm, s[3], s[9], i)) { goto error; }
  	}
  	if (!fsm_addedge_literal(fsm, s[4], s[1], 0xbc)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[10], 0xb9)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[10], 0xbb)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xa5)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xa7)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xa9)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xab)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xad)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xaf)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xb1)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xb3)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xb5)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[4], s[14], 0xb7)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[1], 0x9f)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[2], 0xae)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[3], 0x81)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[10], 0x82)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[10], 0xa0)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[10], 0xa7)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[10], 0xad)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[12], 0xa5)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[13], 0xaa)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[5], s[13], 0xb1)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[1], 0x98)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[2], 0xaf)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[3], 0xa4)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[10], 0xa3)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[10], 0xa9)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[6], s[11], 0xa7)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[7], s[10], 0xbc)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[8], s[15], 0x90)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[8], s[16], 0x91)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[8], s[17], 0x96)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[8], s[18], 0x9d)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[8], s[19], 0x9e)) { goto error; }
  	for (i = 0x90; i <= 0x99; i++) {
  		if (!fsm_addedge_literal(fsm, s[10], s[9], i)) { goto error; }
  	}
  	for (i = 0x90; i <= 0x99; i++) {
  		if (!fsm_addedge_literal(fsm, s[11], s[9], i)) { goto error; }
  	}
  	for (i = 0xb0; i <= 0xb9; i++) {
  		if (!fsm_addedge_literal(fsm, s[11], s[9], i)) { goto error; }
  	}
  	for (i = 0x86; i <= 0x8f; i++) {
  		if (!fsm_addedge_literal(fsm, s[12], s[9], i)) { goto error; }
  	}
  	for (i = 0x80; i <= 0x89; i++) {
  		if (!fsm_addedge_literal(fsm, s[13], s[9], i)) { goto error; }
  	}
  	for (i = 0x90; i <= 0x99; i++) {
  		if (!fsm_addedge_literal(fsm, s[13], s[9], i)) { goto error; }
  	}
  	for (i = 0xa6; i <= 0xaf; i++) {
  		if (!fsm_addedge_literal(fsm, s[14], s[9], i)) { goto error; }
  	}
  	if (!fsm_addedge_literal(fsm, s[15], s[1], 0x92)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[1], 0xa3)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[2], 0x83)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[2], 0x8b)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[2], 0x9c)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[3], 0x9b)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0x87)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0x91)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0x93)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0x99)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0xb1)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[10], 0xb5)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[14], 0x81)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[16], s[21], 0x84)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[17], s[1], 0xa9)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[17], s[10], 0xad)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[18], s[20], 0x9f)) { goto error; }
  	if (!fsm_addedge_literal(fsm, s[19], s[10], 0xa5)) { goto error; }
  	for (i = 0x8e; i <= 0xbf; i++) {
  		if (!fsm_addedge_literal(fsm, s[20], s[9], i)) { goto error; }
  	}
  	for (i = 0xb6; i <= 0xbf; i++) {
  		if (!fsm_addedge_literal(fsm, s[21], s[9], i)) { goto error; }
  	}
  
  	fsm_setstart(fsm, s[0]);
  	fsm_setend(fsm, s[9], 1);
  
  	return fsm;
  
  error:
  
  	fsm_free(fsm);
  
  	return NULL;
  }
  
  