Merge "Merge from upstream harfbuzz; rename hb_buffer_clear"
diff --git a/NEWS b/NEWS
index feb71ba..ef643f0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,27 @@
+Overview of changes leading to 0.9.10
+Thursday, January 3, 2013
+=====================================
+
+- [Indic] Fixed rendering of Malayalam dot-reph
+- Updated OT language tags.
+- Updated graphite2 backend.
+- Improved hb_ot_layout_get_size_params() logic.
+- Improve hb-shape/hb-view help output.
+- Fixed hb-set.h implementation to not crash.
+- Fixed various issues with hb_ot_layout_collect_lookups().
+- Various build fixes.
+
+New API:
+
+hb_graphite2_face_get_gr_face()
+hb_graphite2_font_get_gr_font()
+hb_coretext_face_get_cg_font()
+
+Modified API:
+
+hb_ot_layout_get_size_params()
+
+
Overview of changes leading to 0.9.9
Wednesday, December 5, 2012
====================================
diff --git a/TODO b/TODO
index 76104fa..c93b33e 100644
--- a/TODO
+++ b/TODO
@@ -71,9 +71,7 @@
hb-view / hb-shape enhancements:
===============================
-- --output-format should list available formats.
- Add --width, --height, --auto-size, --align, etc?
-- --features="init=medi=isol=fina=0"
Tests to write:
@@ -87,8 +85,6 @@
- GObject, FreeType, etc
-- hb_set_t
-
- hb_cache_t and relatives
- hb_feature_to/from_string
diff --git a/configure.ac b/configure.ac
index 90ca102..91ea713 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [0.9.9],
+ [0.9.10],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index 111d7a0..67579cd 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -59,7 +59,7 @@
}
#endif
-typedef long hb_atomic_int_t;
+typedef LONG hb_atomic_int_t;
#define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V))
#define hb_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P))
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 0a5600b..c7860e9 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -790,7 +790,7 @@
}
void
-hb_buffer_clear (hb_buffer_t *buffer)
+hb_buffer_clear_contents (hb_buffer_t *buffer)
{
buffer->clear ();
}
@@ -1071,8 +1071,8 @@
*/
static const char *serialize_formats[] = {
- "TEXT",
- "JSON",
+ "text",
+ "json",
NULL
};
diff --git a/src/hb-buffer.h b/src/hb-buffer.h
index 48ec4a5..5386e36 100644
--- a/src/hb-buffer.h
+++ b/src/hb-buffer.h
@@ -193,7 +193,7 @@
/* Like reset, but does NOT clear unicode_funcs. */
void
-hb_buffer_clear (hb_buffer_t *buffer);
+hb_buffer_clear_contents (hb_buffer_t *buffer);
/* Returns false if allocation failed */
hb_bool_t
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index 87abd3b..0b00005 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -62,7 +62,7 @@
template <typename T>
inline return_t process (const T &obj) { obj.closure (this); return HB_VOID; }
static return_t default_return_value (void) { return HB_VOID; }
- bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; }
+ bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; }
return_t recurse (unsigned int lookup_index)
{
if (unlikely (nesting_level_left == 0 || !recurse_func))
@@ -111,7 +111,7 @@
template <typename T>
inline return_t process (const T &obj) { return obj.would_apply (this); }
static return_t default_return_value (void) { return false; }
- bool stop_sublookup_iteration (const return_t r) const { return r; }
+ bool stop_sublookup_iteration (return_t r) const { return r; }
hb_face_t *face;
const hb_codepoint_t *glyphs;
@@ -150,7 +150,7 @@
template <typename T>
inline return_t process (const T &obj) { obj.collect_glyphs (this); return HB_VOID; }
static return_t default_return_value (void) { return HB_VOID; }
- bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; }
+ bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; }
return_t recurse (unsigned int lookup_index)
{
if (unlikely (nesting_level_left == 0 || !recurse_func))
@@ -243,7 +243,7 @@
template <typename T>
inline return_t process (const T &obj) { return obj.apply (this); }
static return_t default_return_value (void) { return false; }
- bool stop_sublookup_iteration (const return_t r) const { return r; }
+ bool stop_sublookup_iteration (return_t r) const { return r; }
return_t recurse (unsigned int lookup_index)
{
if (unlikely (nesting_level_left == 0 || !recurse_func))
@@ -1175,7 +1175,7 @@
struct ContextClosureLookupContext lookup_context = {
{intersects_class},
- NULL
+ &class_def
};
unsigned int count = ruleSet.len;
@@ -1191,9 +1191,10 @@
TRACE_COLLECT_GLYPHS (this);
(this+coverage).add_coverage (c->input);
+ const ClassDef &class_def = this+classDef;
struct ContextCollectGlyphsLookupContext lookup_context = {
{collect_class},
- NULL
+ &class_def
};
unsigned int count = ruleSet.len;
@@ -1750,9 +1751,15 @@
TRACE_COLLECT_GLYPHS (this);
(this+coverage).add_coverage (c->input);
+ const ClassDef &backtrack_class_def = this+backtrackClassDef;
+ const ClassDef &input_class_def = this+inputClassDef;
+ const ClassDef &lookahead_class_def = this+lookaheadClassDef;
+
struct ChainContextCollectGlyphsLookupContext lookup_context = {
{collect_class},
- {NULL, NULL, NULL}
+ {&backtrack_class_def,
+ &input_class_def,
+ &lookahead_class_def}
};
unsigned int count = ruleSet.len;
@@ -1764,13 +1771,17 @@
{
TRACE_WOULD_APPLY (this);
+ const ClassDef &backtrack_class_def = this+backtrackClassDef;
const ClassDef &input_class_def = this+inputClassDef;
+ const ClassDef &lookahead_class_def = this+lookaheadClassDef;
unsigned int index = input_class_def.get_class (c->glyphs[0]);
const ChainRuleSet &rule_set = this+ruleSet[index];
struct ChainContextApplyLookupContext lookup_context = {
{match_class},
- {NULL, &input_class_def, NULL}
+ {&backtrack_class_def,
+ &input_class_def,
+ &lookahead_class_def}
};
return TRACE_RETURN (rule_set.would_apply (c, lookup_context));
}
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index e4bac0a..5c266e6 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -433,18 +433,57 @@
const hb_tag_t *features,
hb_set_t *lookup_indexes /* OUT */)
{
+ unsigned int required_feature_index;
+ if (hb_ot_layout_language_get_required_feature_index (face,
+ table_tag,
+ script_index,
+ language_index,
+ &required_feature_index))
+ _hb_ot_layout_collect_lookups_lookups (face,
+ table_tag,
+ required_feature_index,
+ lookup_indexes);
+
if (!features)
{
/* All features */
- unsigned int count = hb_ot_layout_language_get_feature_tags (face, table_tag, script_index, language_index, 0, NULL, NULL);
- for (unsigned int feature_index = 0; feature_index < count; feature_index++)
- _hb_ot_layout_collect_lookups_lookups (face, table_tag, feature_index, lookup_indexes);
- } else {
+ unsigned int feature_indices[32];
+ unsigned int offset, len;
+
+ offset = 0;
+ do {
+ len = ARRAY_LENGTH (feature_indices);
+ hb_ot_layout_language_get_feature_indexes (face,
+ table_tag,
+ script_index,
+ language_index,
+ offset, &len,
+ feature_indices);
+
+ for (unsigned int i = 0; i < len; i++)
+ _hb_ot_layout_collect_lookups_lookups (face,
+ table_tag,
+ feature_indices[i],
+ lookup_indexes);
+
+ offset += len;
+ } while (len == ARRAY_LENGTH (feature_indices));
+ }
+ else
+ {
for (; *features; features++)
{
unsigned int feature_index;
- if (hb_ot_layout_language_find_feature (face, table_tag, script_index, language_index, *features, &feature_index))
- _hb_ot_layout_collect_lookups_lookups (face, table_tag, feature_index, lookup_indexes);
+ if (hb_ot_layout_language_find_feature (face,
+ table_tag,
+ script_index,
+ language_index,
+ *features,
+ &feature_index))
+ _hb_ot_layout_collect_lookups_lookups (face,
+ table_tag,
+ feature_index,
+ lookup_indexes);
}
}
}
@@ -457,18 +496,44 @@
const hb_tag_t *features,
hb_set_t *lookup_indexes /* OUT */)
{
+ _hb_ot_layout_collect_lookups_features (face,
+ table_tag,
+ script_index,
+ HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX,
+ features,
+ lookup_indexes);
+
if (!languages)
{
/* All languages */
- unsigned int count = hb_ot_layout_script_get_language_tags (face, table_tag, script_index, 0, NULL, NULL);
+ unsigned int count = hb_ot_layout_script_get_language_tags (face,
+ table_tag,
+ script_index,
+ 0, NULL, NULL);
for (unsigned int language_index = 0; language_index < count; language_index++)
- _hb_ot_layout_collect_lookups_features (face, table_tag, script_index, language_index, features, lookup_indexes);
- } else {
+ _hb_ot_layout_collect_lookups_features (face,
+ table_tag,
+ script_index,
+ language_index,
+ features,
+ lookup_indexes);
+ }
+ else
+ {
for (; *languages; languages++)
{
unsigned int language_index;
- if (hb_ot_layout_script_find_language (face, table_tag, script_index, *languages, &language_index))
- _hb_ot_layout_collect_lookups_features (face, table_tag, script_index, language_index, features, lookup_indexes);
+ if (hb_ot_layout_script_find_language (face,
+ table_tag,
+ script_index,
+ *languages,
+ &language_index))
+ _hb_ot_layout_collect_lookups_features (face,
+ table_tag,
+ script_index,
+ language_index,
+ features,
+ lookup_indexes);
}
}
}
@@ -484,15 +549,32 @@
if (!scripts)
{
/* All scripts */
- unsigned int count = hb_ot_layout_table_get_script_tags (face, table_tag, 0, NULL, NULL);
+ unsigned int count = hb_ot_layout_table_get_script_tags (face,
+ table_tag,
+ 0, NULL, NULL);
for (unsigned int script_index = 0; script_index < count; script_index++)
- _hb_ot_layout_collect_lookups_languages (face, table_tag, script_index, languages, features, lookup_indexes);
- } else {
+ _hb_ot_layout_collect_lookups_languages (face,
+ table_tag,
+ script_index,
+ languages,
+ features,
+ lookup_indexes);
+ }
+ else
+ {
for (; *scripts; scripts++)
{
unsigned int script_index;
- if (hb_ot_layout_table_find_script (face, table_tag, *scripts, &script_index))
- _hb_ot_layout_collect_lookups_languages (face, table_tag, script_index, languages, features, lookup_indexes);
+ if (hb_ot_layout_table_find_script (face,
+ table_tag,
+ *scripts,
+ &script_index))
+ _hb_ot_layout_collect_lookups_languages (face,
+ table_tag,
+ script_index,
+ languages,
+ features,
+ lookup_indexes);
}
}
}
@@ -508,9 +590,14 @@
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
- OT::hb_collect_glyphs_context_t c (face, glyphs_before, glyphs_input, glyphs_after, glyphs_output);
+ OT::hb_collect_glyphs_context_t c (face,
+ glyphs_before,
+ glyphs_input,
+ glyphs_after,
+ glyphs_output);
- switch (table_tag) {
+ switch (table_tag)
+ {
case HB_OT_TAG_GSUB:
{
const OT::SubstLookup& l = hb_ot_layout_from_face (face)->gsub->get_lookup (lookup_index);
diff --git a/src/hb-ot-shape-complex-indic-machine.hh b/src/hb-ot-shape-complex-indic-machine.hh
index f97ec52..ed40b96 100644
--- a/src/hb-ot-shape-complex-indic-machine.hh
+++ b/src/hb-ot-shape-complex-indic-machine.hh
@@ -51,35 +51,29 @@
5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
- 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u,
- 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u,
- 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u,
- 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u,
- 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u,
- 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
- 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
+ 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
+ 4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
+ 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u,
+ 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
+ 6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u,
5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u,
3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
- 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u,
- 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
- 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u,
- 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u,
- 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u,
- 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
- 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u,
+ 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 14u, 4u, 14u, 3u, 14u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u,
+ 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
+ 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
+ 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u,
+ 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
+ 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u,
+ 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
+ 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u,
3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u,
@@ -88,8 +82,21 @@
6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
- 1u, 16u, 3u, 17u, 1u, 16u, 0
+ 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u,
+ 3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
+ 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
+ 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u,
+ 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u,
+ 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
+ 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u,
+ 3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u,
+ 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
+ 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u,
+ 3u, 9u, 3u, 13u, 1u, 16u, 0
};
static const char _indic_syllable_machine_key_spans[] = {
@@ -110,35 +117,29 @@
3, 3, 1, 3, 3, 1, 3, 3,
1, 1, 1, 1, 4, 1, 1, 4,
1, 1, 4, 1, 1, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 16,
- 15, 12, 11, 16, 15, 12, 11, 16,
- 15, 12, 11, 16, 15, 12, 11, 16,
- 15, 12, 11, 10, 7, 5, 1, 1,
- 15, 7, 2, 7, 11, 12, 12, 11,
- 10, 12, 11, 10, 12, 11, 10, 12,
- 11, 9, 12, 11, 16, 12, 12, 16,
- 16, 16, 16, 16, 12, 12, 16, 16,
- 16, 16, 16, 12, 12, 16, 16, 16,
- 16, 16, 12, 12, 16, 16, 16, 16,
- 16, 12, 12, 12, 12, 11, 16, 15,
+ 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 3, 3, 3, 3, 1, 3, 3,
+ 1, 3, 3, 1, 16, 1, 1, 1,
+ 1, 4, 1, 1, 4, 1, 1, 4,
+ 1, 1, 16, 15, 12, 11, 16, 15,
12, 11, 16, 15, 12, 11, 16, 15,
12, 11, 16, 15, 12, 11, 10, 7,
5, 1, 1, 15, 7, 2, 7, 11,
12, 12, 11, 10, 12, 11, 10, 12,
- 11, 10, 12, 11, 9, 12, 16, 12,
- 12, 16, 16, 16, 16, 16, 12, 12,
- 16, 16, 16, 16, 16, 12, 12, 16,
- 16, 16, 16, 16, 12, 12, 16, 16,
- 16, 16, 11, 16, 12, 12, 11, 16,
- 15, 12, 11, 16, 15, 12, 11, 16,
- 15, 12, 11, 16, 15, 12, 11, 10,
- 7, 5, 1, 1, 15, 7, 2, 7,
- 11, 12, 12, 11, 10, 12, 11, 10,
- 12, 11, 10, 12, 11, 9, 12, 16,
+ 11, 10, 12, 11, 9, 12, 11, 16,
12, 12, 16, 16, 16, 16, 16, 12,
12, 16, 16, 16, 16, 16, 12, 12,
16, 16, 16, 16, 16, 12, 12, 16,
- 16, 16, 16, 16, 11, 12, 11, 12,
+ 16, 16, 16, 16, 12, 12, 12, 12,
+ 11, 16, 15, 12, 11, 16, 15, 12,
+ 11, 16, 15, 12, 11, 16, 15, 12,
+ 11, 10, 7, 5, 1, 1, 15, 7,
+ 2, 7, 11, 12, 12, 11, 10, 12,
+ 11, 10, 12, 11, 10, 12, 11, 9,
+ 12, 16, 12, 12, 16, 16, 16, 16,
+ 16, 12, 12, 16, 16, 16, 16, 16,
+ 12, 12, 16, 16, 16, 16, 16, 12,
+ 12, 16, 16, 16, 16, 11, 16, 12,
12, 11, 16, 15, 12, 11, 16, 15,
12, 11, 16, 15, 12, 11, 16, 15,
12, 11, 10, 7, 5, 1, 1, 15,
@@ -147,8 +148,21 @@
9, 12, 16, 12, 12, 16, 16, 16,
16, 16, 12, 12, 16, 16, 16, 16,
16, 12, 12, 16, 16, 16, 16, 16,
- 12, 12, 16, 16, 16, 16, 16, 12,
- 16, 15, 16
+ 12, 12, 16, 16, 16, 16, 16, 11,
+ 12, 11, 12, 12, 11, 16, 15, 12,
+ 11, 16, 15, 12, 11, 16, 15, 12,
+ 11, 16, 15, 12, 11, 10, 7, 5,
+ 1, 1, 15, 7, 2, 7, 11, 12,
+ 12, 11, 10, 12, 11, 10, 12, 11,
+ 10, 12, 11, 9, 12, 16, 12, 12,
+ 16, 16, 16, 16, 16, 12, 12, 16,
+ 16, 16, 16, 16, 12, 12, 16, 16,
+ 16, 16, 16, 12, 12, 16, 16, 16,
+ 16, 16, 12, 16, 15, 16, 11, 16,
+ 15, 12, 11, 5, 1, 1, 12, 12,
+ 16, 12, 11, 10, 12, 11, 10, 12,
+ 11, 10, 12, 11, 7, 15, 7, 2,
+ 7, 11, 16
};
static const short _indic_syllable_machine_index_offsets[] = {
@@ -170,44 +184,51 @@
681, 683, 685, 687, 689, 694, 696, 698,
703, 705, 707, 712, 714, 716, 728, 740,
752, 764, 776, 788, 800, 812, 824, 836,
- 853, 869, 882, 894, 911, 927, 940, 952,
- 969, 985, 998, 1010, 1027, 1043, 1056, 1068,
- 1085, 1101, 1114, 1126, 1137, 1145, 1151, 1153,
- 1155, 1171, 1179, 1182, 1190, 1202, 1215, 1228,
- 1240, 1251, 1264, 1276, 1287, 1300, 1312, 1323,
- 1336, 1348, 1358, 1371, 1383, 1400, 1413, 1426,
- 1443, 1460, 1477, 1494, 1511, 1524, 1537, 1554,
- 1571, 1588, 1605, 1622, 1635, 1648, 1665, 1682,
- 1699, 1716, 1733, 1746, 1759, 1776, 1793, 1810,
- 1827, 1844, 1857, 1870, 1883, 1896, 1908, 1925,
- 1941, 1954, 1966, 1983, 1999, 2012, 2024, 2041,
- 2057, 2070, 2082, 2099, 2115, 2128, 2140, 2151,
- 2159, 2165, 2167, 2169, 2185, 2193, 2196, 2204,
- 2216, 2229, 2242, 2254, 2265, 2278, 2290, 2301,
- 2314, 2326, 2337, 2350, 2362, 2372, 2385, 2402,
- 2415, 2428, 2445, 2462, 2479, 2496, 2513, 2526,
- 2539, 2556, 2573, 2590, 2607, 2624, 2637, 2650,
- 2667, 2684, 2701, 2718, 2735, 2748, 2761, 2778,
- 2795, 2812, 2829, 2841, 2858, 2871, 2884, 2896,
- 2913, 2929, 2942, 2954, 2971, 2987, 3000, 3012,
- 3029, 3045, 3058, 3070, 3087, 3103, 3116, 3128,
- 3139, 3147, 3153, 3155, 3157, 3173, 3181, 3184,
- 3192, 3204, 3217, 3230, 3242, 3253, 3266, 3278,
- 3289, 3302, 3314, 3325, 3338, 3350, 3360, 3373,
- 3390, 3403, 3416, 3433, 3450, 3467, 3484, 3501,
- 3514, 3527, 3544, 3561, 3578, 3595, 3612, 3625,
- 3638, 3655, 3672, 3689, 3706, 3723, 3736, 3749,
- 3766, 3783, 3800, 3817, 3834, 3846, 3859, 3871,
- 3884, 3897, 3909, 3926, 3942, 3955, 3967, 3984,
- 4000, 4013, 4025, 4042, 4058, 4071, 4083, 4100,
- 4116, 4129, 4141, 4152, 4160, 4166, 4168, 4170,
- 4186, 4194, 4197, 4205, 4217, 4230, 4243, 4255,
- 4266, 4279, 4291, 4302, 4315, 4327, 4338, 4351,
- 4363, 4373, 4386, 4403, 4416, 4429, 4446, 4463,
- 4480, 4497, 4514, 4527, 4540, 4557, 4574, 4591,
- 4608, 4625, 4638, 4651, 4668, 4685, 4702, 4719,
- 4736, 4749, 4762, 4779, 4796, 4813, 4830, 4847,
- 4860, 4877, 4893
+ 848, 860, 864, 868, 872, 876, 878, 882,
+ 886, 888, 892, 896, 898, 915, 917, 919,
+ 921, 923, 928, 930, 932, 937, 939, 941,
+ 946, 948, 950, 967, 983, 996, 1008, 1025,
+ 1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141,
+ 1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251,
+ 1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304,
+ 1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401,
+ 1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497,
+ 1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625,
+ 1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749,
+ 1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873,
+ 1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997,
+ 2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113,
+ 2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229,
+ 2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299,
+ 2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379,
+ 2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476,
+ 2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593,
+ 2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721,
+ 2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849,
+ 2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972,
+ 2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085,
+ 3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201,
+ 3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271,
+ 3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356,
+ 3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452,
+ 3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564,
+ 3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692,
+ 3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820,
+ 3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948,
+ 3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056,
+ 4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172,
+ 4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274,
+ 4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331,
+ 4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429,
+ 4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530,
+ 4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654,
+ 4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782,
+ 4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910,
+ 4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036,
+ 5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117,
+ 5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219,
+ 5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312,
+ 5315, 5323, 5335
};
static const short _indic_syllable_machine_indicies[] = {
@@ -285,7 +306,7 @@
76, 76, 76, 76, 76, 76, 109, 76,
109, 80, 80, 81, 76, 76, 76, 76,
76, 110, 109, 76, 111, 80, 80, 81,
- 76, 76, 76, 76, 76, 76, 111, 76,
+ 82, 82, 82, 82, 82, 82, 111, 82,
111, 80, 80, 81, 76, 76, 76, 76,
76, 112, 111, 76, 113, 80, 80, 81,
76, 76, 76, 76, 76, 76, 113, 76,
@@ -315,577 +336,640 @@
114, 149, 148, 114, 150, 118, 118, 119,
114, 114, 114, 114, 114, 114, 150, 114,
150, 118, 118, 119, 114, 114, 114, 114,
- 114, 151, 150, 114, 153, 154, 155, 156,
- 157, 158, 81, 159, 160, 152, 161, 161,
- 162, 163, 164, 165, 152, 167, 168, 169,
- 170, 5, 171, 172, 173, 166, 166, 37,
- 174, 166, 166, 153, 166, 175, 168, 176,
- 176, 5, 171, 172, 173, 166, 166, 166,
- 174, 166, 168, 176, 176, 5, 171, 172,
- 173, 166, 166, 166, 174, 166, 177, 166,
- 166, 166, 18, 178, 166, 171, 172, 166,
- 166, 166, 166, 179, 166, 177, 166, 180,
- 181, 182, 183, 5, 171, 172, 173, 166,
- 166, 35, 184, 166, 166, 177, 166, 185,
- 181, 186, 186, 5, 171, 172, 173, 166,
- 166, 166, 184, 166, 181, 186, 186, 5,
- 171, 172, 173, 166, 166, 166, 184, 166,
- 187, 166, 166, 166, 18, 188, 166, 171,
- 172, 166, 166, 166, 166, 179, 166, 187,
- 166, 189, 190, 191, 192, 5, 171, 172,
- 173, 166, 166, 33, 193, 166, 166, 187,
- 166, 194, 190, 195, 195, 5, 171, 172,
- 173, 166, 166, 166, 193, 166, 190, 195,
- 195, 5, 171, 172, 173, 166, 166, 166,
- 193, 166, 196, 166, 166, 166, 18, 197,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 196, 166, 198, 199, 200, 201, 5,
- 171, 172, 173, 166, 166, 31, 202, 166,
- 166, 196, 166, 203, 199, 204, 204, 5,
- 171, 172, 173, 166, 166, 166, 202, 166,
- 199, 204, 204, 5, 171, 172, 173, 166,
- 166, 166, 202, 166, 205, 166, 166, 166,
- 18, 206, 166, 171, 172, 166, 166, 166,
- 166, 179, 166, 205, 166, 207, 208, 209,
- 210, 5, 171, 172, 173, 166, 166, 29,
- 211, 166, 166, 205, 166, 212, 208, 213,
- 213, 5, 171, 172, 173, 166, 166, 166,
- 211, 166, 208, 213, 213, 5, 171, 172,
- 173, 166, 166, 166, 211, 166, 18, 214,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 215, 166, 166, 166, 172, 166, 172,
- 166, 216, 166, 217, 166, 218, 219, 166,
- 171, 172, 166, 166, 166, 3, 166, 166,
- 166, 1, 166, 2, 166, 166, 166, 166,
- 171, 172, 166, 171, 172, 166, 217, 166,
- 166, 166, 166, 171, 172, 166, 217, 166,
- 218, 166, 166, 171, 172, 166, 166, 166,
- 3, 166, 18, 166, 220, 220, 5, 171,
- 172, 166, 166, 166, 166, 179, 166, 221,
- 27, 222, 223, 8, 171, 172, 166, 166,
- 166, 166, 179, 166, 27, 222, 223, 8,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 222, 222, 8, 171, 172, 166, 166, 166,
- 166, 179, 166, 224, 24, 225, 226, 11,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 24, 225, 226, 11, 171, 172, 166, 166,
- 166, 166, 179, 166, 225, 225, 11, 171,
- 172, 166, 166, 166, 166, 179, 166, 227,
- 21, 228, 229, 14, 171, 172, 166, 166,
- 166, 166, 179, 166, 21, 228, 229, 14,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 228, 228, 14, 171, 172, 166, 166, 166,
- 166, 179, 166, 230, 18, 166, 231, 166,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 18, 166, 231, 166, 171, 172, 166, 166,
- 166, 166, 179, 166, 232, 166, 171, 172,
- 166, 166, 166, 166, 179, 166, 18, 166,
- 166, 166, 166, 171, 172, 166, 166, 166,
- 166, 179, 166, 208, 213, 213, 5, 171,
- 172, 166, 166, 166, 166, 211, 166, 1,
- 2, 166, 166, 18, 214, 166, 171, 172,
- 166, 166, 166, 166, 179, 166, 1, 166,
- 207, 208, 213, 213, 5, 171, 172, 173,
- 166, 166, 166, 211, 166, 207, 208, 209,
- 213, 5, 171, 172, 173, 166, 166, 29,
- 211, 166, 205, 166, 233, 166, 220, 220,
- 5, 171, 172, 166, 166, 166, 166, 179,
- 166, 205, 166, 205, 166, 166, 166, 166,
- 166, 166, 171, 172, 166, 166, 166, 166,
- 179, 166, 205, 166, 205, 166, 166, 166,
- 166, 234, 166, 171, 172, 166, 166, 166,
- 166, 179, 166, 205, 166, 205, 166, 233,
- 166, 166, 166, 166, 171, 172, 166, 166,
- 166, 166, 179, 166, 205, 166, 205, 2,
- 166, 166, 18, 206, 166, 171, 172, 166,
- 166, 166, 166, 179, 166, 205, 166, 198,
- 199, 204, 204, 5, 171, 172, 173, 166,
- 166, 166, 202, 166, 198, 199, 200, 204,
- 5, 171, 172, 173, 166, 166, 31, 202,
- 166, 196, 166, 235, 166, 220, 220, 5,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 196, 166, 196, 166, 166, 166, 166, 166,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 196, 166, 196, 166, 166, 166, 166,
- 236, 166, 171, 172, 166, 166, 166, 166,
- 179, 166, 196, 166, 196, 166, 235, 166,
- 166, 166, 166, 171, 172, 166, 166, 166,
- 166, 179, 166, 196, 166, 196, 2, 166,
- 166, 18, 197, 166, 171, 172, 166, 166,
- 166, 166, 179, 166, 196, 166, 189, 190,
- 195, 195, 5, 171, 172, 173, 166, 166,
- 166, 193, 166, 189, 190, 191, 195, 5,
- 171, 172, 173, 166, 166, 33, 193, 166,
- 187, 166, 237, 166, 220, 220, 5, 171,
- 172, 166, 166, 166, 166, 179, 166, 187,
- 166, 187, 166, 166, 166, 166, 166, 166,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 187, 166, 187, 166, 166, 166, 166, 238,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 187, 166, 187, 166, 237, 166, 166,
- 166, 166, 171, 172, 166, 166, 166, 166,
- 179, 166, 187, 166, 187, 2, 166, 166,
- 18, 188, 166, 171, 172, 166, 166, 166,
- 166, 179, 166, 187, 166, 180, 181, 186,
- 186, 5, 171, 172, 173, 166, 166, 166,
- 184, 166, 180, 181, 182, 186, 5, 171,
- 172, 173, 166, 166, 35, 184, 166, 177,
- 166, 239, 166, 220, 220, 5, 171, 172,
- 166, 166, 166, 166, 179, 166, 177, 166,
- 177, 166, 166, 166, 166, 166, 166, 171,
- 172, 166, 166, 166, 166, 179, 166, 177,
- 166, 177, 166, 166, 166, 166, 240, 166,
- 171, 172, 166, 166, 166, 166, 179, 166,
- 177, 166, 177, 166, 239, 166, 166, 166,
- 166, 171, 172, 166, 166, 166, 166, 179,
- 166, 177, 166, 177, 2, 166, 166, 18,
- 178, 166, 171, 172, 166, 166, 166, 166,
- 179, 166, 177, 166, 167, 168, 176, 176,
- 5, 171, 172, 173, 166, 166, 166, 174,
- 166, 167, 168, 169, 176, 5, 171, 172,
- 173, 166, 166, 37, 174, 166, 242, 243,
- 244, 245, 43, 246, 247, 241, 241, 241,
- 75, 248, 241, 249, 243, 250, 245, 43,
- 246, 247, 241, 241, 241, 241, 248, 241,
- 243, 250, 245, 43, 246, 247, 241, 241,
- 241, 241, 248, 241, 251, 241, 241, 241,
- 56, 252, 241, 246, 247, 241, 241, 241,
- 241, 253, 241, 251, 241, 254, 255, 256,
- 257, 43, 246, 247, 241, 241, 241, 73,
- 258, 241, 241, 251, 241, 259, 255, 260,
- 260, 43, 246, 247, 241, 241, 241, 241,
- 258, 241, 255, 260, 260, 43, 246, 247,
- 241, 241, 241, 241, 258, 241, 261, 241,
- 241, 241, 56, 262, 241, 246, 247, 241,
- 241, 241, 241, 253, 241, 261, 241, 263,
- 264, 265, 266, 43, 246, 247, 241, 241,
- 241, 71, 267, 241, 241, 261, 241, 268,
- 264, 269, 269, 43, 246, 247, 241, 241,
- 241, 241, 267, 241, 264, 269, 269, 43,
- 246, 247, 241, 241, 241, 241, 267, 241,
- 270, 241, 241, 241, 56, 271, 241, 246,
- 247, 241, 241, 241, 241, 253, 241, 270,
- 241, 272, 273, 274, 275, 43, 246, 247,
- 241, 241, 241, 69, 276, 241, 241, 270,
- 241, 277, 273, 278, 278, 43, 246, 247,
- 241, 241, 241, 241, 276, 241, 273, 278,
- 278, 43, 246, 247, 241, 241, 241, 241,
- 276, 241, 279, 241, 241, 241, 56, 280,
- 241, 246, 247, 241, 241, 241, 241, 253,
- 241, 279, 241, 281, 282, 283, 284, 43,
- 246, 247, 241, 241, 241, 67, 285, 241,
- 241, 279, 241, 286, 282, 287, 287, 43,
- 246, 247, 241, 241, 241, 241, 285, 241,
- 282, 287, 287, 43, 246, 247, 241, 241,
- 241, 241, 285, 241, 56, 288, 241, 246,
- 247, 241, 241, 241, 241, 253, 241, 246,
- 247, 241, 241, 241, 241, 253, 241, 289,
- 241, 241, 241, 247, 241, 247, 241, 290,
- 241, 291, 241, 292, 293, 241, 246, 247,
- 241, 241, 241, 41, 241, 241, 241, 39,
- 241, 40, 241, 241, 241, 241, 246, 247,
- 241, 246, 247, 241, 291, 241, 241, 241,
- 241, 246, 247, 241, 291, 241, 292, 241,
- 241, 246, 247, 241, 241, 241, 41, 241,
- 56, 241, 294, 294, 43, 246, 247, 241,
- 241, 241, 241, 253, 241, 295, 65, 296,
- 297, 46, 246, 247, 241, 241, 241, 241,
- 253, 241, 65, 296, 297, 46, 246, 247,
- 241, 241, 241, 241, 253, 241, 296, 296,
- 46, 246, 247, 241, 241, 241, 241, 253,
- 241, 298, 62, 299, 300, 49, 246, 247,
- 241, 241, 241, 241, 253, 241, 62, 299,
- 300, 49, 246, 247, 241, 241, 241, 241,
- 253, 241, 299, 299, 49, 246, 247, 241,
- 241, 241, 241, 253, 241, 301, 59, 302,
- 303, 52, 246, 247, 241, 241, 241, 241,
- 253, 241, 59, 302, 303, 52, 246, 247,
- 241, 241, 241, 241, 253, 241, 302, 302,
- 52, 246, 247, 241, 241, 241, 241, 253,
- 241, 304, 56, 241, 305, 241, 246, 247,
- 241, 241, 241, 241, 253, 241, 56, 241,
- 305, 241, 246, 247, 241, 241, 241, 241,
- 253, 241, 306, 241, 246, 247, 241, 241,
- 241, 241, 253, 241, 56, 241, 241, 241,
- 241, 246, 247, 241, 241, 241, 241, 253,
- 241, 39, 40, 241, 241, 56, 288, 241,
- 246, 247, 241, 241, 241, 241, 253, 241,
- 39, 241, 281, 282, 287, 287, 43, 246,
- 247, 241, 241, 241, 241, 285, 241, 281,
- 282, 283, 287, 43, 246, 247, 241, 241,
- 241, 67, 285, 241, 279, 241, 307, 241,
- 294, 294, 43, 246, 247, 241, 241, 241,
- 241, 253, 241, 279, 241, 279, 241, 241,
- 241, 241, 241, 241, 246, 247, 241, 241,
- 241, 241, 253, 241, 279, 241, 279, 241,
- 241, 241, 241, 308, 241, 246, 247, 241,
- 241, 241, 241, 253, 241, 279, 241, 279,
- 241, 307, 241, 241, 241, 241, 246, 247,
- 241, 241, 241, 241, 253, 241, 279, 241,
- 279, 40, 241, 241, 56, 280, 241, 246,
- 247, 241, 241, 241, 241, 253, 241, 279,
- 241, 272, 273, 278, 278, 43, 246, 247,
- 241, 241, 241, 241, 276, 241, 272, 273,
- 274, 278, 43, 246, 247, 241, 241, 241,
- 69, 276, 241, 270, 241, 309, 241, 294,
- 294, 43, 246, 247, 241, 241, 241, 241,
- 253, 241, 270, 241, 270, 241, 241, 241,
- 241, 241, 241, 246, 247, 241, 241, 241,
- 241, 253, 241, 270, 241, 270, 241, 241,
- 241, 241, 310, 241, 246, 247, 241, 241,
- 241, 241, 253, 241, 270, 241, 270, 241,
- 309, 241, 241, 241, 241, 246, 247, 241,
- 241, 241, 241, 253, 241, 270, 241, 270,
- 40, 241, 241, 56, 271, 241, 246, 247,
- 241, 241, 241, 241, 253, 241, 270, 241,
- 263, 264, 269, 269, 43, 246, 247, 241,
- 241, 241, 241, 267, 241, 263, 264, 265,
- 269, 43, 246, 247, 241, 241, 241, 71,
- 267, 241, 261, 241, 311, 241, 294, 294,
- 43, 246, 247, 241, 241, 241, 241, 253,
- 241, 261, 241, 261, 241, 241, 241, 241,
- 241, 241, 246, 247, 241, 241, 241, 241,
- 253, 241, 261, 241, 261, 241, 241, 241,
- 241, 312, 241, 246, 247, 241, 241, 241,
- 241, 253, 241, 261, 241, 261, 241, 311,
- 241, 241, 241, 241, 246, 247, 241, 241,
- 241, 241, 253, 241, 261, 241, 261, 40,
- 241, 241, 56, 262, 241, 246, 247, 241,
- 241, 241, 241, 253, 241, 261, 241, 254,
- 255, 260, 260, 43, 246, 247, 241, 241,
- 241, 241, 258, 241, 254, 255, 256, 260,
- 43, 246, 247, 241, 241, 241, 73, 258,
- 241, 251, 241, 313, 241, 294, 294, 43,
- 246, 247, 241, 241, 241, 241, 253, 241,
- 251, 241, 251, 241, 241, 241, 241, 241,
- 241, 246, 247, 241, 241, 241, 241, 253,
- 241, 251, 241, 251, 241, 241, 241, 241,
- 314, 241, 246, 247, 241, 241, 241, 241,
- 253, 241, 251, 241, 251, 241, 313, 241,
- 241, 241, 241, 246, 247, 241, 241, 241,
- 241, 253, 241, 251, 241, 74, 42, 42,
- 43, 241, 241, 241, 241, 241, 241, 74,
- 241, 251, 40, 241, 241, 56, 252, 241,
- 246, 247, 241, 241, 241, 241, 253, 241,
- 251, 241, 242, 243, 250, 245, 43, 246,
- 247, 241, 241, 241, 241, 248, 241, 316,
- 156, 317, 317, 81, 159, 160, 315, 315,
- 315, 315, 163, 315, 156, 317, 317, 81,
- 159, 160, 315, 315, 315, 315, 163, 315,
- 318, 315, 315, 315, 95, 319, 315, 159,
- 160, 315, 315, 315, 315, 320, 315, 318,
- 315, 321, 322, 323, 324, 81, 159, 160,
- 315, 315, 315, 112, 325, 315, 315, 318,
- 315, 326, 322, 327, 327, 81, 159, 160,
- 315, 315, 315, 315, 325, 315, 322, 327,
- 327, 81, 159, 160, 315, 315, 315, 315,
- 325, 315, 328, 315, 315, 315, 95, 329,
- 315, 159, 160, 315, 315, 315, 315, 320,
- 315, 328, 315, 330, 331, 332, 333, 81,
- 159, 160, 315, 315, 315, 110, 334, 315,
- 315, 328, 315, 335, 331, 336, 336, 81,
- 159, 160, 315, 315, 315, 315, 334, 315,
- 331, 336, 336, 81, 159, 160, 315, 315,
- 315, 315, 334, 315, 337, 315, 315, 315,
- 95, 338, 315, 159, 160, 315, 315, 315,
- 315, 320, 315, 337, 315, 339, 340, 341,
- 342, 81, 159, 160, 315, 315, 315, 108,
- 343, 315, 315, 337, 315, 344, 340, 345,
- 345, 81, 159, 160, 315, 315, 315, 315,
- 343, 315, 340, 345, 345, 81, 159, 160,
- 315, 315, 315, 315, 343, 315, 346, 315,
- 315, 315, 95, 347, 315, 159, 160, 315,
- 315, 315, 315, 320, 315, 346, 315, 348,
- 349, 350, 351, 81, 159, 160, 315, 315,
- 315, 106, 352, 315, 315, 346, 315, 353,
- 349, 354, 354, 81, 159, 160, 315, 315,
- 315, 315, 352, 315, 349, 354, 354, 81,
- 159, 160, 315, 315, 315, 315, 352, 315,
- 95, 355, 315, 159, 160, 315, 315, 315,
- 315, 320, 315, 159, 160, 315, 315, 315,
- 315, 320, 315, 356, 315, 315, 315, 160,
- 315, 160, 315, 357, 315, 358, 315, 359,
- 360, 315, 159, 160, 315, 315, 315, 79,
- 315, 315, 315, 77, 315, 78, 315, 315,
- 315, 315, 159, 160, 315, 159, 160, 315,
- 358, 315, 315, 315, 315, 159, 160, 315,
- 358, 315, 359, 315, 315, 159, 160, 315,
- 315, 315, 79, 315, 95, 315, 361, 361,
- 81, 159, 160, 315, 315, 315, 315, 320,
- 315, 362, 104, 363, 364, 85, 159, 160,
- 315, 315, 315, 315, 320, 315, 104, 363,
- 364, 85, 159, 160, 315, 315, 315, 315,
- 320, 315, 363, 363, 85, 159, 160, 315,
- 315, 315, 315, 320, 315, 365, 101, 366,
- 367, 88, 159, 160, 315, 315, 315, 315,
- 320, 315, 101, 366, 367, 88, 159, 160,
- 315, 315, 315, 315, 320, 315, 366, 366,
- 88, 159, 160, 315, 315, 315, 315, 320,
- 315, 368, 98, 369, 370, 91, 159, 160,
- 315, 315, 315, 315, 320, 315, 98, 369,
- 370, 91, 159, 160, 315, 315, 315, 315,
- 320, 315, 369, 369, 91, 159, 160, 315,
- 315, 315, 315, 320, 315, 371, 95, 315,
- 372, 315, 159, 160, 315, 315, 315, 315,
- 320, 315, 95, 315, 372, 315, 159, 160,
- 315, 315, 315, 315, 320, 315, 373, 315,
- 159, 160, 315, 315, 315, 315, 320, 315,
- 95, 315, 315, 315, 315, 159, 160, 315,
- 315, 315, 315, 320, 315, 77, 78, 315,
- 315, 95, 355, 315, 159, 160, 315, 315,
- 315, 315, 320, 315, 77, 315, 348, 349,
- 354, 354, 81, 159, 160, 315, 315, 315,
- 315, 352, 315, 348, 349, 350, 354, 81,
- 159, 160, 315, 315, 315, 106, 352, 315,
- 346, 315, 374, 315, 361, 361, 81, 159,
- 160, 315, 315, 315, 315, 320, 315, 346,
- 315, 346, 315, 315, 315, 315, 315, 315,
- 159, 160, 315, 315, 315, 315, 320, 315,
- 346, 315, 346, 315, 315, 315, 315, 375,
- 315, 159, 160, 315, 315, 315, 315, 320,
- 315, 346, 315, 346, 315, 374, 315, 315,
- 315, 315, 159, 160, 315, 315, 315, 315,
- 320, 315, 346, 315, 346, 78, 315, 315,
- 95, 347, 315, 159, 160, 315, 315, 315,
- 315, 320, 315, 346, 315, 339, 340, 345,
- 345, 81, 159, 160, 315, 315, 315, 315,
- 343, 315, 339, 340, 341, 345, 81, 159,
- 160, 315, 315, 315, 108, 343, 315, 337,
- 315, 376, 315, 361, 361, 81, 159, 160,
- 315, 315, 315, 315, 320, 315, 337, 315,
- 337, 315, 315, 315, 315, 315, 315, 159,
- 160, 315, 315, 315, 315, 320, 315, 337,
- 315, 337, 315, 315, 315, 315, 377, 315,
- 159, 160, 315, 315, 315, 315, 320, 315,
- 337, 315, 337, 315, 376, 315, 315, 315,
- 315, 159, 160, 315, 315, 315, 315, 320,
- 315, 337, 315, 337, 78, 315, 315, 95,
- 338, 315, 159, 160, 315, 315, 315, 315,
- 320, 315, 337, 315, 330, 331, 336, 336,
- 81, 159, 160, 315, 315, 315, 315, 334,
- 315, 330, 331, 332, 336, 81, 159, 160,
- 315, 315, 315, 110, 334, 315, 328, 315,
- 378, 315, 361, 361, 81, 159, 160, 315,
- 315, 315, 315, 320, 315, 328, 315, 328,
- 315, 315, 315, 315, 315, 315, 159, 160,
- 315, 315, 315, 315, 320, 315, 328, 315,
- 328, 315, 315, 315, 315, 379, 315, 159,
- 160, 315, 315, 315, 315, 320, 315, 328,
- 315, 328, 315, 378, 315, 315, 315, 315,
- 159, 160, 315, 315, 315, 315, 320, 315,
- 328, 315, 328, 78, 315, 315, 95, 329,
- 315, 159, 160, 315, 315, 315, 315, 320,
- 315, 328, 315, 321, 322, 327, 327, 81,
- 159, 160, 315, 315, 315, 315, 325, 315,
- 321, 322, 323, 327, 81, 159, 160, 315,
- 315, 315, 112, 325, 315, 318, 315, 380,
- 315, 361, 361, 81, 159, 160, 315, 315,
- 315, 315, 320, 315, 318, 315, 318, 315,
- 315, 315, 315, 315, 315, 159, 160, 315,
- 315, 315, 315, 320, 315, 318, 315, 318,
- 315, 315, 315, 315, 381, 315, 159, 160,
- 315, 315, 315, 315, 320, 315, 318, 315,
- 318, 315, 380, 315, 315, 315, 315, 159,
- 160, 315, 315, 315, 315, 320, 315, 318,
- 315, 318, 78, 315, 315, 95, 319, 315,
- 159, 160, 315, 315, 315, 315, 320, 315,
- 318, 315, 113, 80, 80, 81, 382, 382,
- 382, 382, 382, 162, 113, 382, 155, 156,
- 317, 317, 81, 159, 160, 315, 315, 315,
- 315, 163, 315, 113, 80, 80, 81, 382,
- 382, 382, 382, 382, 382, 113, 382, 384,
- 385, 386, 387, 119, 388, 389, 383, 383,
- 383, 151, 390, 383, 391, 385, 387, 387,
- 119, 388, 389, 383, 383, 383, 383, 390,
- 383, 385, 387, 387, 119, 388, 389, 383,
- 383, 383, 383, 390, 383, 392, 383, 383,
- 383, 132, 393, 383, 388, 389, 383, 383,
- 383, 383, 394, 383, 392, 383, 395, 396,
- 397, 398, 119, 388, 389, 383, 383, 383,
- 149, 399, 383, 383, 392, 383, 400, 396,
- 401, 401, 119, 388, 389, 383, 383, 383,
- 383, 399, 383, 396, 401, 401, 119, 388,
- 389, 383, 383, 383, 383, 399, 383, 402,
- 383, 383, 383, 132, 403, 383, 388, 389,
- 383, 383, 383, 383, 394, 383, 402, 383,
- 404, 405, 406, 407, 119, 388, 389, 383,
- 383, 383, 147, 408, 383, 383, 402, 383,
- 409, 405, 410, 410, 119, 388, 389, 383,
- 383, 383, 383, 408, 383, 405, 410, 410,
- 119, 388, 389, 383, 383, 383, 383, 408,
- 383, 411, 383, 383, 383, 132, 412, 383,
- 388, 389, 383, 383, 383, 383, 394, 383,
- 411, 383, 413, 414, 415, 416, 119, 388,
- 389, 383, 383, 383, 145, 417, 383, 383,
- 411, 383, 418, 414, 419, 419, 119, 388,
- 389, 383, 383, 383, 383, 417, 383, 414,
- 419, 419, 119, 388, 389, 383, 383, 383,
- 383, 417, 383, 420, 383, 383, 383, 132,
- 421, 383, 388, 389, 383, 383, 383, 383,
- 394, 383, 420, 383, 422, 423, 424, 425,
- 119, 388, 389, 383, 383, 383, 143, 426,
- 383, 383, 420, 383, 427, 423, 428, 428,
- 119, 388, 389, 383, 383, 383, 383, 426,
- 383, 423, 428, 428, 119, 388, 389, 383,
- 383, 383, 383, 426, 383, 132, 429, 383,
- 388, 389, 383, 383, 383, 383, 394, 383,
- 388, 389, 383, 383, 383, 383, 394, 383,
- 430, 383, 383, 383, 389, 383, 389, 383,
- 431, 383, 432, 383, 433, 434, 383, 388,
- 389, 383, 383, 383, 117, 383, 383, 383,
- 115, 383, 116, 383, 383, 383, 383, 388,
- 389, 383, 388, 389, 383, 432, 383, 383,
- 383, 383, 388, 389, 383, 432, 383, 433,
- 383, 383, 388, 389, 383, 383, 383, 117,
- 383, 132, 383, 435, 435, 119, 388, 389,
- 383, 383, 383, 383, 394, 383, 436, 141,
- 437, 438, 122, 388, 389, 383, 383, 383,
- 383, 394, 383, 141, 437, 438, 122, 388,
- 389, 383, 383, 383, 383, 394, 383, 437,
- 437, 122, 388, 389, 383, 383, 383, 383,
- 394, 383, 439, 138, 440, 441, 125, 388,
- 389, 383, 383, 383, 383, 394, 383, 138,
- 440, 441, 125, 388, 389, 383, 383, 383,
- 383, 394, 383, 440, 440, 125, 388, 389,
- 383, 383, 383, 383, 394, 383, 442, 135,
- 443, 444, 128, 388, 389, 383, 383, 383,
- 383, 394, 383, 135, 443, 444, 128, 388,
- 389, 383, 383, 383, 383, 394, 383, 443,
- 443, 128, 388, 389, 383, 383, 383, 383,
- 394, 383, 445, 132, 383, 446, 383, 388,
- 389, 383, 383, 383, 383, 394, 383, 132,
- 383, 446, 383, 388, 389, 383, 383, 383,
- 383, 394, 383, 447, 383, 388, 389, 383,
- 383, 383, 383, 394, 383, 132, 383, 383,
- 383, 383, 388, 389, 383, 383, 383, 383,
- 394, 383, 115, 116, 383, 383, 132, 429,
- 383, 388, 389, 383, 383, 383, 383, 394,
- 383, 115, 383, 422, 423, 428, 428, 119,
- 388, 389, 383, 383, 383, 383, 426, 383,
- 422, 423, 424, 428, 119, 388, 389, 383,
- 383, 383, 143, 426, 383, 420, 383, 448,
- 383, 435, 435, 119, 388, 389, 383, 383,
- 383, 383, 394, 383, 420, 383, 420, 383,
- 383, 383, 383, 383, 383, 388, 389, 383,
- 383, 383, 383, 394, 383, 420, 383, 420,
- 383, 383, 383, 383, 449, 383, 388, 389,
- 383, 383, 383, 383, 394, 383, 420, 383,
- 420, 383, 448, 383, 383, 383, 383, 388,
- 389, 383, 383, 383, 383, 394, 383, 420,
- 383, 420, 116, 383, 383, 132, 421, 383,
- 388, 389, 383, 383, 383, 383, 394, 383,
- 420, 383, 413, 414, 419, 419, 119, 388,
- 389, 383, 383, 383, 383, 417, 383, 413,
- 414, 415, 419, 119, 388, 389, 383, 383,
- 383, 145, 417, 383, 411, 383, 450, 383,
- 435, 435, 119, 388, 389, 383, 383, 383,
- 383, 394, 383, 411, 383, 411, 383, 383,
- 383, 383, 383, 383, 388, 389, 383, 383,
- 383, 383, 394, 383, 411, 383, 411, 383,
- 383, 383, 383, 451, 383, 388, 389, 383,
- 383, 383, 383, 394, 383, 411, 383, 411,
- 383, 450, 383, 383, 383, 383, 388, 389,
- 383, 383, 383, 383, 394, 383, 411, 383,
- 411, 116, 383, 383, 132, 412, 383, 388,
- 389, 383, 383, 383, 383, 394, 383, 411,
- 383, 404, 405, 410, 410, 119, 388, 389,
- 383, 383, 383, 383, 408, 383, 404, 405,
- 406, 410, 119, 388, 389, 383, 383, 383,
- 147, 408, 383, 402, 383, 452, 383, 435,
- 435, 119, 388, 389, 383, 383, 383, 383,
- 394, 383, 402, 383, 402, 383, 383, 383,
- 383, 383, 383, 388, 389, 383, 383, 383,
- 383, 394, 383, 402, 383, 402, 383, 383,
- 383, 383, 453, 383, 388, 389, 383, 383,
- 383, 383, 394, 383, 402, 383, 402, 383,
- 452, 383, 383, 383, 383, 388, 389, 383,
- 383, 383, 383, 394, 383, 402, 383, 402,
- 116, 383, 383, 132, 403, 383, 388, 389,
- 383, 383, 383, 383, 394, 383, 402, 383,
- 395, 396, 401, 401, 119, 388, 389, 383,
- 383, 383, 383, 399, 383, 395, 396, 397,
- 401, 119, 388, 389, 383, 383, 383, 149,
- 399, 383, 392, 383, 454, 383, 435, 435,
- 119, 388, 389, 383, 383, 383, 383, 394,
- 383, 392, 383, 392, 383, 383, 383, 383,
- 383, 383, 388, 389, 383, 383, 383, 383,
- 394, 383, 392, 383, 392, 383, 383, 383,
- 383, 455, 383, 388, 389, 383, 383, 383,
- 383, 394, 383, 392, 383, 392, 383, 454,
- 383, 383, 383, 383, 388, 389, 383, 383,
- 383, 383, 394, 383, 392, 383, 392, 116,
- 383, 383, 132, 393, 383, 388, 389, 383,
- 383, 383, 383, 394, 383, 392, 383, 384,
- 385, 387, 387, 119, 388, 389, 383, 383,
- 383, 383, 390, 383, 153, 154, 382, 382,
- 382, 382, 382, 382, 382, 382, 161, 161,
- 382, 382, 382, 153, 382, 167, 456, 169,
- 170, 5, 171, 172, 173, 166, 166, 37,
- 174, 166, 166, 153, 166, 177, 154, 166,
- 166, 18, 178, 166, 171, 172, 166, 161,
- 161, 166, 179, 166, 177, 166, 0
+ 114, 151, 150, 114, 113, 80, 80, 81,
+ 76, 76, 76, 76, 76, 152, 113, 76,
+ 111, 80, 80, 81, 0, 0, 0, 0,
+ 0, 153, 111, 0, 154, 154, 155, 0,
+ 6, 6, 155, 0, 156, 156, 157, 0,
+ 158, 158, 157, 0, 157, 0, 159, 159,
+ 160, 0, 161, 161, 160, 0, 160, 0,
+ 162, 162, 163, 0, 164, 164, 163, 0,
+ 163, 0, 165, 166, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 165, 0, 167, 0, 168, 0, 169,
+ 0, 170, 0, 171, 162, 162, 163, 0,
+ 172, 0, 173, 0, 174, 159, 159, 160,
+ 0, 175, 0, 176, 0, 177, 156, 156,
+ 157, 0, 178, 0, 179, 0, 181, 182,
+ 183, 184, 185, 186, 81, 187, 188, 180,
+ 189, 189, 152, 190, 191, 192, 180, 194,
+ 195, 196, 197, 5, 198, 199, 200, 193,
+ 193, 37, 201, 193, 193, 181, 193, 202,
+ 195, 203, 203, 5, 198, 199, 200, 193,
+ 193, 193, 201, 193, 195, 203, 203, 5,
+ 198, 199, 200, 193, 193, 193, 201, 193,
+ 204, 193, 193, 193, 18, 205, 193, 198,
+ 199, 193, 193, 193, 193, 206, 193, 204,
+ 193, 207, 208, 209, 210, 5, 198, 199,
+ 200, 193, 193, 35, 211, 193, 193, 204,
+ 193, 212, 208, 213, 213, 5, 198, 199,
+ 200, 193, 193, 193, 211, 193, 208, 213,
+ 213, 5, 198, 199, 200, 193, 193, 193,
+ 211, 193, 214, 193, 193, 193, 18, 215,
+ 193, 198, 199, 193, 193, 193, 193, 206,
+ 193, 214, 193, 216, 217, 218, 219, 5,
+ 198, 199, 200, 193, 193, 33, 220, 193,
+ 193, 214, 193, 221, 217, 222, 222, 5,
+ 198, 199, 200, 193, 193, 193, 220, 193,
+ 217, 222, 222, 5, 198, 199, 200, 193,
+ 193, 193, 220, 193, 223, 193, 193, 193,
+ 18, 224, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 223, 193, 225, 226, 227,
+ 228, 5, 198, 199, 200, 193, 193, 31,
+ 229, 193, 193, 223, 193, 230, 226, 231,
+ 231, 5, 198, 199, 200, 193, 193, 193,
+ 229, 193, 226, 231, 231, 5, 198, 199,
+ 200, 193, 193, 193, 229, 193, 232, 193,
+ 193, 193, 18, 233, 193, 198, 199, 193,
+ 193, 193, 193, 206, 193, 232, 193, 234,
+ 235, 236, 237, 5, 198, 199, 200, 193,
+ 193, 29, 238, 193, 193, 232, 193, 239,
+ 235, 240, 240, 5, 198, 199, 200, 193,
+ 193, 193, 238, 193, 235, 240, 240, 5,
+ 198, 199, 200, 193, 193, 193, 238, 193,
+ 18, 241, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 242, 193, 193, 193, 199,
+ 193, 199, 193, 243, 193, 244, 193, 245,
+ 246, 193, 198, 199, 193, 193, 193, 3,
+ 193, 193, 193, 1, 193, 2, 193, 193,
+ 193, 193, 198, 199, 193, 198, 199, 193,
+ 244, 193, 193, 193, 193, 198, 199, 193,
+ 244, 193, 245, 193, 193, 198, 199, 193,
+ 193, 193, 3, 193, 18, 193, 247, 247,
+ 5, 198, 199, 193, 193, 193, 193, 206,
+ 193, 248, 27, 249, 250, 8, 198, 199,
+ 193, 193, 193, 193, 206, 193, 27, 249,
+ 250, 8, 198, 199, 193, 193, 193, 193,
+ 206, 193, 249, 249, 8, 198, 199, 193,
+ 193, 193, 193, 206, 193, 251, 24, 252,
+ 253, 11, 198, 199, 193, 193, 193, 193,
+ 206, 193, 24, 252, 253, 11, 198, 199,
+ 193, 193, 193, 193, 206, 193, 252, 252,
+ 11, 198, 199, 193, 193, 193, 193, 206,
+ 193, 254, 21, 255, 256, 14, 198, 199,
+ 193, 193, 193, 193, 206, 193, 21, 255,
+ 256, 14, 198, 199, 193, 193, 193, 193,
+ 206, 193, 255, 255, 14, 198, 199, 193,
+ 193, 193, 193, 206, 193, 257, 18, 193,
+ 258, 193, 198, 199, 193, 193, 193, 193,
+ 206, 193, 18, 193, 258, 193, 198, 199,
+ 193, 193, 193, 193, 206, 193, 259, 193,
+ 198, 199, 193, 193, 193, 193, 206, 193,
+ 18, 193, 193, 193, 193, 198, 199, 193,
+ 193, 193, 193, 206, 193, 235, 240, 240,
+ 5, 198, 199, 193, 193, 193, 193, 238,
+ 193, 1, 2, 193, 193, 18, 241, 193,
+ 198, 199, 193, 193, 193, 193, 206, 193,
+ 1, 193, 234, 235, 240, 240, 5, 198,
+ 199, 200, 193, 193, 193, 238, 193, 234,
+ 235, 236, 240, 5, 198, 199, 200, 193,
+ 193, 29, 238, 193, 232, 193, 260, 193,
+ 247, 247, 5, 198, 199, 193, 193, 193,
+ 193, 206, 193, 232, 193, 232, 193, 193,
+ 193, 193, 193, 193, 198, 199, 193, 193,
+ 193, 193, 206, 193, 232, 193, 232, 193,
+ 193, 193, 193, 261, 193, 198, 199, 193,
+ 193, 193, 193, 206, 193, 232, 193, 232,
+ 193, 260, 193, 193, 193, 193, 198, 199,
+ 193, 193, 193, 193, 206, 193, 232, 193,
+ 232, 2, 193, 193, 18, 233, 193, 198,
+ 199, 193, 193, 193, 193, 206, 193, 232,
+ 193, 225, 226, 231, 231, 5, 198, 199,
+ 200, 193, 193, 193, 229, 193, 225, 226,
+ 227, 231, 5, 198, 199, 200, 193, 193,
+ 31, 229, 193, 223, 193, 262, 193, 247,
+ 247, 5, 198, 199, 193, 193, 193, 193,
+ 206, 193, 223, 193, 223, 193, 193, 193,
+ 193, 193, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 223, 193, 223, 193, 193,
+ 193, 193, 263, 193, 198, 199, 193, 193,
+ 193, 193, 206, 193, 223, 193, 223, 193,
+ 262, 193, 193, 193, 193, 198, 199, 193,
+ 193, 193, 193, 206, 193, 223, 193, 223,
+ 2, 193, 193, 18, 224, 193, 198, 199,
+ 193, 193, 193, 193, 206, 193, 223, 193,
+ 216, 217, 222, 222, 5, 198, 199, 200,
+ 193, 193, 193, 220, 193, 216, 217, 218,
+ 222, 5, 198, 199, 200, 193, 193, 33,
+ 220, 193, 214, 193, 264, 193, 247, 247,
+ 5, 198, 199, 193, 193, 193, 193, 206,
+ 193, 214, 193, 214, 193, 193, 193, 193,
+ 193, 193, 198, 199, 193, 193, 193, 193,
+ 206, 193, 214, 193, 214, 193, 193, 193,
+ 193, 265, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 214, 193, 214, 193, 264,
+ 193, 193, 193, 193, 198, 199, 193, 193,
+ 193, 193, 206, 193, 214, 193, 214, 2,
+ 193, 193, 18, 215, 193, 198, 199, 193,
+ 193, 193, 193, 206, 193, 214, 193, 207,
+ 208, 213, 213, 5, 198, 199, 200, 193,
+ 193, 193, 211, 193, 207, 208, 209, 213,
+ 5, 198, 199, 200, 193, 193, 35, 211,
+ 193, 204, 193, 266, 193, 247, 247, 5,
+ 198, 199, 193, 193, 193, 193, 206, 193,
+ 204, 193, 204, 193, 193, 193, 193, 193,
+ 193, 198, 199, 193, 193, 193, 193, 206,
+ 193, 204, 193, 204, 193, 193, 193, 193,
+ 267, 193, 198, 199, 193, 193, 193, 193,
+ 206, 193, 204, 193, 204, 193, 266, 193,
+ 193, 193, 193, 198, 199, 193, 193, 193,
+ 193, 206, 193, 204, 193, 204, 2, 193,
+ 193, 18, 205, 193, 198, 199, 193, 193,
+ 193, 193, 206, 193, 204, 193, 194, 195,
+ 203, 203, 5, 198, 199, 200, 193, 193,
+ 193, 201, 193, 194, 195, 196, 203, 5,
+ 198, 199, 200, 193, 193, 37, 201, 193,
+ 269, 270, 271, 272, 43, 273, 274, 268,
+ 268, 268, 75, 275, 268, 276, 270, 277,
+ 272, 43, 273, 274, 268, 268, 268, 268,
+ 275, 268, 270, 277, 272, 43, 273, 274,
+ 268, 268, 268, 268, 275, 268, 278, 268,
+ 268, 268, 56, 279, 268, 273, 274, 268,
+ 268, 268, 268, 280, 268, 278, 268, 281,
+ 282, 283, 284, 43, 273, 274, 268, 268,
+ 268, 73, 285, 268, 268, 278, 268, 286,
+ 282, 287, 287, 43, 273, 274, 268, 268,
+ 268, 268, 285, 268, 282, 287, 287, 43,
+ 273, 274, 268, 268, 268, 268, 285, 268,
+ 288, 268, 268, 268, 56, 289, 268, 273,
+ 274, 268, 268, 268, 268, 280, 268, 288,
+ 268, 290, 291, 292, 293, 43, 273, 274,
+ 268, 268, 268, 71, 294, 268, 268, 288,
+ 268, 295, 291, 296, 296, 43, 273, 274,
+ 268, 268, 268, 268, 294, 268, 291, 296,
+ 296, 43, 273, 274, 268, 268, 268, 268,
+ 294, 268, 297, 268, 268, 268, 56, 298,
+ 268, 273, 274, 268, 268, 268, 268, 280,
+ 268, 297, 268, 299, 300, 301, 302, 43,
+ 273, 274, 268, 268, 268, 69, 303, 268,
+ 268, 297, 268, 304, 300, 305, 305, 43,
+ 273, 274, 268, 268, 268, 268, 303, 268,
+ 300, 305, 305, 43, 273, 274, 268, 268,
+ 268, 268, 303, 268, 306, 268, 268, 268,
+ 56, 307, 268, 273, 274, 268, 268, 268,
+ 268, 280, 268, 306, 268, 308, 309, 310,
+ 311, 43, 273, 274, 268, 268, 268, 67,
+ 312, 268, 268, 306, 268, 313, 309, 314,
+ 314, 43, 273, 274, 268, 268, 268, 268,
+ 312, 268, 309, 314, 314, 43, 273, 274,
+ 268, 268, 268, 268, 312, 268, 56, 315,
+ 268, 273, 274, 268, 268, 268, 268, 280,
+ 268, 273, 274, 268, 268, 268, 268, 280,
+ 268, 316, 268, 268, 268, 274, 268, 274,
+ 268, 317, 268, 318, 268, 319, 320, 268,
+ 273, 274, 268, 268, 268, 41, 268, 268,
+ 268, 39, 268, 40, 268, 268, 268, 268,
+ 273, 274, 268, 273, 274, 268, 318, 268,
+ 268, 268, 268, 273, 274, 268, 318, 268,
+ 319, 268, 268, 273, 274, 268, 268, 268,
+ 41, 268, 56, 268, 321, 321, 43, 273,
+ 274, 268, 268, 268, 268, 280, 268, 322,
+ 65, 323, 324, 46, 273, 274, 268, 268,
+ 268, 268, 280, 268, 65, 323, 324, 46,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 323, 323, 46, 273, 274, 268, 268, 268,
+ 268, 280, 268, 325, 62, 326, 327, 49,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 62, 326, 327, 49, 273, 274, 268, 268,
+ 268, 268, 280, 268, 326, 326, 49, 273,
+ 274, 268, 268, 268, 268, 280, 268, 328,
+ 59, 329, 330, 52, 273, 274, 268, 268,
+ 268, 268, 280, 268, 59, 329, 330, 52,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 329, 329, 52, 273, 274, 268, 268, 268,
+ 268, 280, 268, 331, 56, 268, 332, 268,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 56, 268, 332, 268, 273, 274, 268, 268,
+ 268, 268, 280, 268, 333, 268, 273, 274,
+ 268, 268, 268, 268, 280, 268, 56, 268,
+ 268, 268, 268, 273, 274, 268, 268, 268,
+ 268, 280, 268, 39, 40, 268, 268, 56,
+ 315, 268, 273, 274, 268, 268, 268, 268,
+ 280, 268, 39, 268, 308, 309, 314, 314,
+ 43, 273, 274, 268, 268, 268, 268, 312,
+ 268, 308, 309, 310, 314, 43, 273, 274,
+ 268, 268, 268, 67, 312, 268, 306, 268,
+ 334, 268, 321, 321, 43, 273, 274, 268,
+ 268, 268, 268, 280, 268, 306, 268, 306,
+ 268, 268, 268, 268, 268, 268, 273, 274,
+ 268, 268, 268, 268, 280, 268, 306, 268,
+ 306, 268, 268, 268, 268, 335, 268, 273,
+ 274, 268, 268, 268, 268, 280, 268, 306,
+ 268, 306, 268, 334, 268, 268, 268, 268,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 306, 268, 306, 40, 268, 268, 56, 307,
+ 268, 273, 274, 268, 268, 268, 268, 280,
+ 268, 306, 268, 299, 300, 305, 305, 43,
+ 273, 274, 268, 268, 268, 268, 303, 268,
+ 299, 300, 301, 305, 43, 273, 274, 268,
+ 268, 268, 69, 303, 268, 297, 268, 336,
+ 268, 321, 321, 43, 273, 274, 268, 268,
+ 268, 268, 280, 268, 297, 268, 297, 268,
+ 268, 268, 268, 268, 268, 273, 274, 268,
+ 268, 268, 268, 280, 268, 297, 268, 297,
+ 268, 268, 268, 268, 337, 268, 273, 274,
+ 268, 268, 268, 268, 280, 268, 297, 268,
+ 297, 268, 336, 268, 268, 268, 268, 273,
+ 274, 268, 268, 268, 268, 280, 268, 297,
+ 268, 297, 40, 268, 268, 56, 298, 268,
+ 273, 274, 268, 268, 268, 268, 280, 268,
+ 297, 268, 290, 291, 296, 296, 43, 273,
+ 274, 268, 268, 268, 268, 294, 268, 290,
+ 291, 292, 296, 43, 273, 274, 268, 268,
+ 268, 71, 294, 268, 288, 268, 338, 268,
+ 321, 321, 43, 273, 274, 268, 268, 268,
+ 268, 280, 268, 288, 268, 288, 268, 268,
+ 268, 268, 268, 268, 273, 274, 268, 268,
+ 268, 268, 280, 268, 288, 268, 288, 268,
+ 268, 268, 268, 339, 268, 273, 274, 268,
+ 268, 268, 268, 280, 268, 288, 268, 288,
+ 268, 338, 268, 268, 268, 268, 273, 274,
+ 268, 268, 268, 268, 280, 268, 288, 268,
+ 288, 40, 268, 268, 56, 289, 268, 273,
+ 274, 268, 268, 268, 268, 280, 268, 288,
+ 268, 281, 282, 287, 287, 43, 273, 274,
+ 268, 268, 268, 268, 285, 268, 281, 282,
+ 283, 287, 43, 273, 274, 268, 268, 268,
+ 73, 285, 268, 278, 268, 340, 268, 321,
+ 321, 43, 273, 274, 268, 268, 268, 268,
+ 280, 268, 278, 268, 278, 268, 268, 268,
+ 268, 268, 268, 273, 274, 268, 268, 268,
+ 268, 280, 268, 278, 268, 278, 268, 268,
+ 268, 268, 341, 268, 273, 274, 268, 268,
+ 268, 268, 280, 268, 278, 268, 278, 268,
+ 340, 268, 268, 268, 268, 273, 274, 268,
+ 268, 268, 268, 280, 268, 278, 268, 74,
+ 42, 42, 43, 268, 268, 268, 268, 268,
+ 268, 74, 268, 278, 40, 268, 268, 56,
+ 279, 268, 273, 274, 268, 268, 268, 268,
+ 280, 268, 278, 268, 269, 270, 277, 272,
+ 43, 273, 274, 268, 268, 268, 268, 275,
+ 268, 343, 184, 344, 344, 81, 187, 188,
+ 342, 342, 342, 342, 190, 342, 184, 344,
+ 344, 81, 187, 188, 342, 342, 342, 342,
+ 190, 342, 345, 342, 342, 342, 95, 346,
+ 342, 187, 188, 342, 342, 342, 342, 347,
+ 342, 345, 342, 348, 349, 350, 351, 81,
+ 187, 188, 342, 342, 342, 112, 352, 342,
+ 342, 345, 342, 353, 349, 354, 354, 81,
+ 187, 188, 342, 342, 342, 342, 352, 342,
+ 349, 354, 354, 81, 187, 188, 342, 342,
+ 342, 342, 352, 342, 355, 342, 342, 342,
+ 95, 356, 342, 187, 188, 342, 342, 342,
+ 342, 347, 342, 355, 342, 357, 358, 359,
+ 360, 81, 187, 188, 342, 342, 342, 110,
+ 361, 342, 342, 355, 342, 362, 358, 363,
+ 363, 81, 187, 188, 342, 342, 342, 342,
+ 361, 342, 358, 363, 363, 81, 187, 188,
+ 342, 342, 342, 342, 361, 342, 364, 342,
+ 342, 342, 95, 365, 342, 187, 188, 342,
+ 342, 342, 342, 347, 342, 364, 342, 366,
+ 367, 368, 369, 81, 187, 188, 342, 342,
+ 342, 108, 370, 342, 342, 364, 342, 371,
+ 367, 372, 372, 81, 187, 188, 342, 342,
+ 342, 342, 370, 342, 367, 372, 372, 81,
+ 187, 188, 342, 342, 342, 342, 370, 342,
+ 373, 342, 342, 342, 95, 374, 342, 187,
+ 188, 342, 342, 342, 342, 347, 342, 373,
+ 342, 375, 376, 377, 378, 81, 187, 188,
+ 342, 342, 342, 106, 379, 342, 342, 373,
+ 342, 380, 376, 381, 381, 81, 187, 188,
+ 342, 342, 342, 342, 379, 342, 376, 381,
+ 381, 81, 187, 188, 342, 342, 342, 342,
+ 379, 342, 95, 382, 342, 187, 188, 342,
+ 342, 342, 342, 347, 342, 187, 188, 342,
+ 342, 342, 342, 347, 342, 383, 342, 342,
+ 342, 188, 342, 188, 342, 384, 342, 385,
+ 342, 386, 387, 342, 187, 188, 342, 342,
+ 342, 79, 342, 342, 342, 77, 342, 78,
+ 342, 342, 342, 342, 187, 188, 342, 187,
+ 188, 342, 385, 342, 342, 342, 342, 187,
+ 188, 342, 385, 342, 386, 342, 342, 187,
+ 188, 342, 342, 342, 79, 342, 95, 342,
+ 388, 388, 81, 187, 188, 342, 342, 342,
+ 342, 347, 342, 389, 104, 390, 391, 85,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 104, 390, 391, 85, 187, 188, 342, 342,
+ 342, 342, 347, 342, 390, 390, 85, 187,
+ 188, 342, 342, 342, 342, 347, 342, 392,
+ 101, 393, 394, 88, 187, 188, 342, 342,
+ 342, 342, 347, 342, 101, 393, 394, 88,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 393, 393, 88, 187, 188, 342, 342, 342,
+ 342, 347, 342, 395, 98, 396, 397, 91,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 98, 396, 397, 91, 187, 188, 342, 342,
+ 342, 342, 347, 342, 396, 396, 91, 187,
+ 188, 342, 342, 342, 342, 347, 342, 398,
+ 95, 342, 399, 342, 187, 188, 342, 342,
+ 342, 342, 347, 342, 95, 342, 399, 342,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 400, 342, 187, 188, 342, 342, 342, 342,
+ 347, 342, 95, 342, 342, 342, 342, 187,
+ 188, 342, 342, 342, 342, 347, 342, 77,
+ 78, 342, 342, 95, 382, 342, 187, 188,
+ 342, 342, 342, 342, 347, 342, 77, 342,
+ 375, 376, 381, 381, 81, 187, 188, 342,
+ 342, 342, 342, 379, 342, 375, 376, 377,
+ 381, 81, 187, 188, 342, 342, 342, 106,
+ 379, 342, 373, 342, 401, 342, 388, 388,
+ 81, 187, 188, 342, 342, 342, 342, 347,
+ 342, 373, 342, 373, 342, 342, 342, 342,
+ 342, 342, 187, 188, 342, 342, 342, 342,
+ 347, 342, 373, 342, 373, 342, 342, 342,
+ 342, 402, 342, 187, 188, 342, 342, 342,
+ 342, 347, 342, 373, 342, 373, 342, 401,
+ 342, 342, 342, 342, 187, 188, 342, 342,
+ 342, 342, 347, 342, 373, 342, 373, 78,
+ 342, 342, 95, 374, 342, 187, 188, 342,
+ 342, 342, 342, 347, 342, 373, 342, 366,
+ 367, 372, 372, 81, 187, 188, 342, 342,
+ 342, 342, 370, 342, 366, 367, 368, 372,
+ 81, 187, 188, 342, 342, 342, 108, 370,
+ 342, 364, 342, 403, 342, 388, 388, 81,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 364, 342, 364, 342, 342, 342, 342, 342,
+ 342, 187, 188, 342, 342, 342, 342, 347,
+ 342, 364, 342, 364, 342, 342, 342, 342,
+ 404, 342, 187, 188, 342, 342, 342, 342,
+ 347, 342, 364, 342, 364, 342, 403, 342,
+ 342, 342, 342, 187, 188, 342, 342, 342,
+ 342, 347, 342, 364, 342, 364, 78, 342,
+ 342, 95, 365, 342, 187, 188, 342, 342,
+ 342, 342, 347, 342, 364, 342, 357, 358,
+ 363, 363, 81, 187, 188, 342, 342, 342,
+ 342, 361, 342, 357, 358, 359, 363, 81,
+ 187, 188, 342, 342, 342, 110, 361, 342,
+ 355, 342, 405, 342, 388, 388, 81, 187,
+ 188, 342, 342, 342, 342, 347, 342, 355,
+ 342, 355, 342, 342, 342, 342, 342, 342,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 355, 342, 355, 342, 342, 342, 342, 406,
+ 342, 187, 188, 342, 342, 342, 342, 347,
+ 342, 355, 342, 355, 342, 405, 342, 342,
+ 342, 342, 187, 188, 342, 342, 342, 342,
+ 347, 342, 355, 342, 355, 78, 342, 342,
+ 95, 356, 342, 187, 188, 342, 342, 342,
+ 342, 347, 342, 355, 342, 348, 349, 354,
+ 354, 81, 187, 188, 342, 342, 342, 342,
+ 352, 342, 348, 349, 350, 354, 81, 187,
+ 188, 342, 342, 342, 112, 352, 342, 345,
+ 342, 407, 342, 388, 388, 81, 187, 188,
+ 342, 342, 342, 342, 347, 342, 345, 342,
+ 345, 342, 342, 342, 342, 342, 342, 187,
+ 188, 342, 342, 342, 342, 347, 342, 345,
+ 342, 345, 342, 342, 342, 342, 408, 342,
+ 187, 188, 342, 342, 342, 342, 347, 342,
+ 345, 342, 345, 342, 407, 342, 342, 342,
+ 342, 187, 188, 342, 342, 342, 342, 347,
+ 342, 345, 342, 345, 78, 342, 342, 95,
+ 346, 342, 187, 188, 342, 342, 342, 342,
+ 347, 342, 345, 342, 113, 80, 80, 81,
+ 409, 409, 409, 409, 409, 152, 113, 409,
+ 183, 184, 344, 344, 81, 187, 188, 342,
+ 342, 342, 342, 190, 342, 113, 80, 80,
+ 81, 409, 409, 409, 409, 409, 409, 113,
+ 409, 411, 412, 413, 414, 119, 415, 416,
+ 410, 410, 410, 151, 417, 410, 418, 412,
+ 414, 414, 119, 415, 416, 410, 410, 410,
+ 410, 417, 410, 412, 414, 414, 119, 415,
+ 416, 410, 410, 410, 410, 417, 410, 419,
+ 410, 410, 410, 132, 420, 410, 415, 416,
+ 410, 410, 410, 410, 421, 410, 419, 410,
+ 422, 423, 424, 425, 119, 415, 416, 410,
+ 410, 410, 149, 426, 410, 410, 419, 410,
+ 427, 423, 428, 428, 119, 415, 416, 410,
+ 410, 410, 410, 426, 410, 423, 428, 428,
+ 119, 415, 416, 410, 410, 410, 410, 426,
+ 410, 429, 410, 410, 410, 132, 430, 410,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 429, 410, 431, 432, 433, 434, 119, 415,
+ 416, 410, 410, 410, 147, 435, 410, 410,
+ 429, 410, 436, 432, 437, 437, 119, 415,
+ 416, 410, 410, 410, 410, 435, 410, 432,
+ 437, 437, 119, 415, 416, 410, 410, 410,
+ 410, 435, 410, 438, 410, 410, 410, 132,
+ 439, 410, 415, 416, 410, 410, 410, 410,
+ 421, 410, 438, 410, 440, 441, 442, 443,
+ 119, 415, 416, 410, 410, 410, 145, 444,
+ 410, 410, 438, 410, 445, 441, 446, 446,
+ 119, 415, 416, 410, 410, 410, 410, 444,
+ 410, 441, 446, 446, 119, 415, 416, 410,
+ 410, 410, 410, 444, 410, 447, 410, 410,
+ 410, 132, 448, 410, 415, 416, 410, 410,
+ 410, 410, 421, 410, 447, 410, 449, 450,
+ 451, 452, 119, 415, 416, 410, 410, 410,
+ 143, 453, 410, 410, 447, 410, 454, 450,
+ 455, 455, 119, 415, 416, 410, 410, 410,
+ 410, 453, 410, 450, 455, 455, 119, 415,
+ 416, 410, 410, 410, 410, 453, 410, 132,
+ 456, 410, 415, 416, 410, 410, 410, 410,
+ 421, 410, 415, 416, 410, 410, 410, 410,
+ 421, 410, 457, 410, 410, 410, 416, 410,
+ 416, 410, 458, 410, 459, 410, 460, 461,
+ 410, 415, 416, 410, 410, 410, 117, 410,
+ 410, 410, 115, 410, 116, 410, 410, 410,
+ 410, 415, 416, 410, 415, 416, 410, 459,
+ 410, 410, 410, 410, 415, 416, 410, 459,
+ 410, 460, 410, 410, 415, 416, 410, 410,
+ 410, 117, 410, 132, 410, 462, 462, 119,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 463, 141, 464, 465, 122, 415, 416, 410,
+ 410, 410, 410, 421, 410, 141, 464, 465,
+ 122, 415, 416, 410, 410, 410, 410, 421,
+ 410, 464, 464, 122, 415, 416, 410, 410,
+ 410, 410, 421, 410, 466, 138, 467, 468,
+ 125, 415, 416, 410, 410, 410, 410, 421,
+ 410, 138, 467, 468, 125, 415, 416, 410,
+ 410, 410, 410, 421, 410, 467, 467, 125,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 469, 135, 470, 471, 128, 415, 416, 410,
+ 410, 410, 410, 421, 410, 135, 470, 471,
+ 128, 415, 416, 410, 410, 410, 410, 421,
+ 410, 470, 470, 128, 415, 416, 410, 410,
+ 410, 410, 421, 410, 472, 132, 410, 473,
+ 410, 415, 416, 410, 410, 410, 410, 421,
+ 410, 132, 410, 473, 410, 415, 416, 410,
+ 410, 410, 410, 421, 410, 474, 410, 415,
+ 416, 410, 410, 410, 410, 421, 410, 132,
+ 410, 410, 410, 410, 415, 416, 410, 410,
+ 410, 410, 421, 410, 115, 116, 410, 410,
+ 132, 456, 410, 415, 416, 410, 410, 410,
+ 410, 421, 410, 115, 410, 449, 450, 455,
+ 455, 119, 415, 416, 410, 410, 410, 410,
+ 453, 410, 449, 450, 451, 455, 119, 415,
+ 416, 410, 410, 410, 143, 453, 410, 447,
+ 410, 475, 410, 462, 462, 119, 415, 416,
+ 410, 410, 410, 410, 421, 410, 447, 410,
+ 447, 410, 410, 410, 410, 410, 410, 415,
+ 416, 410, 410, 410, 410, 421, 410, 447,
+ 410, 447, 410, 410, 410, 410, 476, 410,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 447, 410, 447, 410, 475, 410, 410, 410,
+ 410, 415, 416, 410, 410, 410, 410, 421,
+ 410, 447, 410, 447, 116, 410, 410, 132,
+ 448, 410, 415, 416, 410, 410, 410, 410,
+ 421, 410, 447, 410, 440, 441, 446, 446,
+ 119, 415, 416, 410, 410, 410, 410, 444,
+ 410, 440, 441, 442, 446, 119, 415, 416,
+ 410, 410, 410, 145, 444, 410, 438, 410,
+ 477, 410, 462, 462, 119, 415, 416, 410,
+ 410, 410, 410, 421, 410, 438, 410, 438,
+ 410, 410, 410, 410, 410, 410, 415, 416,
+ 410, 410, 410, 410, 421, 410, 438, 410,
+ 438, 410, 410, 410, 410, 478, 410, 415,
+ 416, 410, 410, 410, 410, 421, 410, 438,
+ 410, 438, 410, 477, 410, 410, 410, 410,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 438, 410, 438, 116, 410, 410, 132, 439,
+ 410, 415, 416, 410, 410, 410, 410, 421,
+ 410, 438, 410, 431, 432, 437, 437, 119,
+ 415, 416, 410, 410, 410, 410, 435, 410,
+ 431, 432, 433, 437, 119, 415, 416, 410,
+ 410, 410, 147, 435, 410, 429, 410, 479,
+ 410, 462, 462, 119, 415, 416, 410, 410,
+ 410, 410, 421, 410, 429, 410, 429, 410,
+ 410, 410, 410, 410, 410, 415, 416, 410,
+ 410, 410, 410, 421, 410, 429, 410, 429,
+ 410, 410, 410, 410, 480, 410, 415, 416,
+ 410, 410, 410, 410, 421, 410, 429, 410,
+ 429, 410, 479, 410, 410, 410, 410, 415,
+ 416, 410, 410, 410, 410, 421, 410, 429,
+ 410, 429, 116, 410, 410, 132, 430, 410,
+ 415, 416, 410, 410, 410, 410, 421, 410,
+ 429, 410, 422, 423, 428, 428, 119, 415,
+ 416, 410, 410, 410, 410, 426, 410, 422,
+ 423, 424, 428, 119, 415, 416, 410, 410,
+ 410, 149, 426, 410, 419, 410, 481, 410,
+ 462, 462, 119, 415, 416, 410, 410, 410,
+ 410, 421, 410, 419, 410, 419, 410, 410,
+ 410, 410, 410, 410, 415, 416, 410, 410,
+ 410, 410, 421, 410, 419, 410, 419, 410,
+ 410, 410, 410, 482, 410, 415, 416, 410,
+ 410, 410, 410, 421, 410, 419, 410, 419,
+ 410, 481, 410, 410, 410, 410, 415, 416,
+ 410, 410, 410, 410, 421, 410, 419, 410,
+ 419, 116, 410, 410, 132, 420, 410, 415,
+ 416, 410, 410, 410, 410, 421, 410, 419,
+ 410, 411, 412, 414, 414, 119, 415, 416,
+ 410, 410, 410, 410, 417, 410, 181, 182,
+ 183, 184, 483, 344, 81, 187, 188, 342,
+ 189, 189, 152, 190, 342, 181, 342, 194,
+ 484, 196, 197, 5, 198, 199, 200, 193,
+ 193, 37, 201, 193, 193, 181, 193, 204,
+ 182, 183, 184, 485, 486, 81, 487, 488,
+ 193, 189, 189, 152, 489, 193, 204, 193,
+ 113, 80, 80, 81, 198, 199, 193, 193,
+ 193, 152, 490, 193, 491, 2, 342, 342,
+ 342, 408, 342, 187, 188, 342, 342, 342,
+ 342, 347, 342, 491, 342, 492, 349, 493,
+ 494, 81, 487, 488, 193, 193, 193, 153,
+ 352, 193, 193, 491, 193, 495, 349, 354,
+ 354, 81, 487, 488, 193, 193, 193, 193,
+ 352, 193, 349, 354, 354, 81, 487, 488,
+ 193, 193, 193, 193, 352, 193, 496, 193,
+ 193, 193, 488, 193, 488, 193, 243, 193,
+ 492, 349, 354, 354, 81, 487, 488, 193,
+ 193, 193, 193, 352, 193, 492, 349, 493,
+ 354, 81, 487, 488, 193, 193, 193, 153,
+ 352, 193, 204, 193, 266, 113, 497, 497,
+ 155, 198, 199, 193, 193, 193, 193, 490,
+ 193, 204, 193, 498, 179, 499, 500, 157,
+ 487, 488, 193, 193, 193, 193, 501, 193,
+ 179, 499, 500, 157, 487, 488, 193, 193,
+ 193, 193, 501, 193, 499, 499, 157, 487,
+ 488, 193, 193, 193, 193, 501, 193, 502,
+ 176, 503, 504, 160, 487, 488, 193, 193,
+ 193, 193, 501, 193, 176, 503, 504, 160,
+ 487, 488, 193, 193, 193, 193, 501, 193,
+ 503, 503, 160, 487, 488, 193, 193, 193,
+ 193, 501, 193, 505, 173, 506, 507, 163,
+ 487, 488, 193, 193, 193, 193, 501, 193,
+ 173, 506, 507, 163, 487, 488, 193, 193,
+ 193, 193, 501, 193, 506, 506, 163, 487,
+ 488, 193, 193, 193, 193, 501, 193, 508,
+ 170, 193, 509, 193, 487, 488, 193, 193,
+ 193, 193, 501, 193, 170, 193, 509, 193,
+ 487, 488, 193, 193, 193, 193, 501, 193,
+ 487, 488, 193, 193, 193, 193, 501, 193,
+ 510, 193, 511, 512, 193, 487, 488, 193,
+ 193, 193, 167, 193, 193, 193, 165, 193,
+ 166, 193, 193, 193, 193, 487, 488, 193,
+ 487, 488, 193, 510, 193, 193, 193, 193,
+ 487, 488, 193, 510, 193, 511, 193, 193,
+ 487, 488, 193, 193, 193, 167, 193, 491,
+ 166, 342, 342, 95, 346, 342, 187, 188,
+ 342, 342, 342, 342, 347, 342, 491, 342,
+ 0
};
static const short _indic_syllable_machine_trans_targs[] = {
- 143, 168, 170, 171, 3, 174, 4, 6,
- 177, 7, 9, 180, 10, 12, 183, 13,
- 15, 16, 164, 18, 19, 182, 21, 22,
- 179, 24, 25, 176, 185, 189, 193, 196,
- 200, 203, 207, 210, 214, 217, 143, 243,
- 245, 246, 39, 249, 40, 42, 252, 43,
- 45, 255, 46, 48, 258, 49, 51, 52,
- 239, 54, 55, 257, 57, 58, 254, 60,
- 61, 251, 260, 263, 267, 270, 274, 277,
- 281, 284, 288, 292, 143, 316, 318, 319,
- 75, 322, 143, 76, 78, 325, 79, 81,
- 328, 82, 84, 331, 85, 87, 88, 312,
- 90, 91, 330, 93, 94, 327, 96, 97,
- 324, 333, 336, 340, 343, 347, 350, 354,
- 357, 361, 143, 391, 393, 394, 110, 397,
- 111, 113, 400, 114, 116, 403, 117, 119,
- 406, 120, 122, 123, 387, 125, 126, 405,
- 128, 129, 402, 131, 132, 399, 408, 411,
- 415, 418, 422, 425, 429, 432, 436, 439,
- 143, 144, 219, 293, 295, 364, 366, 313,
- 315, 367, 365, 363, 440, 441, 143, 145,
- 147, 35, 218, 165, 167, 187, 216, 146,
- 34, 148, 212, 0, 149, 151, 33, 211,
- 209, 150, 32, 152, 205, 153, 155, 31,
- 204, 202, 154, 30, 156, 198, 157, 159,
- 29, 197, 195, 158, 28, 160, 191, 161,
- 163, 27, 190, 188, 162, 26, 173, 166,
- 143, 169, 1, 172, 2, 175, 5, 23,
- 178, 8, 20, 181, 11, 17, 184, 14,
- 186, 192, 194, 199, 201, 206, 208, 213,
- 215, 143, 220, 222, 71, 290, 240, 242,
- 291, 221, 70, 223, 286, 36, 224, 226,
- 69, 285, 283, 225, 68, 227, 279, 228,
- 230, 67, 278, 276, 229, 66, 231, 272,
- 232, 234, 65, 271, 269, 233, 64, 235,
- 265, 236, 238, 63, 264, 262, 237, 62,
- 248, 241, 143, 244, 37, 247, 38, 250,
- 41, 59, 253, 44, 56, 256, 47, 53,
- 259, 50, 261, 266, 268, 273, 275, 280,
- 282, 287, 289, 143, 294, 106, 296, 359,
- 72, 297, 299, 105, 358, 356, 298, 104,
- 300, 352, 301, 303, 103, 351, 349, 302,
- 102, 304, 345, 305, 307, 101, 344, 342,
- 306, 100, 308, 338, 309, 311, 99, 337,
- 335, 310, 98, 321, 314, 143, 317, 73,
- 320, 74, 323, 77, 95, 326, 80, 92,
- 329, 83, 89, 332, 86, 334, 339, 341,
- 346, 348, 353, 355, 360, 362, 143, 143,
- 368, 370, 142, 141, 388, 390, 438, 369,
- 371, 434, 107, 372, 374, 140, 433, 431,
- 373, 139, 375, 427, 376, 378, 138, 426,
- 424, 377, 137, 379, 420, 380, 382, 136,
- 419, 417, 381, 135, 383, 413, 384, 386,
- 134, 412, 410, 385, 133, 396, 389, 143,
- 392, 108, 395, 109, 398, 112, 130, 401,
- 115, 127, 404, 118, 124, 407, 121, 409,
- 414, 416, 421, 423, 428, 430, 435, 437,
- 442
+ 170, 195, 197, 198, 3, 201, 4, 6,
+ 204, 7, 9, 207, 10, 12, 210, 13,
+ 15, 16, 191, 18, 19, 209, 21, 22,
+ 206, 24, 25, 203, 212, 216, 220, 223,
+ 227, 230, 234, 237, 241, 244, 170, 270,
+ 272, 273, 39, 276, 40, 42, 279, 43,
+ 45, 282, 46, 48, 285, 49, 51, 52,
+ 266, 54, 55, 284, 57, 58, 281, 60,
+ 61, 278, 287, 290, 294, 297, 301, 304,
+ 308, 311, 315, 319, 170, 343, 345, 346,
+ 75, 349, 170, 76, 78, 352, 79, 81,
+ 355, 82, 84, 358, 85, 87, 88, 339,
+ 90, 91, 357, 93, 94, 354, 96, 97,
+ 351, 360, 363, 367, 370, 374, 377, 381,
+ 384, 388, 170, 418, 420, 421, 110, 424,
+ 111, 113, 427, 114, 116, 430, 117, 119,
+ 433, 120, 122, 123, 414, 125, 126, 432,
+ 128, 129, 429, 131, 132, 426, 435, 438,
+ 442, 445, 449, 452, 456, 459, 463, 466,
+ 392, 478, 146, 481, 148, 484, 149, 151,
+ 487, 152, 154, 490, 155, 493, 495, 496,
+ 159, 160, 492, 162, 163, 489, 165, 166,
+ 486, 168, 169, 483, 170, 171, 246, 320,
+ 322, 391, 393, 340, 342, 394, 390, 467,
+ 468, 170, 172, 174, 35, 245, 192, 194,
+ 214, 243, 173, 34, 175, 239, 0, 176,
+ 178, 33, 238, 236, 177, 32, 179, 232,
+ 180, 182, 31, 231, 229, 181, 30, 183,
+ 225, 184, 186, 29, 224, 222, 185, 28,
+ 187, 218, 188, 190, 27, 217, 215, 189,
+ 26, 200, 193, 170, 196, 1, 199, 2,
+ 202, 5, 23, 205, 8, 20, 208, 11,
+ 17, 211, 14, 213, 219, 221, 226, 228,
+ 233, 235, 240, 242, 170, 247, 249, 71,
+ 317, 267, 269, 318, 248, 70, 250, 313,
+ 36, 251, 253, 69, 312, 310, 252, 68,
+ 254, 306, 255, 257, 67, 305, 303, 256,
+ 66, 258, 299, 259, 261, 65, 298, 296,
+ 260, 64, 262, 292, 263, 265, 63, 291,
+ 289, 264, 62, 275, 268, 170, 271, 37,
+ 274, 38, 277, 41, 59, 280, 44, 56,
+ 283, 47, 53, 286, 50, 288, 293, 295,
+ 300, 302, 307, 309, 314, 316, 170, 321,
+ 106, 323, 386, 72, 324, 326, 105, 385,
+ 383, 325, 104, 327, 379, 328, 330, 103,
+ 378, 376, 329, 102, 331, 372, 332, 334,
+ 101, 371, 369, 333, 100, 335, 365, 336,
+ 338, 99, 364, 362, 337, 98, 348, 341,
+ 170, 344, 73, 347, 74, 350, 77, 95,
+ 353, 80, 92, 356, 83, 89, 359, 86,
+ 361, 366, 368, 373, 375, 380, 382, 387,
+ 389, 170, 170, 395, 397, 142, 141, 415,
+ 417, 465, 396, 398, 461, 107, 399, 401,
+ 140, 460, 458, 400, 139, 402, 454, 403,
+ 405, 138, 453, 451, 404, 137, 406, 447,
+ 407, 409, 136, 446, 444, 408, 135, 410,
+ 440, 411, 413, 134, 439, 437, 412, 133,
+ 423, 416, 170, 419, 108, 422, 109, 425,
+ 112, 130, 428, 115, 127, 431, 118, 124,
+ 434, 121, 436, 441, 443, 448, 450, 455,
+ 457, 462, 464, 143, 469, 470, 480, 475,
+ 477, 498, 471, 472, 473, 144, 479, 474,
+ 476, 145, 482, 147, 167, 156, 485, 150,
+ 164, 488, 153, 161, 491, 158, 494, 157,
+ 497
};
static const char _indic_syllable_machine_trans_actions[] = {
@@ -908,44 +992,51 @@
2, 0, 0, 0, 2, 0, 0, 2,
0, 0, 2, 0, 0, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
- 10, 2, 2, 6, 2, 11, 11, 0,
- 0, 2, 6, 2, 0, 2, 12, 2,
- 2, 0, 2, 0, 0, 2, 2, 2,
- 0, 2, 2, 0, 2, 2, 0, 2,
- 2, 2, 0, 2, 2, 2, 2, 0,
- 2, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 2, 0, 2, 2, 2,
- 2, 0, 2, 2, 2, 0, 2, 0,
- 13, 0, 0, 2, 0, 2, 0, 0,
+ 6, 8, 0, 2, 0, 2, 0, 0,
+ 2, 0, 0, 2, 0, 2, 0, 0,
+ 0, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 0, 2, 11, 2, 2, 6,
+ 2, 12, 12, 0, 0, 2, 2, 6,
+ 2, 13, 2, 2, 0, 2, 0, 0,
+ 2, 2, 2, 0, 2, 2, 0, 2,
+ 2, 0, 2, 2, 2, 0, 2, 2,
+ 2, 2, 0, 2, 2, 2, 0, 2,
+ 2, 2, 2, 0, 2, 2, 2, 0,
+ 2, 2, 2, 2, 0, 2, 2, 2,
+ 0, 2, 0, 14, 0, 0, 2, 0,
+ 2, 0, 0, 2, 0, 0, 2, 0,
+ 0, 2, 0, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 15, 2, 2, 0,
+ 2, 0, 0, 2, 2, 0, 2, 2,
+ 0, 2, 2, 0, 2, 2, 2, 0,
+ 2, 2, 2, 2, 0, 2, 2, 2,
+ 0, 2, 2, 2, 2, 0, 2, 2,
+ 2, 0, 2, 2, 2, 2, 0, 2,
+ 2, 2, 0, 2, 0, 16, 0, 0,
+ 2, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 0, 2, 0, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 17, 6,
+ 0, 6, 6, 0, 6, 2, 0, 6,
+ 2, 6, 0, 6, 6, 6, 2, 0,
+ 6, 2, 6, 0, 6, 6, 6, 2,
+ 0, 6, 2, 6, 0, 6, 6, 6,
+ 2, 0, 6, 2, 6, 0, 6, 0,
+ 18, 0, 0, 2, 0, 2, 0, 0,
2, 0, 0, 2, 0, 0, 2, 0,
2, 2, 2, 2, 2, 2, 2, 2,
- 2, 14, 2, 2, 0, 2, 0, 0,
- 2, 2, 0, 2, 2, 0, 2, 2,
+ 2, 19, 20, 2, 2, 0, 0, 0,
+ 0, 2, 2, 2, 2, 0, 2, 2,
0, 2, 2, 2, 0, 2, 2, 2,
2, 0, 2, 2, 2, 0, 2, 2,
2, 2, 0, 2, 2, 2, 0, 2,
2, 2, 2, 0, 2, 2, 2, 0,
- 2, 0, 15, 0, 0, 2, 0, 2,
+ 2, 0, 21, 0, 0, 2, 0, 2,
0, 0, 2, 0, 0, 2, 0, 0,
2, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 16, 6, 0, 6, 6,
- 0, 6, 2, 0, 6, 2, 6, 0,
- 6, 6, 6, 2, 0, 6, 2, 6,
- 0, 6, 6, 6, 2, 0, 6, 2,
- 6, 0, 6, 6, 6, 2, 0, 6,
- 2, 6, 0, 6, 0, 17, 0, 0,
- 2, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 0, 2, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 18, 19,
- 2, 2, 0, 0, 0, 0, 2, 2,
- 2, 2, 0, 2, 2, 0, 2, 2,
- 2, 0, 2, 2, 2, 2, 0, 2,
- 2, 2, 0, 2, 2, 2, 2, 0,
- 2, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 2, 0, 2, 0, 20,
- 0, 0, 2, 0, 2, 0, 0, 2,
- 0, 0, 2, 0, 0, 2, 0, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 0, 0, 8, 2, 0,
+ 0, 2, 2, 8, 8, 0, 8, 8,
+ 0, 0, 2, 0, 0, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 0,
2
};
@@ -967,7 +1058,14 @@
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -1026,7 +1124,14 @@
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -1081,56 +1186,63 @@
77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 115, 115, 115, 115, 115,
+ 83, 77, 77, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 0,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 383, 316, 383, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 384, 384, 384, 384, 384, 384, 384, 384,
- 383, 167, 167
+ 115, 115, 115, 115, 115, 115, 115, 77,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 343, 343, 343, 343, 343, 410,
+ 343, 410, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 343, 194, 194, 194, 343,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 343
};
-static const int indic_syllable_machine_start = 143;
-static const int indic_syllable_machine_first_final = 143;
+static const int indic_syllable_machine_start = 170;
+static const int indic_syllable_machine_first_final = 170;
static const int indic_syllable_machine_error = -1;
-static const int indic_syllable_machine_en_main = 143;
+static const int indic_syllable_machine_en_main = 170;
#line 36 "../../src/hb-ot-shape-complex-indic-machine.rl"
@@ -1157,7 +1269,7 @@
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 1161 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
{
cs = indic_syllable_machine_start;
ts = 0;
@@ -1174,7 +1286,7 @@
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 1178 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
{
int _slen;
int _trans;
@@ -1184,11 +1296,11 @@
goto _test_eof;
_resume:
switch ( _indic_syllable_machine_from_state_actions[cs] ) {
- case 9:
+ case 10:
#line 1 "NONE"
{ts = p;}
break;
-#line 1192 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
_keys = _indic_syllable_machine_trans_keys + (cs<<1);
@@ -1210,43 +1322,43 @@
#line 1 "NONE"
{te = p+1;}
break;
- case 13:
+ case 14:
#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (consonant_syllable); }}
break;
- case 15:
+ case 16:
#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (vowel_syllable); }}
break;
- case 20:
+ case 21:
#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (standalone_cluster); }}
break;
- case 17:
+ case 18:
#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
- case 10:
+ case 11:
#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (non_indic_cluster); }}
break;
- case 12:
+ case 13:
#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (consonant_syllable); }}
break;
- case 14:
+ case 15:
#line 84 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (vowel_syllable); }}
break;
- case 19:
+ case 20:
#line 85 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (standalone_cluster); }}
break;
- case 16:
+ case 17:
#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
- case 18:
+ case 19:
#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (non_indic_cluster); }}
break;
@@ -1269,6 +1381,9 @@
case 5:
#line 1 "NONE"
{ switch( act ) {
+ case 1:
+ {{p = ((te))-1;} found_syllable (consonant_syllable); }
+ break;
case 4:
{{p = ((te))-1;} found_syllable (broken_cluster); }
break;
@@ -1278,28 +1393,34 @@
}
}
break;
+ case 8:
+#line 1 "NONE"
+ {te = p+1;}
+#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
+ {act = 1;}
+ break;
case 6:
#line 1 "NONE"
{te = p+1;}
#line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
{act = 4;}
break;
- case 11:
+ case 12:
#line 1 "NONE"
{te = p+1;}
#line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
{act = 5;}
break;
-#line 1294 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
_again:
switch ( _indic_syllable_machine_to_state_actions[cs] ) {
- case 8:
+ case 9:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1303 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
+#line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
}
if ( ++p != pe )
diff --git a/src/hb-ot-shape-complex-indic-machine.rl b/src/hb-ot-shape-complex-indic-machine.rl
index 5c73ebf..11115c9 100644
--- a/src/hb-ot-shape-complex-indic-machine.rl
+++ b/src/hb-ot-shape-complex-indic-machine.rl
@@ -76,7 +76,7 @@
consonant_syllable = Repha? (cn.halant_group){0,4} cn A? halant_or_matra_group? syllable_tail;
vowel_syllable = reph? V.n? (ZWJ | (halant_group.cn){0,4} halant_or_matra_group? syllable_tail);
standalone_cluster = reph? place_holder.n? (halant_group.cn){0,4} halant_or_matra_group? syllable_tail;
-broken_cluster = n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail;
+broken_cluster = reph? n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail;
other = any;
main := |*
diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 0bc163a..1bc8a77 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -124,7 +124,7 @@
{HB_SCRIPT_SINHALA, false,0x0DCA,BASE_POS_FIRST,REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT},
{HB_SCRIPT_KHMER, false,0x17D2,BASE_POS_FIRST,REPH_POS_DEFAULT, REPH_MODE_VIS_REPHA},
/* Myanmar does not have the "old_indic" behavior, even though it has a "new" tag. */
- {HB_SCRIPT_MYANMAR, false, 0x1039,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_EXPLICIT},
+ {HB_SCRIPT_MYANMAR, false,0x1039,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_EXPLICIT},
};
@@ -467,7 +467,7 @@
unsigned int limit = start;
if (indic_plan->mask_array[RPHF] &&
start + 3 <= end &&
- (/* TODO Handle other Reph modes. */
+ (
(indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) ||
(indic_plan->config->reph_mode == REPH_MODE_EXPLICIT && info[start + 2].indic_category() == OT_ZWJ)
))
@@ -482,7 +482,14 @@
base = start;
has_reph = true;
}
- };
+ } else if (indic_plan->config->reph_mode == REPH_MODE_LOG_REPHA && info[start].indic_category() == OT_Repha)
+ {
+ limit += 1;
+ while (limit < end && is_joiner (info[limit]))
+ limit++;
+ base = start;
+ has_reph = true;
+ }
switch (indic_plan->config->base_pos)
{
@@ -570,7 +577,7 @@
* base consonants.
*
* Only do this for unforced Reph. (ie. not for Ra,H,ZWJ. */
- if (has_reph && base == start && start + 2 == limit) {
+ if (has_reph && base == start && start - limit <= 2) {
/* Have no other consonant, so Reph is not formed and Ra becomes base. */
has_reph = false;
}
@@ -887,14 +894,23 @@
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
if (unlikely (last_syllable != syllable && syllable_type == broken_cluster))
{
+ last_syllable = syllable;
+
hb_glyph_info_t info = dottedcircle;
info.cluster = buffer->cur().cluster;
info.mask = buffer->cur().mask;
info.syllable() = buffer->cur().syllable();
+
+ /* Insert dottedcircle after possible Repha. */
+ while (buffer->idx < buffer->len &&
+ last_syllable == buffer->cur().syllable() &&
+ buffer->cur().indic_category() == OT_Repha)
+ buffer->next_glyph ();
+
buffer->output_info (info);
- last_syllable = syllable;
}
- buffer->next_glyph ();
+ else
+ buffer->next_glyph ();
}
buffer->swap_buffers ();
diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh
index c736b69..5e30a7e 100644
--- a/src/hb-set-private.hh
+++ b/src/hb-set-private.hh
@@ -137,6 +137,7 @@
{
hb_object_header_t header;
ASSERT_POD ();
+ bool in_error;
inline void init (void) {
header.init ();
@@ -145,6 +146,9 @@
inline void fini (void) {
}
inline void clear (void) {
+ if (unlikely (hb_object_is_inert (this)))
+ return;
+ in_error = false;
memset (elts, 0, sizeof elts);
}
inline bool is_empty (void) const {
@@ -155,23 +159,27 @@
}
inline void add (hb_codepoint_t g)
{
+ if (unlikely (in_error)) return;
if (unlikely (g == SENTINEL)) return;
if (unlikely (g > MAX_G)) return;
elt (g) |= mask (g);
}
inline void add_range (hb_codepoint_t a, hb_codepoint_t b)
{
+ if (unlikely (in_error)) return;
/* TODO Speedup */
for (unsigned int i = a; i < b + 1; i++)
add (i);
}
inline void del (hb_codepoint_t g)
{
+ if (unlikely (in_error)) return;
if (unlikely (g > MAX_G)) return;
elt (g) &= ~mask (g);
}
inline void del_range (hb_codepoint_t a, hb_codepoint_t b)
{
+ if (unlikely (in_error)) return;
/* TODO Speedup */
for (unsigned int i = a; i < b + 1; i++)
del (i);
@@ -201,29 +209,40 @@
}
inline void set (const hb_set_t *other)
{
+ if (unlikely (in_error)) return;
for (unsigned int i = 0; i < ELTS; i++)
elts[i] = other->elts[i];
}
inline void union_ (const hb_set_t *other)
{
+ if (unlikely (in_error)) return;
for (unsigned int i = 0; i < ELTS; i++)
elts[i] |= other->elts[i];
}
inline void intersect (const hb_set_t *other)
{
+ if (unlikely (in_error)) return;
for (unsigned int i = 0; i < ELTS; i++)
elts[i] &= other->elts[i];
}
inline void subtract (const hb_set_t *other)
{
+ if (unlikely (in_error)) return;
for (unsigned int i = 0; i < ELTS; i++)
elts[i] &= ~other->elts[i];
}
inline void symmetric_difference (const hb_set_t *other)
{
+ if (unlikely (in_error)) return;
for (unsigned int i = 0; i < ELTS; i++)
elts[i] ^= other->elts[i];
}
+ inline void invert (void)
+ {
+ if (unlikely (in_error)) return;
+ for (unsigned int i = 0; i < ELTS; i++)
+ elts[i] = ~elts[i];
+ }
inline bool next (hb_codepoint_t *codepoint) const
{
if (unlikely (*codepoint == SENTINEL)) {
diff --git a/src/hb-set.cc b/src/hb-set.cc
index 93f983a..5f427a5 100644
--- a/src/hb-set.cc
+++ b/src/hb-set.cc
@@ -49,6 +49,7 @@
{
static const hb_set_t _hb_set_nil = {
HB_OBJECT_HEADER_STATIC,
+ true, /* in_error */
{0} /* elts */
};
@@ -93,7 +94,7 @@
hb_bool_t
hb_set_allocation_successful (const hb_set_t *set HB_UNUSED)
{
- return true;
+ return !set->in_error;
}
void
@@ -187,6 +188,12 @@
set->symmetric_difference (other);
}
+void
+hb_set_invert (hb_set_t *set)
+{
+ set->invert ();
+}
+
unsigned int
hb_set_get_population (const hb_set_t *set)
{
diff --git a/src/hb-set.h b/src/hb-set.h
index ec3d119..291e249 100644
--- a/src/hb-set.h
+++ b/src/hb-set.h
@@ -121,6 +121,9 @@
hb_set_symmetric_difference (hb_set_t *set,
const hb_set_t *other);
+void
+hb_set_invert (hb_set_t *set);
+
unsigned int
hb_set_get_population (const hb_set_t *set);
diff --git a/src/hb-shape.h b/src/hb-shape.h
index 90a188d..10a35cb 100644
--- a/src/hb-shape.h
+++ b/src/hb-shape.h
@@ -52,7 +52,7 @@
hb_feature_from_string (const char *str, int len,
hb_feature_t *feature);
-/* something like 128 bytes is more than enough.
+/* Something like 128 bytes is more than enough.
* nul-terminates. */
void
hb_feature_to_string (hb_feature_t *feature,
diff --git a/test/api/Makefile.am b/test/api/Makefile.am
index c5a015f..237f92c 100644
--- a/test/api/Makefile.am
+++ b/test/api/Makefile.am
@@ -21,6 +21,7 @@
test-common \
test-font \
test-object \
+ test-set \
test-shape \
test-unicode \
test-version \
diff --git a/test/api/test-buffer.c b/test/api/test-buffer.c
index f826f2e..82fdaae 100644
--- a/test/api/test-buffer.c
+++ b/test/api/test-buffer.c
@@ -135,7 +135,7 @@
/* test clear clears all properties but unicode_funcs */
- hb_buffer_clear (b);
+ hb_buffer_clear_contents (b);
g_assert (hb_buffer_get_unicode_funcs (b) == ufuncs);
g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_INVALID);
diff --git a/test/api/test-object.c b/test/api/test-object.c
index ae4d1cc..3afe6ae 100644
--- a/test/api/test-object.c
+++ b/test/api/test-object.c
@@ -53,6 +53,17 @@
}
static void *
+create_set (void)
+{
+ return hb_set_create ();
+}
+static void *
+create_set_inert (void)
+{
+ return NULL;
+}
+
+static void *
create_face (void)
{
hb_blob_t *blob = (hb_blob_t *) create_blob ();
@@ -154,6 +165,7 @@
static const object_t objects[] =
{
OBJECT_WITHOUT_IMMUTABILITY (buffer),
+ OBJECT_WITHOUT_IMMUTABILITY (set),
OBJECT_WITH_IMMUTABILITY (blob),
OBJECT_WITH_IMMUTABILITY (face),
OBJECT_WITH_IMMUTABILITY (font),
diff --git a/test/api/test-set.c b/test/api/test-set.c
new file mode 100644
index 0000000..b9e7ef8
--- /dev/null
+++ b/test/api/test-set.c
@@ -0,0 +1,237 @@
+/*
+ * Copyright © 2013 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "hb-test.h"
+
+/* Unit tests for hb-set.h */
+
+
+static void
+test_empty (hb_set_t *s)
+{
+ hb_codepoint_t next = (hb_codepoint_t) -1;
+ g_assert_cmpint (hb_set_get_population (s), ==, 0);
+ g_assert_cmpint (hb_set_get_min (s), ==, (hb_codepoint_t) -1);
+ g_assert_cmpint (hb_set_get_max (s), ==, (hb_codepoint_t) -1);
+ g_assert (!hb_set_has (s, 13));
+ g_assert (!hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, (hb_codepoint_t) -1);
+}
+
+static void
+test_not_empty (hb_set_t *s)
+{
+ hb_codepoint_t next = (hb_codepoint_t) -1;
+ g_assert_cmpint (hb_set_get_population (s), !=, 0);
+ g_assert_cmpint (hb_set_get_min (s), !=, (hb_codepoint_t) -1);
+ g_assert_cmpint (hb_set_get_max (s), !=, (hb_codepoint_t) -1);
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, !=, (hb_codepoint_t) -1);
+}
+
+static void
+test_set_basic (void)
+{
+ hb_set_t *s = hb_set_create ();
+
+ test_empty (s);
+ hb_set_add (s, 13);
+ test_not_empty (s);
+
+ hb_set_clear (s);
+ test_empty (s);
+
+ hb_set_add_range (s, 10, 29);
+ test_not_empty (s);
+ g_assert (hb_set_has (s, 13));
+ g_assert_cmpint (hb_set_get_population (s), ==, 20);
+ g_assert_cmpint (hb_set_get_min (s), ==, 10);
+ g_assert_cmpint (hb_set_get_max (s), ==, 29);
+
+ hb_set_invert (s);
+ test_not_empty (s);
+ g_assert (!hb_set_has (s, 13));
+ g_assert_cmpint (hb_set_get_min (s), ==, 0);
+
+ hb_set_invert (s);
+ test_not_empty (s);
+ g_assert (hb_set_has (s, 13));
+ g_assert_cmpint (hb_set_get_population (s), ==, 20);
+ g_assert_cmpint (hb_set_get_min (s), ==, 10);
+ g_assert_cmpint (hb_set_get_max (s), ==, 29);
+
+ hb_set_del_range (s, 10, 18);
+ test_not_empty (s);
+ g_assert (!hb_set_has (s, 13));
+}
+
+static void
+test_set_algebra (void)
+{
+ hb_set_t *s = hb_set_create ();
+ hb_set_t *o = hb_set_create ();
+
+ hb_set_add (o, 13);
+ hb_set_add (o, 19);
+
+ test_empty (s);
+ g_assert (!hb_set_is_equal (s, o));
+ hb_set_set (s, o);
+ g_assert (hb_set_is_equal (s, o));
+ test_not_empty (s);
+ g_assert_cmpint (hb_set_get_population (s), ==, 2);
+
+ hb_set_clear (s);
+ test_empty (s);
+ hb_set_add (s, 10);
+ g_assert_cmpint (hb_set_get_population (s), ==, 1);
+ hb_set_union (s, o);
+ g_assert_cmpint (hb_set_get_population (s), ==, 3);
+ g_assert (hb_set_has (s, 10));
+ g_assert (hb_set_has (s, 13));
+
+ hb_set_clear (s);
+ test_empty (s);
+ hb_set_add_range (s, 10, 17);
+ g_assert (!hb_set_is_equal (s, o));
+ hb_set_intersect (s, o);
+ g_assert (!hb_set_is_equal (s, o));
+ test_not_empty (s);
+ g_assert_cmpint (hb_set_get_population (s), ==, 1);
+ g_assert (!hb_set_has (s, 10));
+ g_assert (hb_set_has (s, 13));
+
+ hb_set_clear (s);
+ test_empty (s);
+ hb_set_add_range (s, 10, 17);
+ g_assert (!hb_set_is_equal (s, o));
+ hb_set_subtract (s, o);
+ g_assert (!hb_set_is_equal (s, o));
+ test_not_empty (s);
+ g_assert_cmpint (hb_set_get_population (s), ==, 7);
+ g_assert (hb_set_has (s, 12));
+ g_assert (!hb_set_has (s, 13));
+ g_assert (!hb_set_has (s, 19));
+
+ hb_set_clear (s);
+ test_empty (s);
+ hb_set_add_range (s, 10, 17);
+ g_assert (!hb_set_is_equal (s, o));
+ hb_set_symmetric_difference (s, o);
+ g_assert (!hb_set_is_equal (s, o));
+ test_not_empty (s);
+ g_assert_cmpint (hb_set_get_population (s), ==, 8);
+ g_assert (hb_set_has (s, 12));
+ g_assert (!hb_set_has (s, 13));
+ g_assert (hb_set_has (s, 19));
+}
+
+static void
+test_set_iter (void)
+{
+ hb_codepoint_t next, first, last;
+ hb_set_t *s = hb_set_create ();
+
+ hb_set_add (s, 13);
+ hb_set_add_range (s, 6, 6);
+ hb_set_add_range (s, 10, 15);
+ hb_set_add (s, 20005);
+
+ test_not_empty (s);
+
+ next = (hb_codepoint_t) -1;
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 6);
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 10);
+ g_assert (hb_set_next (s, &next));
+ g_assert (hb_set_next (s, &next));
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 13);
+ g_assert (hb_set_next (s, &next));
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 15);
+ g_assert (hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 20005);
+ g_assert (!hb_set_next (s, &next));
+ g_assert_cmpint (next, ==, 20005);
+
+ first = last = (hb_codepoint_t) -1;
+ g_assert (hb_set_next_range (s, &first, &last));
+ g_assert_cmpint (first, ==, 6);
+ g_assert_cmpint (last, ==, 6);
+ g_assert (hb_set_next_range (s, &first, &last));
+ g_assert_cmpint (first, ==, 10);
+ g_assert_cmpint (last, ==, 15);
+ g_assert (hb_set_next_range (s, &first, &last));
+ g_assert_cmpint (first, ==, 20005);
+ g_assert_cmpint (last, ==, 20005);
+ g_assert (!hb_set_next_range (s, &first, &last));
+ g_assert_cmpint (first, ==, 20005);
+ g_assert_cmpint (last, ==, 20005);
+}
+
+static void
+test_set_empty (void)
+{
+ hb_set_t *b = hb_set_get_empty ();
+
+ g_assert (hb_set_get_empty ());
+ g_assert (hb_set_get_empty () == b);
+
+ g_assert (!hb_set_allocation_successful (b));
+
+ test_empty (b);
+
+ hb_set_add (b, 13);
+
+ test_empty (b);
+
+ hb_set_invert (b);
+
+ test_empty (b);
+
+ g_assert (!hb_set_allocation_successful (b));
+
+ hb_set_clear (b);
+
+ test_empty (b);
+
+ g_assert (!hb_set_allocation_successful (b));
+}
+
+int
+main (int argc, char **argv)
+{
+ hb_test_init (&argc, &argv);
+
+ hb_test_add (test_set_basic);
+ hb_test_add (test_set_algebra);
+ hb_test_add (test_set_iter);
+ hb_test_add (test_set_empty);
+
+ return hb_test_run();
+}
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
index 29cfb2f..a6f4f00 100644
--- a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
@@ -1 +1,2 @@
+dot-reph.txt
misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt
new file mode 100644
index 0000000..fc17a9b
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt
@@ -0,0 +1 @@
+ൎക
diff --git a/util/hb-shape.cc b/util/hb-shape.cc
index ca94152..852f9cf 100644
--- a/util/hb-shape.cc
+++ b/util/hb-shape.cc
@@ -31,7 +31,8 @@
struct output_buffer_t
{
output_buffer_t (option_parser_t *parser)
- : options (parser),
+ : options (parser,
+ g_strjoinv ("/", (gchar**) hb_buffer_serialize_list_formats ())),
format (parser) {}
void init (const font_options_t *font_opts)
@@ -47,9 +48,13 @@
output_format = hb_buffer_serialize_format_from_string (options.output_format, -1);
if (!hb_buffer_serialize_format_to_string (output_format))
{
- fail (false, "Unknown output format `%s'; supported formats are: %s",
- options.output_format,
- g_strjoinv (" / ", (gchar**) hb_buffer_serialize_list_formats ()));
+ if (options.explicit_output_format)
+ fail (false, "Unknown output format `%s'; supported formats are: %s",
+ options.output_format, options.supported_formats);
+ else
+ /* Just default to TEXT if not explicitly requested and the
+ * file extension is not recognized. */
+ output_format = HB_BUFFER_SERIALIZE_FORMAT_TEXT;
}
unsigned int flags = HB_BUFFER_SERIALIZE_FLAGS_DEFAULT;
diff --git a/util/helper-cairo.cc b/util/helper-cairo.cc
index 35340d1..bc44e8e 100644
--- a/util/helper-cairo.cc
+++ b/util/helper-cairo.cc
@@ -246,6 +246,25 @@
return CAIRO_STATUS_SUCCESS;
}
+const char helper_cairo_supported_formats[] =
+ "ansi"
+ #ifdef CAIRO_HAS_PNG_FUNCTIONS
+ "/png"
+ #endif
+ #ifdef CAIRO_HAS_SVG_SURFACE
+ "/svg"
+ #endif
+ #ifdef CAIRO_HAS_PDF_SURFACE
+ "/pdf"
+ #endif
+ #ifdef CAIRO_HAS_PS_SURFACE
+ "/ps"
+ #ifdef HAS_EPS
+ "/eps"
+ #endif
+ #endif
+;
+
cairo_t *
helper_cairo_create_context (double w, double h,
view_options_t *view_opts,
@@ -268,7 +287,13 @@
extension = "ansi";
else
#endif
+ {
+#ifdef CAIRO_HAS_PNG_FUNCTIONS
extension = "png";
+#else
+ extension = "ansi";
+#endif
+ }
}
if (0)
;
@@ -317,7 +342,10 @@
else if (constructor2)
surface = constructor2 (stdio_write_func, f, w, h, content);
else
- fail (false, "Unknown output format `%s'", extension);
+ fail (false, "Unknown output format `%s'; supported formats are: %s%s",
+ extension, helper_cairo_supported_formats,
+ out_opts->explicit_output_format ? "" :
+ "\nTry setting format using --output-format");
cairo_t *cr = cairo_create (surface);
content = cairo_surface_get_content (surface);
diff --git a/util/helper-cairo.hh b/util/helper-cairo.hh
index 2f2c9d4..b2ac9e4 100644
--- a/util/helper-cairo.hh
+++ b/util/helper-cairo.hh
@@ -36,6 +36,7 @@
helper_cairo_create_scaled_font (const font_options_t *font_opts,
double font_size);
+extern const char helper_cairo_supported_formats[];
cairo_t *
helper_cairo_create_context (double w, double h,
diff --git a/util/options.cc b/util/options.cc
index 6246654..17ad8e6 100644
--- a/util/options.cc
+++ b/util/options.cc
@@ -367,10 +367,17 @@
void
output_options_t::add_options (option_parser_t *parser)
{
+ const char *text;
+
+ if (NULL == supported_formats)
+ text = "Set output format";
+ else
+ text = g_strdup_printf ("Set output format\n\n Supported formats are: %s", supported_formats);
+
GOptionEntry entries[] =
{
{"output-file", 0, 0, G_OPTION_ARG_STRING, &this->output_file, "Set output file-name (default: stdout)","filename"},
- {"output-format", 0, 0, G_OPTION_ARG_STRING, &this->output_format, "Set output format", "format"},
+ {"output-format", 0, 0, G_OPTION_ARG_STRING, &this->output_format, text, "format"},
{NULL}
};
parser->add_group (entries,
diff --git a/util/options.hh b/util/options.hh
index 093f052..ad925b2 100644
--- a/util/options.hh
+++ b/util/options.hh
@@ -175,7 +175,7 @@
void populate_buffer (hb_buffer_t *buffer, const char *text, int text_len,
const char *text_before, const char *text_after)
{
- hb_buffer_clear (buffer);
+ hb_buffer_clear_contents (buffer);
if (text_before) {
unsigned int len = strlen (text_before);
hb_buffer_add_utf8 (buffer, text_before, len, len, 0);
@@ -310,9 +310,12 @@
struct output_options_t : option_group_t
{
- output_options_t (option_parser_t *parser) {
+ output_options_t (option_parser_t *parser,
+ const char *supported_formats_ = NULL) {
output_file = NULL;
output_format = NULL;
+ supported_formats = supported_formats_;
+ explicit_output_format = false;
fp = NULL;
@@ -327,6 +330,9 @@
void post_parse (GError **error G_GNUC_UNUSED)
{
+ if (output_format)
+ explicit_output_format = true;
+
if (output_file && !output_format) {
output_format = strrchr (output_file, '.');
if (output_format)
@@ -341,6 +347,8 @@
const char *output_file;
const char *output_format;
+ const char *supported_formats;
+ bool explicit_output_format;
mutable FILE *fp;
};
diff --git a/util/view-cairo.hh b/util/view-cairo.hh
index c621984..f273464 100644
--- a/util/view-cairo.hh
+++ b/util/view-cairo.hh
@@ -33,7 +33,7 @@
struct view_cairo_t {
view_cairo_t (option_parser_t *parser)
- : output_options (parser),
+ : output_options (parser, helper_cairo_supported_formats),
view_options (parser) {}
~view_cairo_t (void) {
if (debug)