diff options
| author | Olaf Weber <olaf@sgi.com> | 2019-04-25 13:49:18 -0400 |
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2019-04-25 13:49:18 -0400 |
| commit | a8384c68797ee022f5fd7bcef5f4cc57863d4042 (patch) | |
| tree | 5cab2a7a1e9aa4a284354236868aed6eccfb5d5c /fs/unicode | |
| parent | 44594c2fbf42528001dfb1597d26adb40ba6d178 (diff) | |
| download | linux-a8384c68797ee022f5fd7bcef5f4cc57863d4042.tar.gz linux-a8384c68797ee022f5fd7bcef5f4cc57863d4042.tar.bz2 linux-a8384c68797ee022f5fd7bcef5f4cc57863d4042.zip | |
unicode: reduce the size of utf8data[]
Remove the Hangul decompositions from the utf8data trie, and do
algorithmic decomposition to calculate them on the fly. To store the
decomposition the caller of utf8lookup()/utf8nlookup() must provide a
12-byte buffer, which is used to synthesize a leaf with the
decomposition. This significantly reduces the size of the utf8data[]
array.
Changes made by Gabriel:
Rebase to mainline
Fix checkpatch errors
Extract robustness fixes and merge back to original mkutf8data.c patch
Regenerate utf8data.h
Signed-off-by: Olaf Weber <olaf@sgi.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/unicode')
| -rw-r--r-- | fs/unicode/README.utf8data | 4 | ||||
| -rw-r--r-- | fs/unicode/utf8-norm.c | 191 | ||||
| -rw-r--r-- | fs/unicode/utf8data.h | 15475 | ||||
| -rw-r--r-- | fs/unicode/utf8n.h | 4 |
4 files changed, 3028 insertions, 12646 deletions
diff --git a/fs/unicode/README.utf8data b/fs/unicode/README.utf8data index 7b18dca1146f..4af398a9fb31 100644 --- a/fs/unicode/README.utf8data +++ b/fs/unicode/README.utf8data @@ -46,8 +46,8 @@ cd to this directory (fs/unicode) and run this command: make C=../.. objdir=../.. utf8data.h.new After sanity checking the newly generated utf8data.h.new file (the -version generated from the 11.0.0 UCD should be 13,834 lines long, and -have a total size of 1104k) and/or comparing it with the older version +version generated from the 11.0.0 UCD should be 4,061 lines long, and +have a total size of 320k) and/or comparing it with the older version of utf8data.h, rename it to utf8data.h. If you are a kernel developer updating to a newer version of the diff --git a/fs/unicode/utf8-norm.c b/fs/unicode/utf8-norm.c index aa2980f26527..848b93e97f50 100644 --- a/fs/unicode/utf8-norm.c +++ b/fs/unicode/utf8-norm.c @@ -99,6 +99,38 @@ static inline int utf8clen(const char *s) } /* + * Decode a 3-byte UTF-8 sequence. + */ +static unsigned int +utf8decode3(const char *str) +{ + unsigned int uc; + + uc = *str++ & 0x0F; + uc <<= 6; + uc |= *str++ & 0x3F; + uc <<= 6; + uc |= *str++ & 0x3F; + + return uc; +} + +/* + * Encode a 3-byte UTF-8 sequence. + */ +static int +utf8encode3(char *str, unsigned int val) +{ + str[2] = (val & 0x3F) | 0x80; + val >>= 6; + str[1] = (val & 0x3F) | 0x80; + val >>= 6; + str[0] = val | 0xE0; + + return 3; +} + +/* * utf8trie_t * * A compact binary tree, used to decode UTF-8 characters. @@ -159,7 +191,8 @@ typedef const unsigned char utf8trie_t; * characters with the Default_Ignorable_Code_Point property. * These do affect normalization, as they all have CCC 0. * - * The decompositions in the trie have been fully expanded. + * The decompositions in the trie have been fully expanded, with the + * exception of Hangul syllables, which are decomposed algorithmically. * * Casefolding, if applicable, is also done using decompositions. * @@ -179,6 +212,105 @@ typedef const unsigned char utf8leaf_t; #define STOPPER (0) #define DECOMPOSE (255) +/* Marker for hangul syllable decomposition. */ +#define HANGUL ((char)(255)) +/* Size of the synthesized leaf used for Hangul syllable decomposition. */ +#define UTF8HANGULLEAF (12) + +/* + * Hangul decomposition (algorithm from Section 3.12 of Unicode 6.3.0) + * + * AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; + * D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; + * + * SBase = 0xAC00 + * LBase = 0x1100 + * VBase = 0x1161 + * TBase = 0x11A7 + * LCount = 19 + * VCount = 21 + * TCount = 28 + * NCount = 588 (VCount * TCount) + * SCount = 11172 (LCount * NCount) + * + * Decomposition: + * SIndex = s - SBase + * + * LV (Canonical/Full) + * LIndex = SIndex / NCount + * VIndex = (Sindex % NCount) / TCount + * LPart = LBase + LIndex + * VPart = VBase + VIndex + * + * LVT (Canonical) + * LVIndex = (SIndex / TCount) * TCount + * TIndex = (Sindex % TCount) + * LVPart = SBase + LVIndex + * TPart = TBase + TIndex + * + * LVT (Full) + * LIndex = SIndex / NCount + * VIndex = (Sindex % NCount) / TCount + * TIndex = (Sindex % TCount) + * LPart = LBase + LIndex + * VPart = VBase + VIndex + * if (TIndex == 0) { + * d = <LPart, VPart> + * } else { + * TPart = TBase + TIndex + * d = <LPart, TPart, VPart> + * } + */ + +/* Constants */ +#define SB (0xAC00) +#define LB (0x1100) +#define VB (0x1161) +#define TB (0x11A7) +#define LC (19) +#define VC (21) +#define TC (28) +#define NC (VC * TC) +#define SC (LC * NC) + +/* Algorithmic decomposition of hangul syllable. */ +static utf8leaf_t * +utf8hangul(const char *str, unsigned char *hangul) +{ + unsigned int si; + unsigned int li; + unsigned int vi; + unsigned int ti; + unsigned char *h; + + /* Calculate the SI, LI, VI, and TI values. */ + si = utf8decode3(str) - SB; + li = si / NC; + vi = (si % NC) / TC; + ti = si % TC; + + /* Fill in base of leaf. */ + h = hangul; + LEAF_GEN(h) = 2; + LEAF_CCC(h) = DECOMPOSE; + h += 2; + + /* Add LPart, a 3-byte UTF-8 sequence. */ + h += utf8encode3((char *)h, li + LB); + + /* Add VPart, a 3-byte UTF-8 sequence. */ + h += utf8encode3((char *)h, vi + VB); + + /* Add TPart if required, also a 3-byte UTF-8 sequence. */ + if (ti) + h += utf8encode3((char *)h, ti + TB); + + /* Terminate string. */ + h[0] = '\0'; + + return hangul; +} + /* * Use trie to scan s, touching at most len bytes. * Returns the leaf if one exists, NULL otherwise. @@ -187,8 +319,8 @@ typedef const unsigned char utf8leaf_t; * is well-formed and corresponds to a known unicode code point. The * shorthand for this will be "is valid UTF-8 unicode". */ -static utf8leaf_t *utf8nlookup(const struct utf8data *data, const char *s, - size_t len) +static utf8leaf_t *utf8nlookup(const struct utf8data *data, + unsigned char *hangul, const char *s, size_t len) { utf8trie_t *trie = NULL; int offlen; @@ -228,8 +360,7 @@ static utf8leaf_t *utf8nlookup(const struct utf8data *data, const char *s, trie++; } else { /* No right node. */ - node = 0; - trie = NULL; + return NULL; } } else { /* Left leg */ @@ -239,8 +370,7 @@ static utf8leaf_t *utf8nlookup(const struct utf8data *data, const char *s, trie += offlen + 1; } else if (*trie & RIGHTPATH) { /* No left node. */ - node = 0; - trie = NULL; + return NULL; } else { /* Left node after this node */ node = (*trie & TRIENODE); @@ -248,6 +378,14 @@ static utf8leaf_t *utf8nlookup(const struct utf8data *data, const char *s, } } } + /* + * Hangul decomposition is done algorithmically. These are the + * codepoints >= 0xAC00 and <= 0xD7A3. Their UTF-8 encoding is + * always 3 bytes long, so s has been advanced twice, and the + * start of the sequence is at s-2. + */ + if (LEAF_CCC(trie) == DECOMPOSE && LEAF_STR(trie)[0] == HANGUL) + trie = utf8hangul(s - 2, hangul); return trie; } @@ -257,9 +395,10 @@ static utf8leaf_t *utf8nlookup(const struct utf8data *data, const char *s, * * Forwards to utf8nlookup(). */ -static utf8leaf_t *utf8lookup(const struct utf8data *data, const char *s) +static utf8leaf_t *utf8lookup(const struct utf8data *data, + unsigned char *hangul, const char *s) { - return utf8nlookup(data, s, (size_t)-1); + return utf8nlookup(data, hangul, s, (size_t)-1); } /* @@ -272,11 +411,13 @@ int utf8agemax(const struct utf8data *data, const char *s) utf8leaf_t *leaf; int age = 0; int leaf_age; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; + while (*s) { - leaf = utf8lookup(data, s); + leaf = utf8lookup(data, hangul, s); if (!leaf) return -1; @@ -299,12 +440,13 @@ int utf8agemin(const struct utf8data *data, const char *s) utf8leaf_t *leaf; int age; int leaf_age; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; age = data->maxage; while (*s) { - leaf = utf8lookup(data, s); + leaf = utf8lookup(data, hangul, s); if (!leaf) return -1; leaf_age = utf8agetab[LEAF_GEN(leaf)]; @@ -325,11 +467,13 @@ int utf8nagemax(const struct utf8data *data, const char *s, size_t len) utf8leaf_t *leaf; int age = 0; int leaf_age; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; + while (len && *s) { - leaf = utf8nlookup(data, s, len); + leaf = utf8nlookup(data, hangul, s, len); if (!leaf) return -1; leaf_age = utf8agetab[LEAF_GEN(leaf)]; @@ -351,12 +495,13 @@ int utf8nagemin(const struct utf8data *data, const char *s, size_t len) utf8leaf_t *leaf; int leaf_age; int age; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; age = data->maxage; while (len && *s) { - leaf = utf8nlookup(data, s, len); + leaf = utf8nlookup(data, hangul, s, len); if (!leaf) return -1; leaf_age = utf8agetab[LEAF_GEN(leaf)]; @@ -379,11 +524,12 @@ ssize_t utf8len(const struct utf8data *data, const char *s) { utf8leaf_t *leaf; size_t ret = 0; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; while (*s) { - leaf = utf8lookup(data, s); + leaf = utf8lookup(data, hangul, s); if (!leaf) return -1; if (utf8agetab[LEAF_GEN(leaf)] > data->maxage) @@ -406,11 +552,12 @@ ssize_t utf8nlen(const struct utf8data *data, const char *s, size_t len) { utf8leaf_t *leaf; size_t ret = 0; + unsigned char hangul[UTF8HANGULLEAF]; if (!data) return -1; while (len && *s) { - leaf = utf8nlookup(data, s, len); + leaf = utf8nlookup(data, hangul, s, len); if (!leaf) return -1; if (utf8agetab[LEAF_GEN(leaf)] > data->maxage) @@ -533,10 +680,12 @@ int utf8byte(struct utf8cursor *u8c) } /* Look up the data for the current character. */ - if (u8c->p) - leaf = utf8lookup(u8c->data, u8c->s); - else - leaf = utf8nlookup(u8c->data, u8c->s, u8c->len); + if (u8c->p) { + leaf = utf8lookup(u8c->data, u8c->hangul, u8c->s); + } else { + leaf = utf8nlookup(u8c->data, u8c->hangul, + u8c->s, u8c->len); + } /* No leaf found implies that the input is a binary blob. */ if (!leaf) @@ -557,7 +706,9 @@ int utf8byte(struct utf8cursor *u8c) ccc = STOPPER; goto ccc_mismatch; } - leaf = utf8lookup(u8c->data, u8c->s); + + leaf = utf8lookup(u8c->data, u8c->hangul, u8c->s); + ccc = LEAF_CCC(leaf); } /* diff --git a/fs/unicode/utf8data.h b/fs/unicode/utf8data.h index ae0a6439e6f8..f7af34bd596f 100644 --- a/fs/unicode/utf8data.h +++ b/fs/unicode/utf8data.h @@ -36,276 +36,252 @@ static const struct utf8data utf8nfdicfdata[] = { { 0x20100, 0 }, { 0x30000, 0 }, { 0x30100, 0 }, - { 0x30200, 2048 }, - { 0x40000, 3584 }, - { 0x40100, 3584 }, - { 0x50000, 3584 }, - { 0x50100, 3584 }, - { 0x50200, 3584 }, - { 0x60000, 3584 }, - { 0x60100, 3584 }, - { 0x60200, 3584 }, - { 0x60300, 3584 }, - { 0x70000, 3584 }, - { 0x80000, 3584 }, - { 0x90000, 3584 }, - { 0xa0000, 3584 }, - { 0xb0000, 3584 } + { 0x30200, 1792 }, + { 0x40000, 3200 }, + { 0x40100, 3200 }, + { 0x50000, 3200 }, + { 0x50100, 3200 }, + { 0x50200, 3200 }, + { 0x60000, 3200 }, + { 0x60100, 3200 }, + { 0x60200, 3200 }, + { 0x60300, 3200 }, + { 0x70000, 3200 }, + { 0x80000, 3200 }, + { 0x90000, 3200 }, + { 0xa0000, 3200 }, + { 0xb0000, 3200 } }; static const struct utf8data utf8nfdidata[] = { - { 0, 1024 }, - { 0x10100, 1024 }, - { 0x20000, 1024 }, - { 0x20100, 1024 }, - { 0x30000, 1024 }, - { 0x30100, 1024 }, - { 0x30200, 2816 }, - { 0x40000, 21184 }, - { 0x40100, 21184 }, - { 0x50000, 21184 }, - { 0x50100, 21184 }, - { 0x50200, 21184 }, - { 0x60000, 21184 }, - { 0x60100, 21184 }, - { 0x60200, 21184 }, - { 0x60300, 21184 }, - { 0x70000, 21184 }, - { 0x80000, 21184 }, - { 0x90000, 21184 }, - { 0xa0000, 21184 }, - { 0xb0000, 21184 } + { 0, 896 }, + { 0x10100, 896 }, + { 0x20000, 896 }, + { 0x20100, 896 }, + { 0x30000, 896 }, + { 0x30100, 896 }, + { 0x30200, 2496 }, + { 0x40000, 20672 }, + { 0x40100, 20672 }, + { 0x50000, 20672 }, + { 0x50100, 20672 }, + { 0x50200, 20672 }, + { 0x60000, 20672 }, + { 0x60100, 20672 }, + { 0x60200, 20672 }, + { 0x60300, 20672 }, + { 0x70000, 20672 }, + { 0x80000, 20672 }, + { 0x90000, 20672 }, + { 0xa0000, 20672 }, + { 0xb0000, 20672 } }; -static const unsigned char utf8data[219952] = { +static const unsigned char utf8data[63584] = { /* nfdicf_30100 */ - 0xd7,0x07,0x66,0x04,0x0e,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x19,0x1c,0xe3,0xe3,0x16, - 0xe2,0xcc,0x0f,0xc1,0xe0,0xce,0x0e,0xcf,0x86,0x65,0xad,0x0e,0x01,0x00,0xe4,0x0a, - 0x01,0xd3,0x27,0xe2,0x39,0xa5,0xe1,0x4d,0x37,0xe0,0xab,0x23,0xcf,0x86,0xc5,0xe4, - 0xd5,0x6e,0xe3,0x20,0x6a,0xe2,0xb6,0x67,0xe1,0xe9,0x66,0xe0,0xae,0x66,0xcf,0x86, - 0xe5,0x73,0x66,0x64,0x56,0x66,0x0b,0x00,0xd2,0x0e,0xe1,0x34,0x3e,0xe0,0x6b,0xa5, - 0xcf,0x86,0xcf,0x06,0x01,0x00,0xd1,0x50,0xf0,0x04,0xa1,0x02,0xcf,0x86,0xf5,0x5f, - 0x31,0x02,0xf4,0x8a,0xf9,0x01,0xf3,0x9f,0xdd,0x01,0xf2,0xac,0xcf,0x01,0xf1,0xaf, - 0xc8,0x01,0xf0,0x30,0xc5,0x01,0xcf,0x86,0xf5,0x72,0xc3,0x01,0xf4,0x90,0xc2,0x01, - 0xf3,0x1e,0xc2,0x01,0xf2,0xe7,0xc1,0x01,0xf1,0xc9,0xc1,0x01,0x10,0x0e,0x02,0xff, - 0xe1,0x84,0x88,0xe1,0x85,0xaf,0xe1,0x86,0xbf,0x00,0x02,0xff,0xe1,0x84,0x88,0xe1, - 0x85,0xaf,0xe1,0x87,0x80,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86, - 0xd5,0x06,0xcf,0x06,0x01,0x00,0xe4,0x1a,0x47,0xe3,0x69,0x46,0xd2,0x06,0xcf,0x06, - 0x01,0x00,0xf1,0xa6,0x0f,0x03,0xd0,0x26,0xcf,0x86,0xf5,0x9f,0x0c,0x03,0xf4,0x1d, - 0x0c,0x03,0xf3,0xdb,0x0b,0x03,0xf2,0xb9,0x0b,0x03,0xf1,0xa7,0x0b,0x03,0x10,0x08, - 0x01,0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4,0x00,0xcf,0x86,0xf5,0x7c, - 0x0e,0x03,0xd4,0x1c,0xf3,0xba,0x0d,0x03,0xf2,0x98,0x0d,0x03,0xf1,0x86,0x0d,0x03, - 0x10,0x08,0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xf3,0x1e, - 0x0e,0x03,0xf2,0xfc,0x0d,0x03,0xf1,0xea,0x0d,0x03,0x10,0x08,0x01,0xff,0xe7,0xb8, - 0xb7,0x00,0x01,0xff,0xe9,0x9b,0xbb,0x00,0x83,0xf2,0xf0,0x59,0x03,0xf1,0xc8,0x56, - 0x03,0xf0,0x44,0x55,0x03,0xcf,0x86,0xd5,0x38,0xc4,0xe3,0xb2,0x4f,0xe2,0x4c,0x4e, - 0xf1,0x0d,0x2e,0x03,0xe0,0xe7,0x4c,0xcf,0x86,0xe5,0xce,0x4a,0xe4,0xe9,0x47,0xf3, - 0x1f,0x1f,0x03,0xf2,0x75,0x1e,0x03,0xf1,0x4f,0x1e,0x03,0xf0,0x27,0x1e,0x03,0xcf, - 0x86,0xf5,0xf3,0x1d,0x03,0x94,0x08,0x73,0xdd,0x1d,0x03,0x07,0x00,0x07,0x00,0xf4, - 0xa8,0x54,0x03,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,0xb6,0x41, - 0x03,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0xa4,0x42,0x03,0xcf,0x86,0xf5, - 0x68,0x42,0x03,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0xa2,0x42,0x03,0xcf, - 0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0x3c,0x54,0x03,0xf3, - 0x24,0x53,0x03,0xd2,0xb0,0xf1,0xd9,0x46,0x03,0xd0,0x26,0xcf,0x86,0xf5,0xd9,0x43, - 0x03,0xf4,0x54,0x43,0x03,0xf3,0x11,0x43,0x03,0xf2,0xef,0x42,0x03,0xf1,0xdc,0x42, - 0x03,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf, - 0x86,0xd5,0x20,0xf4,0x30,0x45,0x03,0xf3,0xee,0x44,0x03,0xf2,0xcc,0x44,0x03,0xf1, - 0xba,0x44,0x03,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6, - 0x00,0xd4,0x37,0xd3,0x1a,0xf2,0xb3,0x45,0x03,0xf1,0xa1,0x45,0x03,0x10,0x09,0x05, - 0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,0xd1,0x45, - 0x03,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac, - 0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0x16,0x46,0x03,0xd2,0x15,0xf1,0xe4, - 0x45,0x03,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98, - 0x00,0xf1,0xef,0x45,0x03,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5, - 0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0x43,0x4b,0x03,0xd4,0x1c,0xf3, - 0x7b,0x4a,0x03,0xf2,0x58,0x4a,0x03,0xf1,0x46,0x4a,0x03,0x10,0x08,0x05,0xff,0xe6, - 0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0xc2,0x4a,0x03,0xf1, - 0xb0,0x4a,0x03,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3, - 0xbe,0x8e,0x00,0xd2,0x14,0xf1,0xd8,0x4a,0x03,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd, - 0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85, - 0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00, - 0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0xd9,0x4c,0x03,0xd4,0x1d,0xf3,0x10, - 0x4c,0x03,0xf2,0xf5,0x4b,0x03,0xf1,0xe1,0x4b,0x03,0x10,0x08,0x05,0xff,0xe7,0x9b, - 0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0x55,0x4c,0x03,0xf1, - 0x42,0x4c,0x03,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3, - 0x00,0xd2,0x14,0xf1,0x6f,0x4c,0x03,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05, - 0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00, - 0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00, - 0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x84,0x4f,0x03,0xcf,0x86,0xd5,0x21,0xf4,0xf8, - 0x4d,0x03,0xf3,0xb3,0x4d,0x03,0xf2,0x90,0x4d,0x03,0xf1,0x7e,0x4d,0x03,0x10,0x09, - 0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x1c,0xf3, - 0x9b,0x4e,0x03,0xf2,0x76,0x4e,0x03,0xf1,0x64,0x4e,0x03,0x10,0x08,0x05,0xff,0xe8, - 0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0xe3,0x4e,0x03,0xf1, - 0xd1,0x4e,0x03,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,0xf0,0xa7, - 0x83,0x92,0x00,0xd2,0x14,0xf1,0xf9,0x4e,0x03,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88, - 0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8, - 0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05, - 0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* nfdi_30100 */ - 0x57,0x04,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x02,0x5b,0xe3,0x3b,0x56,0xe2,0xb4,0x50, - 0xc1,0xe0,0xe0,0x4e,0xcf,0x86,0x65,0xc4,0x4e,0x01,0x00,0xe4,0x0c,0x01,0xd3,0x27, - 0xe2,0x3c,0xa1,0xe1,0x0f,0x8f,0xe0,0x6d,0x72,0xcf,0x86,0xc5,0xe4,0xd8,0x6a,0xe3, - 0x23,0x66,0xe2,0xb9,0x63,0xe1,0xec,0x62,0xe0,0xb1,0x62,0xcf,0x86,0xe5,0x76,0x62, - 0x64,0x59,0x62,0x0b,0x00,0xd2,0x0e,0xe1,0xf3,0xa1,0xe0,0x6e,0xa1,0xcf,0x86,0xcf, - 0x06,0x01,0x00,0xd1,0x50,0xf0,0x07,0x9d,0x02,0xcf,0x86,0xf5,0x62,0x2d,0x02,0xf4, - 0x8d,0xf5,0x01,0xf3,0xa2,0xd9,0x01,0xf2,0xaf,0xcb,0x01,0xf1,0xb2,0xc4,0x01,0xf0, - 0x33,0xc1,0x01,0xcf,0x86,0xf5,0x75,0xbf,0x01,0xf4,0x93,0xbe,0x01,0xf3,0x21,0xbe, - 0x01,0xf2,0xea,0xbd,0x01,0xf1,0xcc,0xbd,0x01,0x10,0x0e,0x02,0xff,0xe1,0x84,0x88, - 0xe1,0x85,0xaf,0xe1,0x86,0xbf,0x00,0x02,0xff,0xe1,0x84,0x88,0xe1,0x85,0xaf,0xe1, - 0x87,0x80,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf, - 0x06,0x01,0x00,0xf4,0x3d,0x18,0x03,0xf3,0xb6,0x0f,0x03,0xd2,0x06,0xcf,0x06,0x01, - 0x00,0xf1,0xa7,0x0b,0x03,0xd0,0x26,0xcf,0x86,0xf5,0xa0,0x08,0x03,0xf4,0x1e,0x08, - 0x03,0xf3,0xdc,0x07,0x03,0xf2,0xba,0x07,0x03,0xf1,0xa8,0x07,0x03,0x10,0x08,0x01, - 0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4,0x00,0xcf,0x86,0xf5,0x7d,0x0a, - 0x03,0xd4,0x1c,0xf3,0xbb,0x09,0x03,0xf2,0x99,0x09,0x03,0xf1,0x87,0x09,0x03,0x10, - 0x08,0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xf3,0x1f,0x0a, - 0x03,0xf2,0xfd,0x09,0x03,0xf1,0xeb,0x09,0x03,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7, - 0x00,0x01,0xff,0xe9,0x9b,0xbb,0x00,0x83,0xf2,0xf1,0x55,0x03,0xf1,0xc9,0x52,0x03, - 0xf0,0x45,0x51,0x03,0xcf,0x86,0xd5,0x3d,0xc4,0xf3,0x30,0x2d,0x03,0xf2,0x1c,0x2b, - 0x03,0xf1,0x0c,0x2a,0x03,0xf0,0x23,0x21,0x03,0xcf,0x86,0xf5,0x33,0x1d,0x03,0xf4, - 0x2b,0x1c,0x03,0xf3,0x1b,0x1b,0x03,0xf2,0x71,0x1a,0x03,0xf1,0x4b,0x1a,0x03,0xf0, - 0x23,0x1a,0x03,0xcf,0x86,0xf5,0xef,0x19,0x03,0x94,0x08,0x73,0xd9,0x19,0x03,0x07, - 0x00,0x07,0x00,0xf4,0xa4,0x50,0x03,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2, - 0x0c,0xf1,0xb2,0x3d,0x03,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0xa0,0x3e, - 0x03,0xcf,0x86,0xf5,0x64,0x3e,0x03,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5, - 0x9e,0x3e,0x03,0xcf,0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4, - 0x38,0x50,0x03,0xf3,0x20,0x4f,0x03,0xd2,0xb0,0xf1,0xd5,0x42,0x03,0xd0,0x26,0xcf, - 0x86,0xf5,0xd5,0x3f,0x03,0xf4,0x50,0x3f,0x03,0xf3,0x0d,0x3f,0x03,0xf2,0xeb,0x3e, - 0x03,0xf1,0xd8,0x3e,0x03,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4, - 0xb8,0xb8,0x00,0xcf,0x86,0xd5,0x20,0xf4,0x2c,0x41,0x03,0xf3,0xea,0x40,0x03,0xf2, - 0xc8,0x40,0x03,0xf1,0xb6,0x40,0x03,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05, - 0xff,0xe5,0x93,0xb6,0x00,0xd4,0x37,0xd3,0x1a,0xf2,0xaf,0x41,0x03,0xf1,0x9d,0x41, - 0x03,0x10,0x09,0x05,0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa, - 0x00,0xf2,0xcd,0x41,0x03,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00, - 0x05,0xff,0xe5,0xac,0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0x12,0x42,0x03, - 0xd2,0x15,0xf1,0xe0,0x41,0x03,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff, - 0xf0,0xa1,0xac,0x98,0x00,0xf1,0xeb,0x41,0x03,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3, - 0x00,0x05,0xff,0xe5,0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0x3f,0x47, - 0x03,0xd4,0x1c,0xf3,0x77,0x46,0x03,0xf2,0x54,0x46,0x03,0xf1,0x42,0x46,0x03,0x10, - 0x08,0x05,0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2, - 0xbe,0x46,0x03,0xf1,0xac,0x46,0x03,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00, - 0x05,0xff,0xf0,0xa3,0xbe,0x8e,0x00,0xd2,0x14,0xf1,0xd4,0x46,0x03,0x10,0x08,0x05, - 0xff,0xe7,0x81,0xbd,0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05, - 0xff,0xe7,0x85,0x85,0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff, - 0xe7,0x86,0x9c,0x00,0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0xd5,0x48,0x03, - 0xd4,0x1d,0xf3,0x0c,0x48,0x03,0xf2,0xf1,0x47,0x03,0xf1,0xdd,0x47,0x03,0x10,0x08, - 0x05,0xff,0xe7,0x9b,0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2, - 0x51,0x48,0x03,0xf1,0x3e,0x48,0x03,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05, - 0xff,0xe4,0x83,0xa3,0x00,0xd2,0x14,0xf1,0x6b,0x48,0x03,0x10,0x08,0x05,0xff,0xe4, - 0x84,0xaf,0x00,0x05,0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0, - 0xa5,0xa5,0xbc,0x00,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0, - 0xa5,0xaa,0xa7,0x00,0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x80,0x4b,0x03,0xcf,0x86, - 0xd5,0x21,0xf4,0xf4,0x49,0x03,0xf3,0xaf,0x49,0x03,0xf2,0x8c,0x49,0x03,0xf1,0x7a, - 0x49,0x03,0x10,0x09,0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95, - 0x00,0xd4,0x1c,0xf3,0x97,0x4a,0x03,0xf2,0x72,0x4a,0x03,0xf1,0x60,0x4a,0x03,0x10, - 0x08,0x05,0xff,0xe8,0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2, - 0xdf,0x4a,0x03,0xf1,0xcd,0x4a,0x03,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00, - 0x05,0xff,0xf0,0xa7,0x83,0x92,0x00,0xd2,0x14,0xf1,0xf5,0x4a,0x03,0x10,0x08,0x05, + 0xd7,0x07,0x66,0x84,0x0c,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x99,0x1a,0xe3,0x63,0x15, + 0xe2,0x4c,0x0e,0xc1,0xe0,0x4e,0x0d,0xcf,0x86,0x65,0x2d,0x0d,0x01,0x00,0xd4,0xb8, + 0xd3,0x27,0xe2,0x39,0xa3,0xe1,0xce,0x35,0xe0,0x2c,0x22,0xcf,0x86,0xc5,0xe4,0xd5, + 0x6c,0xe3,0x20,0x68,0xe2,0xb6,0x65,0xe1,0xe9,0x64,0xe0,0xae,0x64,0xcf,0x86,0xe5, + 0x73,0x64,0x64,0x56,0x64,0x0b,0x00,0xd2,0x0e,0xe1,0xb5,0x3c,0xe0,0x6a,0xa3,0xcf, + 0x86,0xcf,0x06,0x01,0x00,0xd1,0x0c,0xe0,0xb6,0xa8,0xcf,0x86,0xcf,0x06,0x02,0xff, + 0xff,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01, + 0x00,0xe4,0x8f,0x45,0xe3,0xe9,0x44,0xd2,0x06,0xcf,0x06,0x01,0x00,0xe1,0x1f,0xad, + 0xd0,0x21,0xcf,0x86,0xe5,0x19,0xaa,0xe4,0x98,0xa9,0xe3,0x57,0xa9,0xe2,0x36,0xa9, + 0xe1,0x25,0xa9,0x10,0x08,0x01,0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4, + 0x00,0xcf,0x86,0xe5,0xfb,0xab,0xd4,0x19,0xe3,0x3a,0xab,0xe2,0x19,0xab,0xe1,0x08, + 0xab,0x10,0x08,0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xe3, + 0xa1,0xab,0xe2,0x80,0xab,0xe1,0x6f,0xab,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7,0x00, + 0x01,0xff,0xe9,0x9b,0xbb,0x00,0x83,0xe2,0x76,0xf7,0xe1,0x4f,0xf4,0xe0,0xcc,0xf2, + 0xcf,0x86,0xd5,0x31,0xc4,0xe3,0x02,0x4e,0xe2,0xa3,0x4c,0xe1,0x96,0xcb,0xe0,0x4a, + 0x4b,0xcf,0x86,0xe5,0x3c,0x49,0xe4,0x5d,0x46,0xe3,0xa9,0xbc,0xe2,0x00,0xbc,0xe1, + 0xdb,0xbb,0xe0,0xb4,0xbb,0xcf,0x86,0xe5,0x81,0xbb,0x94,0x07,0x63,0x6c,0xbb,0x07, + 0x00,0x07,0x00,0xe4,0x38,0xf2,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0b, + 0xe1,0x47,0xdf,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x0e,0xe0,0x36,0xe0,0xcf,0x86, + 0xe5,0xfb,0xdf,0xcf,0x06,0x11,0x00,0xd0,0x0b,0xcf,0x86,0xe5,0x36,0xe0,0xcf,0x06, + 0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xe4,0xd1,0xf1,0xe3,0xba,0xf0, + 0xd2,0xa0,0xe1,0x70,0xe4,0xd0,0x21,0xcf,0x86,0xe5,0x71,0xe1,0xe4,0xed,0xe0,0xe3, + 0xab,0xe0,0xe2,0x8a,0xe0,0xe1,0x78,0xe0,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00, + 0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf,0x86,0xd5,0x1c,0xe4,0xcd,0xe2,0xe3,0x8c,0xe2, + 0xe2,0x6b,0xe2,0xe1,0x5a,0xe2,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff, + 0xe5,0x93,0xb6,0x00,0xd4,0x34,0xd3,0x18,0xe2,0x54,0xe3,0xe1,0x43,0xe3,0x10,0x09, + 0x05,0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xe2,0x74, + 0xe3,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac, + 0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xe3,0xba,0xe3,0xd2,0x14,0xe1,0x89,0xe3, + 0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,0x00,0xe1, + 0x95,0xe3,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,0xb0,0xa2,0x00, + 0xd1,0xd5,0xd0,0x6a,0xcf,0x86,0xe5,0xea,0xe8,0xd4,0x19,0xe3,0x23,0xe8,0xe2,0x01, + 0xe8,0xe1,0xf0,0xe7,0x10,0x08,0x05,0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5, + 0xb7,0x00,0xd3,0x18,0xe2,0x6d,0xe8,0xe1,0x5c,0xe8,0x10,0x09,0x05,0xff,0xf0,0xa3, + 0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3,0xbe,0x8e,0x00,0xd2,0x13,0xe1,0x85,0xe8,0x10, + 0x08,0x05,0xff,0xe7,0x81,0xbd,0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10, + 0x08,0x05,0xff,0xe7,0x85,0x85,0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08, + 0x05,0xff,0xe7,0x86,0x9c,0x00,0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xe5,0x87, + 0xea,0xd4,0x1a,0xe3,0xbf,0xe9,0xe2,0xa5,0xe9,0xe1,0x92,0xe9,0x10,0x08,0x05,0xff, + 0xe7,0x9b,0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x16,0xe2,0x07,0xea, + 0xe1,0xf5,0xe9,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3, + 0x00,0xd2,0x13,0xe1,0x23,0xea,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05,0xff, + 0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00,0x05, + 0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x05, + 0xff,0xe7,0xaa,0xae,0x00,0xe0,0x39,0xed,0xcf,0x86,0xd5,0x1d,0xe4,0xae,0xeb,0xe3, + 0x6a,0xeb,0xe2,0x48,0xeb,0xe1,0x37,0xeb,0x10,0x09,0x05,0xff,0xf0,0xa3,0x8d,0x9f, + 0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x19,0xe3,0x55,0xec,0xe2,0x31,0xec,0xe1, + 0x20,0xec,0x10,0x08,0x05,0xff,0xe8,0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00, + 0xd3,0x18,0xe2,0xa0,0xec,0xe1,0x8f,0xec,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1, + 0x00,0x05,0xff,0xf0,0xa7,0x83,0x92,0x00,0xd2,0x13,0xe1,0xb8,0xec,0x10,0x08,0x05, 0xff,0xe8,0x9a,0x88,0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05, 0xff,0xe8,0x9c,0xa8,0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8, 0x9e,0x86,0x00,0x05,0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* nfdi_30100 */ + 0x57,0x04,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x82,0x59,0xe3,0xbb,0x54,0xe2,0x34,0x4f, + 0xc1,0xe0,0x60,0x4d,0xcf,0x86,0x65,0x44,0x4d,0x01,0x00,0xd4,0xb8,0xd3,0x27,0xe2, + 0xbc,0x9f,0xe1,0x8f,0x8d,0xe0,0xed,0x70,0xcf,0x86,0xc5,0xe4,0x58,0x69,0xe3,0xa3, + 0x64,0xe2,0x39,0x62,0xe1,0x6c,0x61,0xe0,0x31,0x61,0xcf,0x86,0xe5,0xf6,0x60,0x64, + 0xd9,0x60,0x0b,0x00,0xd2,0x0e,0xe1,0x72,0xa0,0xe0,0xed,0x9f,0xcf,0x86,0xcf,0x06, + 0x01,0x00,0xd1,0x0c,0xe0,0x39,0xa5,0xcf,0x86,0xcf,0x06,0x02,0xff,0xff,0xd0,0x08, + 0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01,0x00,0xe4,0x36, + 0xb6,0xe3,0xb0,0xad,0xd2,0x06,0xcf,0x06,0x01,0x00,0xe1,0xa2,0xa9,0xd0,0x21,0xcf, + 0x86,0xe5,0x9c,0xa6,0xe4,0x1b,0xa6,0xe3,0xda,0xa5,0xe2,0xb9,0xa5,0xe1,0xa8,0xa5, + 0x10,0x08,0x01,0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4,0x00,0xcf,0x86, + 0xe5,0x7e,0xa8,0xd4,0x19,0xe3,0xbd,0xa7,0xe2,0x9c,0xa7,0xe1,0x8b,0xa7,0x10,0x08, + 0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xe3,0x24,0xa8,0xe2, + 0x03,0xa8,0xe1,0xf2,0xa7,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7,0x00,0x01,0xff,0xe9, + 0x9b,0xbb,0x00,0x83,0xe2,0xf9,0xf3,0xe1,0xd2,0xf0,0xe0,0x4f,0xef,0xcf,0x86,0xd5, + 0x31,0xc4,0xe3,0x3b,0xcb,0xe2,0x28,0xc9,0xe1,0x19,0xc8,0xe0,0x31,0xbf,0xcf,0x86, + 0xe5,0x42,0xbb,0xe4,0x3b,0xba,0xe3,0x2c,0xb9,0xe2,0x83,0xb8,0xe1,0x5e,0xb8,0xe0, + 0x37,0xb8,0xcf,0x86,0xe5,0x04,0xb8,0x94,0x07,0x63,0xef,0xb7,0x07,0x00,0x07,0x00, + 0xe4,0xbb,0xee,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0b,0xe1,0xca,0xdb, + 0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x0e,0xe0,0xb9,0xdc,0xcf,0x86,0xe5,0x7e,0xdc, + 0xcf,0x06,0x11,0x00,0xd0,0x0b,0xcf,0x86,0xe5,0xb9,0xdc,0xcf,0x06,0x13,0x00,0xcf, + 0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xe4,0x54,0xee,0xe3,0x3d,0xed,0xd2,0xa0,0xe1, + 0xf3,0xe0,0xd0,0x21,0xcf,0x86,0xe5,0xf4,0xdd,0xe4,0x70,0xdd,0xe3,0x2e,0xdd,0xe2, + 0x0d,0xdd,0xe1,0xfb,0xdc,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4, + 0xb8,0xb8,0x00,0xcf,0x86,0xd5,0x1c,0xe4,0x50,0xdf,0xe3,0x0f,0xdf,0xe2,0xee,0xde, + 0xe1,0xdd,0xde,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6, + 0x00,0xd4,0x34,0xd3,0x18,0xe2,0xd7,0xdf,0xe1,0xc6,0xdf,0x10,0x09,0x05,0xff,0xf0, + 0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xe2,0xf7,0xdf,0x91,0x11, + 0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac,0x88,0x00,0x05, + 0xff,0xe5,0xac,0xbe,0x00,0xe3,0x3d,0xe0,0xd2,0x14,0xe1,0x0c,0xe0,0x10,0x08,0x05, + 0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,0x00,0xe1,0x18,0xe0,0x10, + 0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,0xb0,0xa2,0x00,0xd1,0xd5,0xd0, + 0x6a,0xcf,0x86,0xe5,0x6d,0xe5,0xd4,0x19,0xe3,0xa6,0xe4,0xe2,0x84,0xe4,0xe1,0x73, + 0xe4,0x10,0x08,0x05,0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3, + 0x18,0xe2,0xf0,0xe4,0xe1,0xdf,0xe4,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00, + 0x05,0xff,0xf0,0xa3,0xbe,0x8e,0x00,0xd2,0x13,0xe1,0x08,0xe5,0x10,0x08,0x05,0xff, + 0xe7,0x81,0xbd,0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff, + 0xe7,0x85,0x85,0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7, + 0x86,0x9c,0x00,0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xe5,0x0a,0xe7,0xd4,0x1a, + 0xe3,0x42,0xe6,0xe2,0x28,0xe6,0xe1,0x15,0xe6,0x10,0x08,0x05,0xff,0xe7,0x9b,0xb4, + 0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x16,0xe2,0x8a,0xe6,0xe1,0x78,0xe6, + 0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3,0x00,0xd2,0x13, + 0xe1,0xa6,0xe6,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05,0xff,0xe7,0xa9,0x80, + 0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00,0x05,0xff,0xf0,0xa5, + 0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x05,0xff,0xe7,0xaa, + 0xae,0x00,0xe0,0xbc,0xe9,0xcf,0x86,0xd5,0x1d,0xe4,0x31,0xe8,0xe3,0xed,0xe7,0xe2, + 0xcb,0xe7,0xe1,0xba,0xe7,0x10,0x09,0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff, + 0xe4,0x8f,0x95,0x00,0xd4,0x19,0xe3,0xd8,0xe8,0xe2,0xb4,0xe8,0xe1,0xa3,0xe8,0x10, + 0x08,0x05,0xff,0xe8,0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x18,0xe2, + 0x23,0xe9,0xe1,0x12,0xe9,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff, + 0xf0,0xa7,0x83,0x92,0x00,0xd2,0x13,0xe1,0x3b,0xe9,0x10,0x08,0x05,0xff,0xe8,0x9a, + 0x88,0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c, + 0xa8,0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00, + 0x05,0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* nfdicf_30200 */ - 0xd7,0x07,0x66,0x04,0x06,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x19,0x14,0xe3,0xe3,0x0e, - 0xe2,0xcc,0x07,0xc1,0xe0,0xce,0x06,0xcf,0x86,0x65,0xad,0x06,0x01,0x00,0xd4,0x2a, - 0xe3,0x50,0x36,0xe2,0x39,0x9d,0xe1,0x4d,0x2f,0xe0,0xab,0x1b,0xcf,0x86,0xc5,0xe4, - 0xd5,0x66,0xe3,0x20,0x62,0xe2,0xb6,0x5f,0xe1,0xe9,0x5e,0xe0,0xae,0x5e,0xcf,0x86, - 0xe5,0x73,0x5e,0x64,0x56,0x5e,0x0b,0x00,0x83,0xf2,0xd0,0x52,0x03,0xf1,0xa8,0x4f, - 0x03,0xf0,0x24,0x4e,0x03,0xcf,0x86,0xd5,0x38,0xc4,0xe3,0x92,0x48,0xe2,0x2c,0x47, - 0xf1,0xed,0x26,0x03,0xe0,0xc7,0x45,0xcf,0x86,0xe5,0xae,0x43,0xe4,0xc9,0x40,0xf3, - 0xff,0x17,0x03,0xf2,0x55,0x17,0x03,0xf1,0x2f,0x17,0x03,0xf0,0x07,0x17,0x03,0xcf, - 0x86,0xf5,0xd3,0x16,0x03,0x94,0x08,0x73,0xbd,0x16,0x03,0x07,0x00,0x07,0x00,0xf4, - 0x88,0x4d,0x03,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,0x96,0x3a, - 0x03,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0x84,0x3b,0x03,0xcf,0x86,0xf5, - 0x48,0x3b,0x03,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0x82,0x3b,0x03,0xcf, - 0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0x1c,0x4d,0x03,0xf3, - 0x04,0x4c,0x03,0xd2,0xb0,0xf1,0xb9,0x3f,0x03,0xd0,0x26,0xcf,0x86,0xf5,0xb9,0x3c, - 0x03,0xf4,0x34,0x3c,0x03,0xf3,0xf1,0x3b,0x03,0xf2,0xcf,0x3b,0x03,0xf1,0xbc,0x3b, - 0x03,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf, - 0x86,0xd5,0x20,0xf4,0x10,0x3e,0x03,0xf3,0xce,0x3d,0x03,0xf2,0xac,0x3d,0x03,0xf1, - 0x9a,0x3d,0x03,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6, - 0x00,0xd4,0x37,0xd3,0x1a,0xf2,0x93,0x3e,0x03,0xf1,0x81,0x3e,0x03,0x10,0x09,0x05, - 0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,0xb1,0x3e, - 0x03,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac, - 0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0xf6,0x3e,0x03,0xd2,0x15,0xf1,0xc4, - 0x3e,0x03,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98, - 0x00,0xf1,0xcf,0x3e,0x03,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5, - 0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0x23,0x44,0x03,0xd4,0x1c,0xf3, - 0x5b,0x43,0x03,0xf2,0x38,0x43,0x03,0xf1,0x26,0x43,0x03,0x10,0x08,0x05,0xff,0xe6, - 0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0xa2,0x43,0x03,0xf1, - 0x90,0x43,0x03,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3, - 0xbe,0x8e,0x00,0xd2,0x14,0xf1,0xb8,0x43,0x03,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd, - 0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85, - 0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00, - 0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0xb9,0x45,0x03,0xd4,0x1d,0xf3,0xf0, - 0x44,0x03,0xf2,0xd5,0x44,0x03,0xf1,0xc1,0x44,0x03,0x10,0x08,0x05,0xff,0xe7,0x9b, - 0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0x35,0x45,0x03,0xf1, - 0x22,0x45,0x03,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3, - 0x00,0xd2,0x14,0xf1,0x4f,0x45,0x03,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05, - 0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00, - 0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00, - 0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x64,0x48,0x03,0xcf,0x86,0xd5,0x21,0xf4,0xd8, - 0x46,0x03,0xf3,0x93,0x46,0x03,0xf2,0x70,0x46,0x03,0xf1,0x5e,0x46,0x03,0x10,0x09, - 0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x1c,0xf3, - 0x7b,0x47,0x03,0xf2,0x56,0x47,0x03,0xf1,0x44,0x47,0x03,0x10,0x08,0x05,0xff,0xe8, - 0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0xc3,0x47,0x03,0xf1, - 0xb1,0x47,0x03,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,0xf0,0xa7, - 0x83,0x92,0x00,0xd2,0x14,0xf1,0xd9,0x47,0x03,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88, - 0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8, - 0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05, - 0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd7,0x07,0x66,0x84,0x05,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x99,0x13,0xe3,0x63,0x0e, + 0xe2,0x4c,0x07,0xc1,0xe0,0x4e,0x06,0xcf,0x86,0x65,0x2d,0x06,0x01,0x00,0xd4,0x2a, + 0xe3,0xd0,0x35,0xe2,0x38,0x9c,0xe1,0xcd,0x2e,0xe0,0x2b,0x1b,0xcf,0x86,0xc5,0xe4, + 0xd4,0x65,0xe3,0x1f,0x61,0xe2,0xb5,0x5e,0xe1,0xe8,0x5d,0xe0,0xad,0x5d,0xcf,0x86, + 0xe5,0x72,0x5d,0x64,0x55,0x5d,0x0b,0x00,0x83,0xe2,0x04,0xf1,0xe1,0xdd,0xed,0xe0, + 0x5a,0xec,0xcf,0x86,0xd5,0x31,0xc4,0xe3,0x90,0x47,0xe2,0x31,0x46,0xe1,0x24,0xc5, + 0xe0,0xd8,0x44,0xcf,0x86,0xe5,0xca,0x42,0xe4,0xeb,0x3f,0xe3,0x37,0xb6,0xe2,0x8e, + 0xb5,0xe1,0x69,0xb5,0xe0,0x42,0xb5,0xcf,0x86,0xe5,0x0f,0xb5,0x94,0x07,0x63,0xfa, + 0xb4,0x07,0x00,0x07,0x00,0xe4,0xc6,0xeb,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00, + 0xd2,0x0b,0xe1,0xd5,0xd8,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x0e,0xe0,0xc4,0xd9, + 0xcf,0x86,0xe5,0x89,0xd9,0xcf,0x06,0x11,0x00,0xd0,0x0b,0xcf,0x86,0xe5,0xc4,0xd9, + 0xcf,0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xe4,0x5f,0xeb,0xe3, + 0x48,0xea,0xd2,0xa0,0xe1,0xfe,0xdd,0xd0,0x21,0xcf,0x86,0xe5,0xff,0xda,0xe4,0x7b, + 0xda,0xe3,0x39,0xda,0xe2,0x18,0xda,0xe1,0x06,0xda,0x10,0x08,0x05,0xff,0xe4,0xb8, + 0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf,0x86,0xd5,0x1c,0xe4,0x5b,0xdc,0xe3, + 0x1a,0xdc,0xe2,0xf9,0xdb,0xe1,0xe8,0xdb,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00, + 0x05,0xff,0xe5,0x93,0xb6,0x00,0xd4,0x34,0xd3,0x18,0xe2,0xe2,0xdc,0xe1,0xd1,0xdc, + 0x10,0x09,0x05,0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00, + 0xe2,0x02,0xdd,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff, + 0xe5,0xac,0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xe3,0x48,0xdd,0xd2,0x14,0xe1, + 0x17,0xdd,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98, + 0x00,0xe1,0x23,0xdd,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,0xb0, + 0xa2,0x00,0xd1,0xd5,0xd0,0x6a,0xcf,0x86,0xe5,0x78,0xe2,0xd4,0x19,0xe3,0xb1,0xe1, + 0xe2,0x8f,0xe1,0xe1,0x7e,0xe1,0x10,0x08,0x05,0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff, + 0xe6,0xb5,0xb7,0x00,0xd3,0x18,0xe2,0xfb,0xe1,0xe1,0xea,0xe1,0x10,0x09,0x05,0xff, + 0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3,0xbe,0x8e,0x00,0xd2,0x13,0xe1,0x13, + 0xe2,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd,0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1, + 0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85,0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00, + 0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00,0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86, + 0xe5,0x15,0xe4,0xd4,0x1a,0xe3,0x4d,0xe3,0xe2,0x33,0xe3,0xe1,0x20,0xe3,0x10,0x08, + 0x05,0xff,0xe7,0x9b,0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x16,0xe2, + 0x95,0xe3,0xe1,0x83,0xe3,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4, + 0x83,0xa3,0x00,0xd2,0x13,0xe1,0xb1,0xe3,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00, + 0x05,0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc, |
