/* Generated by re2c */
#line 1 "encodings/unicode_group_Nd_x.re"
// re2c $INPUT -o $OUTPUT -x
#include <stdint.h>
#include <stdio.h>
#include "utf16.h"
#define YYCTYPE uint16_t

bool scan(const YYCTYPE* start, const YYCTYPE* const limit) {
	__attribute__((unused)) const YYCTYPE* YYMARKER;
#define YYCURSOR start
Nd:

#line 15 "encodings/unicode_group_Nd_x.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	if (yych <= 0x1A8F) {
		if (yych <= 0x0CEF) {
			if (yych <= 0x09EF) {
				if (yych <= 0x06F9) {
					if (yych <= 0x065F) {
						if (yych <= '/') goto yy1;
						if (yych <= '9') goto yy3;
					} else {
						if (yych <= 0x0669) goto yy3;
						if (yych >= 0x06F0) goto yy3;
					}
				} else {
					if (yych <= 0x0965) {
						if (yych <= 0x07BF) goto yy1;
						if (yych <= 0x07C9) goto yy3;
					} else {
						if (yych <= 0x096F) goto yy3;
						if (yych >= 0x09E6) goto yy3;
					}
				}
			} else {
				if (yych <= 0x0B6F) {
					if (yych <= 0x0AE5) {
						if (yych <= 0x0A65) goto yy1;
						if (yych <= 0x0A6F) goto yy3;
					} else {
						if (yych <= 0x0AEF) goto yy3;
						if (yych >= 0x0B66) goto yy3;
					}
				} else {
					if (yych <= 0x0C65) {
						if (yych <= 0x0BE5) goto yy1;
						if (yych <= 0x0BEF) goto yy3;
					} else {
						if (yych <= 0x0C6F) goto yy3;
						if (yych >= 0x0CE6) goto yy3;
					}
				}
			}
		} else {
			if (yych <= 0x1049) {
				if (yych <= 0x0E59) {
					if (yych <= 0x0DE5) {
						if (yych <= 0x0D65) goto yy1;
						if (yych <= 0x0D6F) goto yy3;
					} else {
						if (yych <= 0x0DEF) goto yy3;
						if (yych >= 0x0E50) goto yy3;
					}
				} else {
					if (yych <= 0x0F1F) {
						if (yych <= 0x0ECF) goto yy1;
						if (yych <= 0x0ED9) goto yy3;
					} else {
						if (yych <= 0x0F29) goto yy3;
						if (yych >= 0x1040) goto yy3;
					}
				}
			} else {
				if (yych <= 0x1819) {
					if (yych <= 0x17DF) {
						if (yych <= 0x108F) goto yy1;
						if (yych <= 0x1099) goto yy3;
					} else {
						if (yych <= 0x17E9) goto yy3;
						if (yych >= 0x1810) goto yy3;
					}
				} else {
					if (yych <= 0x19CF) {
						if (yych <= 0x1945) goto yy1;
						if (yych <= 0x194F) goto yy3;
					} else {
						if (yych <= 0x19D9) goto yy3;
						if (yych <= 0x1A7F) goto yy1;
						if (yych <= 0x1A89) goto yy3;
					}
				}
			}
		}
	} else {
		if (yych <= 0xD800) {
			if (yych <= 0xA8CF) {
				if (yych <= 0x1C3F) {
					if (yych <= 0x1B59) {
						if (yych <= 0x1A99) goto yy3;
						if (yych >= 0x1B50) goto yy3;
					} else {
						if (yych <= 0x1BAF) goto yy1;
						if (yych <= 0x1BB9) goto yy3;
					}
				} else {
					if (yych <= 0x1C59) {
						if (yych <= 0x1C49) goto yy3;
						if (yych >= 0x1C50) goto yy3;
					} else {
						if (yych <= 0xA61F) goto yy1;
						if (yych <= 0xA629) goto yy3;
					}
				}
			} else {
				if (yych <= 0xA9EF) {
					if (yych <= 0xA909) {
						if (yych <= 0xA8D9) goto yy3;
						if (yych >= 0xA900) goto yy3;
					} else {
						if (yych <= 0xA9CF) goto yy1;
						if (yych <= 0xA9D9) goto yy3;
					}
				} else {
					if (yych <= 0xAA59) {
						if (yych <= 0xA9F9) goto yy3;
						if (yych >= 0xAA50) goto yy3;
					} else {
						if (yych <= 0xABEF) goto yy1;
						if (yych <= 0xABF9) goto yy3;
					}
				}
			}
		} else {
			if (yych <= 0xD81B) {
				if (yych <= 0xD806) {
					if (yych <= 0xD803) {
						if (yych <= 0xD801) goto yy4;
						if (yych >= 0xD803) goto yy5;
					} else {
						if (yych <= 0xD804) goto yy6;
						if (yych <= 0xD805) goto yy7;
						goto yy8;
					}
				} else {
					if (yych <= 0xD818) {
						if (yych <= 0xD807) goto yy9;
						if (yych >= 0xD818) goto yy10;
					} else {
						if (yych <= 0xD819) goto yy1;
						if (yych <= 0xD81A) goto yy11;
						goto yy12;
					}
				}
			} else {
				if (yych <= 0xD838) {
					if (yych <= 0xD834) {
						if (yych == 0xD833) goto yy13;
					} else {
						if (yych <= 0xD835) goto yy14;
						if (yych >= 0xD838) goto yy15;
					}
				} else {
					if (yych <= 0xD83D) {
						if (yych <= 0xD839) goto yy16;
						if (yych <= 0xD83A) goto yy17;
					} else {
						if (yych <= 0xD83E) goto yy18;
						if (yych <= 0xFF0F) goto yy1;
						if (yych <= 0xFF19) goto yy3;
					}
				}
			}
		}
	}
yy1:
	++YYCURSOR;
yy2:
#line 15 "encodings/unicode_group_Nd_x.re"
	{ return YYCURSOR - 1 == limit; }
#line 184 "encodings/unicode_group_Nd_x.c"
yy3:
	++YYCURSOR;
#line 14 "encodings/unicode_group_Nd_x.re"
	{ goto Nd; }
#line 189 "encodings/unicode_group_Nd_x.c"
yy4:
	yych = *++YYCURSOR;
	if (yych <= 0xDC9F) goto yy2;
	if (yych <= 0xDCA9) goto yy3;
	goto yy2;
yy5:
	yych = *++YYCURSOR;
	if (yych <= 0xDD2F) goto yy2;
	if (yych <= 0xDD39) goto yy3;
	if (yych <= 0xDD3F) goto yy2;
	if (yych <= 0xDD49) goto yy3;
	goto yy2;
yy6:
	yych = *++YYCURSOR;
	if (yych <= 0xDD35) {
		if (yych <= 0xDC6F) {
			if (yych <= 0xDC65) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDCEF) goto yy2;
			if (yych <= 0xDCF9) goto yy3;
			goto yy2;
		}
	} else {
		if (yych <= 0xDDD9) {
			if (yych <= 0xDD3F) goto yy3;
			if (yych <= 0xDDCF) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDEEF) goto yy2;
			if (yych <= 0xDEF9) goto yy3;
			goto yy2;
		}
	}
yy7:
	yych = *++YYCURSOR;
	if (yych <= 0xDE59) {
		if (yych <= 0xDCCF) {
			if (yych <= 0xDC4F) goto yy2;
			if (yych <= 0xDC59) goto yy3;
			goto yy2;
		} else {
			if (yych <= 0xDCD9) goto yy3;
			if (yych <= 0xDE4F) goto yy2;
			goto yy3;
		}
	} else {
		if (yych <= 0xDECF) {
			if (yych <= 0xDEBF) goto yy2;
			if (yych <= 0xDEC9) goto yy3;
			goto yy2;
		} else {
			if (yych <= 0xDEE3) goto yy3;
			if (yych <= 0xDF2F) goto yy2;
			if (yych <= 0xDF39) goto yy3;
			goto yy2;
		}
	}
yy8:
	yych = *++YYCURSOR;
	if (yych <= 0xDD4F) {
		if (yych <= 0xDCDF) goto yy2;
		if (yych <= 0xDCE9) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDD59) goto yy3;
		if (yych <= 0xDFEF) goto yy2;
		if (yych <= 0xDFF9) goto yy3;
		goto yy2;
	}
yy9:
	yych = *++YYCURSOR;
	if (yych <= 0xDD9F) {
		if (yych <= 0xDC59) {
			if (yych <= 0xDC4F) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDD4F) goto yy2;
			if (yych <= 0xDD59) goto yy3;
			goto yy2;
		}
	} else {
		if (yych <= 0xDDE9) {
			if (yych <= 0xDDA9) goto yy3;
			if (yych <= 0xDDDF) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDF4F) goto yy2;
			if (yych <= 0xDF59) goto yy3;
			goto yy2;
		}
	}
yy10:
	yych = *++YYCURSOR;
	if (yych <= 0xDD2F) goto yy2;
	if (yych <= 0xDD39) goto yy3;
	goto yy2;
yy11:
	yych = *++YYCURSOR;
	if (yych <= 0xDEBF) {
		if (yych <= 0xDE5F) goto yy2;
		if (yych <= 0xDE69) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDEC9) goto yy3;
		if (yych <= 0xDF4F) goto yy2;
		if (yych <= 0xDF59) goto yy3;
		goto yy2;
	}
yy12:
	yych = *++YYCURSOR;
	if (yych <= 0xDD6F) goto yy2;
	if (yych <= 0xDD79) goto yy3;
	goto yy2;
yy13:
	yych = *++YYCURSOR;
	if (yych <= 0xDCEF) goto yy2;
	if (yych <= 0xDCF9) goto yy3;
	goto yy2;
yy14:
	yych = *++YYCURSOR;
	if (yych <= 0xDFCD) goto yy2;
	if (yych <= 0xDFFF) goto yy3;
	goto yy2;
yy15:
	yych = *++YYCURSOR;
	if (yych <= 0xDD3F) goto yy2;
	if (yych <= 0xDD49) goto yy3;
	if (yych <= 0xDEEF) goto yy2;
	if (yych <= 0xDEF9) goto yy3;
	goto yy2;
yy16:
	yych = *++YYCURSOR;
	if (yych <= 0xDCEF) goto yy2;
	if (yych <= 0xDCF9) goto yy3;
	if (yych <= 0xDDF0) goto yy2;
	if (yych <= 0xDDFA) goto yy3;
	goto yy2;
yy17:
	yych = *++YYCURSOR;
	if (yych <= 0xDD4F) goto yy2;
	if (yych <= 0xDD59) goto yy3;
	goto yy2;
yy18:
	yych = *++YYCURSOR;
	if (yych <= 0xDFEF) goto yy2;
	if (yych <= 0xDFF9) goto yy3;
	goto yy2;
}
#line 16 "encodings/unicode_group_Nd_x.re"

}

static const uint32_t chars_Nd[] = {0x30,0x39,0x660,0x669,0x6f0,0x6f9,0x7c0,0x7c9,0x966,0x96f,0x9e6,0x9ef,0xa66,0xa6f,0xae6,0xaef,0xb66,0xb6f,0xbe6,0xbef,0xc66,0xc6f,0xce6,0xcef,0xd66,0xd6f,0xde6,0xdef,0xe50,0xe59,0xed0,0xed9,0xf20,0xf29,0x1040,0x1049,0x1090,0x1099,0x17e0,0x17e9,0x1810,0x1819,0x1946,0x194f,0x19d0,0x19d9,0x1a80,0x1a89,0x1a90,0x1a99,0x1b50,0x1b59,0x1bb0,0x1bb9,0x1c40,0x1c49,0x1c50,0x1c59,0xa620,0xa629,0xa8d0,0xa8d9,0xa900,0xa909,0xa9d0,0xa9d9,0xa9f0,0xa9f9,0xaa50,0xaa59,0xabf0,0xabf9,0xff10,0xff19,0x104a0,0x104a9,0x10d30,0x10d39,0x10d40,0x10d49,0x11066,0x1106f,0x110f0,0x110f9,0x11136,0x1113f,0x111d0,0x111d9,0x112f0,0x112f9,0x11450,0x11459,0x114d0,0x114d9,0x11650,0x11659,0x116c0,0x116c9,0x116d0,0x116e3,0x11730,0x11739,0x118e0,0x118e9,0x11950,0x11959,0x11bf0,0x11bf9,0x11c50,0x11c59,0x11d50,0x11d59,0x11da0,0x11da9,0x11de0,0x11de9,0x11f50,0x11f59,0x16130,0x16139,0x16a60,0x16a69,0x16ac0,0x16ac9,0x16b50,0x16b59,0x16d70,0x16d79,0x1ccf0,0x1ccf9,0x1d7ce,0x1d7ff,0x1e140,0x1e149,0x1e2f0,0x1e2f9,0x1e4f0,0x1e4f9,0x1e5f1,0x1e5fa,0x1e950,0x1e959,0x1fbf0,0x1fbf9,};

static uint32_t encode_utf16(const uint32_t* ranges, uint32_t ranges_count, uint16_t* s) {
	uint16_t* const s0 = s;
	for (uint32_t i = 0; i < ranges_count; i += 2)
		for (uint32_t j = ranges[i]; j <= ranges[i + 1]; ++j)
			if (j <= re2c::utf16::MAX_1WORD_RUNE) {
				*s++ = j;
			} else {
				*s++ = re2c::utf16::lead_surr(j);
				*s++ = re2c::utf16::trail_surr(j);
			}
	for (uint32_t i = 0; i < 2; ++i) s[i] = 0;
	return s - s0;
}

int main() {
	YYCTYPE* buffer_Nd = new YYCTYPE[1542];
	uint32_t buffer_Nd_len = encode_utf16(chars_Nd, sizeof(chars_Nd) / sizeof(uint32_t), buffer_Nd);
	if (!scan(buffer_Nd, buffer_Nd + buffer_Nd_len)) printf("test 'Nd' failed\n");
	delete[] buffer_Nd;
	return 0;
}
