From 9b05db33b54e6e5f0b4658f4c06e7fe563f8923b Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 7 May 2019 11:39:44 -0700 Subject: [PATCH] [ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018 --- src/hb-buffer-deserialize-json.hh | 1051 +++++------ src/hb-buffer-deserialize-text.hh | 1009 +++++------ src/hb-ot-shape-complex-indic-machine.hh | 2678 ++++++++++++++++------------ src/hb-ot-shape-complex-khmer-machine.hh | 709 ++++---- src/hb-ot-shape-complex-myanmar-machine.hh | 820 +++++---- src/hb-ot-shape-complex-use-machine.hh | 1144 ++++++------ 6 files changed, 3959 insertions(+), 3452 deletions(-) diff --git a/src/hb-buffer-deserialize-json.hh b/src/hb-buffer-deserialize-json.hh index 1f9e2e9..8631d52 100644 --- a/src/hb-buffer-deserialize-json.hh +++ b/src/hb-buffer-deserialize-json.hh @@ -1,30 +1,28 @@ - -#line 1 "hb-buffer-deserialize-json.rl" /* - * 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 - */ +* 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 +*/ #ifndef HB_BUFFER_DESERIALIZE_JSON_HH #define HB_BUFFER_DESERIALIZE_JSON_HH @@ -32,612 +30,465 @@ #include "hb.hh" -#line 36 "hb-buffer-deserialize-json.hh" static const unsigned char _deserialize_json_trans_keys[] = { - 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, - 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, - 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, - 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, - 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, - 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 + 1u, 0u, 0u, 18u, 0u, 2u, 11u, 14u, + 16u, 17u, 2u, 2u, 0u, 8u, 0u, 7u, + 6u, 7u, 0u, 19u, 0u, 19u, 0u, 19u, + 2u, 2u, 0u, 8u, 0u, 7u, 6u, 7u, + 0u, 19u, 0u, 19u, 15u, 15u, 2u, 2u, + 0u, 8u, 0u, 7u, 0u, 19u, 0u, 19u, + 16u, 17u, 2u, 2u, 0u, 8u, 0u, 7u, + 6u, 7u, 0u, 19u, 0u, 19u, 2u, 2u, + 0u, 8u, 0u, 7u, 6u, 7u, 0u, 19u, + 0u, 19u, 2u, 2u, 0u, 8u, 0u, 7u, + 9u, 17u, 2u, 17u, 0u, 19u, 0u, 19u, + 0u, 10u, 0u, 18u, 1u, 0u, 0u }; -static const char _deserialize_json_key_spans[] = { - 0, 115, 26, 7, 2, 1, 50, 49, - 10, 117, 117, 117, 1, 50, 49, 10, - 117, 117, 1, 1, 50, 49, 117, 117, - 2, 1, 50, 49, 10, 117, 117, 1, - 50, 49, 10, 117, 117, 1, 50, 49, - 58, 89, 117, 117, 85, 115, 0 +static const char _deserialize_json_char_class[] = { + 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, + 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 4, 5, 1, 6, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 8, 1, 1, 1, 1, 1, 1, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 1, 1, 10, 1, 5, 1, + 11, 9, 12, 13, 9, 9, 14, 9, + 9, 9, 9, 15, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 16, + 17, 9, 18, 1, 19, 0 }; static const short _deserialize_json_index_offsets[] = { - 0, 0, 116, 143, 151, 154, 156, 207, - 257, 268, 386, 504, 622, 624, 675, 725, - 736, 854, 972, 974, 976, 1027, 1077, 1195, - 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, - 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, - 2119, 2178, 2268, 2386, 2504, 2590, 2706 + 0, 0, 19, 22, 26, 28, 29, 38, + 46, 48, 68, 88, 108, 109, 118, 126, + 128, 148, 168, 169, 170, 179, 187, 207, + 227, 229, 230, 239, 247, 249, 269, 289, + 290, 299, 307, 309, 329, 349, 350, 359, + 367, 376, 392, 412, 432, 443, 462, 0 }; static const char _deserialize_json_indicies[] = { - 0, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 0, 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, 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, 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, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 3, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 4, 1, - 5, 1, 6, 7, 1, 1, 8, 1, - 9, 10, 1, 11, 1, 11, 11, 11, - 11, 11, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 11, 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, 12, 1, - 12, 12, 12, 12, 12, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 12, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 13, 1, 1, 14, - 15, 15, 15, 15, 15, 15, 15, 15, - 15, 1, 16, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 1, 18, 18, 18, - 18, 18, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 18, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 19, 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, 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, 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, 1, - 1, 20, 1, 21, 21, 21, 21, 21, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 21, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 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, 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, 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, 1, 1, 22, - 1, 18, 18, 18, 18, 18, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 18, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 19, 1, 1, 1, - 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 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, 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, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 20, 1, 23, - 1, 23, 23, 23, 23, 23, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 23, 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, 24, 1, 24, 24, 24, 24, - 24, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 24, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 25, 1, 1, 26, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 1, 28, 29, - 29, 29, 29, 29, 29, 29, 29, 29, - 1, 30, 30, 30, 30, 30, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 30, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 31, 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, 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, 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, 1, 1, 32, 1, 30, - 30, 30, 30, 30, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 30, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 31, 1, 1, 1, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, - 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, 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, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 32, 1, 33, 1, 34, - 1, 34, 34, 34, 34, 34, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 34, 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, 35, 1, 35, 35, 35, 35, - 35, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 35, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 36, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 1, 38, 38, - 38, 38, 38, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 39, 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, 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, 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, - 1, 1, 40, 1, 38, 38, 38, 38, - 38, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 38, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 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, 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, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 40, 1, 42, 43, 1, 44, 1, 44, - 44, 44, 44, 44, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 44, 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, - 45, 1, 45, 45, 45, 45, 45, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 45, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 46, 1, - 1, 47, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 1, 49, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 1, 51, - 51, 51, 51, 51, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 51, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 52, 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, 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, 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, 1, 1, 53, 1, 51, 51, 51, - 51, 51, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 51, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 52, 1, 1, 1, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 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, - 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, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 53, 1, 54, 1, 54, 54, 54, - 54, 54, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 54, 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, 55, 1, - 55, 55, 55, 55, 55, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 55, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 56, 1, 1, 57, - 58, 58, 58, 58, 58, 58, 58, 58, - 58, 1, 59, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 1, 61, 61, 61, - 61, 61, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 61, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 62, 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, 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, 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, 1, - 1, 63, 1, 61, 61, 61, 61, 61, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 61, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 62, 1, - 1, 1, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 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, 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, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 63, - 1, 64, 1, 64, 64, 64, 64, 64, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 64, 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, 65, 1, 65, 65, - 65, 65, 65, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 65, 1, 66, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 67, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 1, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 1, 1, 1, 1, 1, 1, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 1, 70, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 71, 71, - 1, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 1, 1, 1, 1, 1, - 1, 1, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1, 1, 1, 1, - 71, 1, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1, 72, 72, 72, - 72, 72, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 72, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 73, 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, 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, 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, 1, - 1, 74, 1, 72, 72, 72, 72, 72, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 72, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 73, 1, - 1, 1, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 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, 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, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 74, - 1, 76, 76, 76, 76, 76, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 76, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 78, 1, 0, - 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 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, 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, 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, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 0 + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 3, 1, 4, 5, 6, + 7, 8, 9, 10, 11, 11, 1, 1, + 1, 1, 1, 1, 1, 12, 12, 1, + 1, 1, 13, 1, 14, 15, 16, 17, + 18, 1, 1, 19, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 20, 21, 1, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 22, + 18, 1, 1, 19, 1, 1, 17, 17, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 20, 23, 23, 1, 1, + 1, 1, 1, 1, 1, 24, 24, 1, + 1, 1, 25, 1, 26, 27, 28, 29, + 30, 1, 1, 31, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 32, 30, 1, 1, 31, + 1, 1, 29, 29, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 32, + 33, 34, 34, 1, 1, 1, 1, 1, + 1, 1, 35, 35, 1, 1, 1, 1, + 1, 36, 37, 38, 1, 1, 39, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 40, 38, + 1, 1, 39, 1, 1, 41, 41, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 42, 43, 44, 44, 1, + 1, 1, 1, 1, 1, 1, 45, 45, + 1, 1, 1, 46, 1, 47, 48, 49, + 50, 51, 1, 1, 52, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 53, 51, 1, 1, + 52, 1, 1, 50, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 53, 54, 54, 1, 1, 1, 1, 1, + 1, 1, 55, 55, 1, 1, 1, 56, + 1, 57, 58, 59, 60, 61, 1, 1, + 62, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 63, 61, 1, 1, 62, 1, 1, 60, + 60, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 63, 64, 64, 1, + 1, 1, 1, 1, 1, 1, 65, 65, + 1, 66, 1, 1, 1, 67, 68, 69, + 1, 69, 69, 69, 69, 69, 69, 69, + 70, 1, 71, 71, 71, 71, 1, 71, + 1, 71, 71, 71, 71, 71, 71, 71, + 72, 1, 1, 73, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 74, 72, 1, 1, 73, + 1, 1, 75, 75, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 74, + 76, 1, 1, 77, 1, 1, 1, 1, + 1, 1, 78, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0 }; -static const char _deserialize_json_trans_targs[] = { - 1, 0, 2, 2, 3, 4, 18, 24, - 37, 5, 12, 6, 7, 8, 9, 11, - 9, 11, 10, 2, 44, 10, 44, 13, - 14, 15, 16, 17, 16, 17, 10, 2, - 44, 19, 20, 21, 22, 23, 10, 2, - 44, 23, 25, 31, 26, 27, 28, 29, - 30, 29, 30, 10, 2, 44, 32, 33, - 34, 35, 36, 35, 36, 10, 2, 44, - 38, 39, 40, 42, 43, 41, 10, 41, - 10, 2, 44, 43, 44, 45, 46 +static const char _deserialize_json_index_defaults[] = { + 0, 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, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0 }; -static const char _deserialize_json_trans_actions[] = { - 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 2, 2, - 0, 0, 3, 3, 4, 0, 5, 0, - 0, 2, 2, 2, 0, 0, 6, 6, - 7, 0, 0, 0, 2, 2, 8, 8, - 9, 0, 0, 0, 0, 0, 2, 2, - 2, 0, 0, 10, 10, 11, 0, 0, - 2, 2, 2, 0, 0, 12, 12, 13, - 0, 0, 0, 2, 2, 2, 14, 0, - 15, 15, 16, 0, 0, 0, 0 +static const char _deserialize_json_trans_cond_spaces[] = { + -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, -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, -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, -1, 0 }; -static const int deserialize_json_start = 1; -static const int deserialize_json_first_final = 44; -static const int deserialize_json_error = 0; +static const char _deserialize_json_cond_targs[] = { + 1, 0, 2, 2, 3, 4, 18, 24, + 37, 5, 12, 6, 7, 8, 9, 11, + 9, 11, 10, 2, 44, 10, 44, 13, + 14, 15, 16, 17, 16, 17, 10, 2, + 44, 19, 20, 21, 22, 23, 10, 2, + 44, 23, 25, 31, 26, 27, 28, 29, + 30, 29, 30, 10, 2, 44, 32, 33, + 34, 35, 36, 35, 36, 10, 2, 44, + 38, 39, 40, 42, 43, 41, 10, 41, + 10, 2, 44, 43, 44, 45, 46, 0 +}; -static const int deserialize_json_en_main = 1; +static const char _deserialize_json_cond_actions[] = { + 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 3, 3, 4, 0, 5, 0, + 0, 2, 2, 2, 0, 0, 6, 6, + 7, 0, 0, 0, 2, 2, 8, 8, + 9, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 0, 10, 10, 11, 0, 0, + 2, 2, 2, 0, 0, 12, 12, 13, + 0, 0, 0, 2, 2, 2, 14, 0, + 15, 15, 16, 0, 0, 0, 0, 0 +}; +static const char _deserialize_json_eof_cond_spaces[] = { + -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, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0 +}; -#line 97 "hb-buffer-deserialize-json.rl" +static const char _deserialize_json_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; +static const char _deserialize_json_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; -static hb_bool_t -_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, - const char *buf, - unsigned int buf_len, - const char **end_ptr, - hb_font_t *font) -{ - const char *p = buf, *pe = buf + buf_len; +static const char _deserialize_json_eof_cond_keys[] = { + 0 +}; - /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, nullptr); +static const char _deserialize_json_nfa_targs[] = { + 0, 0 +}; - while (p < pe && ISSPACE (*p)) - p++; - if (p < pe && *p == (buffer->len ? ',' : '[')) - { - *end_ptr = ++p; - } +static const char _deserialize_json_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; - const char *tok = nullptr; - int cs; - hb_glyph_info_t info = {0}; - hb_glyph_position_t pos = {0}; - -#line 466 "hb-buffer-deserialize-json.hh" - { - cs = deserialize_json_start; - } +static const char _deserialize_json_nfa_push_actions[] = { + 0, 0 +}; -#line 471 "hb-buffer-deserialize-json.hh" - { - int _slen; - int _trans; - const unsigned char *_keys; - const char *_inds; - if ( p == pe ) - goto _test_eof; - if ( cs == 0 ) - goto _out; -_resume: - _keys = _deserialize_json_trans_keys + (cs<<1); - _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]; +static const char _deserialize_json_nfa_pop_trans[] = { + 0, 0 +}; - _slen = _deserialize_json_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && - (*p) <= _keys[1] ? - (*p) - _keys[0] : _slen ]; +static const int deserialize_json_start = 1; +static const int deserialize_json_first_final = 44; +static const int deserialize_json_error = 0; - cs = _deserialize_json_trans_targs[_trans]; +static const int deserialize_json_en_main = 1; - if ( _deserialize_json_trans_actions[_trans] == 0 ) - goto _again; - switch ( _deserialize_json_trans_actions[_trans] ) { - case 1: -#line 38 "hb-buffer-deserialize-json.rl" - { - memset (&info, 0, sizeof (info)); - memset (&pos , 0, sizeof (pos )); -} - break; - case 5: -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 2: -#line 51 "hb-buffer-deserialize-json.rl" - { - tok = p; -} - break; - case 14: -#line 55 "hb-buffer-deserialize-json.rl" - { - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; -} - break; - case 15: -#line 62 "hb-buffer-deserialize-json.rl" - { if (!parse_uint (tok, p, &info.codepoint)) return false; } - break; - case 8: -#line 63 "hb-buffer-deserialize-json.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } - break; - case 10: -#line 64 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_offset )) return false; } - break; - case 12: -#line 65 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } - break; - case 3: -#line 66 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } - break; - case 6: -#line 67 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.y_advance)) return false; } - break; - case 16: -#line 62 "hb-buffer-deserialize-json.rl" - { if (!parse_uint (tok, p, &info.codepoint)) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 9: -#line 63 "hb-buffer-deserialize-json.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 11: -#line 64 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_offset )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 13: -#line 65 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } -#line 43 "hb-buffer-deserialize-json.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 4: -#line 66 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } -#line 43 "hb-buffer-deserialize-json.rl" + +static hb_bool_t +_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, +const char *buf, +unsigned int buf_len, +const char **end_ptr, +hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, nullptr); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? ',' : '[')) { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 7: -#line 67 "hb-buffer-deserialize-json.rl" - { if (!parse_int (tok, p, &pos.y_advance)) return false; } -#line 43 "hb-buffer-deserialize-json.rl" + *end_ptr = ++p; + } + + const char *tok = nullptr; + int cs; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; + { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; -#line 624 "hb-buffer-deserialize-json.hh" + cs = (int)deserialize_json_start; } - -_again: - if ( cs == 0 ) - goto _out; - if ( ++p != pe ) - goto _resume; - _test_eof: {} - _out: {} + + { + unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; + _resume: { + _keys = ( _deserialize_json_trans_keys + ((cs<<1))); + _inds = ( _deserialize_json_indicies + (_deserialize_json_index_offsets[cs])); + + if ( ( (*( p))) <= 125 && ( (*( p))) >= 9 ) + { + int _ic = (int)_deserialize_json_char_class[(int)( (*( p))) - 9]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_deserialize_json_index_defaults[cs]; + } + else { + _trans = (unsigned int)_deserialize_json_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_deserialize_json_cond_targs[_trans]; + + if ( _deserialize_json_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_json_cond_actions[_trans] ) { + case 1: { + { + #line 38 "hb-buffer-deserialize-json.rl" + + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); + } + + break; } + case 5: { + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 2: { + { + #line 51 "hb-buffer-deserialize-json.rl" + + tok = p; + } + + break; } + case 14: { + { + #line 55 "hb-buffer-deserialize-json.rl" + + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; + } + + break; } + case 15: { + { + #line 62 "hb-buffer-deserialize-json.rl" + if (!parse_uint (tok, p, &info.codepoint)) return false; } + + break; } + case 8: { + { + #line 63 "hb-buffer-deserialize-json.rl" + if (!parse_uint (tok, p, &info.cluster )) return false; } + + break; } + case 10: { + { + #line 64 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.x_offset )) return false; } + + break; } + case 12: { + { + #line 65 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.y_offset )) return false; } + + break; } + case 3: { + { + #line 66 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.x_advance)) return false; } + + break; } + case 6: { + { + #line 67 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.y_advance)) return false; } + + break; } + case 16: { + { + #line 62 "hb-buffer-deserialize-json.rl" + if (!parse_uint (tok, p, &info.codepoint)) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 9: { + { + #line 63 "hb-buffer-deserialize-json.rl" + if (!parse_uint (tok, p, &info.cluster )) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 11: { + { + #line 64 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.x_offset )) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 13: { + { + #line 65 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.y_offset )) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 4: { + { + #line 66 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.x_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 7: { + { + #line 67 "hb-buffer-deserialize-json.rl" + if (!parse_int (tok, p, &pos.y_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-json.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + } + + + } + _again: { + if ( cs == 0 ) + goto _out; + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + } + _out: { {} + } + } } - -#line 125 "hb-buffer-deserialize-json.rl" - - - *end_ptr = p; - - return p == pe && *(p-1) != ']'; + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; } #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ diff --git a/src/hb-buffer-deserialize-text.hh b/src/hb-buffer-deserialize-text.hh index 67f0a12..28ab3f1 100644 --- a/src/hb-buffer-deserialize-text.hh +++ b/src/hb-buffer-deserialize-text.hh @@ -1,30 +1,28 @@ - -#line 1 "hb-buffer-deserialize-text.rl" /* - * 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 - */ +* 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 +*/ #ifndef HB_BUFFER_DESERIALIZE_TEXT_HH #define HB_BUFFER_DESERIALIZE_TEXT_HH @@ -32,540 +30,501 @@ #include "hb.hh" -#line 36 "hb-buffer-deserialize-text.hh" static const unsigned char _deserialize_text_trans_keys[] = { - 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, - 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, - 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, - 9u, 124u, 9u, 124u, 9u, 124u, 0 + 1u, 0u, 0u, 10u, 4u, 7u, 6u, 7u, + 4u, 7u, 6u, 7u, 6u, 7u, 4u, 7u, + 6u, 7u, 3u, 3u, 4u, 7u, 6u, 7u, + 3u, 7u, 0u, 12u, 0u, 12u, 1u, 0u, + 0u, 10u, 0u, 12u, 0u, 12u, 0u, 12u, + 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, + 0u, 12u, 0u, 12u, 0u, 12u, 0u }; -static const char _deserialize_text_key_spans[] = { - 0, 114, 13, 10, 13, 10, 10, 13, - 10, 1, 13, 10, 14, 116, 116, 0, - 114, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116 +static const char _deserialize_text_char_class[] = { + 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 3, 4, 5, 1, 6, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 1, 1, 1, 8, 1, 1, 9, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 1, 1, 11, 1, 5, 1, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 1, 12, 0 }; static const short _deserialize_text_index_offsets[] = { - 0, 0, 115, 129, 140, 154, 165, 176, - 190, 201, 203, 217, 228, 243, 360, 477, - 478, 593, 710, 827, 944, 1061, 1178, 1295, - 1412, 1529, 1646 + 0, 0, 11, 15, 17, 21, 23, 25, + 29, 31, 32, 36, 38, 43, 56, 69, + 69, 80, 93, 106, 119, 132, 145, 158, + 171, 184, 197, 0 }; static const char _deserialize_text_indicies[] = { - 0, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 5, 1, 1, 6, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 1, 8, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 1, 10, 1, 1, - 11, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 1, 13, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 1, 15, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 1, 17, 1, 1, 18, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 1, 20, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 1, 22, 1, 23, 1, 1, 24, - 25, 25, 25, 25, 25, 25, 25, 25, - 25, 1, 26, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 1, 22, 1, 1, - 1, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 1, 28, 28, 28, 28, - 28, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 28, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 29, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 30, 1, 1, 31, 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, 1, 1, - 32, 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, 1, 1, 1, 1, 33, - 1, 34, 34, 34, 34, 34, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 34, 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, 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, 1, 1, 1, - 1, 1, 1, 1, 1, 35, 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, - 1, 1, 1, 1, 36, 1, 1, 0, - 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 28, 28, 28, 28, 28, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 28, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 29, 1, 1, 1, - 1, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 1, 1, 1, 30, 1, - 1, 31, 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, 1, 1, 32, 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, 1, 1, 1, 1, 33, 1, 38, - 38, 38, 38, 38, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 38, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 39, 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, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 40, 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, 1, 1, - 1, 1, 41, 1, 42, 42, 42, 42, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 42, 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, 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, - 1, 1, 1, 1, 1, 1, 1, 1, - 43, 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, 1, 1, 1, 1, 44, - 1, 42, 42, 42, 42, 42, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 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, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 43, 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, - 1, 1, 1, 1, 44, 1, 38, 38, - 38, 38, 38, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 39, 1, 1, 1, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 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, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 40, 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, 1, 1, 1, - 1, 41, 1, 45, 45, 45, 45, 45, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 45, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 46, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 47, 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, 1, 1, 48, - 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, 1, 1, 1, 1, 49, 1, - 50, 50, 50, 50, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 50, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 51, 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, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 52, 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, 1, - 1, 1, 1, 53, 1, 50, 50, 50, - 50, 50, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 51, - 1, 1, 1, 1, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 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, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 52, 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, 1, 1, 1, 1, - 53, 1, 45, 45, 45, 45, 45, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 45, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 46, 1, 1, 1, - 1, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 1, 1, 1, 1, 1, - 1, 47, 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, 1, 1, 48, 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, 1, 1, 1, 1, 49, 1, 28, - 28, 28, 28, 28, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 28, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 29, 1, 55, 55, 1, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 1, 1, 1, 30, 1, 1, 31, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 1, 1, 32, 1, 55, 1, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 1, 33, 1, 0 + 0, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 5, 1, 6, 7, 8, + 9, 10, 1, 11, 12, 13, 14, 15, + 16, 17, 1, 18, 19, 20, 21, 22, + 23, 1, 24, 25, 26, 27, 22, 1, + 1, 21, 21, 28, 1, 29, 1, 1, + 1, 1, 1, 30, 31, 1, 32, 33, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 35, 36, 0, 1, 1, + 1, 1, 1, 2, 3, 1, 1, 4, + 28, 1, 29, 1, 1, 1, 37, 37, + 30, 31, 1, 32, 33, 38, 1, 1, + 39, 1, 1, 1, 1, 1, 1, 1, + 40, 41, 42, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 43, 44, 42, + 1, 1, 1, 1, 1, 14, 14, 1, + 1, 1, 43, 44, 38, 1, 1, 39, + 1, 1, 9, 9, 1, 1, 1, 40, + 41, 45, 1, 46, 1, 1, 1, 1, + 1, 1, 47, 1, 48, 49, 50, 1, + 51, 1, 1, 1, 1, 1, 1, 1, + 1, 52, 53, 50, 1, 51, 1, 1, + 1, 27, 27, 1, 1, 1, 52, 53, + 45, 1, 46, 1, 1, 1, 54, 54, + 1, 47, 1, 48, 49, 28, 1, 29, + 1, 55, 55, 55, 55, 30, 31, 55, + 32, 33, 0 }; -static const char _deserialize_text_trans_targs[] = { - 1, 0, 13, 17, 26, 3, 18, 21, - 18, 21, 5, 19, 20, 19, 20, 22, - 25, 8, 9, 12, 9, 12, 10, 11, - 23, 24, 23, 24, 14, 2, 6, 7, - 15, 16, 14, 15, 16, 17, 14, 4, - 15, 16, 14, 15, 16, 14, 2, 7, - 15, 16, 14, 2, 15, 16, 25, 26 +static const char _deserialize_text_index_defaults[] = { + 0, 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 }; -static const char _deserialize_text_trans_actions[] = { - 0, 0, 1, 1, 1, 2, 2, 2, - 0, 0, 2, 2, 2, 0, 0, 2, - 2, 2, 2, 2, 0, 0, 3, 2, - 2, 2, 0, 0, 4, 5, 5, 5, - 4, 4, 0, 0, 0, 0, 6, 7, - 6, 6, 8, 8, 8, 9, 10, 10, - 9, 9, 11, 12, 11, 11, 0, 0 +static const char _deserialize_text_trans_cond_spaces[] = { + -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, -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, -1, -1, -1, -1, + 0 }; -static const char _deserialize_text_eof_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, - 0, 4, 6, 8, 8, 6, 9, 11, - 11, 9, 4 +static const char _deserialize_text_cond_targs[] = { + 1, 0, 13, 17, 26, 3, 18, 21, + 18, 21, 5, 19, 20, 19, 20, 22, + 25, 8, 9, 12, 9, 12, 10, 11, + 23, 24, 23, 24, 14, 2, 6, 7, + 15, 16, 14, 15, 16, 17, 14, 4, + 15, 16, 14, 15, 16, 14, 2, 7, + 15, 16, 14, 2, 15, 16, 25, 26, + 0 }; -static const int deserialize_text_start = 1; -static const int deserialize_text_first_final = 13; -static const int deserialize_text_error = 0; +static const char _deserialize_text_cond_actions[] = { + 0, 0, 1, 1, 1, 2, 2, 2, + 0, 0, 2, 2, 2, 0, 0, 2, + 2, 2, 2, 2, 0, 0, 3, 2, + 2, 2, 0, 0, 4, 5, 5, 5, + 4, 4, 0, 0, 0, 0, 6, 7, + 6, 6, 8, 8, 8, 9, 10, 10, + 9, 9, 11, 12, 11, 11, 0, 0, + 0 +}; -static const int deserialize_text_en_main = 1; +static const char _deserialize_text_eof_cond_spaces[] = { + -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, -1, 0 +}; +static const char _deserialize_text_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; -#line 91 "hb-buffer-deserialize-text.rl" +static const char _deserialize_text_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; +static const char _deserialize_text_eof_cond_keys[] = { + 0 +}; -static hb_bool_t -_hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, - const char *buf, - unsigned int buf_len, - const char **end_ptr, - hb_font_t *font) -{ - const char *p = buf, *pe = buf + buf_len; +static const char _deserialize_text_eof_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 6, 8, 8, 6, 9, 11, + 11, 9, 4, 0 +}; - /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, nullptr); +static const char _deserialize_text_nfa_targs[] = { + 0, 0 +}; - while (p < pe && ISSPACE (*p)) - p++; - if (p < pe && *p == (buffer->len ? '|' : '[')) - { - *end_ptr = ++p; - } +static const char _deserialize_text_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; - const char *eof = pe, *tok = nullptr; - int cs; - hb_glyph_info_t info = {0}; - hb_glyph_position_t pos = {0}; - -#line 343 "hb-buffer-deserialize-text.hh" - { - cs = deserialize_text_start; - } +static const char _deserialize_text_nfa_push_actions[] = { + 0, 0 +}; -#line 348 "hb-buffer-deserialize-text.hh" - { - int _slen; - int _trans; - const unsigned char *_keys; - const char *_inds; - if ( p == pe ) - goto _test_eof; - if ( cs == 0 ) - goto _out; -_resume: - _keys = _deserialize_text_trans_keys + (cs<<1); - _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs]; +static const char _deserialize_text_nfa_pop_trans[] = { + 0, 0 +}; - _slen = _deserialize_text_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && - (*p) <= _keys[1] ? - (*p) - _keys[0] : _slen ]; +static const int deserialize_text_start = 1; +static const int deserialize_text_first_final = 13; +static const int deserialize_text_error = 0; - cs = _deserialize_text_trans_targs[_trans]; +static const int deserialize_text_en_main = 1; - if ( _deserialize_text_trans_actions[_trans] == 0 ) - goto _again; - switch ( _deserialize_text_trans_actions[_trans] ) { - case 2: -#line 51 "hb-buffer-deserialize-text.rl" - { - tok = p; -} - break; - case 5: -#line 55 "hb-buffer-deserialize-text.rl" - { - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; -} - break; - case 10: -#line 62 "hb-buffer-deserialize-text.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } - break; - case 3: -#line 63 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.x_offset )) return false; } - break; - case 12: -#line 64 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } - break; - case 7: -#line 65 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } - break; - case 1: -#line 38 "hb-buffer-deserialize-text.rl" - { - memset (&info, 0, sizeof (info)); - memset (&pos , 0, sizeof (pos )); -} -#line 51 "hb-buffer-deserialize-text.rl" - { - tok = p; -} - break; - case 4: -#line 55 "hb-buffer-deserialize-text.rl" - { - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; -} -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 9: -#line 62 "hb-buffer-deserialize-text.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 11: -#line 64 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 6: -#line 65 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 8: -#line 66 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.y_advance)) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; -#line 480 "hb-buffer-deserialize-text.hh" - } -_again: - if ( cs == 0 ) - goto _out; - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) - { - switch ( _deserialize_text_eof_actions[cs] ) { - case 4: -#line 55 "hb-buffer-deserialize-text.rl" - { - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; -} -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 9: -#line 62 "hb-buffer-deserialize-text.rl" - { if (!parse_uint (tok, p, &info.cluster )) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 11: -#line 64 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.y_offset )) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 6: -#line 65 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.x_advance)) return false; } -#line 43 "hb-buffer-deserialize-text.rl" - { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; - case 8: -#line 66 "hb-buffer-deserialize-text.rl" - { if (!parse_int (tok, p, &pos.y_advance)) return false; } -#line 43 "hb-buffer-deserialize-text.rl" +static hb_bool_t +_hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, +const char *buf, +unsigned int buf_len, +const char **end_ptr, +hb_font_t *font) +{ + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, nullptr); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? '|' : '[')) { - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; -} - break; -#line 557 "hb-buffer-deserialize-text.hh" + *end_ptr = ++p; } + + const char *eof = pe, *tok = nullptr; + int cs; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; + + { + cs = (int)deserialize_text_start; } - - _out: {} + + { + int _cpc; + int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; + _resume: { + _keys = ( _deserialize_text_trans_keys + ((cs<<1))); + _inds = ( _deserialize_text_indicies + (_deserialize_text_index_offsets[cs])); + + if ( ( (*( p))) <= 124 && ( (*( p))) >= 9 ) + { + int _ic = (int)_deserialize_text_char_class[(int)( (*( p))) - 9]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_deserialize_text_index_defaults[cs]; + } + else { + _trans = (unsigned int)_deserialize_text_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_deserialize_text_cond_targs[_trans]; + + if ( _deserialize_text_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_text_cond_actions[_trans] ) { + case 2: { + { + #line 51 "hb-buffer-deserialize-text.rl" + + tok = p; + } + + break; } + case 5: { + { + #line 55 "hb-buffer-deserialize-text.rl" + + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; + } + + break; } + case 10: { + { + #line 62 "hb-buffer-deserialize-text.rl" + if (!parse_uint (tok, p, &info.cluster )) return false; } + + break; } + case 3: { + { + #line 63 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.x_offset )) return false; } + + break; } + case 12: { + { + #line 64 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.y_offset )) return false; } + + break; } + case 7: { + { + #line 65 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.x_advance)) return false; } + + break; } + case 1: { + { + #line 38 "hb-buffer-deserialize-text.rl" + + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); + } + { + #line 51 "hb-buffer-deserialize-text.rl" + + tok = p; + } + + break; } + case 4: { + { + #line 55 "hb-buffer-deserialize-text.rl" + + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; + } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 9: { + { + #line 62 "hb-buffer-deserialize-text.rl" + if (!parse_uint (tok, p, &info.cluster )) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 11: { + { + #line 64 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.y_offset )) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 6: { + { + #line 65 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.x_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 8: { + { + #line 66 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.y_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + } + + + } + _again: { + if ( cs == 0 ) + goto _out; + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + if ( p == eof ) + { + if ( _deserialize_text_eof_cond_spaces[cs] != -1 ) { + _cekeys = ( _deserialize_text_eof_cond_keys + (_deserialize_text_eof_cond_key_offs[cs])); + _klen = (int)_deserialize_text_eof_cond_key_lens[cs]; + _cpc = 0; + { + const char *_lower = _cekeys; + const char *_upper = _cekeys + _klen - 1; + const char *_mid; + while ( 1 ) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( _cpc < (int)(*( _mid)) ) + _upper = _mid - 1; + else if ( _cpc > (int)(*( _mid)) ) + _lower = _mid + 1; + else { + goto _ok; + } + } + cs = 0; + goto _out; + } + _ok: {} + } + switch ( _deserialize_text_eof_actions[cs] ) { + case 4: { + { + #line 55 "hb-buffer-deserialize-text.rl" + + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; + } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 9: { + { + #line 62 "hb-buffer-deserialize-text.rl" + if (!parse_uint (tok, p, &info.cluster )) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 11: { + { + #line 64 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.y_offset )) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 6: { + { + #line 65 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.x_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + case 8: { + { + #line 66 "hb-buffer-deserialize-text.rl" + if (!parse_int (tok, p, &pos.y_advance)) return false; } + { + #line 43 "hb-buffer-deserialize-text.rl" + + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; + } + + break; } + } + } + + } + _out: { {} + } + } } - -#line 119 "hb-buffer-deserialize-text.rl" - - - *end_ptr = p; - - return p == pe && *(p-1) != ']'; + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; } #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */ diff --git a/src/hb-ot-shape-complex-indic-machine.hh b/src/hb-ot-shape-complex-indic-machine.hh index 08b90e9..dbab7e0 100644 --- a/src/hb-ot-shape-complex-indic-machine.hh +++ b/src/hb-ot-shape-complex-indic-machine.hh @@ -1,30 +1,28 @@ - -#line 1 "hb-ot-shape-complex-indic-machine.rl" /* - * Copyright © 2011,2012 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 - */ +* Copyright © 2011,2012 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 +*/ #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH @@ -32,952 +30,1226 @@ #include "hb.hh" -#line 36 "hb-ot-shape-complex-indic-machine.hh" static const unsigned char _indic_syllable_machine_trans_keys[] = { - 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, - 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, - 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, - 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, - 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, - 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, - 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, - 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, - 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, - 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, - 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, - 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, - 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 8u, 8u, 4u, 8u, 5u, 7u, - 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, - 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, - 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, - 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 13u, - 5u, 8u, 8u, 8u, 1u, 19u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, - 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, - 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, - 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, - 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, - 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, - 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, - 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, - 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, - 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, - 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, - 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, - 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, - 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, - 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, - 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 8u, 3u, 17u, 3u, 17u, - 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, - 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, - 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, - 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, - 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, - 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, - 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, - 1u, 16u, 1u, 16u, 4u, 13u, 3u, 17u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, - 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, - 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, - 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, - 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, - 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, - 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, - 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, - 1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u, 1u, 17u, 4u, 13u, 5u, 10u, 10u, 10u, - 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, - 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 0 + 7u, 7u, 3u, 7u, 4u, 6u, 6u, 6u, + 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, + 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, + 6u, 6u, 3u, 7u, 5u, 5u, 14u, 14u, + 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, + 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, + 14u, 14u, 3u, 12u, 3u, 7u, 3u, 12u, + 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, + 3u, 7u, 3u, 12u, 7u, 7u, 3u, 7u, + 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, + 6u, 6u, 4u, 7u, 4u, 6u, 6u, 6u, + 4u, 7u, 4u, 6u, 6u, 6u, 3u, 7u, + 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, + 14u, 14u, 3u, 7u, 5u, 5u, 14u, 14u, + 3u, 7u, 5u, 5u, 14u, 14u, 3u, 12u, + 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, + 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, + 7u, 7u, 3u, 7u, 4u, 6u, 6u, 6u, + 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, + 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, + 6u, 6u, 3u, 7u, 5u, 5u, 14u, 14u, + 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, + 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, + 14u, 14u, 3u, 12u, 3u, 7u, 3u, 12u, + 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, + 3u, 7u, 7u, 7u, 3u, 7u, 4u, 6u, + 6u, 6u, 4u, 7u, 4u, 6u, 6u, 6u, + 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, + 4u, 6u, 6u, 6u, 3u, 7u, 5u, 5u, + 14u, 14u, 3u, 7u, 5u, 5u, 14u, 14u, + 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, + 5u, 5u, 14u, 14u, 3u, 12u, 3u, 7u, + 3u, 12u, 3u, 7u, 3u, 12u, 3u, 7u, + 3u, 12u, 3u, 7u, 3u, 12u, 3u, 12u, + 4u, 7u, 7u, 7u, 0u, 17u, 2u, 15u, + 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, + 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, + 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, + 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, + 2u, 15u, 3u, 15u, 4u, 9u, 4u, 9u, + 4u, 9u, 9u, 9u, 9u, 9u, 9u, 9u, + 4u, 9u, 2u, 9u, 4u, 9u, 2u, 9u, + 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, + 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, + 2u, 9u, 3u, 9u, 3u, 9u, 2u, 15u, + 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, + 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, + 0u, 14u, 2u, 15u, 2u, 15u, 0u, 14u, + 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, + 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, + 2u, 15u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 4u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, + 9u, 9u, 9u, 9u, 4u, 9u, 2u, 9u, + 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, + 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, + 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, + 3u, 9u, 2u, 15u, 2u, 15u, 0u, 14u, + 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, + 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, + 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, + 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, + 0u, 14u, 3u, 7u, 2u, 15u, 2u, 15u, + 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, + 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, + 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, + 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, + 3u, 15u, 4u, 9u, 4u, 9u, 4u, 9u, + 9u, 9u, 9u, 9u, 9u, 9u, 4u, 9u, + 2u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, + 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, + 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, + 3u, 9u, 3u, 9u, 2u, 15u, 2u, 15u, + 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, + 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, + 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, + 0u, 14u, 2u, 15u, 2u, 15u, 0u, 14u, + 0u, 14u, 0u, 14u, 3u, 12u, 2u, 15u, + 3u, 7u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, + 4u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, + 9u, 9u, 9u, 9u, 4u, 9u, 2u, 9u, + 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, + 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, + 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, + 3u, 9u, 2u, 15u, 2u, 15u, 0u, 14u, + 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, + 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, + 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, + 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, + 0u, 14u, 2u, 15u, 0u, 15u, 2u, 15u, + 0u, 15u, 3u, 12u, 4u, 9u, 9u, 9u, + 9u, 9u, 9u, 9u, 4u, 9u, 0u, 14u, + 2u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, + 9u, 9u, 9u, 9u, 4u, 9u, 0u, 14u, + 0u }; -static const char _indic_syllable_machine_key_spans[] = { - 1, 5, 3, 1, 4, 3, 1, 4, - 3, 1, 4, 3, 1, 5, 1, 1, - 5, 1, 1, 5, 1, 1, 5, 1, - 1, 10, 5, 10, 5, 10, 5, 10, - 5, 10, 1, 5, 3, 1, 4, 3, - 1, 4, 3, 1, 4, 3, 1, 5, - 1, 1, 5, 1, 1, 5, 1, 1, - 5, 1, 1, 10, 5, 10, 5, 10, - 5, 10, 5, 10, 1, 5, 3, 1, - 4, 3, 1, 4, 3, 1, 4, 3, - 1, 5, 1, 1, 5, 1, 1, 5, - 1, 1, 5, 1, 1, 10, 5, 10, - 5, 10, 5, 10, 5, 1, 5, 3, - 1, 4, 3, 1, 4, 3, 1, 4, - 3, 1, 5, 1, 1, 5, 1, 1, - 5, 1, 1, 5, 1, 1, 10, 5, - 10, 5, 10, 5, 10, 5, 10, 10, - 4, 1, 19, 15, 15, 14, 16, 15, - 15, 14, 16, 15, 15, 14, 16, 15, - 15, 14, 16, 15, 15, 14, 6, 6, - 6, 1, 1, 1, 6, 8, 6, 8, - 7, 6, 8, 7, 6, 8, 7, 6, - 8, 7, 7, 15, 15, 16, 16, 16, - 15, 15, 16, 16, 16, 15, 15, 16, - 16, 16, 15, 15, 16, 16, 16, 15, - 15, 15, 15, 14, 16, 15, 15, 14, - 16, 15, 15, 14, 16, 15, 15, 14, - 16, 15, 15, 14, 6, 6, 6, 1, - 1, 1, 6, 8, 6, 8, 7, 6, - 8, 7, 6, 8, 7, 6, 8, 7, - 7, 15, 15, 16, 16, 16, 15, 15, - 16, 16, 16, 15, 15, 16, 16, 16, - 15, 15, 16, 16, 16, 5, 15, 15, - 14, 16, 15, 15, 14, 16, 15, 15, - 14, 16, 15, 15, 14, 16, 15, 15, - 14, 6, 6, 6, 1, 1, 1, 6, - 8, 6, 8, 7, 6, 8, 7, 6, - 8, 7, 6, 8, 7, 7, 15, 15, - 16, 16, 16, 15, 15, 16, 16, 16, - 15, 15, 16, 16, 16, 15, 15, 16, - 16, 16, 10, 15, 5, 15, 15, 14, - 16, 15, 15, 14, 16, 15, 15, 14, - 16, 15, 15, 14, 16, 15, 15, 14, - 6, 6, 6, 1, 1, 1, 6, 8, - 6, 8, 7, 6, 8, 7, 6, 8, - 7, 6, 8, 7, 7, 15, 15, 16, - 16, 16, 15, 15, 16, 16, 16, 15, - 15, 16, 16, 16, 15, 15, 16, 16, - 16, 15, 17, 15, 17, 10, 6, 1, - 1, 1, 6, 16, 8, 6, 6, 1, - 1, 1, 6, 16 +static const char _indic_syllable_machine_char_class[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 8, 13, 14, + 15, 16, 17, 0 }; static const short _indic_syllable_machine_index_offsets[] = { - 0, 2, 8, 12, 14, 19, 23, 25, - 30, 34, 36, 41, 45, 47, 53, 55, - 57, 63, 65, 67, 73, 75, 77, 83, - 85, 87, 98, 104, 115, 121, 132, 138, - 149, 155, 166, 168, 174, 178, 180, 185, - 189, 191, 196, 200, 202, 207, 211, 213, - 219, 221, 223, 229, 231, 233, 239, 241, - 243, 249, 251, 253, 264, 270, 281, 287, - 298, 304, 315, 321, 332, 334, 340, 344, - 346, 351, 355, 357, 362, 366, 368, 373, - 377, 379, 385, 387, 389, 395, 397, 399, - 405, 407, 409, 415, 417, 419, 430, 436, - 447, 453, 464, 470, 481, 487, 489, 495, - 499, 501, 506, 510, 512, 517, 521, 523, - 528, 532, 534, 540, 542, 544, 550, 552, - 554, 560, 562, 564, 570, 572, 574, 585, - 591, 602, 608, 619, 625, 636, 642, 653, - 664, 669, 671, 691, 707, 723, 738, 755, - 771, 787, 802, 819, 835, 851, 866, 883, - 899, 915, 930, 947, 963, 979, 994, 1001, - 1008, 1015, 1017, 1019, 1021, 1028, 1037, 1044, - 1053, 1061, 1068, 1077, 1085, 1092, 1101, 1109, - 1116, 1125, 1133, 1141, 1157, 1173, 1190, 1207, - 1224, 1240, 1256, 1273, 1290, 1307, 1323, 1339, - 1356, 1373, 1390, 1406, 1422, 1439, 1456, 1473, - 1489, 1505, 1521, 1537, 1552, 1569, 1585, 1601, - 1616, 1633, 1649, 1665, 1680, 1697, 1713, 1729, - 1744, 1761, 1777, 1793, 1808, 1815, 1822, 1829, - 1831, 1833, 1835, 1842, 1851, 1858, 1867, 1875, - 1882, 1891, 1899, 1906, 1915, 1923, 1930, 1939, - 1947, 1955, 1971, 1987, 2004, 2021, 2038, 2054, - 2070, 2087, 2104, 2121, 2137, 2153, 2170, 2187, - 2204, 2220, 2236, 2253, 2270, 2287, 2293, 2309, - 2325, 2340, 2357, 2373, 2389, 2404, 2421, 2437, - 2453, 2468, 2485, 2501, 2517, 2532, 2549, 2565, - 2581, 2596, 2603, 2610, 2617, 2619, 2621, 2623, - 2630, 2639, 2646, 2655, 2663, 2670, 2679, 2687, - 2694, 2703, 2711, 2718, 2727, 2735, 2743, 2759, - 2775, 2792, 2809, 2826, 2842, 2858, 2875, 2892, - 2909, 2925, 2941, 2958, 2975, 2992, 3008, 3024, - 3041, 3058, 3075, 3086, 3102, 3108, 3124, 3140, - 3155, 3172, 3188, 3204, 3219, 3236, 3252, 3268, - 3283, 3300, 3316, 3332, 3347, 3364, 3380, 3396, - 3411, 3418, 3425, 3432, 3434, 3436, 3438, 3445, - 3454, 3461, 3470, 3478, 3485, 3494, 3502, 3509, - 3518, 3526, 3533, 3542, 3550, 3558, 3574, 3590, - 3607, 3624, 3641, 3657, 3673, 3690, 3707, 3724, - 3740, 3756, 3773, 3790, 3807, 3823, 3839, 3856, - 3873, 3890, 3906, 3924, 3940, 3958, 3969, 3976, - 3978, 3980, 3982, 3989, 4006, 4015, 4022, 4029, - 4031, 4033, 4035, 4042 + 0, 1, 6, 9, 10, 14, 17, 18, + 22, 25, 26, 30, 33, 34, 39, 40, + 41, 46, 47, 48, 53, 54, 55, 60, + 61, 62, 72, 77, 87, 92, 102, 107, + 117, 122, 132, 133, 138, 141, 142, 146, + 149, 150, 154, 157, 158, 162, 165, 166, + 171, 172, 173, 178, 179, 180, 185, 186, + 187, 192, 193, 194, 204, 209, 219, 224, + 234, 239, 249, 254, 264, 265, 270, 273, + 274, 278, 281, 282, 286, 289, 290, 294, + 297, 298, 303, 304, 305, 310, 311, 312, + 317, 318, 319, 324, 325, 326, 336, 341, + 351, 356, 366, 371, 381, 386, 387, 392, + 395, 396, 400, 403, 404, 408, 411, 412, + 416, 419, 420, 425, 426, 427, 432, 433, + 434, 439, 440, 441, 446, 447, 448, 458, + 463, 473, 478, 488, 493, 503, 508, 518, + 528, 532, 533, 551, 565, 579, 592, 607, + 621, 635, 648, 663, 677, 691, 704, 719, + 733, 747, 760, 775, 789, 803, 816, 822, + 828, 834, 835, 836, 837, 843, 851, 857, + 865, 872, 878, 886, 893, 899, 907, 914, + 920, 928, 935, 942, 956, 970, 985, 1000, + 1015, 1029, 1043, 1058, 1073, 1088, 1102, 1116, + 1131, 1146, 1161, 1175, 1189, 1204, 1219, 1234, + 1248, 1262, 1276, 1290, 1303, 1318, 1332, 1346, + 1359, 1374, 1388, 1402, 1415, 1430, 1444, 1458, + 1471, 1486, 1500, 1514, 1527, 1533, 1539, 1545, + 1546, 1547, 1548, 1554, 1562, 1568, 1576, 1583, + 1589, 1597, 1604, 1610, 1618, 1625, 1631, 1639, + 1646, 1653, 1667, 1681, 1696, 1711, 1726, 1740, + 1754, 1769, 1784, 1799, 1813, 1827, 1842, 1857, + 1872, 1886, 1900, 1915, 1930, 1945, 1950, 1964, + 1978, 1991, 2006, 2020, 2034, 2047, 2062, 2076, + 2090, 2103, 2118, 2132, 2146, 2159, 2174, 2188, + 2202, 2215, 2221, 2227, 2233, 2234, 2235, 2236, + 2242, 2250, 2256, 2264, 2271, 2277, 2285, 2292, + 2298, 2306, 2313, 2319, 2327, 2334, 2341, 2355, + 2369, 2384, 2399, 2414, 2428, 2442, 2457, 2472, + 2487, 2501, 2515, 2530, 2545, 2560, 2574, 2588, + 2603, 2618, 2633, 2643, 2657, 2662, 2676, 2690, + 2703, 2718, 2732, 2746, 2759, 2774, 2788, 2802, + 2815, 2830, 2844, 2858, 2871, 2886, 2900, 2914, + 2927, 2933, 2939, 2945, 2946, 2947, 2948, 2954, + 2962, 2968, 2976, 2983, 2989, 2997, 3004, 3010, + 3018, 3025, 3031, 3039, 3046, 3053, 3067, 3081, + 3096, 3111, 3126, 3140, 3154, 3169, 3184, 3199, + 3213, 3227, 3242, 3257, 3272, 3286, 3300, 3315, + 3330, 3345, 3359, 3375, 3389, 3405, 3415, 3421, + 3422, 3423, 3424, 3430, 3445, 3453, 3459, 3465, + 3466, 3467, 3468, 3474, 0 }; static const short _indic_syllable_machine_indicies[] = { - 1, 0, 2, 3, 3, 4, 1, 0, - 5, 5, 4, 0, 4, 0, 6, 6, - 7, 1, 0, 8, 8, 7, 0, 7, - 0, 9, 9, 10, 1, 0, 11, 11, - 10, 0, 10, 0, 12, 12, 13, 1, - 0, 14, 14, 13, 0, 13, 0, 15, - 0, 0, 0, 1, 0, 16, 0, 17, - 0, 18, 12, 12, 13, 1, 0, 19, - 0, 20, 0, 21, 9, 9, 10, 1, - 0, 22, 0, 23, 0, 24, 6, 6, - 7, 1, 0, 25, 0, 26, 0, 2, - 3, 3, 4, 1, 0, 0, 0, 0, - 27, 0, 28, 3, 3, 4, 1, 0, - 28, 3, 3, 4, 1, 0, 0, 0, - 0, 29, 0, 30, 3, 3, 4, 1, - 0, 30, 3, 3, 4, 1, 0, 0, - 0, 0, 31, 0, 32, 3, 3, 4, - 1, 0, 32, 3, 3, 4, 1, 0, - 0, 0, 0, 33, 0, 34, 3, 3, - 4, 1, 0, 34, 3, 3, 4, 1, - 0, 0, 0, 0, 35, 0, 37, 36, - 38, 39, 39, 40, 37, 36, 41, 41, - 40, 36, 40, 36, 42, 42, 43, 37, - 36, 44, 44, 43, 36, 43, 36, 45, - 45, 46, 37, 36, 47, 47, 46, 36, - 46, 36, 48, 48, 49, 37, 36, 50, - 50, 49, 36, 49, 36, 51, 36, 36, - 36, 37, 36, 52, 36, 53, 36, 54, - 48, 48, 49, 37, 36, 55, 36, 56, - 36, 57, 45, 45, 46, 37, 36, 58, - 36, 59, 36, 60, 42, 42, 43, 37, - 36, 61, 36, 62, 36, 38, 39, 39, - 40, 37, 36, 36, 36, 36, 63, 36, - 64, 39, 39, 40, 37, 36, 64, 39, - 39, 40, 37, 36, 36, 36, 36, 65, - 36, 66, 39, 39, 40, 37, 36, 66, - 39, 39, 40, 37, 36, 36, 36, 36, - 67, 36, 68, 39, 39, 40, 37, 36, - 68, 39, 39, 40, 37, 36, 36, 36, - 36, 69, 36, 70, 39, 39, 40, 37, - 36, 70, 39, 39, 40, 37, 36, 36, - 36, 36, 71, 36, 73, 72, 74, 75, - 75, 76, 73, 72, 78, 78, 76, 77, - 76, 77, 79, 79, 80, 73, 72, 81, - 81, 80, 72, 80, 72, 82, 82, 83, - 73, 72, 84, 84, 83, 72, 83, 72, - 85, 85, 86, 73, 72, 87, 87, 86, - 72, 86, 72, 88, 72, 72, 72, 73, - 72, 89, 72, 90, 72, 91, 85, 85, - 86, 73, 72, 92, 72, 93, 72, 94, - 82, 82, 83, 73, 72, 95, 72, 96, - 72, 97, 79, 79, 80, 73, 72, 98, - 72, 99, 72, 74, 75, 75, 76, 73, - 72, 72, 72, 72, 100, 72, 101, 75, - 75, 76, 73, 72, 101, 75, 75, 76, - 73, 72, 72, 72, 72, 102, 72, 103, - 75, 75, 76, 73, 72, 103, 75, 75, - 76, 73, 72, 72, 72, 72, 104, 72, - 105, 75, 75, 76, 73, 72, 105, 75, - 75, 76, 73, 72, 72, 72, 72, 106, - 72, 107, 75, 75, 76, 73, 72, 109, - 108, 110, 111, 111, 112, 109, 108, 113, - 113, 112, 108, 112, 108, 114, 114, 115, - 109, 108, 116, 116, 115, 108, 115, 108, - 117, 117, 118, 109, 108, 119, 119, 118, - 108, 118, 108, 120, 120, 121, 109, 108, - 122, 122, 121, 108, 121, 108, 123, 108, - 108, 108, 109, 108, 124, 108, 125, 108, - 126, 120, 120, 121, 109, 108, 127, 108, - 128, 108, 129, 117, 117, 118, 109, 108, - 130, 108, 131, 108, 132, 114, 114, 115, - 109, 108, 133, 108, 134, 108, 110, 111, - 111, 112, 109, 108, 108, 108, 108, 135, - 108, 136, 111, 111, 112, 109, 108, 136, - 111, 111, 112, 109, 108, 108, 108, 108, - 137, 108, 138, 111, 111, 112, 109, 108, - 138, 111, 111, 112, 109, 108, 108, 108, - 108, 139, 108, 140, 111, 111, 112, 109, - 108, 140, 111, 111, 112, 109, 108, 108, - 108, 108, 141, 108, 142, 111, 111, 112, - 109, 108, 142, 111, 111, 112, 109, 108, - 108, 108, 108, 143, 108, 107, 75, 75, - 76, 73, 72, 72, 72, 72, 144, 72, - 78, 78, 76, 1, 0, 146, 145, 148, - 149, 150, 151, 152, 153, 76, 73, 147, - 154, 155, 155, 144, 147, 156, 157, 158, - 159, 160, 147, 162, 163, 164, 165, 4, - 1, 161, 166, 161, 161, 35, 161, 161, - 161, 167, 161, 168, 163, 169, 169, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 163, 169, 169, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 161, - 167, 161, 170, 161, 161, 161, 17, 171, - 161, 1, 161, 166, 161, 161, 161, 161, - 161, 170, 161, 172, 173, 174, 175, 4, - 1, 161, 166, 161, 161, 33, 161, 161, - 161, 167, 161, 176, 173, 177, 177, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 173, 177, 177, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 161, - 167, 161, 178, 161, 161, 161, 17, 179, - 161, 1, 161, 166, 161, 161, 161, 161, - 161, 178, 161, 180, 181, 182, 183, 4, - 1, 161, 166, 161, 161, 31, 161, 161, - 161, 167, 161, 184, 181, 185, 185, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 181, 185, 185, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 161, - 167, 161, 186, 161, 161, 161, 17, 187, - 161, 1, 161, 166, 161, 161, 161, 161, - 161, 186, 161, 188, 189, 190, 191, 4, - 1, 161, 166, 161, 161, 29, 161, 161, - 161, 167, 161, 192, 189, 193, 193, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 189, 193, 193, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 161, - 167, 161, 194, 161, 161, 161, 17, 195, - 161, 1, 161, 166, 161, 161, 161, 161, - 161, 194, 161, 196, 197, 198, 199, 4, - 1, 161, 166, 161, 161, 27, 161, 161, - 161, 167, 161, 200, 197, 201, 201, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 197, 201, 201, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 161, - 167, 161, 17, 202, 161, 1, 161, 166, - 161, 203, 203, 161, 1, 161, 166, 161, - 204, 161, 161, 205, 161, 166, 161, 166, - 161, 206, 161, 207, 161, 204, 161, 161, - 161, 161, 166, 161, 17, 161, 203, 203, - 161, 1, 161, 166, 161, 203, 202, 161, - 1, 161, 166, 161, 208, 26, 209, 210, - 7, 1, 161, 166, 161, 26, 209, 210, - 7, 1, 161, 166, 161, 209, 209, 7, - 1, 161, 166, 161, 211, 23, 212, 213, - 10, 1, 161, 166, 161, 23, 212, 213, - 10, 1, 161, 166, 161, 212, 212, 10, - 1, 161, 166, 161, 214, 20, 215, 216, - 13, 1, 161, 166, 161, 20, 215, 216, - 13, 1, 161, 166, 161, 215, 215, 13, - 1, 161, 166, 161, 217, 17, 203, 218, - 161, 1, 161, 166, 161, 17, 203, 218, - 161, 1, 161, 166, 161, 197, 201, 201, - 4, 1, 161, 166, 161, 196, 197, 201, - 201, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 161, 167, 161, 196, 197, 198, - 201, 4, 1, 161, 166, 161, 161, 27, - 161, 161, 161, 167, 161, 194, 161, 219, - 161, 203, 203, 161, 1, 161, 166, 161, - 161, 161, 161, 161, 194, 161, 194, 161, - 161, 161, 203, 203, 161, 1, 161, 166, - 161, 161, 161, 161, 161, 194, 161, 194, - 161, 161, 161, 203, 195, 161, 1, 161, - 166, 161, 161, 161, 161, 161, 194, 161, - 188, 189, 193, 193, 4, 1, 161, 166, - 161, 161, 161, 161, 161, 161, 167, 161, - 188, 189, 190, 193, 4, 1, 161, 166, - 161, 161, 29, 161, 161, 161, 167, 161, - 186, 161, 220, 161, 203, 203, 161, 1, - 161, 166, 161, 161, 161, 161, 161, 186, - 161, 186, 161, 161, 161, 203, 203, 161, - 1, 161, 166, 161, 161, 161, 161, 161, - 186, 161, 186, 161, 161, 161, 203, 187, - 161, 1, 161, 166, 161, 161, 161, 161, - 161, 186, 161, 180, 181, 185, 185, 4, - 1, 161, 166, 161, 161, 161, 161, 161, - 161, 167, 161, 180, 181, 182, 185, 4, - 1, 161, 166, 161, 161, 31, 161, 161, - 161, 167, 161, 178, 161, 221, 161, 203, - 203, 161, 1, 161, 166, 161, 161, 161, - 161, 161, 178, 161, 178, 161, 161, 161, - 203, 203, 161, 1, 161, 166, 161, 161, - 161, 161, 161, 178, 161, 178, 161, 161, - 161, 203, 179, 161, 1, 161, 166, 161, - 161, 161, 161, 161, 178, 161, 172, 173, - 177, 177, 4, 1, 161, 166, 161, 161, - 161, 161, 161, 161, 167, 161, 172, 173, - 174, 177, 4, 1, 161, 166, 161, 161, - 33, 161, 161, 161, 167, 161, 170, 161, - 222, 161, 203, 203, 161, 1, 161, 166, - 161, 161, 161, 161, 161, 170, 161, 170, - 161, 161, 161, 203, 203, 161, 1, 161, - 166, 161, 161, 161, 161, 161, 170, 161, - 170, 161, 161, 161, 203, 171, 161, 1, - 161, 166, 161, 161, 161, 161, 161, 170, - 161, 162, 163, 169, 169, 4, 1, 161, - 166, 161, 161, 161, 161, 161, 161, 167, - 161, 162, 163, 164, 169, 4, 1, 161, - 166, 161, 161, 35, 161, 161, 161, 167, - 161, 224, 225, 226, 227, 40, 37, 223, - 228, 223, 223, 71, 223, 223, 223, 229, - 223, 230, 225, 231, 227, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 225, 231, 227, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 223, 229, 223, - 232, 223, 223, 223, 53, 233, 223, 37, - 223, 228, 223, 223, 223, 223, 223, 232, - 223, 234, 235, 236, 237, 40, 37, 223, - 228, 223, 223, 69, 223, 223, 223, 229, - 223, 238, 235, 239, 239, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 235, 239, 239, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 223, 229, 223, - 240, 223, 223, 223, 53, 241, 223, 37, - 223, 228, 223, 223, 223, 223, 223, 240, - 223, 242, 243, 244, 245, 40, 37, 223, - 228, 223, 223, 67, 223, 223, 223, 229, - 223, 246, 243, 247, 247, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 243, 247, 247, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 223, 229, 223, - 248, 223, 223, 223, 53, 249, 223, 37, - 223, 228, 223, 223, 223, 223, 223, 248, - 223, 250, 251, 252, 253, 40, 37, 223, - 228, 223, 223, 65, 223, 223, 223, 229, - 223, 254, 251, 255, 255, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 251, 255, 255, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 223, 229, 223, - 256, 223, 223, 223, 53, 257, 223, 37, - 223, 228, 223, 223, 223, 223, 223, 256, - 223, 258, 259, 260, 261, 40, 37, 223, - 228, 223, 223, 63, 223, 223, 223, 229, - 223, 262, 259, 263, 263, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 259, 263, 263, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 223, 229, 223, - 53, 264, 223, 37, 223, 228, 223, 265, - 265, 223, 37, 223, 228, 223, 266, 223, - 223, 267, 223, 228, 223, 228, 223, 268, - 223, 269, 223, 266, 223, 223, 223, 223, - 228, 223, 53, 223, 265, 265, 223, 37, - 223, 228, 223, 265, 264, 223, 37, 223, - 228, 223, 270, 62, 271, 272, 43, 37, - 223, 228, 223, 62, 271, 272, 43, 37, - 223, 228, 223, 271, 271, 43, 37, 223, - 228, 223, 273, 59, 274, 275, 46, 37, - 223, 228, 223, 59, 274, 275, 46, 37, - 223, 228, 223, 274, 274, 46, 37, 223, - 228, 223, 276, 56, 277, 278, 49, 37, - 223, 228, 223, 56, 277, 278, 49, 37, - 223, 228, 223, 277, 277, 49, 37, 223, - 228, 223, 279, 53, 265, 280, 223, 37, - 223, 228, 223, 53, 265, 280, 223, 37, - 223, 228, 223, 259, 263, 263, 40, 37, - 223, 228, 223, 258, 259, 263, 263, 40, - 37, 223, 228, 223, 223, 223, 223, 223, - 223, 229, 223, 258, 259, 260, 263, 40, - 37, 223, 228, 223, 223, 63, 223, 223, - 223, 229, 223, 256, 223, 281, 223, 265, - 265, 223, 37, 223, 228, 223, 223, 223, - 223, 223, 256, 223, 256, 223, 223, 223, - 265, 265, 223, 37, 223, 228, 223, 223, - 223, 223, 223, 256, 223, 256, 223, 223, - 223, 265, 257, 223, 37, 223, 228, 223, - 223, 223, 223, 223, 256, 223, 250, 251, - 255, 255, 40, 37, 223, 228, 223, 223, - 223, 223, 223, 223, 229, 223, 250, 251, - 252, 255, 40, 37, 223, 228, 223, 223, - 65, 223, 223, 223, 229, 223, 248, 223, - 282, 223, 265, 265, 223, 37, 223, 228, - 223, 223, 223, 223, 223, 248, 223, 248, - 223, 223, 223, 265, 265, 223, 37, 223, - 228, 223, 223, 223, 223, 223, 248, 223, - 248, 223, 223, 223, 265, 249, 223, 37, - 223, 228, 223, 223, 223, 223, 223, 248, - 223, 242, 243, 247, 247, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 223, 229, - 223, 242, 243, 244, 247, 40, 37, 223, - 228, 223, 223, 67, 223, 223, 223, 229, - 223, 240, 223, 283, 223, 265, 265, 223, - 37, 223, 228, 223, 223, 223, 223, 223, - 240, 223, 240, 223, 223, 223, 265, 265, - 223, 37, 223, 228, 223, 223, 223, 223, - 223, 240, 223, 240, 223, 223, 223, 265, - 241, 223, 37, 223, 228, 223, 223, 223, - 223, 223, 240, 223, 234, 235, 239, 239, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 223, 229, 223, 234, 235, 236, 239, - 40, 37, 223, 228, 223, 223, 69, 223, - 223, 223, 229, 223, 232, 223, 284, 223, - 265, 265, 223, 37, 223, 228, 223, 223, - 223, 223, 223, 232, 223, 232, 223, 223, - 223, 265, 265, 223, 37, 223, 228, 223, - 223, 223, 223, 223, 232, 223, 232, 223, - 223, 223, 265, 233, 223, 37, 223, 228, - 223, 223, 223, 223, 223, 232, 223, 70, - 39, 39, 40, 37, 223, 224, 225, 231, - 227, 40, 37, 223, 228, 223, 223, 223, - 223, 223, 223, 229, 223, 286, 151, 287, - 287, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 151, 287, 287, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 285, 158, 285, 288, 285, 285, 285, - 90, 289, 285, 73, 285, 154, 285, 285, - 285, 285, 285, 288, 285, 290, 291, 292, - 293, 76, 73, 285, 154, 285, 285, 106, - 285, 285, 285, 158, 285, 294, 291, 295, - 295, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 291, 295, 295, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 285, 158, 285, 296, 285, 285, 285, - 90, 297, 285, 73, 285, 154, 285, 285, - 285, 285, 285, 296, 285, 298, 299, 300, - 301, 76, 73, 285, 154, 285, 285, 104, - 285, 285, 285, 158, 285, 302, 299, 303, - 303, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 299, 303, 303, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 285, 158, 285, 304, 285, 285, 285, - 90, 305, 285, 73, 285, 154, 285, 285, - 285, 285, 285, 304, 285, 306, 307, 308, - 309, 76, 73, 285, 154, 285, 285, 102, - 285, 285, 285, 158, 285, 310, 307, 311, - 311, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 307, 311, 311, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 285, 158, 285, 312, 285, 285, 285, - 90, 313, 285, 73, 285, 154, 285, 285, - 285, 285, 285, 312, 285, 314, 315, 316, - 317, 76, 73, 285, 154, 285, 285, 100, - 285, 285, 285, 158, 285, 318, 315, 319, - 319, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 315, 319, 319, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 285, 158, 285, 90, 320, 285, 73, - 285, 154, 285, 321, 321, 285, 73, 285, - 154, 285, 322, 285, 285, 323, 285, 154, - 285, 154, 285, 324, 285, 325, 285, 322, - 285, 285, 285, 285, 154, 285, 90, 285, - 321, 321, 285, 73, 285, 154, 285, 321, - 320, 285, 73, 285, 154, 285, 326, 99, - 327, 328, 80, 73, 285, 154, 285, 99, - 327, 328, 80, 73, 285, 154, 285, 327, - 327, 80, 73, 285, 154, 285, 329, 96, - 330, 331, 83, 73, 285, 154, 285, 96, - 330, 331, 83, 73, 285, 154, 285, 330, - 330, 83, 73, 285, 154, 285, 332, 93, - 333, 334, 86, 73, 285, 154, 285, 93, - 333, 334, 86, 73, 285, 154, 285, 333, - 333, 86, 73, 285, 154, 285, 335, 90, - 321, 336, 285, 73, 285, 154, 285, 90, - 321, 336, 285, 73, 285, 154, 285, 315, - 319, 319, 76, 73, 285, 154, 285, 314, - 315, 319, 319, 76, 73, 285, 154, 285, - 285, 285, 285, 285, 285, 158, 285, 314, - 315, 316, 319, 76, 73, 285, 154, 285, - 285, 100, 285, 285, 285, 158, 285, 312, - 285, 337, 285, 321, 321, 285, 73, 285, - 154, 285, 285, 285, 285, 285, 312, 285, - 312, 285, 285, 285, 321, 321, 285, 73, - 285, 154, 285, 285, 285, 285, 285, 312, - 285, 312, 285, 285, 285, 321, 313, 285, - 73, 285, 154, 285, 285, 285, 285, 285, - 312, 285, 306, 307, 311, 311, 76, 73, - 285, 154, 285, 285, 285, 285, 285, 285, - 158, 285, 306, 307, 308, 311, 76, 73, - 285, 154, 285, 285, 102, 285, 285, 285, - 158, 285, 304, 285, 338, 285, 321, 321, - 285, 73, 285, 154, 285, 285, 285, 285, - 285, 304, 285, 304, 285, 285, 285, 321, - 321, 285, 73, 285, 154, 285, 285, 285, - 285, 285, 304, 285, 304, 285, 285, 285, - 321, 305, 285, 73, 285, 154, 285, 285, - 285, 285, 285, 304, 285, 298, 299, 303, - 303, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 285, 158, 285, 298, 299, 300, - 303, 76, 73, 285, 154, 285, 285, 104, - 285, 285, 285, 158, 285, 296, 285, 339, - 285, 321, 321, 285, 73, 285, 154, 285, - 285, 285, 285, 285, 296, 285, 296, 285, - 285, 285, 321, 321, 285, 73, 285, 154, - 285, 285, 285, 285, 285, 296, 285, 296, - 285, 285, 285, 321, 297, 285, 73, 285, - 154, 285, 285, 285, 285, 285, 296, 285, - 290, 291, 295, 295, 76, 73, 285, 154, - 285, 285, 285, 285, 285, 285, 158, 285, - 290, 291, 292, 295, 76, 73, 285, 154, - 285, 285, 106, 285, 285, 285, 158, 285, - 288, 285, 340, 285, 321, 321, 285, 73, - 285, 154, 285, 285, 285, 285, 285, 288, - 285, 288, 285, 285, 285, 321, 321, 285, - 73, 285, 154, 285, 285, 285, 285, 285, - 288, 285, 288, 285, 285, 285, 321, 289, - 285, 73, 285, 154, 285, 285, 285, 285, - 285, 288, 285, 107, 75, 75, 76, 73, - 341, 341, 341, 341, 144, 341, 150, 151, - 287, 287, 76, 73, 285, 154, 285, 285, - 285, 285, 285, 285, 158, 285, 107, 75, - 75, 76, 73, 341, 343, 344, 345, 346, - 112, 109, 342, 347, 342, 342, 143, 342, - 342, 342, 348, 342, 349, 344, 346, 346, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 344, 346, 346, 112, - 109, 342, 347, 342, 342, 342, 342, 342, - 342, 348, 342, 350, 342, 342, 342, 125, - 351, 342, 109, 342, 347, 342, 342, 342, - 342, 342, 350, 342, 352, 353, 354, 355, - 112, 109, 342, 347, 342, 342, 141, 342, - 342, 342, 348, 342, 356, 353, 357, 357, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 353, 357, 357, 112, - 109, 342, 347, 342, 342, 342, 342, 342, - 342, 348, 342, 358, 342, 342, 342, 125, - 359, 342, 109, 342, 347, 342, 342, 342, - 342, 342, 358, 342, 360, 361, 362, 363, - 112, 109, 342, 347, 342, 342, 139, 342, - 342, 342, 348, 342, 364, 361, 365, 365, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 361, 365, 365, 112, - 109, 342, 347, 342, 342, 342, 342, 342, - 342, 348, 342, 366, 342, 342, 342, 125, - 367, 342, 109, 342, 347, 342, 342, 342, - 342, 342, 366, 342, 368, 369, 370, 371, - 112, 109, 342, 347, 342, 342, 137, 342, - 342, 342, 348, 342, 372, 369, 373, 373, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 369, 373, 373, 112, - 109, 342, 347, 342, 342, 342, 342, 342, - 342, 348, 342, 374, 342, 342, 342, 125, - 375, 342, 109, 342, 347, 342, 342, 342, - 342, 342, 374, 342, 376, 377, 378, 379, - 112, 109, 342, 347, 342, 342, 135, 342, - 342, 342, 348, 342, 380, 377, 381, 381, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 377, 381, 381, 112, - 109, 342, 347, 342, 342, 342, 342, 342, - 342, 348, 342, 125, 382, 342, 109, 342, - 347, 342, 383, 383, 342, 109, 342, 347, - 342, 384, 342, 342, 385, 342, 347, 342, - 347, 342, 386, 342, 387, 342, 384, 342, - 342, 342, 342, 347, 342, 125, 342, 383, - 383, 342, 109, 342, 347, 342, 383, 382, - 342, 109, 342, 347, 342, 388, 134, 389, - 390, 115, 109, 342, 347, 342, 134, 389, - 390, 115, 109, 342, 347, 342, 389, 389, - 115, 109, 342, 347, 342, 391, 131, 392, - 393, 118, 109, 342, 347, 342, 131, 392, - 393, 118, 109, 342, 347, 342, 392, 392, - 118, 109, 342, 347, 342, 394, 128, 395, - 396, 121, 109, 342, 347, 342, 128, 395, - 396, 121, 109, 342, 347, 342, 395, 395, - 121, 109, 342, 347, 342, 397, 125, 383, - 398, 342, 109, 342, 347, 342, 125, 383, - 398, 342, 109, 342, 347, 342, 377, 381, - 381, 112, 109, 342, 347, 342, 376, 377, - 381, 381, 112, 109, 342, 347, 342, 342, - 342, 342, 342, 342, 348, 342, 376, 377, - 378, 381, 112, 109, 342, 347, 342, 342, - 135, 342, 342, 342, 348, 342, 374, 342, - 399, 342, 383, 383, 342, 109, 342, 347, - 342, 342, 342, 342, 342, 374, 342, 374, - 342, 342, 342, 383, 383, 342, 109, 342, - 347, 342, 342, 342, 342, 342, 374, 342, - 374, 342, 342, 342, 383, 375, 342, 109, - 342, 347, 342, 342, 342, 342, 342, 374, - 342, 368, 369, 373, 373, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 342, 348, - 342, 368, 369, 370, 373, 112, 109, 342, - 347, 342, 342, 137, 342, 342, 342, 348, - 342, 366, 342, 400, 342, 383, 383, 342, - 109, 342, 347, 342, 342, 342, 342, 342, - 366, 342, 366, 342, 342, 342, 383, 383, - 342, 109, 342, 347, 342, 342, 342, 342, - 342, 366, 342, 366, 342, 342, 342, 383, - 367, 342, 109, 342, 347, 342, 342, 342, - 342, 342, 366, 342, 360, 361, 365, 365, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 342, 348, 342, 360, 361, 362, 365, - 112, 109, 342, 347, 342, 342, 139, 342, - 342, 342, 348, 342, 358, 342, 401, 342, - 383, 383, 342, 109, 342, 347, 342, 342, - 342, 342, 342, 358, 342, 358, 342, 342, - 342, 383, 383, 342, 109, 342, 347, 342, - 342, 342, 342, 342, 358, 342, 358, 342, - 342, 342, 383, 359, 342, 109, 342, 347, - 342, 342, 342, 342, 342, 358, 342, 352, - 353, 357, 357, 112, 109, 342, 347, 342, - 342, 342, 342, 342, 342, 348, 342, 352, - 353, 354, 357, 112, 109, 342, 347, 342, - 342, 141, 342, 342, 342, 348, 342, 350, - 342, 402, 342, 383, 383, 342, 109, 342, - 347, 342, 342, 342, 342, 342, 350, 342, - 350, 342, 342, 342, 383, 383, 342, 109, - 342, 347, 342, 342, 342, 342, 342, 350, - 342, 350, 342, 342, 342, 383, 351, 342, - 109, 342, 347, 342, 342, 342, 342, 342, - 350, 342, 343, 344, 346, 346, 112, 109, - 342, 347, 342, 342, 342, 342, 342, 342, - 348, 342, 148, 149, 150, 151, 403, 287, - 76, 73, 285, 154, 155, 155, 144, 285, - 285, 148, 158, 285, 162, 404, 164, 165, - 4, 1, 161, 166, 161, 161, 35, 161, - 161, 161, 167, 161, 170, 149, 150, 151, - 405, 406, 76, 407, 161, 408, 161, 155, - 144, 161, 161, 170, 158, 161, 107, 409, - 409, 76, 407, 161, 166, 161, 161, 144, - 161, 410, 161, 161, 411, 161, 408, 161, - 408, 161, 412, 161, 207, 161, 410, 161, - 161, 161, 161, 408, 161, 170, 161, 222, - 107, 409, 409, 76, 407, 161, 166, 161, - 161, 161, 161, 161, 170, 161, 414, 413, - 415, 415, 413, 146, 413, 416, 413, 415, - 415, 413, 146, 413, 416, 413, 417, 413, - 413, 418, 413, 416, 413, 416, 413, 419, - 413, 420, 413, 417, 413, 413, 413, 413, - 416, 413, 148, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 155, 341, 341, 341, - 341, 148, 341, 0 + 1, 2, 3, 3, 4, 1, 5, 5, + 4, 4, 6, 6, 7, 1, 8, 8, + 7, 7, 9, 9, 10, 1, 11, 11, + 10, 10, 12, 12, 13, 1, 14, 14, + 13, 13, 15, 0, 0, 0, 1, 16, + 17, 18, 12, 12, 13, 1, 19, 20, + 21, 9, 9, 10, 1, 22, 23, 24, + 6, 6, 7, 1, 25, 26, 2, 3, + 3, 4, 1, 0, 0, 0, 0, 27, + 28, 3, 3, 4, 1, 28, 3, 3, + 4, 1, 0, 0, 0, 0, 29, 30, + 3, 3, 4, 1, 30, 3, 3, 4, + 1, 0, 0, 0, 0, 31, 32, 3, + 3, 4, 1, 32, 3, 3, 4, 1, + 0, 0, 0, 0, 33, 34, 3, 3, + 4, 1, 34, 3, 3, 4, 1, 0, + 0, 0, 0, 35, 37, 38, 39, 39, + 40, 37, 41, 41, 40, 40, 42, 42, + 43, 37, 44, 44, 43, 43, 45, 45, + 46, 37, 47, 47, 46, 46, 48, 48, + 49, 37, 50, 50, 49, 49, 51, 36, + 36, 36, 37, 52, 53, 54, 48, 48, + 49, 37, 55, 56, 57, 45, 45, 46, + 37, 58, 59, 60, 42, 42, 43, 37, + 61, 62, 38, 39, 39, 40, 37, 36, + 36, 36, 36, 63, 64, 39, 39, 40, + 37, 64, 39, 39, 40, 37, 36, 36, + 36, 36, 65, 66, 39, 39, 40, 37, + 66, 39, 39, 40, 37, 36, 36, 36, + 36, 67, 68, 39, 39, 40, 37, 68, + 39, 39, 40, 37, 36, 36, 36, 36, + 69, 70, 39, 39, 40, 37, 70, 39, + 39, 40, 37, 36, 36, 36, 36, 71, + 73, 74, 75, 75, 76, 73, 78, 78, + 76, 76, 79, 79, 80, 73, 81, 81, + 80, 80, 82, 82, 83, 73, 84, 84, + 83, 83, 85, 85, 86, 73, 87, 87, + 86, 86, 88, 72, 72, 72, 73, 89, + 90, 91, 85, 85, 86, 73, 92, 93, + 94, 82, 82, 83, 73, 95, 96, 97, + 79, 79, 80, 73, 98, 99, 74, 75, + 75, 76, 73, 72, 72, 72, 72, 100, + 101, 75, 75, 76, 73, 101, 75, 75, + 76, 73, 72, 72, 72, 72, 102, 103, + 75, 75, 76, 73, 103, 75, 75, 76, + 73, 72, 72, 72, 72, 104, 105, 75, + 75, 76, 73, 105, 75, 75, 76, 73, + 72, 72, 72, 72, 106, 107, 75, 75, + 76, 73, 109, 110, 111, 111, 112, 109, + 113, 113, 112, 112, 114, 114, 115, 109, + 116, 116, 115, 115, 117, 117, 118, 109, + 119, 119, 118, 118, 120, 120, 121, 109, + 122, 122, 121, 121, 123, 108, 108, 108, + 109, 124, 125, 126, 120, 120, 121, 109, + 127, 128, 129, 117, 117, 118, 109, 130, + 131, 132, 114, 114, 115, 109, 133, 134, + 110, 111, 111, 112, 109, 108, 108, 108, + 108, 135, 136, 111, 111, 112, 109, 136, + 111, 111, 112, 109, 108, 108, 108, 108, + 137, 138, 111, 111, 112, 109, 138, 111, + 111, 112, 109, 108, 108, 108, 108, 139, + 140, 111, 111, 112, 109, 140, 111, 111, + 112, 109, 108, 108, 108, 108, 141, 142, + 111, 111, 112, 109, 142, 111, 111, 112, + 109, 108, 108, 108, 108, 143, 107, 75, + 75, 76, 73, 72, 72, 72, 72, 144, + 78, 78, 76, 1, 146, 148, 149, 150, + 151, 152, 153, 76, 73, 147, 154, 155, + 155, 144, 156, 157, 158, 159, 160, 162, + 163, 164, 165, 4, 1, 161, 166, 161, + 161, 35, 161, 161, 167, 168, 163, 169, + 169, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 167, 163, 169, 169, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 170, 161, 161, 161, 17, 171, 161, 1, + 161, 166, 161, 161, 161, 161, 170, 172, + 173, 174, 175, 4, 1, 161, 166, 161, + 161, 33, 161, 161, 167, 176, 173, 177, + 177, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 167, 173, 177, 177, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 178, 161, 161, 161, 17, 179, 161, 1, + 161, 166, 161, 161, 161, 161, 178, 180, + 181, 182, 183, 4, 1, 161, 166, 161, + 161, 31, 161, 161, 167, 184, 181, 185, + 185, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 167, 181, 185, 185, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 186, 161, 161, 161, 17, 187, 161, 1, + 161, 166, 161, 161, 161, 161, 186, 188, + 189, 190, 191, 4, 1, 161, 166, 161, + 161, 29, 161, 161, 167, 192, 189, 193, + 193, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 167, 189, 193, 193, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 194, 161, 161, 161, 17, 195, 161, 1, + 161, 166, 161, 161, 161, 161, 194, 196, + 197, 198, 199, 4, 1, 161, 166, 161, + 161, 27, 161, 161, 167, 200, 197, 201, + 201, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 167, 197, 201, 201, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 17, 202, 161, 1, 161, 166, 203, 203, + 161, 1, 161, 166, 204, 161, 161, 205, + 161, 166, 166, 206, 207, 204, 161, 161, + 161, 161, 166, 17, 161, 203, 203, 161, + 1, 161, 166, 203, 202, 161, 1, 161, + 166, 208, 26, 209, 210, 7, 1, 161, + 166, 26, 209, 210, 7, 1, 161, 166, + 209, 209, 7, 1, 161, 166, 211, 23, + 212, 213, 10, 1, 161, 166, 23, 212, + 213, 10, 1, 161, 166, 212, 212, 10, + 1, 161, 166, 214, 20, 215, 216, 13, + 1, 161, 166, 20, 215, 216, 13, 1, + 161, 166, 215, 215, 13, 1, 161, 166, + 217, 17, 203, 218, 161, 1, 161, 166, + 17, 203, 218, 161, 1, 161, 166, 197, + 201, 201, 4, 1, 161, 166, 196, 197, + 201, 201, 4, 1, 161, 166, 161, 161, + 161, 161, 161, 167, 196, 197, 198, 201, + 4, 1, 161, 166, 161, 161, 27, 161, + 161, 167, 194, 161, 219, 161, 203, 203, + 161, 1, 161, 166, 161, 161, 161, 161, + 194, 194, 161, 161, 161, 203, 203, 161, + 1, 161, 166, 161, 161, 161, 161, 194, + 194, 161, 161, 161, 203, 195, 161, 1, + 161, 166, 161, 161, 161, 161, 194, 188, + 189, 193, 193, 4, 1, 161, 166, 161, + 161, 161, 161, 161, 167, 188, 189, 190, + 193, 4, 1, 161, 166, 161, 161, 29, + 161, 161, 167, 186, 161, 220, 161, 203, + 203, 161, 1, 161, 166, 161, 161, 161, + 161, 186, 186, 161, 161, 161, 203, 203, + 161, 1, 161, 166, 161, 161, 161, 161, + 186, 186, 161, 161, 161, 203, 187, 161, + 1, 161, 166, 161, 161, 161, 161, 186, + 180, 181, 185, 185, 4, 1, 161, 166, + 161, 161, 161, 161, 161, 167, 180, 181, + 182, 185, 4, 1, 161, 166, 161, 161, + 31, 161, 161, 167, 178, 161, 221, 161, + 203, 203, 161, 1, 161, 166, 161, 161, + 161, 161, 178, 178, 161, 161, 161, 203, + 203, 161, 1, 161, 166, 161, 161, 161, + 161, 178, 178, 161, 161, 161, 203, 179, + 161, 1, 161, 166, 161, 161, 161, 161, + 178, 172, 173, 177, 177, 4, 1, 161, + 166, 161, 161, 161, 161, 161, 167, 172, + 173, 174, 177, 4, 1, 161, 166, 161, + 161, 33, 161, 161, 167, 170, 161, 222, + 161, 203, 203, 161, 1, 161, 166, 161, + 161, 161, 161, 170, 170, 161, 161, 161, + 203, 203, 161, 1, 161, 166, 161, 161, + 161, 161, 170, 170, 161, 161, 161, 203, + 171, 161, 1, 161, 166, 161, 161, 161, + 161, 170, 162, 163, 169, 169, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 167, + 162, 163, 164, 169, 4, 1, 161, 166, + 161, 161, 35, 161, 161, 167, 224, 225, + 226, 227, 40, 37, 223, 228, 223, 223, + 71, 223, 223, 229, 230, 225, 231, 227, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 229, 225, 231, 227, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 229, 232, + 223, 223, 223, 53, 233, 223, 37, 223, + 228, 223, 223, 223, 223, 232, 234, 235, + 236, 237, 40, 37, 223, 228, 223, 223, + 69, 223, 223, 229, 238, 235, 239, 239, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 229, 235, 239, 239, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 229, 240, + 223, 223, 223, 53, 241, 223, 37, 223, + 228, 223, 223, 223, 223, 240, 242, 243, + 244, 245, 40, 37, 223, 228, 223, 223, + 67, 223, 223, 229, 246, 243, 247, 247, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 229, 243, 247, 247, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 229, 248, + 223, 223, 223, 53, 249, 223, 37, 223, + 228, 223, 223, 223, 223, 248, 250, 251, + 252, 253, 40, 37, 223, 228, 223, 223, + 65, 223, 223, 229, 254, 251, 255, 255, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 229, 251, 255, 255, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 229, 256, + 223, 223, 223, 53, 257, 223, 37, 223, + 228, 223, 223, 223, 223, 256, 258, 259, + 260, 261, 40, 37, 223, 228, 223, 223, + 63, 223, 223, 229, 262, 259, 263, 263, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 229, 259, 263, 263, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 229, 53, + 264, 223, 37, 223, 228, 265, 265, 223, + 37, 223, 228, 266, 223, 223, 267, 223, + 228, 228, 268, 269, 266, 223, 223, 223, + 223, 228, 53, 223, 265, 265, 223, 37, + 223, 228, 265, 264, 223, 37, 223, 228, + 270, 62, 271, 272, 43, 37, 223, 228, + 62, 271, 272, 43, 37, 223, 228, 271, + 271, 43, 37, 223, 228, 273, 59, 274, + 275, 46, 37, 223, 228, 59, 274, 275, + 46, 37, 223, 228, 274, 274, 46, 37, + 223, 228, 276, 56, 277, 278, 49, 37, + 223, 228, 56, 277, 278, 49, 37, 223, + 228, 277, 277, 49, 37, 223, 228, 279, + 53, 265, 280, 223, 37, 223, 228, 53, + 265, 280, 223, 37, 223, 228, 259, 263, + 263, 40, 37, 223, 228, 258, 259, 263, + 263, 40, 37, 223, 228, 223, 223, 223, + 223, 223, 229, 258, 259, 260, 263, 40, + 37, 223, 228, 223, 223, 63, 223, 223, + 229, 256, 223, 281, 223, 265, 265, 223, + 37, 223, 228, 223, 223, 223, 223, 256, + 256, 223, 223, 223, 265, 265, 223, 37, + 223, 228, 223, 223, 223, 223, 256, 256, + 223, 223, 223, 265, 257, 223, 37, 223, + 228, 223, 223, 223, 223, 256, 250, 251, + 255, 255, 40, 37, 223, 228, 223, 223, + 223, 223, 223, 229, 250, 251, 252, 255, + 40, 37, 223, 228, 223, 223, 65, 223, + 223, 229, 248, 223, 282, 223, 265, 265, + 223, 37, 223, 228, 223, 223, 223, 223, + 248, 248, 223, 223, 223, 265, 265, 223, + 37, 223, 228, 223, 223, 223, 223, 248, + 248, 223, 223, 223, 265, 249, 223, 37, + 223, 228, 223, 223, 223, 223, 248, 242, + 243, 247, 247, 40, 37, 223, 228, 223, + 223, 223, 223, 223, 229, 242, 243, 244, + 247, 40, 37, 223, 228, 223, 223, 67, + 223, 223, 229, 240, 223, 283, 223, 265, + 265, 223, 37, 223, 228, 223, 223, 223, + 223, 240, 240, 223, 223, 223, 265, 265, + 223, 37, 223, 228, 223, 223, 223, 223, + 240, 240, 223, 223, 223, 265, 241, 223, + 37, 223, 228, 223, 223, 223, 223, 240, + 234, 235, 239, 239, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 229, 234, 235, + 236, 239, 40, 37, 223, 228, 223, 223, + 69, 223, 223, 229, 232, 223, 284, 223, + 265, 265, 223, 37, 223, 228, 223, 223, + 223, 223, 232, 232, 223, 223, 223, 265, + 265, 223, 37, 223, 228, 223, 223, 223, + 223, 232, 232, 223, 223, 223, 265, 233, + 223, 37, 223, 228, 223, 223, 223, 223, + 232, 70, 39, 39, 40, 37, 224, 225, + 231, 227, 40, 37, 223, 228, 223, 223, + 223, 223, 223, 229, 286, 151, 287, 287, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 158, 151, 287, 287, 76, 73, 285, + 154, 285, 285, 285, 285, 285, 158, 288, + 285, 285, 285, 90, 289, 285, 73, 285, + 154, 285, 285, 285, 285, 288, 290, 291, + 292, 293, 76, 73, 285, 154, 285, 285, + 106, 285, 285, 158, 294, 291, 295, 295, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 158, 291, 295, 295, 76, 73, 285, + 154, 285, 285, 285, 285, 285, 158, 296, + 285, 285, 285, 90, 297, 285, 73, 285, + 154, 285, 285, 285, 285, 296, 298, 299, + 300, 301, 76, 73, 285, 154, 285, 285, + 104, 285, 285, 158, 302, 299, 303, 303, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 158, 299, 303, 303, 76, 73, 285, + 154, 285, 285, 285, 285, 285, 158, 304, + 285, 285, 285, 90, 305, 285, 73, 285, + 154, 285, 285, 285, 285, 304, 306, 307, + 308, 309, 76, 73, 285, 154, 285, 285, + 102, 285, 285, 158, 310, 307, 311, 311, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 158, 307, 311, 311, 76, 73, 285, + 154, 285, 285, 285, 285, 285, 158, 312, + 285, 285, 285, 90, 313, 285, 73, 285, + 154, 285, 285, 285, 285, 312, 314, 315, + 316, 317, 76, 73, 285, 154, 285, 285, + 100, 285, 285, 158, 318, 315, 319, 319, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 158, 315, 319, 319, 76, 73, 285, + 154, 285, 285, 285, 285, 285, 158, 90, + 320, 285, 73, 285, 154, 321, 321, 285, + 73, 285, 154, 322, 285, 285, 323, 285, + 154, 154, 324, 325, 322, 285, 285, 285, + 285, 154, 90, 285, 321, 321, 285, 73, + 285, 154, 321, 320, 285, 73, 285, 154, + 326, 99, 327, 328, 80, 73, 285, 154, + 99, 327, 328, 80, 73, 285, 154, 327, + 327, 80, 73, 285, 154, 329, 96, 330, + 331, 83, 73, 285, 154, 96, 330, 331, + 83, 73, 285, 154, 330, 330, 83, 73, + 285, 154, 332, 93, 333, 334, 86, 73, + 285, 154, 93, 333, 334, 86, 73, 285, + 154, 333, 333, 86, 73, 285, 154, 335, + 90, 321, 336, 285, 73, 285, 154, 90, + 321, 336, 285, 73, 285, 154, 315, 319, + 319, 76, 73, 285, 154, 314, 315, 319, + 319, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 158, 314, 315, 316, 319, 76, + 73, 285, 154, 285, 285, 100, 285, 285, + 158, 312, 285, 337, 285, 321, 321, 285, + 73, 285, 154, 285, 285, 285, 285, 312, + 312, 285, 285, 285, 321, 321, 285, 73, + 285, 154, 285, 285, 285, 285, 312, 312, + 285, 285, 285, 321, 313, 285, 73, 285, + 154, 285, 285, 285, 285, 312, 306, 307, + 311, 311, 76, 73, 285, 154, 285, 285, + 285, 285, 285, 158, 306, 307, 308, 311, + 76, 73, 285, 154, 285, 285, 102, 285, + 285, 158, 304, 285, 338, 285, 321, 321, + 285, 73, 285, 154, 285, 285, 285, 285, + 304, 304, 285, 285, 285, 321, 321, 285, + 73, 285, 154, 285, 285, 285, 285, 304, + 304, 285, 285, 285, 321, 305, 285, 73, + 285, 154, 285, 285, 285, 285, 304, 298, + 299, 303, 303, 76, 73, 285, 154, 285, + 285, 285, 285, 285, 158, 298, 299, 300, + 303, 76, 73, 285, 154, 285, 285, 104, + 285, 285, 158, 296, 285, 339, 285, 321, + 321, 285, 73, 285, 154, 285, 285, 285, + 285, 296, 296, 285, 285, 285, 321, 321, + 285, 73, 285, 154, 285, 285, 285, 285, + 296, 296, 285, 285, 285, 321, 297, 285, + 73, 285, 154, 285, 285, 285, 285, 296, + 290, 291, 295, 295, 76, 73, 285, 154, + 285, 285, 285, 285, 285, 158, 290, 291, + 292, 295, 76, 73, 285, 154, 285, 285, + 106, 285, 285, 158, 288, 285, 340, 285, + 321, 321, 285, 73, 285, 154, 285, 285, + 285, 285, 288, 288, 285, 285, 285, 321, + 321, 285, 73, 285, 154, 285, 285, 285, + 285, 288, 288, 285, 285, 285, 321, 289, + 285, 73, 285, 154, 285, 285, 285, 285, + 288, 107, 75, 75, 76, 73, 341, 341, + 341, 341, 144, 150, 151, 287, 287, 76, + 73, 285, 154, 285, 285, 285, 285, 285, + 158, 107, 75, 75, 76, 73, 343, 344, + 345, 346, 112, 109, 342, 347, 342, 342, + 143, 342, 342, 348, 349, 344, 346, 346, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 348, 344, 346, 346, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 350, + 342, 342, 342, 125, 351, 342, 109, 342, + 347, 342, 342, 342, 342, 350, 352, 353, + 354, 355, 112, 109, 342, 347, 342, 342, + 141, 342, 342, 348, 356, 353, 357, 357, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 348, 353, 357, 357, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 358, + 342, 342, 342, 125, 359, 342, 109, 342, + 347, 342, 342, 342, 342, 358, 360, 361, + 362, 363, 112, 109, 342, 347, 342, 342, + 139, 342, 342, 348, 364, 361, 365, 365, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 348, 361, 365, 365, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 366, + 342, 342, 342, 125, 367, 342, 109, 342, + 347, 342, 342, 342, 342, 366, 368, 369, + 370, 371, 112, 109, 342, 347, 342, 342, + 137, 342, 342, 348, 372, 369, 373, 373, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 348, 369, 373, 373, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 374, + 342, 342, 342, 125, 375, 342, 109, 342, + 347, 342, 342, 342, 342, 374, 376, 377, + 378, 379, 112, 109, 342, 347, 342, 342, + 135, 342, 342, 348, 380, 377, 381, 381, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 348, 377, 381, 381, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 125, + 382, 342, 109, 342, 347, 383, 383, 342, + 109, 342, 347, 384, 342, 342, 385, 342, + 347, 347, 386, 387, 384, 342, 342, 342, + 342, 347, 125, 342, 383, 383, 342, 109, + 342, 347, 383, 382, 342, 109, 342, 347, + 388, 134, 389, 390, 115, 109, 342, 347, + 134, 389, 390, 115, 109, 342, 347, 389, + 389, 115, 109, 342, 347, 391, 131, 392, + 393, 118, 109, 342, 347, 131, 392, 393, + 118, 109, 342, 347, 392, 392, 118, 109, + 342, 347, 394, 128, 395, 396, 121, 109, + 342, 347, 128, 395, 396, 121, 109, 342, + 347, 395, 395, 121, 109, 342, 347, 397, + 125, 383, 398, 342, 109, 342, 347, 125, + 383, 398, 342, 109, 342, 347, 377, 381, + 381, 112, 109, 342, 347, 376, 377, 381, + 381, 112, 109, 342, 347, 342, 342, 342, + 342, 342, 348, 376, 377, 378, 381, 112, + 109, 342, 347, 342, 342, 135, 342, 342, + 348, 374, 342, 399, 342, 383, 383, 342, + 109, 342, 347, 342, 342, 342, 342, 374, + 374, 342, 342, 342, 383, 383, 342, 109, + 342, 347, 342, 342, 342, 342, 374, 374, + 342, 342, 342, 383, 375, 342, 109, 342, + 347, 342, 342, 342, 342, 374, 368, 369, + 373, 373, 112, 109, 342, 347, 342, 342, + 342, 342, 342, 348, 368, 369, 370, 373, + 112, 109, 342, 347, 342, 342, 137, 342, + 342, 348, 366, 342, 400, 342, 383, 383, + 342, 109, 342, 347, 342, 342, 342, 342, + 366, 366, 342, 342, 342, 383, 383, 342, + 109, 342, 347, 342, 342, 342, 342, 366, + 366, 342, 342, 342, 383, 367, 342, 109, + 342, 347, 342, 342, 342, 342, 366, 360, + 361, 365, 365, 112, 109, 342, 347, 342, + 342, 342, 342, 342, 348, 360, 361, 362, + 365, 112, 109, 342, 347, 342, 342, 139, + 342, 342, 348, 358, 342, 401, 342, 383, + 383, 342, 109, 342, 347, 342, 342, 342, + 342, 358, 358, 342, 342, 342, 383, 383, + 342, 109, 342, 347, 342, 342, 342, 342, + 358, 358, 342, 342, 342, 383, 359, 342, + 109, 342, 347, 342, 342, 342, 342, 358, + 352, 353, 357, 357, 112, 109, 342, 347, + 342, 342, 342, 342, 342, 348, 352, 353, + 354, 357, 112, 109, 342, 347, 342, 342, + 141, 342, 342, 348, 350, 342, 402, 342, + 383, 383, 342, 109, 342, 347, 342, 342, + 342, 342, 350, 350, 342, 342, 342, 383, + 383, 342, 109, 342, 347, 342, 342, 342, + 342, 350, 350, 342, 342, 342, 383, 351, + 342, 109, 342, 347, 342, 342, 342, 342, + 350, 343, 344, 346, 346, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 348, 148, + 149, 150, 151, 403, 287, 76, 73, 285, + 154, 155, 155, 144, 285, 148, 158, 162, + 404, 164, 165, 4, 1, 161, 166, 161, + 161, 35, 161, 161, 167, 170, 149, 150, + 151, 405, 406, 76, 407, 161, 408, 161, + 155, 144, 161, 170, 158, 107, 409, 409, + 76, 407, 161, 166, 161, 161, 144, 410, + 161, 161, 411, 161, 408, 408, 412, 207, + 410, 161, 161, 161, 161, 408, 170, 161, + 222, 107, 409, 409, 76, 407, 161, 166, + 161, 161, 161, 161, 170, 414, 413, 415, + 415, 413, 146, 413, 416, 415, 415, 413, + 146, 413, 416, 417, 413, 413, 418, 413, + 416, 416, 419, 420, 417, 413, 413, 413, + 413, 416, 148, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 155, 341, 341, 341, + 148, 0 +}; + +static const short _indic_syllable_machine_index_defaults[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 72, 72, 77, 77, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 72, + 0, 145, 147, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 341, 285, 341, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 285, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 413, 413, 413, 413, + 413, 413, 413, 341, 0 }; -static const short _indic_syllable_machine_trans_targs[] = { - 138, 160, 166, 2, 167, 3, 5, 170, - 6, 8, 173, 9, 11, 176, 12, 14, - 15, 159, 17, 18, 175, 20, 21, 172, - 23, 24, 169, 179, 183, 184, 188, 189, - 193, 194, 198, 199, 138, 222, 228, 36, - 229, 37, 39, 232, 40, 42, 235, 43, - 45, 238, 46, 48, 49, 221, 51, 52, - 237, 54, 55, 234, 57, 58, 231, 241, - 245, 246, 250, 251, 255, 256, 260, 262, - 138, 283, 289, 70, 290, 138, 71, 73, - 293, 74, 76, 296, 77, 79, 299, 80, - 82, 83, 282, 85, 86, 298, 88, 89, - 295, 91, 92, 292, 302, 306, 307, 311, - 312, 316, 317, 321, 138, 346, 352, 103, - 353, 104, 106, 356, 107, 109, 359, 110, - 112, 362, 113, 115, 116, 345, 118, 119, - 361, 121, 122, 358, 124, 125, 355, 365, - 369, 370, 374, 375, 379, 380, 384, 385, - 323, 138, 398, 138, 139, 201, 263, 265, - 322, 324, 285, 325, 386, 387, 301, 396, - 403, 138, 140, 142, 33, 200, 162, 178, - 141, 32, 143, 196, 144, 146, 31, 195, - 145, 30, 147, 191, 148, 150, 29, 190, - 149, 28, 151, 186, 152, 154, 27, 185, - 153, 26, 155, 181, 156, 158, 25, 180, - 157, 1, 165, 0, 161, 164, 163, 138, - 168, 4, 22, 171, 7, 19, 174, 10, - 16, 177, 13, 182, 187, 192, 197, 138, - 202, 204, 67, 261, 224, 240, 203, 66, - 205, 258, 206, 208, 65, 257, 207, 64, - 209, 253, 210, 212, 63, 252, 211, 62, - 213, 248, 214, 216, 61, 247, 215, 60, - 217, 243, 218, 220, 59, 242, 219, 35, - 227, 34, 223, 226, 225, 138, 230, 38, - 56, 233, 41, 53, 236, 44, 50, 239, - 47, 244, 249, 254, 259, 138, 264, 100, - 266, 319, 267, 269, 99, 318, 268, 98, - 270, 314, 271, 273, 97, 313, 272, 96, - 274, 309, 275, 277, 95, 308, 276, 94, - 278, 304, 279, 281, 93, 303, 280, 69, - 288, 68, 284, 287, 286, 138, 291, 72, - 90, 294, 75, 87, 297, 78, 84, 300, - 81, 305, 310, 315, 320, 138, 138, 326, - 328, 134, 133, 348, 364, 327, 329, 382, - 330, 332, 132, 381, 331, 131, 333, 377, - 334, 336, 130, 376, 335, 129, 337, 372, - 338, 340, 128, 371, 339, 127, 341, 367, - 342, 344, 126, 366, 343, 102, 351, 101, - 347, 350, 349, 138, 354, 105, 123, 357, - 108, 120, 360, 111, 117, 363, 114, 368, - 373, 378, 383, 135, 388, 389, 395, 390, - 392, 136, 391, 394, 393, 138, 397, 137, - 400, 399, 402, 401, 138 +static const char _indic_syllable_machine_trans_cond_spaces[] = { + -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, -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, -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, -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, + -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, -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, -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, -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, + -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, -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, -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, -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, + -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, -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, -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, -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, + -1, -1, -1, -1, -1, 0 }; -static const char _indic_syllable_machine_trans_actions[] = { - 1, 0, 2, 0, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 0, 2, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 4, 0, 2, 0, 2, 5, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 6, 2, 6, 2, - 6, 2, 6, 2, 7, 0, 2, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 6, 8, 0, 11, 2, 2, 6, 0, - 12, 12, 0, 2, 6, 2, 6, 2, - 0, 13, 2, 0, 0, 2, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 0, 0, 0, 0, 14, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 2, 2, 2, 2, 15, - 2, 0, 0, 2, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 0, 0, 0, 0, 16, 2, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 2, 2, 2, 2, 17, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 2, 0, 0, 0, 0, 18, 2, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 2, 2, 2, 2, 19, 20, 2, - 0, 0, 0, 0, 2, 2, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 0, - 0, 0, 0, 21, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 2, - 2, 2, 2, 0, 0, 22, 22, 0, - 0, 0, 0, 0, 0, 23, 2, 0, - 0, 0, 0, 0, 24 +static const short _indic_syllable_machine_cond_targs[] = { + 138, 160, 166, 2, 167, 3, 5, 170, + 6, 8, 173, 9, 11, 176, 12, 14, + 15, 159, 17, 18, 175, 20, 21, 172, + 23, 24, 169, 179, 183, 184, 188, 189, + 193, 194, 198, 199, 138, 222, 228, 36, + 229, 37, 39, 232, 40, 42, 235, 43, + 45, 238, 46, 48, 49, 221, 51, 52, + 237, 54, 55, 234, 57, 58, 231, 241, + 245, 246, 250, 251, 255, 256, 260, 262, + 138, 283, 289, 70, 290, 138, 71, 73, + 293, 74, 76, 296, 77, 79, 299, 80, + 82, 83, 282, 85, 86, 298, 88, 89, + 295, 91, 92, 292, 302, 306, 307, 311, + 312, 316, 317, 321, 138, 346, 352, 103, + 353, 104, 106, 356, 107, 109, 359, 110, + 112, 362, 113, 115, 116, 345, 118, 119, + 361, 121, 122, 358, 124, 125, 355, 365, + 369, 370, 374, 375, 379, 380, 384, 385, + 323, 138, 398, 138, 139, 201, 263, 265, + 322, 324, 285, 325, 386, 387, 301, 396, + 403, 138, 140, 142, 33, 200, 162, 178, + 141, 32, 143, 196, 144, 146, 31, 195, + 145, 30, 147, 191, 148, 150, 29, 190, + 149, 28, 151, 186, 152, 154, 27, 185, + 153, 26, 155, 181, 156, 158, 25, 180, + 157, 1, 165, 0, 161, 164, 163, 138, + 168, 4, 22, 171, 7, 19, 174, 10, + 16, 177, 13, 182, 187, 192, 197, 138, + 202, 204, 67, 261, 224, 240, 203, 66, + 205, 258, 206, 208, 65, 257, 207, 64, + 209, 253, 210, 212, 63, 252, 211, 62, + 213, 248, 214, 216, 61, 247, 215, 60, + 217, 243, 218, 220, 59, 242, 219, 35, + 227, 34, 223, 226, 225, 138, 230, 38, + 56, 233, 41, 53, 236, 44, 50, 239, + 47, 244, 249, 254, 259, 138, 264, 100, + 266, 319, 267, 269, 99, 318, 268, 98, + 270, 314, 271, 273, 97, 313, 272, 96, + 274, 309, 275, 277, 95, 308, 276, 94, + 278, 304, 279, 281, 93, 303, 280, 69, + 288, 68, 284, 287, 286, 138, 291, 72, + 90, 294, 75, 87, 297, 78, 84, 300, + 81, 305, 310, 315, 320, 138, 138, 326, + 328, 134, 133, 348, 364, 327, 329, 382, + 330, 332, 132, 381, 331, 131, 333, 377, + 334, 336, 130, 376, 335, 129, 337, 372, + 338, 340, 128, 371, 339, 127, 341, 367, + 342, 344, 126, 366, 343, 102, 351, 101, + 347, 350, 349, 138, 354, 105, 123, 357, + 108, 120, 360, 111, 117, 363, 114, 368, + 373, 378, 383, 135, 388, 389, 395, 390, + 392, 136, 391, 394, 393, 138, 397, 137, + 400, 399, 402, 401, 138, 0 +}; + +static const char _indic_syllable_machine_cond_actions[] = { + 1, 0, 2, 0, 2, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 4, 0, 2, 0, 2, 5, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 6, 2, 6, 2, + 6, 2, 6, 2, 7, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 6, 8, 0, 11, 2, 2, 6, 0, + 12, 12, 0, 2, 6, 2, 6, 2, + 0, 13, 2, 0, 0, 2, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 0, 0, 0, 0, 14, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 2, 2, 2, 2, 15, + 2, 0, 0, 2, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 0, 0, 0, 0, 16, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 2, 2, 2, 2, 17, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 2, 0, 0, 0, 0, 18, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 2, 2, 2, 2, 19, 20, 2, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 0, + 0, 0, 0, 21, 2, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 2, + 2, 2, 2, 0, 0, 22, 22, 0, + 0, 0, 0, 0, 0, 23, 2, 0, + 0, 0, 0, 0, 24, 0 }; static const char _indic_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 }; static const char _indic_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + +static const char _indic_syllable_machine_eof_cond_spaces[] = { + -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0 +}; + +static const char _indic_syllable_machine_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + +static const char _indic_syllable_machine_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + +static const char _indic_syllable_machine_eof_cond_keys[] = { + 0 }; static const short _indic_syllable_machine_eof_trans[] = { - 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, 1, 1, 1, 1, 1, 1, - 1, 1, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 73, 73, 78, 78, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 73, - 1, 146, 0, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 342, 286, 342, 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, 286, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 414, 414, 414, 414, - 414, 414, 414, 342 + 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, 1, 1, 1, 1, 1, 1, + 1, 1, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 73, 73, 78, 78, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 73, + 1, 146, 0, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 342, 286, 342, 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, 286, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 414, 414, 414, 414, + 414, 414, 414, 342, 0 +}; + +static const char _indic_syllable_machine_nfa_targs[] = { + 0, 0 +}; + +static const char _indic_syllable_machine_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 +}; + +static const char _indic_syllable_machine_nfa_push_actions[] = { + 0, 0 +}; + +static const char _indic_syllable_machine_nfa_pop_trans[] = { + 0, 0 }; static const int indic_syllable_machine_start = 138; @@ -987,209 +1259,333 @@ static const int indic_syllable_machine_error = -1; static const int indic_syllable_machine_en_main = 138; -#line 36 "hb-ot-shape-complex-indic-machine.rl" - - -#line 93 "hb-ot-shape-complex-indic-machine.rl" #define found_syllable(syllable_type) \ - HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ - } HB_STMT_END +HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial=1; \ +} HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act; - int cs; - hb_glyph_info_t *info = buffer->info; - -#line 1014 "hb-ot-shape-complex-indic-machine.hh" + unsigned int p, pe, eof, ts, te, act; + int cs; + hb_glyph_info_t *info = buffer->info; + { - cs = indic_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = (int)indic_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - -#line 113 "hb-ot-shape-complex-indic-machine.rl" - - - p = 0; - pe = eof = buffer->len; - - unsigned int syllable_serial = 1; - -#line 1030 "hb-ot-shape-complex-indic-machine.hh" - { - int _slen; - int _trans; - const unsigned char *_keys; - const short *_inds; - if ( p == pe ) - goto _test_eof; -_resume: - switch ( _indic_syllable_machine_from_state_actions[cs] ) { - case 10: -#line 1 "NONE" - {ts = p;} - break; -#line 1044 "hb-ot-shape-complex-indic-machine.hh" - } - - _keys = _indic_syllable_machine_trans_keys + (cs<<1); - _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs]; - - _slen = _indic_syllable_machine_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && - ( info[p].indic_category()) <= _keys[1] ? - ( info[p].indic_category()) - _keys[0] : _slen ]; - -_eof_trans: - cs = _indic_syllable_machine_trans_targs[_trans]; - - if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) - goto _again; - - switch ( _indic_syllable_machine_trans_actions[_trans] ) { - case 2: -#line 1 "NONE" - {te = p+1;} - break; - case 14: -#line 84 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (consonant_syllable); }} - break; - case 16: -#line 85 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (vowel_syllable); }} - break; - case 21: -#line 86 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (standalone_cluster); }} - break; - case 24: -#line 87 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (symbol_cluster); }} - break; - case 18: -#line 88 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (broken_cluster); }} - break; - case 11: -#line 89 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ found_syllable (non_indic_cluster); }} - break; - case 13: -#line 84 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (consonant_syllable); }} - break; - case 15: -#line 85 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (vowel_syllable); }} - break; - case 20: -#line 86 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (standalone_cluster); }} - break; - case 23: -#line 87 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (symbol_cluster); }} - break; - case 17: -#line 88 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (broken_cluster); }} - break; - case 19: -#line 89 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p--;{ found_syllable (non_indic_cluster); }} - break; - case 1: -#line 84 "hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} - break; - case 3: -#line 85 "hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} - break; - case 7: -#line 86 "hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} - break; - case 8: -#line 87 "hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (symbol_cluster); }} - break; - case 4: -#line 88 "hb-ot-shape-complex-indic-machine.rl" - {{p = ((te))-1;}{ found_syllable (broken_cluster); }} - break; - case 5: -#line 1 "NONE" - { switch( act ) { - case 1: - {{p = ((te))-1;} found_syllable (consonant_syllable); } - break; - case 5: - {{p = ((te))-1;} found_syllable (broken_cluster); } - break; - case 6: - {{p = ((te))-1;} found_syllable (non_indic_cluster); } - break; - } - } - break; - case 22: -#line 1 "NONE" - {te = p+1;} -#line 84 "hb-ot-shape-complex-indic-machine.rl" - {act = 1;} - break; - case 6: -#line 1 "NONE" - {te = p+1;} -#line 88 "hb-ot-shape-complex-indic-machine.rl" - {act = 5;} - break; - case 12: -#line 1 "NONE" - {te = p+1;} -#line 89 "hb-ot-shape-complex-indic-machine.rl" - {act = 6;} - break; -#line 1167 "hb-ot-shape-complex-indic-machine.hh" - } - -_again: - switch ( _indic_syllable_machine_to_state_actions[cs] ) { - case 9: -#line 1 "NONE" - {ts = 0;} - break; -#line 1176 "hb-ot-shape-complex-indic-machine.hh" - } - - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) + + + p=0; + pe = eof = buffer->len; + + unsigned int syllable_serial=1; + { - if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { - _trans = _indic_syllable_machine_eof_trans[cs] - 1; - goto _eof_trans; + int _cpc; + int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const short * _inds; { + if ( p == pe ) + goto _test_eof; + _resume: { + switch ( _indic_syllable_machine_from_state_actions[cs] ) { + case 10: { + { + #line 1 "NONE" + {ts = p;}} + + break; } + } + + _keys = ( _indic_syllable_machine_trans_keys + ((cs<<1))); + _inds = ( _indic_syllable_machine_indicies + (_indic_syllable_machine_index_offsets[cs])); + + if ( (info[p].indic_category()) <= 19 && (info[p].indic_category()) >= 1 ) + { + int _ic = (int)_indic_syllable_machine_char_class[(int)(info[p].indic_category()) - 1]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_indic_syllable_machine_index_defaults[cs]; + } + else { + _trans = (unsigned int)_indic_syllable_machine_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_indic_syllable_machine_cond_targs[_trans]; + + if ( _indic_syllable_machine_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _indic_syllable_machine_cond_actions[_trans] ) { + case 2: { + { + #line 1 "NONE" + {te = p+1;}} + + break; } + case 14: { + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 84 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 16: { + { + #line 85 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 85 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (vowel_syllable); }}} + + break; } + case 21: { + { + #line 86 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 86 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (standalone_cluster); }}} + + break; } + case 24: { + { + #line 87 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 87 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (symbol_cluster); }}} + + break; } + case 18: { + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 88 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 11: { + { + #line 89 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ + #line 89 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (non_indic_cluster); }}} + + break; } + case 13: { + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 84 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 15: { + { + #line 85 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 85 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (vowel_syllable); }}} + + break; } + case 20: { + { + #line 86 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 86 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (standalone_cluster); }}} + + break; } + case 23: { + { + #line 87 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 87 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (symbol_cluster); }}} + + break; } + case 17: { + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 88 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 19: { + { + #line 89 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p = p - 1;{ + #line 89 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (non_indic_cluster); }}} + + break; } + case 1: { + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + {p = ((te))-1; + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 3: { + { + #line 85 "hb-ot-shape-complex-indic-machine.rl" + {p = ((te))-1; + { + #line 85 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (vowel_syllable); }}} + + break; } + case 7: { + { + #line 86 "hb-ot-shape-complex-indic-machine.rl" + {p = ((te))-1; + { + #line 86 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (standalone_cluster); }}} + + break; } + case 8: { + { + #line 87 "hb-ot-shape-complex-indic-machine.rl" + {p = ((te))-1; + { + #line 87 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (symbol_cluster); }}} + + break; } + case 4: { + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + {p = ((te))-1; + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 5: { + { + #line 1 "NONE" + {switch( act ) { + case 1: { + p = ((te))-1; + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (consonant_syllable); } break; } + case 5: { + p = ((te))-1; + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (broken_cluster); } break; } + case 6: { + p = ((te))-1; + { + #line 89 "hb-ot-shape-complex-indic-machine.rl" + found_syllable (non_indic_cluster); } break; } + }} + } + + break; } + case 22: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 84 "hb-ot-shape-complex-indic-machine.rl" + {act = 1;}} + + break; } + case 6: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 88 "hb-ot-shape-complex-indic-machine.rl" + {act = 5;}} + + break; } + case 12: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 89 "hb-ot-shape-complex-indic-machine.rl" + {act = 6;}} + + break; } + } + + + } + _again: { + switch ( _indic_syllable_machine_to_state_actions[cs] ) { + case 9: { + { + #line 1 "NONE" + {ts = 0;}} + + break; } + } + + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + if ( p == eof ) + { + if ( _indic_syllable_machine_eof_cond_spaces[cs] != -1 ) { + _cekeys = ( _indic_syllable_machine_eof_cond_keys + (_indic_syllable_machine_eof_cond_key_offs[cs])); + _klen = (int)_indic_syllable_machine_eof_cond_key_lens[cs]; + _cpc = 0; + { + const char *_lower = _cekeys; + const char *_upper = _cekeys + _klen - 1; + const char *_mid; + while ( 1 ) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( _cpc < (int)(*( _mid)) ) + _upper = _mid - 1; + else if ( _cpc > (int)(*( _mid)) ) + _lower = _mid + 1; + else { + goto _ok; + } + } + cs = -1; + goto _out; + } + _ok: {} + } + if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { + _trans = (unsigned int)_indic_syllable_machine_eof_trans[cs] - 1; + goto _match_cond; + } + } + + } + _out: { {} + } + } } - } - - } - -#line 121 "hb-ot-shape-complex-indic-machine.rl" - + } #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ diff --git a/src/hb-ot-shape-complex-khmer-machine.hh b/src/hb-ot-shape-complex-khmer-machine.hh index 65e0ffc..034b657 100644 --- a/src/hb-ot-shape-complex-khmer-machine.hh +++ b/src/hb-ot-shape-complex-khmer-machine.hh @@ -1,30 +1,28 @@ - -#line 1 "hb-ot-shape-complex-khmer-machine.rl" /* - * Copyright © 2011,2012 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 - */ +* Copyright © 2011,2012 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 +*/ #ifndef HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH @@ -32,180 +30,185 @@ #include "hb.hh" -#line 36 "hb-ot-shape-complex-khmer-machine.hh" static const unsigned char _khmer_syllable_machine_trans_keys[] = { - 5u, 26u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u, 5u, 21u, - 5u, 26u, 5u, 21u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u, - 5u, 21u, 5u, 26u, 5u, 21u, 5u, 26u, 1u, 29u, 5u, 29u, 5u, 29u, 5u, 29u, - 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 26u, 5u, 29u, - 5u, 29u, 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 29u, 5u, 29u, - 0 + 2u, 8u, 2u, 6u, 2u, 8u, 2u, 6u, + 0u, 0u, 2u, 6u, 2u, 8u, 2u, 6u, + 2u, 8u, 2u, 6u, 2u, 6u, 2u, 8u, + 2u, 6u, 0u, 0u, 2u, 6u, 2u, 8u, + 2u, 6u, 2u, 8u, 2u, 6u, 2u, 8u, + 0u, 11u, 2u, 11u, 2u, 11u, 2u, 11u, + 7u, 7u, 2u, 7u, 2u, 11u, 2u, 11u, + 2u, 11u, 0u, 0u, 2u, 8u, 2u, 11u, + 2u, 11u, 7u, 7u, 2u, 7u, 2u, 11u, + 2u, 11u, 0u, 0u, 2u, 11u, 2u, 11u, + 0u }; -static const char _khmer_syllable_machine_key_spans[] = { - 22, 17, 22, 17, 16, 17, 22, 17, - 22, 17, 17, 22, 17, 16, 17, 22, - 17, 22, 17, 22, 29, 25, 25, 25, - 1, 18, 25, 25, 25, 16, 22, 25, - 25, 1, 18, 25, 25, 16, 25, 25 +static const char _khmer_syllable_machine_char_class[] = { + 0, 0, 1, 1, 2, 2, 1, 1, + 1, 1, 3, 3, 1, 4, 1, 0, + 1, 1, 1, 5, 6, 7, 1, 1, + 1, 8, 9, 10, 11, 0 }; static const short _khmer_syllable_machine_index_offsets[] = { - 0, 23, 41, 64, 82, 99, 117, 140, - 158, 181, 199, 217, 240, 258, 275, 293, - 316, 334, 357, 375, 398, 428, 454, 480, - 506, 508, 527, 553, 579, 605, 622, 645, - 671, 697, 699, 718, 744, 770, 787, 813 + 0, 7, 12, 19, 24, 25, 30, 37, + 42, 49, 54, 59, 66, 71, 72, 77, + 84, 89, 96, 101, 108, 120, 130, 140, + 150, 151, 157, 167, 177, 187, 188, 195, + 205, 215, 216, 222, 232, 242, 243, 253, + 0 }; static const char _khmer_syllable_machine_indicies[] = { - 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, - 3, 0, 0, 0, 0, 4, 0, 1, - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, - 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 4, 0, - 5, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 6, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 7, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 0, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 0, - 0, 0, 4, 0, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 11, 11, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 0, - 0, 0, 0, 4, 0, 11, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 12, 0, 14, - 14, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 15, - 13, 14, 14, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 15, 16, 16, 16, 16, 17, 16, - 18, 18, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 17, 16, 19, 19, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 19, 16, 20, 20, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 21, 16, 22, 22, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 23, 16, 16, - 16, 16, 17, 16, 22, 22, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 23, 16, 24, 24, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 25, 16, - 16, 16, 16, 17, 16, 24, 24, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 25, 16, 14, - 14, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 26, 15, - 16, 16, 16, 16, 17, 16, 28, 28, - 27, 27, 29, 29, 27, 27, 27, 27, - 2, 2, 27, 30, 27, 28, 27, 27, - 27, 27, 15, 19, 27, 27, 27, 17, - 23, 25, 21, 27, 32, 32, 31, 31, - 31, 31, 31, 31, 31, 33, 31, 31, - 31, 31, 31, 2, 3, 6, 31, 31, - 31, 4, 10, 12, 8, 31, 34, 34, - 31, 31, 31, 31, 31, 31, 31, 35, - 31, 31, 31, 31, 31, 31, 3, 6, - 31, 31, 31, 4, 10, 12, 8, 31, - 5, 5, 31, 31, 31, 31, 31, 31, - 31, 35, 31, 31, 31, 31, 31, 31, - 4, 6, 31, 31, 31, 31, 31, 31, - 8, 31, 6, 31, 7, 7, 31, 31, - 31, 31, 31, 31, 31, 35, 31, 31, - 31, 31, 31, 31, 8, 6, 31, 36, - 36, 31, 31, 31, 31, 31, 31, 31, - 35, 31, 31, 31, 31, 31, 31, 10, - 6, 31, 31, 31, 4, 31, 31, 8, - 31, 37, 37, 31, 31, 31, 31, 31, - 31, 31, 35, 31, 31, 31, 31, 31, - 31, 12, 6, 31, 31, 31, 4, 10, - 31, 8, 31, 34, 34, 31, 31, 31, - 31, 31, 31, 31, 33, 31, 31, 31, - 31, 31, 31, 3, 6, 31, 31, 31, - 4, 10, 12, 8, 31, 28, 28, 31, - 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 28, 31, 14, 14, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 15, 38, - 38, 38, 38, 17, 38, 40, 40, 39, - 39, 39, 39, 39, 39, 39, 41, 39, - 39, 39, 39, 39, 39, 15, 19, 39, - 39, 39, 17, 23, 25, 21, 39, 18, - 18, 39, 39, 39, 39, 39, 39, 39, - 41, 39, 39, 39, 39, 39, 39, 17, - 19, 39, 39, 39, 39, 39, 39, 21, - 39, 19, 39, 20, 20, 39, 39, 39, - 39, 39, 39, 39, 41, 39, 39, 39, - 39, 39, 39, 21, 19, 39, 42, 42, - 39, 39, 39, 39, 39, 39, 39, 41, - 39, 39, 39, 39, 39, 39, 23, 19, - 39, 39, 39, 17, 39, 39, 21, 39, - 43, 43, 39, 39, 39, 39, 39, 39, - 39, 41, 39, 39, 39, 39, 39, 39, - 25, 19, 39, 39, 39, 17, 23, 39, - 21, 39, 44, 44, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 44, 39, 45, 45, 39, 39, 39, - 39, 39, 39, 39, 30, 39, 39, 39, - 39, 39, 26, 15, 19, 39, 39, 39, - 17, 23, 25, 21, 39, 40, 40, 39, - 39, 39, 39, 39, 39, 39, 30, 39, - 39, 39, 39, 39, 39, 15, 19, 39, - 39, 39, 17, 23, 25, 21, 39, 0 + 1, 0, 0, 2, 3, 0, 4, 1, + 0, 0, 0, 3, 1, 0, 0, 0, + 3, 0, 4, 5, 0, 0, 0, 4, + 6, 7, 0, 0, 0, 8, 9, 0, + 0, 0, 10, 0, 4, 9, 0, 0, + 0, 10, 11, 0, 0, 0, 12, 0, + 4, 11, 0, 0, 0, 12, 14, 13, + 13, 13, 15, 14, 16, 16, 16, 15, + 16, 17, 18, 16, 16, 16, 17, 19, + 20, 16, 16, 16, 21, 22, 16, 16, + 16, 23, 16, 17, 22, 16, 16, 16, + 23, 24, 16, 16, 16, 25, 16, 17, + 24, 16, 16, 16, 25, 14, 16, 16, + 26, 15, 16, 17, 28, 27, 29, 2, + 30, 27, 15, 19, 17, 23, 25, 21, + 32, 31, 33, 2, 3, 6, 4, 10, + 12, 8, 34, 31, 35, 31, 3, 6, + 4, 10, 12, 8, 5, 31, 35, 31, + 4, 6, 31, 31, 31, 8, 6, 7, + 31, 35, 31, 8, 6, 36, 31, 35, + 31, 10, 6, 4, 31, 31, 8, 37, + 31, 35, 31, 12, 6, 4, 10, 31, + 8, 34, 31, 33, 31, 3, 6, 4, + 10, 12, 8, 28, 14, 38, 38, 38, + 15, 38, 17, 40, 39, 41, 39, 15, + 19, 17, 23, 25, 21, 18, 39, 41, + 39, 17, 19, 39, 39, 39, 21, 19, + 20, 39, 41, 39, 21, 19, 42, 39, + 41, 39, 23, 19, 17, 39, 39, 21, + 43, 39, 41, 39, 25, 19, 17, 23, + 39, 21, 44, 45, 39, 30, 26, 15, + 19, 17, 23, 25, 21, 40, 39, 30, + 39, 15, 19, 17, 23, 25, 21, 0 +}; + +static const char _khmer_syllable_machine_index_defaults[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 27, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 38, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 0 +}; + +static const char _khmer_syllable_machine_trans_cond_spaces[] = { + -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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0 }; -static const char _khmer_syllable_machine_trans_targs[] = { - 20, 1, 28, 22, 23, 3, 24, 5, - 25, 7, 26, 9, 27, 20, 10, 31, - 20, 32, 12, 33, 14, 34, 16, 35, - 18, 36, 39, 20, 21, 30, 37, 20, - 0, 29, 2, 4, 6, 8, 20, 20, - 11, 13, 15, 17, 38, 19 +static const char _khmer_syllable_machine_cond_targs[] = { + 20, 1, 28, 22, 23, 3, 24, 5, + 25, 7, 26, 9, 27, 20, 10, 31, + 20, 32, 12, 33, 14, 34, 16, 35, + 18, 36, 39, 20, 21, 30, 37, 20, + 0, 29, 2, 4, 6, 8, 20, 20, + 11, 13, 15, 17, 38, 19, 0 }; -static const char _khmer_syllable_machine_trans_actions[] = { - 1, 0, 2, 2, 2, 0, 0, 0, - 2, 0, 2, 0, 2, 3, 0, 4, - 5, 2, 0, 0, 0, 2, 0, 2, - 0, 2, 4, 8, 2, 9, 0, 10, - 0, 0, 0, 0, 0, 0, 11, 12, - 0, 0, 0, 0, 4, 0 +static const char _khmer_syllable_machine_cond_actions[] = { + 1, 0, 2, 2, 2, 0, 0, 0, + 2, 0, 2, 0, 2, 3, 0, 4, + 5, 2, 0, 0, 0, 2, 0, 2, + 0, 2, 4, 8, 2, 9, 0, 10, + 0, 0, 0, 0, 0, 0, 11, 12, + 0, 0, 0, 0, 4, 0, 0 }; static const char _khmer_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0 }; static const char _khmer_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0 +}; + +static const char _khmer_syllable_machine_eof_cond_spaces[] = { + -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, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0 +}; + +static const char _khmer_syllable_machine_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0 +}; + +static const char _khmer_syllable_machine_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0 +}; + +static const char _khmer_syllable_machine_eof_cond_keys[] = { + 0 }; -static const unsigned char _khmer_syllable_machine_eof_trans[] = { - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 14, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 39, 40, - 40, 40, 40, 40, 40, 40, 40, 40 +static const char _khmer_syllable_machine_eof_trans[] = { + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 14, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 0, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 39, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 0 +}; + +static const char _khmer_syllable_machine_nfa_targs[] = { + 0, 0 +}; + +static const char _khmer_syllable_machine_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0 +}; + +static const char _khmer_syllable_machine_nfa_push_actions[] = { + 0, 0 +}; + +static const char _khmer_syllable_machine_nfa_pop_trans[] = { + 0, 0 }; static const int khmer_syllable_machine_start = 20; @@ -215,156 +218,228 @@ static const int khmer_syllable_machine_error = -1; static const int khmer_syllable_machine_en_main = 20; -#line 36 "hb-ot-shape-complex-khmer-machine.rl" - -#line 80 "hb-ot-shape-complex-khmer-machine.rl" - #define found_syllable(syllable_type) \ - HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ - } HB_STMT_END +HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial=1; \ +} HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act HB_UNUSED; - int cs; - hb_glyph_info_t *info = buffer->info; - -#line 242 "hb-ot-shape-complex-khmer-machine.hh" + unsigned int p, pe, eof, ts, te, act HB_UNUSED; + int cs; + hb_glyph_info_t *info = buffer->info; + { - cs = khmer_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = (int)khmer_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - -#line 100 "hb-ot-shape-complex-khmer-machine.rl" - - - p = 0; - pe = eof = buffer->len; - - unsigned int syllable_serial = 1; - -#line 258 "hb-ot-shape-complex-khmer-machine.hh" + + + p=0; + pe = eof = buffer->len; + + unsigned int syllable_serial=1; + { - int _slen; - int _trans; - const unsigned char *_keys; - const char *_inds; - if ( p == pe ) - goto _test_eof; -_resume: - switch ( _khmer_syllable_machine_from_state_actions[cs] ) { - case 7: -#line 1 "NONE" - {ts = p;} - break; -#line 272 "hb-ot-shape-complex-khmer-machine.hh" + int _cpc; + int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { + if ( p == pe ) + goto _test_eof; + _resume: { + switch ( _khmer_syllable_machine_from_state_actions[cs] ) { + case 7: { + { + #line 1 "NONE" + {ts = p;}} + + break; } + } + + _keys = ( _khmer_syllable_machine_trans_keys + ((cs<<1))); + _inds = ( _khmer_syllable_machine_indicies + (_khmer_syllable_machine_index_offsets[cs])); + + if ( (info[p].khmer_category()) <= 29 && (info[p].khmer_category()) >= 1 ) + { + int _ic = (int)_khmer_syllable_machine_char_class[(int)(info[p].khmer_category()) - 1]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs]; + } + else { + _trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_khmer_syllable_machine_cond_targs[_trans]; + + if ( _khmer_syllable_machine_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _khmer_syllable_machine_cond_actions[_trans] ) { + case 2: { + { + #line 1 "NONE" + {te = p+1;}} + + break; } + case 8: { + { + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + {te = p+1;{ + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (non_khmer_cluster); }}} + + break; } + case 10: { + { + #line 74 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p = p - 1;{ + #line 74 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 12: { + { + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p = p - 1;{ + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 11: { + { + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p = p - 1;{ + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (non_khmer_cluster); }}} + + break; } + case 1: { + { + #line 74 "hb-ot-shape-complex-khmer-machine.rl" + {p = ((te))-1; + { + #line 74 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 5: { + { + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + {p = ((te))-1; + { + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 3: { + { + #line 1 "NONE" + {switch( act ) { + case 2: { + p = ((te))-1; + { + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (broken_cluster); } break; } + case 3: { + p = ((te))-1; + { + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + found_syllable (non_khmer_cluster); } break; } + }} + } + + break; } + case 4: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 75 "hb-ot-shape-complex-khmer-machine.rl" + {act = 2;}} + + break; } + case 9: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 76 "hb-ot-shape-complex-khmer-machine.rl" + {act = 3;}} + + break; } + } + + + } + _again: { + switch ( _khmer_syllable_machine_to_state_actions[cs] ) { + case 6: { + { + #line 1 "NONE" + {ts = 0;}} + + break; } + } + + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + if ( p == eof ) + { + if ( _khmer_syllable_machine_eof_cond_spaces[cs] != -1 ) { + _cekeys = ( _khmer_syllable_machine_eof_cond_keys + (_khmer_syllable_machine_eof_cond_key_offs[cs])); + _klen = (int)_khmer_syllable_machine_eof_cond_key_lens[cs]; + _cpc = 0; + { + const char *_lower = _cekeys; + const char *_upper = _cekeys + _klen - 1; + const char *_mid; + while ( 1 ) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( _cpc < (int)(*( _mid)) ) + _upper = _mid - 1; + else if ( _cpc > (int)(*( _mid)) ) + _lower = _mid + 1; + else { + goto _ok; + } + } + cs = -1; + goto _out; + } + _ok: {} + } + if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) { + _trans = (unsigned int)_khmer_syllable_machine_eof_trans[cs] - 1; + goto _match_cond; + } + } + + } + _out: { {} + } + } } - - _keys = _khmer_syllable_machine_trans_keys + (cs<<1); - _inds = _khmer_syllable_machine_indicies + _khmer_syllable_machine_index_offsets[cs]; - - _slen = _khmer_syllable_machine_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].khmer_category()) && - ( info[p].khmer_category()) <= _keys[1] ? - ( info[p].khmer_category()) - _keys[0] : _slen ]; - -_eof_trans: - cs = _khmer_syllable_machine_trans_targs[_trans]; - - if ( _khmer_syllable_machine_trans_actions[_trans] == 0 ) - goto _again; - - switch ( _khmer_syllable_machine_trans_actions[_trans] ) { - case 2: -#line 1 "NONE" - {te = p+1;} - break; - case 8: -#line 76 "hb-ot-shape-complex-khmer-machine.rl" - {te = p+1;{ found_syllable (non_khmer_cluster); }} - break; - case 10: -#line 74 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p--;{ found_syllable (consonant_syllable); }} - break; - case 12: -#line 75 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p--;{ found_syllable (broken_cluster); }} - break; - case 11: -#line 76 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p--;{ found_syllable (non_khmer_cluster); }} - break; - case 1: -#line 74 "hb-ot-shape-complex-khmer-machine.rl" - {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} - break; - case 5: -#line 75 "hb-ot-shape-complex-khmer-machine.rl" - {{p = ((te))-1;}{ found_syllable (broken_cluster); }} - break; - case 3: -#line 1 "NONE" - { switch( act ) { - case 2: - {{p = ((te))-1;} found_syllable (broken_cluster); } - break; - case 3: - {{p = ((te))-1;} found_syllable (non_khmer_cluster); } - break; - } - } - break; - case 4: -#line 1 "NONE" - {te = p+1;} -#line 75 "hb-ot-shape-complex-khmer-machine.rl" - {act = 2;} - break; - case 9: -#line 1 "NONE" - {te = p+1;} -#line 76 "hb-ot-shape-complex-khmer-machine.rl" - {act = 3;} - break; -#line 342 "hb-ot-shape-complex-khmer-machine.hh" - } - -_again: - switch ( _khmer_syllable_machine_to_state_actions[cs] ) { - case 6: -#line 1 "NONE" - {ts = 0;} - break; -#line 351 "hb-ot-shape-complex-khmer-machine.hh" - } - - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) - { - if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) { - _trans = _khmer_syllable_machine_eof_trans[cs] - 1; - goto _eof_trans; - } - } - - } - -#line 108 "hb-ot-shape-complex-khmer-machine.rl" - + } #endif /* HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH */ diff --git a/src/hb-ot-shape-complex-myanmar-machine.hh b/src/hb-ot-shape-complex-myanmar-machine.hh index d03832f..f40a479 100644 --- a/src/hb-ot-shape-complex-myanmar-machine.hh +++ b/src/hb-ot-shape-complex-myanmar-machine.hh @@ -1,30 +1,28 @@ - -#line 1 "hb-ot-shape-complex-myanmar-machine.rl" /* - * Copyright © 2011,2012 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 - */ +* Copyright © 2011,2012 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 +*/ #ifndef HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH @@ -32,251 +30,276 @@ #include "hb.hh" -#line 36 "hb-ot-shape-complex-myanmar-machine.hh" static const unsigned char _myanmar_syllable_machine_trans_keys[] = { - 1u, 32u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, - 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u, - 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u, - 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u, - 3u, 29u, 1u, 16u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, - 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 1u, 32u, - 1u, 32u, 8u, 8u, 0 + 0u, 21u, 1u, 20u, 3u, 19u, 3u, 5u, + 3u, 19u, 1u, 15u, 3u, 15u, 3u, 15u, + 1u, 19u, 1u, 19u, 1u, 19u, 1u, 19u, + 0u, 8u, 1u, 19u, 1u, 19u, 1u, 19u, + 1u, 19u, 1u, 19u, 1u, 20u, 1u, 19u, + 1u, 19u, 1u, 19u, 1u, 19u, 3u, 19u, + 3u, 5u, 3u, 19u, 1u, 15u, 3u, 15u, + 3u, 15u, 1u, 19u, 1u, 19u, 1u, 19u, + 1u, 19u, 0u, 8u, 1u, 20u, 1u, 19u, + 1u, 19u, 1u, 19u, 1u, 19u, 1u, 19u, + 1u, 20u, 1u, 19u, 1u, 19u, 1u, 19u, + 1u, 19u, 1u, 20u, 1u, 19u, 0u, 20u, + 0u, 8u, 5u, 5u, 0u }; -static const char _myanmar_syllable_machine_key_spans[] = { - 32, 28, 25, 4, 25, 23, 21, 21, - 27, 27, 27, 27, 16, 27, 27, 27, - 27, 27, 28, 27, 27, 27, 27, 25, - 4, 25, 23, 21, 21, 27, 27, 27, - 27, 16, 28, 27, 27, 27, 27, 27, - 28, 27, 27, 27, 27, 28, 27, 32, - 32, 1 +static const char _myanmar_syllable_machine_char_class[] = { + 0, 0, 1, 2, 3, 3, 4, 5, + 4, 6, 7, 4, 4, 4, 4, 8, + 4, 9, 10, 4, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 7, + 0 }; static const short _myanmar_syllable_machine_index_offsets[] = { - 0, 33, 62, 88, 93, 119, 143, 165, - 187, 215, 243, 271, 299, 316, 344, 372, - 400, 428, 456, 485, 513, 541, 569, 597, - 623, 628, 654, 678, 700, 722, 750, 778, - 806, 834, 851, 880, 908, 936, 964, 992, - 1020, 1049, 1077, 1105, 1133, 1161, 1190, 1218, - 1251, 1284 + 0, 22, 42, 59, 62, 79, 94, 107, + 120, 139, 158, 177, 196, 205, 224, 243, + 262, 281, 300, 320, 339, 358, 377, 396, + 413, 416, 433, 448, 461, 474, 493, 512, + 531, 550, 559, 579, 598, 617, 636, 655, + 674, 694, 713, 732, 751, 770, 790, 809, + 830, 839, 0 }; static const char _myanmar_syllable_machine_indicies[] = { - 1, 1, 2, 3, 4, 4, 0, 5, - 0, 6, 1, 0, 0, 0, 0, 7, - 0, 8, 9, 0, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 1, - 0, 22, 23, 24, 24, 21, 25, 21, - 26, 21, 21, 21, 21, 21, 21, 21, - 27, 21, 21, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 21, 24, 24, - 21, 25, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 38, 21, 21, 21, 21, - 21, 21, 32, 21, 21, 21, 36, 21, - 24, 24, 21, 25, 21, 24, 24, 21, - 25, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 32, 21, 21, 21, 36, 21, 39, - 21, 24, 24, 21, 25, 21, 32, 21, - 21, 21, 21, 21, 21, 21, 40, 21, - 21, 21, 21, 21, 21, 32, 21, 24, - 24, 21, 25, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 40, 21, 21, 21, - 21, 21, 21, 32, 21, 24, 24, 21, - 25, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 32, 21, 22, 21, 24, 24, 21, - 25, 21, 26, 21, 21, 21, 21, 21, - 21, 21, 41, 21, 21, 41, 21, 21, - 21, 32, 42, 21, 21, 36, 21, 22, - 21, 24, 24, 21, 25, 21, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 32, 21, 21, - 21, 36, 21, 22, 21, 24, 24, 21, - 25, 21, 26, 21, 21, 21, 21, 21, - 21, 21, 41, 21, 21, 21, 21, 21, - 21, 32, 42, 21, 21, 36, 21, 22, - 21, 24, 24, 21, 25, 21, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 32, 42, 21, - 21, 36, 21, 1, 1, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 1, 21, 22, 21, 24, 24, - 21, 25, 21, 26, 21, 21, 21, 21, - 21, 21, 21, 27, 21, 21, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 21, - 22, 21, 24, 24, 21, 25, 21, 26, - 21, 21, 21, 21, 21, 21, 21, 43, - 21, 21, 21, 21, 21, 21, 32, 33, - 34, 35, 36, 21, 22, 21, 24, 24, - 21, 25, 21, 26, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 32, 33, 34, 35, 36, 21, - 22, 21, 24, 24, 21, 25, 21, 26, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 32, 33, - 34, 21, 36, 21, 22, 21, 24, 24, - 21, 25, 21, 26, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 32, 21, 34, 21, 36, 21, - 22, 21, 24, 24, 21, 25, 21, 26, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 32, 33, - 34, 35, 36, 43, 21, 22, 21, 24, - 24, 21, 25, 21, 26, 21, 21, 21, - 21, 21, 21, 21, 43, 21, 21, 28, - 21, 30, 21, 32, 33, 34, 35, 36, - 21, 22, 21, 24, 24, 21, 25, 21, - 26, 21, 21, 21, 21, 21, 21, 21, - 43, 21, 21, 28, 21, 21, 21, 32, - 33, 34, 35, 36, 21, 22, 21, 24, - 24, 21, 25, 21, 26, 21, 21, 21, - 21, 21, 21, 21, 43, 21, 21, 28, - 29, 30, 21, 32, 33, 34, 35, 36, - 21, 22, 23, 24, 24, 21, 25, 21, - 26, 21, 21, 21, 21, 21, 21, 21, - 27, 21, 21, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 21, 45, 45, 44, - 5, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 46, 44, 44, 44, 44, 44, - 44, 14, 44, 44, 44, 18, 44, 45, - 45, 44, 5, 44, 45, 45, 44, 5, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 14, 44, 44, 44, 18, 44, 47, 44, - 45, 45, 44, 5, 44, 14, 44, 44, - 44, 44, 44, 44, 44, 48, 44, 44, - 44, 44, 44, 44, 14, 44, 45, 45, - 44, 5, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 48, 44, 44, 44, 44, - 44, 44, 14, 44, 45, 45, 44, 5, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 14, 44, 2, 44, 45, 45, 44, 5, - 44, 6, 44, 44, 44, 44, 44, 44, - 44, 49, 44, 44, 49, 44, 44, 44, - 14, 50, 44, 44, 18, 44, 2, 44, - 45, 45, 44, 5, 44, 6, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 14, 44, 44, 44, - 18, 44, 2, 44, 45, 45, 44, 5, - 44, 6, 44, 44, 44, 44, 44, 44, - 44, 49, 44, 44, 44, 44, 44, 44, - 14, 50, 44, 44, 18, 44, 2, 44, - 45, 45, 44, 5, 44, 6, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 14, 50, 44, 44, - 18, 44, 51, 51, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 51, 44, 2, 3, 45, 45, 44, - 5, 44, 6, 44, 44, 44, 44, 44, - 44, 44, 8, 44, 44, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 44, - 2, 44, 45, 45, 44, 5, 44, 6, - 44, 44, 44, 44, 44, 44, 44, 8, - 44, 44, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 44, 2, 44, 45, 45, - 44, 5, 44, 6, 44, 44, 44, 44, - 44, 44, 44, 52, 44, 44, 44, 44, - 44, 44, 14, 15, 16, 17, 18, 44, - 2, 44, 45, 45, 44, 5, 44, 6, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 14, 15, - 16, 17, 18, 44, 2, 44, 45, 45, - 44, 5, 44, 6, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 14, 15, 16, 44, 18, 44, - 2, 44, 45, 45, 44, 5, 44, 6, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 14, 44, - 16, 44, 18, 44, 2, 44, 45, 45, - 44, 5, 44, 6, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 14, 15, 16, 17, 18, 52, - 44, 2, 44, 45, 45, 44, 5, 44, - 6, 44, 44, 44, 44, 44, 44, 44, - 52, 44, 44, 10, 44, 12, 44, 14, - 15, 16, 17, 18, 44, 2, 44, 45, - 45, 44, 5, 44, 6, 44, 44, 44, - 44, 44, 44, 44, 52, 44, 44, 10, - 44, 44, 44, 14, 15, 16, 17, 18, - 44, 2, 44, 45, 45, 44, 5, 44, - 6, 44, 44, 44, 44, 44, 44, 44, - 52, 44, 44, 10, 11, 12, 44, 14, - 15, 16, 17, 18, 44, 2, 3, 45, - 45, 44, 5, 44, 6, 44, 44, 44, - 44, 44, 44, 44, 8, 44, 44, 10, - 11, 12, 13, 14, 15, 16, 17, 18, - 44, 22, 23, 24, 24, 21, 25, 21, - 26, 21, 21, 21, 21, 21, 21, 21, - 53, 21, 21, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 21, 22, 54, - 24, 24, 21, 25, 21, 26, 21, 21, - 21, 21, 21, 21, 21, 27, 21, 21, - 28, 29, 30, 31, 32, 33, 34, 35, - 36, 21, 1, 1, 2, 3, 45, 45, - 44, 5, 44, 6, 1, 44, 44, 44, - 44, 1, 44, 8, 44, 44, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, - 44, 1, 44, 1, 1, 55, 55, 55, - 55, 55, 55, 55, 55, 1, 55, 55, - 55, 55, 1, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 1, 55, 56, 55, 0 + 1, 2, 3, 4, 0, 5, 6, 1, + 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 22, 23, + 24, 21, 25, 26, 21, 21, 27, 21, + 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 24, 21, 25, 21, 21, 21, + 38, 21, 21, 21, 21, 21, 32, 21, + 21, 21, 36, 24, 21, 25, 24, 21, + 25, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 32, 21, 21, 21, 36, 39, + 21, 24, 21, 25, 32, 21, 21, 40, + 21, 21, 21, 21, 21, 32, 24, 21, + 25, 21, 21, 21, 40, 21, 21, 21, + 21, 21, 32, 24, 21, 25, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 32, + 22, 21, 24, 21, 25, 26, 21, 21, + 41, 21, 41, 21, 21, 21, 32, 42, + 21, 21, 36, 22, 21, 24, 21, 25, + 26, 21, 21, 21, 21, 21, 21, 21, + 21, 32, 21, 21, 21, 36, 22, 21, + 24, 21, 25, 26, 21, 21, 41, 21, + 21, 21, 21, 21, 32, 42, 21, 21, + 36, 22, 21, 24, 21, 25, 26, 21, + 21, 21, 21, 21, 21, 21, 21, 32, + 42, 21, 21, 36, 1, 21, 21, 21, + 21, 21, 21, 21, 1, 22, 21, 24, + 21, 25, 26, 21, 21, 27, 21, 28, + 29, 30, 31, 32, 33, 34, 35, 36, + 22, 21, 24, 21, 25, 26, 21, 21, + 43, 21, 21, 21, 21, 21, 32, 33, + 34, 35, 36, 22, 21, 24, 21, 25, + 26, 21, 21, 21, 21, 21, 21, 21, + 21, 32, 33, 34, 35, 36, 22, 21, + 24, 21, 25, 26, 21, 21, 21, 21, + 21, 21, 21, 21, 32, 33, 34, 21, + 36, 22, 21, 24, 21, 25, 26, 21, + 21, 21, 21, 21, 21, 21, 21, 32, + 21, 34, 21, 36, 22, 21, 24, 21, + 25, 26, 21, 21, 21, 21, 21, 21, + 21, 21, 32, 33, 34, 35, 36, 43, + 22, 21, 24, 21, 25, 26, 21, 21, + 43, 21, 28, 21, 30, 21, 32, 33, + 34, 35, 36, 22, 21, 24, 21, 25, + 26, 21, 21, 43, 21, 28, 21, 21, + 21, 32, 33, 34, 35, 36, 22, 21, + 24, 21, 25, 26, 21, 21, 43, 21, + 28, 29, 30, 21, 32, 33, 34, 35, + 36, 22, 23, 24, 21, 25, 26, 21, + 21, 27, 21, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 45, 44, 5, 44, + 44, 44, 46, 44, 44, 44, 44, 44, + 14, 44, 44, 44, 18, 45, 44, 5, + 45, 44, 5, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 14, 44, 44, 44, + 18, 47, 44, 45, 44, 5, 14, 44, + 44, 48, 44, 44, 44, 44, 44, 14, + 45, 44, 5, 44, 44, 44, 48, 44, + 44, 44, 44, 44, 14, 45, 44, 5, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 14, 2, 44, 45, 44, 5, 6, + 44, 44, 49, 44, 49, 44, 44, 44, + 14, 50, 44, 44, 18, 2, 44, 45, + 44, 5, 6, 44, 44, 44, 44, 44, + 44, 44, 44, 14, 44, 44, 44, 18, + 2, 44, 45, 44, 5, 6, 44, 44, + 49, 44, 44, 44, 44, 44, 14, 50, + 44, 44, 18, 2, 44, 45, 44, 5, + 6, 44, 44, 44, 44, 44, 44, 44, + 44, 14, 50, 44, 44, 18, 51, 44, + 44, 44, 44, 44, 44, 44, 51, 2, + 3, 45, 44, 5, 6, 44, 44, 8, + 44, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 2, 44, 45, 44, 5, + 6, 44, 44, 8, 44, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 2, 44, + 45, 44, 5, 6, 44, 44, 52, 44, + 44, 44, 44, 44, 14, 15, 16, 17, + 18, 2, 44, 45, 44, 5, 6, 44, + 44, 44, 44, 44, 44, 44, 44, 14, + 15, 16, 17, 18, 2, 44, 45, 44, + 5, 6, 44, 44, 44, 44, 44, 44, + 44, 44, 14, 15, 16, 44, 18, 2, + 44, 45, 44, 5, 6, 44, 44, 44, + 44, 44, 44, 44, 44, 14, 44, 16, + 44, 18, 2, 44, 45, 44, 5, 6, + 44, 44, 44, 44, 44, 44, 44, 44, + 14, 15, 16, 17, 18, 52, 2, 44, + 45, 44, 5, 6, 44, 44, 52, 44, + 10, 44, 12, 44, 14, 15, 16, 17, + 18, 2, 44, 45, 44, 5, 6, 44, + 44, 52, 44, 10, 44, 44, 44, 14, + 15, 16, 17, 18, 2, 44, 45, 44, + 5, 6, 44, 44, 52, 44, 10, 11, + 12, 44, 14, 15, 16, 17, 18, 2, + 3, 45, 44, 5, 6, 44, 44, 8, + 44, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 22, 23, 24, 21, 25, 26, + 21, 21, 53, 21, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 22, 54, + 24, 21, 25, 26, 21, 21, 27, 21, + 28, 29, 30, 31, 32, 33, 34, 35, + 36, 1, 2, 3, 45, 44, 5, 6, + 1, 1, 8, 44, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 1, 55, + 55, 55, 55, 55, 55, 1, 1, 56, + 0 }; -static const char _myanmar_syllable_machine_trans_targs[] = { - 0, 1, 23, 33, 0, 24, 30, 45, - 35, 48, 36, 41, 42, 43, 26, 38, - 39, 40, 29, 44, 49, 0, 2, 12, - 0, 3, 9, 13, 14, 19, 20, 21, - 5, 16, 17, 18, 8, 22, 4, 6, - 7, 10, 11, 15, 0, 0, 25, 27, - 28, 31, 32, 34, 37, 46, 47, 0, - 0 +static const char _myanmar_syllable_machine_index_defaults[] = { + 0, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 21, 21, 44, + 55, 55, 0 }; -static const char _myanmar_syllable_machine_trans_actions[] = { - 3, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 8, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, - 10 +static const char _myanmar_syllable_machine_trans_cond_spaces[] = { + -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, -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, -1, -1, -1, -1, + -1, 0 }; -static const char _myanmar_syllable_machine_to_state_actions[] = { - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, +static const char _myanmar_syllable_machine_cond_targs[] = { + 0, 1, 23, 33, 0, 24, 30, 45, + 35, 48, 36, 41, 42, 43, 26, 38, + 39, 40, 29, 44, 49, 0, 2, 12, + 0, 3, 9, 13, 14, 19, 20, 21, + 5, 16, 17, 18, 8, 22, 4, 6, + 7, 10, 11, 15, 0, 0, 25, 27, + 28, 31, 32, 34, 37, 46, 47, 0, 0, 0 }; +static const char _myanmar_syllable_machine_cond_actions[] = { + 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 10, 0 +}; + +static const char _myanmar_syllable_machine_to_state_actions[] = { + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + static const char _myanmar_syllable_machine_from_state_actions[] = { - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _myanmar_syllable_machine_eof_cond_spaces[] = { + -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, -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 +}; + +static const char _myanmar_syllable_machine_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _myanmar_syllable_machine_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _myanmar_syllable_machine_eof_cond_keys[] = { + 0 +}; + +static const char _myanmar_syllable_machine_eof_trans[] = { + 0, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 22, 22, 45, + 56, 56, 0 +}; + +static const char _myanmar_syllable_machine_nfa_targs[] = { 0, 0 }; -static const short _myanmar_syllable_machine_eof_trans[] = { - 0, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 45, - 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 22, 22, 45, - 56, 56 +static const char _myanmar_syllable_machine_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _myanmar_syllable_machine_nfa_push_actions[] = { + 0, 0 +}; + +static const char _myanmar_syllable_machine_nfa_pop_trans[] = { + 0, 0 }; static const int myanmar_syllable_machine_start = 0; @@ -286,136 +309,199 @@ static const int myanmar_syllable_machine_error = -1; static const int myanmar_syllable_machine_en_main = 0; -#line 36 "hb-ot-shape-complex-myanmar-machine.rl" - -#line 94 "hb-ot-shape-complex-myanmar-machine.rl" - #define found_syllable(syllable_type) \ - HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ - } HB_STMT_END +HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial=1; \ +} HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act HB_UNUSED; - int cs; - hb_glyph_info_t *info = buffer->info; - -#line 313 "hb-ot-shape-complex-myanmar-machine.hh" + unsigned int p, pe, eof, ts, te, act HB_UNUSED; + int cs; + hb_glyph_info_t *info = buffer->info; + { - cs = myanmar_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = (int)myanmar_syllable_machine_start; + ts = 0; + te = 0; } - -#line 114 "hb-ot-shape-complex-myanmar-machine.rl" - - - p = 0; - pe = eof = buffer->len; - - unsigned int syllable_serial = 1; - -#line 329 "hb-ot-shape-complex-myanmar-machine.hh" + + + p=0; + pe = eof = buffer->len; + + unsigned int syllable_serial=1; + { - int _slen; - int _trans; - const unsigned char *_keys; - const char *_inds; - if ( p == pe ) - goto _test_eof; -_resume: - switch ( _myanmar_syllable_machine_from_state_actions[cs] ) { - case 2: -#line 1 "NONE" - {ts = p;} - break; -#line 343 "hb-ot-shape-complex-myanmar-machine.hh" + int _cpc; + int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { + if ( p == pe ) + goto _test_eof; + _resume: { + switch ( _myanmar_syllable_machine_from_state_actions[cs] ) { + case 2: { + { + #line 1 "NONE" + {ts = p;}} + + break; } + } + + _keys = ( _myanmar_syllable_machine_trans_keys + ((cs<<1))); + _inds = ( _myanmar_syllable_machine_indicies + (_myanmar_syllable_machine_index_offsets[cs])); + + if ( (info[p].myanmar_category()) <= 32 && (info[p].myanmar_category()) >= 1 ) + { + int _ic = (int)_myanmar_syllable_machine_char_class[(int)(info[p].myanmar_category()) - 1]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_myanmar_syllable_machine_index_defaults[cs]; + } + else { + _trans = (unsigned int)_myanmar_syllable_machine_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_myanmar_syllable_machine_cond_targs[_trans]; + + if ( _myanmar_syllable_machine_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _myanmar_syllable_machine_cond_actions[_trans] ) { + case 6: { + { + #line 86 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ + #line 86 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 4: { + { + #line 87 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ + #line 87 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (non_myanmar_cluster); }}} + + break; } + case 10: { + { + #line 88 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ + #line 88 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (punctuation_cluster); }}} + + break; } + case 8: { + { + #line 89 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ + #line 89 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 3: { + { + #line 90 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ + #line 90 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (non_myanmar_cluster); }}} + + break; } + case 5: { + { + #line 86 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p = p - 1;{ + #line 86 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (consonant_syllable); }}} + + break; } + case 7: { + { + #line 89 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p = p - 1;{ + #line 89 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 9: { + { + #line 90 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p = p - 1;{ + #line 90 "hb-ot-shape-complex-myanmar-machine.rl" + found_syllable (non_myanmar_cluster); }}} + + break; } + } + + + } + _again: { + switch ( _myanmar_syllable_machine_to_state_actions[cs] ) { + case 1: { + { + #line 1 "NONE" + {ts = 0;}} + + break; } + } + + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + if ( p == eof ) + { + if ( _myanmar_syllable_machine_eof_cond_spaces[cs] != -1 ) { + _cekeys = ( _myanmar_syllable_machine_eof_cond_keys + (_myanmar_syllable_machine_eof_cond_key_offs[cs])); + _klen = (int)_myanmar_syllable_machine_eof_cond_key_lens[cs]; + _cpc = 0; + { + const char *_lower = _cekeys; + const char *_upper = _cekeys + _klen - 1; + const char *_mid; + while ( 1 ) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( _cpc < (int)(*( _mid)) ) + _upper = _mid - 1; + else if ( _cpc > (int)(*( _mid)) ) + _lower = _mid + 1; + else { + goto _ok; + } + } + cs = -1; + goto _out; + } + _ok: {} + } + if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) { + _trans = (unsigned int)_myanmar_syllable_machine_eof_trans[cs] - 1; + goto _match_cond; + } + } + + } + _out: { {} + } + } } - - _keys = _myanmar_syllable_machine_trans_keys + (cs<<1); - _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs]; - - _slen = _myanmar_syllable_machine_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) && - ( info[p].myanmar_category()) <= _keys[1] ? - ( info[p].myanmar_category()) - _keys[0] : _slen ]; - -_eof_trans: - cs = _myanmar_syllable_machine_trans_targs[_trans]; - - if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 ) - goto _again; - - switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { - case 6: -#line 86 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ found_syllable (consonant_syllable); }} - break; - case 4: -#line 87 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ found_syllable (non_myanmar_cluster); }} - break; - case 10: -#line 88 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ found_syllable (punctuation_cluster); }} - break; - case 8: -#line 89 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ found_syllable (broken_cluster); }} - break; - case 3: -#line 90 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ found_syllable (non_myanmar_cluster); }} - break; - case 5: -#line 86 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p--;{ found_syllable (consonant_syllable); }} - break; - case 7: -#line 89 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p--;{ found_syllable (broken_cluster); }} - break; - case 9: -#line 90 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p--;{ found_syllable (non_myanmar_cluster); }} - break; -#line 393 "hb-ot-shape-complex-myanmar-machine.hh" - } - -_again: - switch ( _myanmar_syllable_machine_to_state_actions[cs] ) { - case 1: -#line 1 "NONE" - {ts = 0;} - break; -#line 402 "hb-ot-shape-complex-myanmar-machine.hh" - } - - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) - { - if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) { - _trans = _myanmar_syllable_machine_eof_trans[cs] - 1; - goto _eof_trans; - } - } - - } - -#line 122 "hb-ot-shape-complex-myanmar-machine.rl" - + } #undef found_syllable diff --git a/src/hb-ot-shape-complex-use-machine.hh b/src/hb-ot-shape-complex-use-machine.hh index f83e09f..e4b1884 100644 --- a/src/hb-ot-shape-complex-use-machine.hh +++ b/src/hb-ot-shape-complex-use-machine.hh @@ -1,32 +1,30 @@ - -#line 1 "hb-ot-shape-complex-use-machine.rl" /* - * Copyright © 2015 Mozilla Foundation. - * Copyright © 2015 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. - * - * Mozilla Author(s): Jonathan Kew - * Google Author(s): Behdad Esfahbod - */ +* Copyright © 2015 Mozilla Foundation. +* Copyright © 2015 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. +* +* Mozilla Author(s): Jonathan Kew +* Google Author(s): Behdad Esfahbod +*/ #ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH @@ -34,332 +32,370 @@ #include "hb.hh" -#line 38 "hb-ot-shape-complex-use-machine.hh" static const unsigned char _use_syllable_machine_trans_keys[] = { - 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 44u, 21u, 21u, 8u, 44u, 8u, 44u, - 1u, 15u, 1u, 1u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, - 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, - 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 8u, 44u, 13u, 21u, 4u, 4u, 13u, 13u, - 8u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 39u, - 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, - 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 1u, 15u, - 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u, 1u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, - 21u, 42u, 1u, 5u, 0 + 7u, 33u, 1u, 9u, 1u, 1u, 7u, 33u, + 0u, 33u, 12u, 12u, 5u, 33u, 5u, 33u, + 1u, 9u, 1u, 1u, 5u, 33u, 5u, 33u, + 5u, 29u, 5u, 17u, 5u, 17u, 5u, 17u, + 5u, 29u, 5u, 29u, 5u, 29u, 5u, 33u, + 5u, 33u, 5u, 33u, 5u, 33u, 5u, 33u, + 5u, 33u, 5u, 33u, 5u, 33u, 1u, 29u, + 5u, 33u, 8u, 12u, 3u, 3u, 8u, 8u, + 5u, 33u, 5u, 33u, 30u, 31u, 31u, 31u, + 5u, 33u, 5u, 33u, 5u, 33u, 5u, 29u, + 5u, 17u, 5u, 17u, 5u, 17u, 5u, 29u, + 5u, 29u, 5u, 29u, 5u, 33u, 5u, 33u, + 5u, 33u, 5u, 33u, 5u, 33u, 5u, 33u, + 5u, 33u, 5u, 33u, 1u, 29u, 1u, 9u, + 3u, 3u, 8u, 12u, 8u, 8u, 7u, 33u, + 1u, 33u, 5u, 33u, 30u, 31u, 31u, 31u, + 12u, 31u, 1u, 4u, 0u }; -static const char _use_syllable_machine_key_spans[] = { - 33, 15, 1, 33, 45, 1, 37, 37, - 15, 1, 37, 37, 32, 19, 19, 19, - 32, 32, 32, 37, 37, 37, 37, 37, - 37, 37, 37, 39, 37, 9, 1, 1, - 37, 37, 2, 1, 37, 37, 37, 32, - 19, 19, 19, 32, 32, 32, 37, 37, - 37, 37, 37, 37, 37, 37, 39, 15, - 1, 9, 1, 33, 44, 37, 2, 1, - 22, 5 +static const char _use_syllable_machine_char_class[] = { + 0, 1, 2, 0, 3, 4, 2, 2, + 5, 2, 2, 6, 7, 8, 2, 9, + 0, 0, 10, 11, 2, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 2, 27, 28, 29, + 2, 30, 31, 32, 33, 0 }; static const short _use_syllable_machine_index_offsets[] = { - 0, 34, 50, 52, 86, 132, 134, 172, - 210, 226, 228, 266, 304, 337, 357, 377, - 397, 430, 463, 496, 534, 572, 610, 648, - 686, 724, 762, 800, 840, 878, 888, 890, - 892, 930, 968, 971, 973, 1011, 1049, 1087, - 1120, 1140, 1160, 1180, 1213, 1246, 1279, 1317, - 1355, 1393, 1431, 1469, 1507, 1545, 1583, 1623, - 1639, 1641, 1651, 1653, 1687, 1732, 1770, 1773, - 1775, 1798 + 0, 27, 36, 37, 64, 98, 99, 128, + 157, 166, 167, 196, 225, 250, 263, 276, + 289, 314, 339, 364, 393, 422, 451, 480, + 509, 538, 567, 596, 625, 654, 659, 660, + 661, 690, 719, 721, 722, 751, 780, 809, + 834, 847, 860, 873, 898, 923, 948, 977, + 1006, 1035, 1064, 1093, 1122, 1151, 1180, 1209, + 1218, 1219, 1224, 1225, 1252, 1285, 1314, 1316, + 1317, 1337, 0 }; static const char _use_syllable_machine_indicies[] = { - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 4, 2, 3, 2, 6, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 6, 5, 7, 8, - 9, 7, 10, 11, 9, 9, 12, 9, - 9, 3, 13, 14, 9, 15, 7, 7, - 16, 17, 9, 9, 18, 19, 20, 21, - 22, 23, 24, 18, 25, 26, 27, 28, - 29, 30, 9, 31, 32, 33, 9, 34, - 35, 36, 37, 9, 39, 38, 41, 40, - 40, 42, 1, 40, 40, 43, 40, 40, - 40, 40, 40, 44, 45, 46, 47, 48, - 49, 50, 51, 45, 52, 44, 53, 54, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 60, 40, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 61, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 53, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 60, 40, 42, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 63, 62, 42, 62, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 53, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 60, 40, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 40, 40, 40, - 40, 40, 40, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 46, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 46, - 47, 48, 49, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 57, 58, 59, - 40, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 47, 48, 49, 40, 41, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 48, 49, - 40, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 49, 40, 41, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 47, 48, 49, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 57, 58, 59, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 58, 59, 40, 41, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 47, - 48, 49, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 59, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 46, - 47, 48, 49, 40, 40, 40, 40, 40, - 40, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 46, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 46, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 40, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 46, 40, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 46, 47, 48, 49, 40, - 40, 40, 40, 40, 40, 40, 40, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 46, 40, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 40, 51, 45, - 40, 40, 40, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 46, 40, - 41, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 45, 46, - 47, 48, 49, 40, 64, 45, 40, 40, - 40, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 46, 40, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 45, 46, 47, 48, - 49, 40, 40, 45, 40, 40, 40, 54, - 55, 56, 40, 57, 58, 59, 40, 40, - 40, 40, 46, 40, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 40, 40, 40, 54, 55, 56, - 40, 57, 58, 59, 40, 40, 40, 40, - 46, 40, 41, 40, 40, 42, 1, 40, - 40, 43, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 50, 51, 45, - 52, 40, 53, 54, 55, 56, 40, 57, - 58, 59, 40, 40, 40, 40, 60, 40, - 42, 62, 62, 62, 62, 62, 62, 41, - 62, 62, 62, 62, 62, 62, 63, 62, - 62, 62, 62, 62, 62, 62, 46, 47, - 48, 49, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 57, 58, 59, 62, - 41, 40, 40, 42, 1, 40, 40, 43, - 40, 40, 40, 40, 40, 40, 45, 46, - 47, 48, 49, 50, 51, 45, 52, 44, - 53, 54, 55, 56, 40, 57, 58, 59, - 40, 40, 40, 40, 60, 40, 66, 65, - 65, 65, 65, 65, 65, 65, 67, 65, - 10, 68, 66, 65, 41, 40, 40, 42, - 1, 40, 40, 43, 40, 40, 40, 40, - 40, 69, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 44, 53, 54, 55, 56, - 40, 57, 58, 59, 40, 70, 71, 40, - 60, 40, 41, 40, 40, 42, 1, 40, - 40, 43, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 50, 51, 45, - 52, 44, 53, 54, 55, 56, 40, 57, - 58, 59, 40, 70, 71, 40, 60, 40, - 70, 71, 72, 71, 72, 12, 73, 73, - 3, 6, 73, 73, 74, 73, 73, 73, - 73, 73, 75, 18, 19, 20, 21, 22, - 23, 24, 18, 25, 27, 27, 28, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 37, 73, 12, 73, 73, 3, 6, - 73, 73, 74, 73, 73, 73, 73, 73, - 73, 18, 19, 20, 21, 22, 23, 24, - 18, 25, 27, 27, 28, 29, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 37, - 73, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 73, 73, 73, 73, - 73, 73, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 19, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 19, 20, - 21, 22, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 31, 32, 33, 73, - 12, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 20, 21, 22, 73, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 21, 22, 73, - 12, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 22, 73, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 20, 21, 22, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 31, 32, 33, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 20, 21, 22, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 32, 33, 73, 12, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 33, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 19, 20, - 21, 22, 73, 73, 73, 73, 73, 73, - 28, 29, 30, 73, 31, 32, 33, 73, - 73, 73, 73, 19, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 19, 20, 21, 22, - 73, 73, 73, 73, 73, 73, 73, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 19, 73, 12, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 19, 20, 21, 22, 73, 73, - 73, 73, 73, 73, 73, 73, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 19, - 73, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 73, 24, 18, 73, - 73, 73, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 19, 73, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 18, 19, 20, - 21, 22, 73, 76, 18, 73, 73, 73, - 28, 29, 30, 73, 31, 32, 33, 73, - 73, 73, 73, 19, 73, 12, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 18, 19, 20, 21, 22, - 73, 73, 18, 73, 73, 73, 28, 29, - 30, 73, 31, 32, 33, 73, 73, 73, - 73, 19, 73, 12, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 18, 19, 20, 21, 22, 23, 24, - 18, 73, 73, 73, 28, 29, 30, 73, - 31, 32, 33, 73, 73, 73, 73, 19, - 73, 12, 73, 73, 3, 6, 73, 73, - 74, 73, 73, 73, 73, 73, 73, 18, - 19, 20, 21, 22, 23, 24, 18, 25, - 73, 27, 28, 29, 30, 73, 31, 32, - 33, 73, 73, 73, 73, 37, 73, 3, - 73, 73, 73, 73, 73, 73, 12, 73, - 73, 73, 73, 73, 73, 4, 73, 73, - 73, 73, 73, 73, 73, 19, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 31, 32, 33, 73, 3, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 4, 77, 78, - 73, 14, 73, 73, 73, 73, 73, 73, - 73, 79, 73, 14, 73, 6, 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, 77, 77, 77, 77, 6, 77, 8, - 73, 73, 73, 8, 73, 73, 12, 73, - 73, 3, 6, 14, 73, 74, 73, 73, - 73, 73, 73, 73, 18, 19, 20, 21, - 22, 23, 24, 18, 25, 26, 27, 28, - 29, 30, 73, 31, 32, 33, 73, 34, - 35, 73, 37, 73, 12, 73, 73, 3, - 6, 73, 73, 74, 73, 73, 73, 73, - 73, 73, 18, 19, 20, 21, 22, 23, - 24, 18, 25, 26, 27, 28, 29, 30, - 73, 31, 32, 33, 73, 73, 73, 73, - 37, 73, 34, 35, 73, 35, 73, 70, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 70, 71, 72, 8, 77, - 77, 77, 8, 77, 0 + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 3, 2, 2, 2, 2, + 2, 2, 2, 4, 3, 6, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 6, + 7, 8, 9, 10, 11, 12, 3, 13, + 14, 15, 16, 17, 9, 18, 19, 20, + 21, 22, 23, 24, 18, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 39, 41, 42, 1, 40, 43, + 40, 40, 44, 45, 46, 47, 48, 49, + 50, 51, 45, 52, 44, 53, 54, 55, + 56, 57, 58, 59, 40, 40, 40, 60, + 41, 42, 1, 40, 43, 40, 40, 61, + 45, 46, 47, 48, 49, 50, 51, 45, + 52, 53, 53, 54, 55, 56, 57, 58, + 59, 40, 40, 40, 60, 42, 62, 62, + 62, 62, 62, 62, 62, 63, 42, 41, + 42, 1, 40, 43, 40, 40, 40, 45, + 46, 47, 48, 49, 50, 51, 45, 52, + 53, 53, 54, 55, 56, 57, 58, 59, + 40, 40, 40, 60, 41, 40, 40, 40, + 40, 40, 40, 40, 45, 46, 47, 48, + 49, 40, 40, 40, 40, 40, 40, 54, + 55, 56, 57, 58, 59, 40, 40, 40, + 46, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 46, 47, 48, 49, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 57, + 58, 59, 41, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 47, 48, 49, 41, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 48, 49, 41, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 49, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 47, 48, 49, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 57, + 58, 59, 41, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 47, 48, 49, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 58, 59, 41, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 47, 48, 49, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 59, 41, 40, 40, 40, + 40, 40, 40, 40, 40, 46, 47, 48, + 49, 40, 40, 40, 40, 40, 40, 54, + 55, 56, 57, 58, 59, 40, 40, 40, + 46, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 46, 47, 48, 49, 40, 40, + 40, 40, 40, 40, 40, 55, 56, 57, + 58, 59, 40, 40, 40, 46, 41, 40, + 40, 40, 40, 40, 40, 40, 40, 46, + 47, 48, 49, 40, 40, 40, 40, 40, + 40, 40, 40, 56, 57, 58, 59, 40, + 40, 40, 46, 41, 40, 40, 40, 40, + 40, 40, 40, 45, 46, 47, 48, 49, + 40, 51, 45, 40, 40, 40, 54, 55, + 56, 57, 58, 59, 40, 40, 40, 46, + 41, 40, 40, 40, 40, 40, 40, 40, + 45, 46, 47, 48, 49, 40, 64, 45, + 40, 40, 40, 54, 55, 56, 57, 58, + 59, 40, 40, 40, 46, 41, 40, 40, + 40, 40, 40, 40, 40, 45, 46, 47, + 48, 49, 40, 40, 45, 40, 40, 40, + 54, 55, 56, 57, 58, 59, 40, 40, + 40, 46, 41, 40, 40, 40, 40, 40, + 40, 40, 45, 46, 47, 48, 49, 50, + 51, 45, 40, 40, 40, 54, 55, 56, + 57, 58, 59, 40, 40, 40, 46, 41, + 42, 1, 40, 43, 40, 40, 40, 45, + 46, 47, 48, 49, 50, 51, 45, 52, + 40, 53, 54, 55, 56, 57, 58, 59, + 40, 40, 40, 60, 42, 62, 62, 62, + 41, 62, 62, 62, 63, 62, 62, 62, + 62, 46, 47, 48, 49, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 57, 58, + 59, 41, 42, 1, 40, 43, 40, 40, + 40, 45, 46, 47, 48, 49, 50, 51, + 45, 52, 44, 53, 54, 55, 56, 57, + 58, 59, 40, 40, 40, 60, 66, 65, + 65, 65, 67, 10, 66, 41, 42, 1, + 40, 43, 40, 40, 69, 45, 46, 47, + 48, 49, 50, 51, 45, 52, 44, 53, + 54, 55, 56, 57, 58, 59, 70, 71, + 40, 60, 41, 42, 1, 40, 43, 40, + 40, 40, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 44, 53, 54, 55, 56, + 57, 58, 59, 70, 71, 40, 60, 70, + 71, 71, 12, 3, 6, 73, 74, 73, + 73, 75, 18, 19, 20, 21, 22, 23, + 24, 18, 25, 27, 27, 28, 29, 30, + 31, 32, 33, 73, 73, 73, 37, 12, + 3, 6, 73, 74, 73, 73, 73, 18, + 19, 20, 21, 22, 23, 24, 18, 25, + 27, 27, 28, 29, 30, 31, 32, 33, + 73, 73, 73, 37, 12, 73, 73, 73, + 73, 73, 73, 73, 18, 19, 20, 21, + 22, 73, 73, 73, 73, 73, 73, 28, + 29, 30, 31, 32, 33, 73, 73, 73, + 19, 12, 73, 73, 73, 73, 73, 73, + 73, 73, 19, 20, 21, 22, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 31, + 32, 33, 12, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 20, 21, 22, 12, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 21, 22, 12, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 22, 12, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 20, 21, 22, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 31, + 32, 33, 12, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 20, 21, 22, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 32, 33, 12, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 20, 21, 22, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 33, 12, 73, 73, 73, + 73, 73, 73, 73, 73, 19, 20, 21, + 22, 73, 73, 73, 73, 73, 73, 28, + 29, 30, 31, 32, 33, 73, 73, 73, + 19, 12, 73, 73, 73, 73, 73, 73, + 73, 73, 19, 20, 21, 22, 73, 73, + 73, 73, 73, 73, 73, 29, 30, 31, + 32, 33, 73, 73, 73, 19, 12, 73, + 73, 73, 73, 73, 73, 73, 73, 19, + 20, 21, 22, 73, 73, 73, 73, 73, + 73, 73, 73, 30, 31, 32, 33, 73, + 73, 73, 19, 12, 73, 73, 73, 73, + 73, 73, 73, 18, 19, 20, 21, 22, + 73, 24, 18, 73, 73, 73, 28, 29, + 30, 31, 32, 33, 73, 73, 73, 19, + 12, 73, 73, 73, 73, 73, 73, 73, + 18, 19, 20, 21, 22, 73, 76, 18, + 73, 73, 73, 28, 29, 30, 31, 32, + 33, 73, 73, 73, 19, 12, 73, 73, + 73, 73, 73, 73, 73, 18, 19, 20, + 21, 22, 73, 73, 18, 73, 73, 73, + 28, 29, 30, 31, 32, 33, 73, 73, + 73, 19, 12, 73, 73, 73, 73, 73, + 73, 73, 18, 19, 20, 21, 22, 23, + 24, 18, 73, 73, 73, 28, 29, 30, + 31, 32, 33, 73, 73, 73, 19, 12, + 3, 6, 73, 74, 73, 73, 73, 18, + 19, 20, 21, 22, 23, 24, 18, 25, + 73, 27, 28, 29, 30, 31, 32, 33, + 73, 73, 73, 37, 3, 73, 73, 73, + 12, 73, 73, 73, 4, 73, 73, 73, + 73, 19, 20, 21, 22, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 31, 32, + 33, 3, 77, 77, 77, 77, 77, 77, + 77, 4, 78, 14, 73, 73, 73, 79, + 14, 6, 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, 6, 8, 73, 73, 8, + 12, 3, 6, 14, 74, 73, 73, 73, + 18, 19, 20, 21, 22, 23, 24, 18, + 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 73, 37, 12, 3, 6, + 73, 74, 73, 73, 73, 18, 19, 20, + 21, 22, 23, 24, 18, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 73, 73, + 73, 37, 34, 35, 35, 70, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 70, + 71, 8, 77, 77, 8, 0 +}; + +static const char _use_syllable_machine_index_defaults[] = { + 0, 2, 2, 5, 9, 38, 40, 40, + 62, 62, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 62, 40, 65, 68, 65, + 40, 40, 72, 72, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 77, + 73, 73, 73, 77, 73, 73, 73, 73, + 72, 77, 0 }; -static const char _use_syllable_machine_trans_targs[] = { - 4, 8, 4, 36, 2, 4, 1, 5, - 6, 4, 29, 32, 4, 55, 56, 59, - 60, 64, 38, 39, 40, 41, 42, 49, - 50, 52, 61, 53, 46, 47, 48, 43, - 44, 45, 62, 63, 65, 54, 4, 4, - 4, 4, 7, 0, 28, 11, 12, 13, - 14, 15, 22, 23, 25, 26, 19, 20, - 21, 16, 17, 18, 27, 10, 4, 9, - 24, 4, 30, 31, 4, 33, 34, 35, - 4, 4, 3, 37, 51, 4, 57, 58 +static const char _use_syllable_machine_trans_cond_spaces[] = { + -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, -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, -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, -1, -1, + 0 }; -static const char _use_syllable_machine_trans_actions[] = { - 1, 0, 2, 3, 0, 4, 0, 0, - 7, 8, 0, 7, 9, 10, 0, 10, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 11, 12, - 13, 14, 7, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 7, 15, 0, - 0, 16, 0, 0, 17, 7, 0, 0, - 18, 19, 0, 3, 0, 20, 0, 0 +static const char _use_syllable_machine_cond_targs[] = { + 4, 8, 4, 36, 2, 4, 1, 5, + 6, 4, 29, 32, 4, 55, 56, 59, + 60, 64, 38, 39, 40, 41, 42, 49, + 50, 52, 61, 53, 46, 47, 48, 43, + 44, 45, 62, 63, 65, 54, 4, 4, + 4, 4, 7, 0, 28, 11, 12, 13, + 14, 15, 22, 23, 25, 26, 19, 20, + 21, 16, 17, 18, 27, 10, 4, 9, + 24, 4, 30, 31, 4, 33, 34, 35, + 4, 4, 3, 37, 51, 4, 57, 58, + 0 +}; + +static const char _use_syllable_machine_cond_actions[] = { + 1, 0, 2, 3, 0, 4, 0, 0, + 7, 8, 0, 7, 9, 10, 0, 10, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 11, 12, + 13, 14, 7, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 7, 15, 0, + 0, 16, 0, 0, 17, 7, 0, 0, + 18, 19, 0, 3, 0, 20, 0, 0, + 0 }; static const char _use_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 }; static const char _use_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _use_syllable_machine_eof_cond_spaces[] = { + -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, -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, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0 +}; + +static const char _use_syllable_machine_eof_cond_key_offs[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _use_syllable_machine_eof_cond_key_lens[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _use_syllable_machine_eof_cond_keys[] = { + 0 +}; + +static const char _use_syllable_machine_eof_trans[] = { + 1, 3, 3, 6, 0, 39, 41, 41, + 63, 63, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 63, 41, 66, 69, 66, + 41, 41, 73, 73, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 78, + 74, 74, 74, 78, 74, 74, 74, 74, + 73, 78, 0 +}; + +static const char _use_syllable_machine_nfa_targs[] = { + 0, 0 +}; + +static const char _use_syllable_machine_nfa_offsets[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 +}; + +static const char _use_syllable_machine_nfa_push_actions[] = { 0, 0 }; -static const short _use_syllable_machine_eof_trans[] = { - 1, 3, 3, 6, 0, 39, 41, 41, - 63, 63, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 63, 41, 66, 69, 66, - 41, 41, 73, 73, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 78, - 74, 74, 74, 78, 74, 74, 74, 74, - 73, 78 +static const char _use_syllable_machine_nfa_pop_trans[] = { + 0, 0 }; static const int use_syllable_machine_start = 4; @@ -369,188 +405,292 @@ static const int use_syllable_machine_error = -1; static const int use_syllable_machine_en_main = 4; -#line 38 "hb-ot-shape-complex-use-machine.rl" - -#line 146 "hb-ot-shape-complex-use-machine.rl" - #define found_syllable(syllable_type) \ - HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ - } HB_STMT_END +HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial=1; \ +} HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act; - int cs; - hb_glyph_info_t *info = buffer->info; - -#line 396 "hb-ot-shape-complex-use-machine.hh" + unsigned int p, pe, eof, ts, te, act; + int cs; + hb_glyph_info_t *info = buffer->info; + { - cs = use_syllable_machine_start; - ts = 0; - te = 0; - act = 0; - } - -#line 166 "hb-ot-shape-complex-use-machine.rl" - - - p = 0; - pe = eof = buffer->len; - - unsigned int syllable_serial = 1; - -#line 412 "hb-ot-shape-complex-use-machine.hh" - { - int _slen; - int _trans; - const unsigned char *_keys; - const char *_inds; - if ( p == pe ) - goto _test_eof; -_resume: - switch ( _use_syllable_machine_from_state_actions[cs] ) { - case 6: -#line 1 "NONE" - {ts = p;} - break; -#line 426 "hb-ot-shape-complex-use-machine.hh" - } - - _keys = _use_syllable_machine_trans_keys + (cs<<1); - _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs]; - - _slen = _use_syllable_machine_key_spans[cs]; - _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) && - ( info[p].use_category()) <= _keys[1] ? - ( info[p].use_category()) - _keys[0] : _slen ]; - -_eof_trans: - cs = _use_syllable_machine_trans_targs[_trans]; - - if ( _use_syllable_machine_trans_actions[_trans] == 0 ) - goto _again; - - switch ( _use_syllable_machine_trans_actions[_trans] ) { - case 7: -#line 1 "NONE" - {te = p+1;} - break; - case 12: -#line 135 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ found_syllable (independent_cluster); }} - break; - case 14: -#line 137 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ found_syllable (standard_cluster); }} - break; - case 9: -#line 141 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ found_syllable (broken_cluster); }} - break; - case 8: -#line 142 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ found_syllable (non_cluster); }} - break; - case 11: -#line 135 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (independent_cluster); }} - break; - case 15: -#line 136 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (virama_terminated_cluster); }} - break; - case 13: -#line 137 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (standard_cluster); }} - break; - case 17: -#line 138 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }} - break; - case 16: -#line 139 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (numeral_cluster); }} - break; - case 18: -#line 140 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (symbol_cluster); }} - break; - case 19: -#line 141 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (broken_cluster); }} - break; - case 20: -#line 142 "hb-ot-shape-complex-use-machine.rl" - {te = p;p--;{ found_syllable (non_cluster); }} - break; - case 1: -#line 137 "hb-ot-shape-complex-use-machine.rl" - {{p = ((te))-1;}{ found_syllable (standard_cluster); }} - break; - case 4: -#line 141 "hb-ot-shape-complex-use-machine.rl" - {{p = ((te))-1;}{ found_syllable (broken_cluster); }} - break; - case 2: -#line 1 "NONE" - { switch( act ) { - case 7: - {{p = ((te))-1;} found_syllable (broken_cluster); } - break; - case 8: - {{p = ((te))-1;} found_syllable (non_cluster); } - break; - } - } - break; - case 3: -#line 1 "NONE" - {te = p+1;} -#line 141 "hb-ot-shape-complex-use-machine.rl" - {act = 7;} - break; - case 10: -#line 1 "NONE" - {te = p+1;} -#line 142 "hb-ot-shape-complex-use-machine.rl" - {act = 8;} - break; -#line 528 "hb-ot-shape-complex-use-machine.hh" + cs = (int)use_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - -_again: - switch ( _use_syllable_machine_to_state_actions[cs] ) { - case 5: -#line 1 "NONE" - {ts = 0;} - break; -#line 537 "hb-ot-shape-complex-use-machine.hh" - } - - if ( ++p != pe ) - goto _resume; - _test_eof: {} - if ( p == eof ) + + + p=0; + pe = eof = buffer->len; + + unsigned int syllable_serial=1; + { - if ( _use_syllable_machine_eof_trans[cs] > 0 ) { - _trans = _use_syllable_machine_eof_trans[cs] - 1; - goto _eof_trans; + int _cpc; + int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { + if ( p == pe ) + goto _test_eof; + _resume: { + switch ( _use_syllable_machine_from_state_actions[cs] ) { + case 6: { + { + #line 1 "NONE" + {ts = p;}} + + break; } + } + + _keys = ( _use_syllable_machine_trans_keys + ((cs<<1))); + _inds = ( _use_syllable_machine_indicies + (_use_syllable_machine_index_offsets[cs])); + + if ( (info[p].use_category()) <= 44 ) + { + int _ic = (int)_use_syllable_machine_char_class[(int)(info[p].use_category()) - 0]; + if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) + _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); + else + _trans = (unsigned int)_use_syllable_machine_index_defaults[cs]; + } + else { + _trans = (unsigned int)_use_syllable_machine_index_defaults[cs]; + } + + goto _match_cond; + } + _match_cond: { + cs = (int)_use_syllable_machine_cond_targs[_trans]; + + if ( _use_syllable_machine_cond_actions[_trans] == 0 ) + goto _again; + + switch ( _use_syllable_machine_cond_actions[_trans] ) { + case 7: { + { + #line 1 "NONE" + {te = p+1;}} + + break; } + case 12: { + { + #line 135 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ + #line 135 "hb-ot-shape-complex-use-machine.rl" + found_syllable (independent_cluster); }}} + + break; } + case 14: { + { + #line 137 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ + #line 137 "hb-ot-shape-complex-use-machine.rl" + found_syllable (standard_cluster); }}} + + break; } + case 9: { + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ + #line 141 "hb-ot-shape-complex-use-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 8: { + { + #line 142 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ + #line 142 "hb-ot-shape-complex-use-machine.rl" + found_syllable (non_cluster); }}} + + break; } + case 11: { + { + #line 135 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 135 "hb-ot-shape-complex-use-machine.rl" + found_syllable (independent_cluster); }}} + + break; } + case 15: { + { + #line 136 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 136 "hb-ot-shape-complex-use-machine.rl" + found_syllable (virama_terminated_cluster); }}} + + break; } + case 13: { + { + #line 137 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 137 "hb-ot-shape-complex-use-machine.rl" + found_syllable (standard_cluster); }}} + + break; } + case 17: { + { + #line 138 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 138 "hb-ot-shape-complex-use-machine.rl" + found_syllable (number_joiner_terminated_cluster); }}} + + break; } + case 16: { + { + #line 139 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 139 "hb-ot-shape-complex-use-machine.rl" + found_syllable (numeral_cluster); }}} + + break; } + case 18: { + { + #line 140 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 140 "hb-ot-shape-complex-use-machine.rl" + found_syllable (symbol_cluster); }}} + + break; } + case 19: { + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 141 "hb-ot-shape-complex-use-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 20: { + { + #line 142 "hb-ot-shape-complex-use-machine.rl" + {te = p;p = p - 1;{ + #line 142 "hb-ot-shape-complex-use-machine.rl" + found_syllable (non_cluster); }}} + + break; } + case 1: { + { + #line 137 "hb-ot-shape-complex-use-machine.rl" + {p = ((te))-1; + { + #line 137 "hb-ot-shape-complex-use-machine.rl" + found_syllable (standard_cluster); }}} + + break; } + case 4: { + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + {p = ((te))-1; + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + found_syllable (broken_cluster); }}} + + break; } + case 2: { + { + #line 1 "NONE" + {switch( act ) { + case 7: { + p = ((te))-1; + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + found_syllable (broken_cluster); } break; } + case 8: { + p = ((te))-1; + { + #line 142 "hb-ot-shape-complex-use-machine.rl" + found_syllable (non_cluster); } break; } + }} + } + + break; } + case 3: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 141 "hb-ot-shape-complex-use-machine.rl" + {act = 7;}} + + break; } + case 10: { + { + #line 1 "NONE" + {te = p+1;}} + { + #line 142 "hb-ot-shape-complex-use-machine.rl" + {act = 8;}} + + break; } + } + + + } + _again: { + switch ( _use_syllable_machine_to_state_actions[cs] ) { + case 5: { + { + #line 1 "NONE" + {ts = 0;}} + + break; } + } + + p += 1; + if ( p != pe ) + goto _resume; + } + _test_eof: { {} + if ( p == eof ) + { + if ( _use_syllable_machine_eof_cond_spaces[cs] != -1 ) { + _cekeys = ( _use_syllable_machine_eof_cond_keys + (_use_syllable_machine_eof_cond_key_offs[cs])); + _klen = (int)_use_syllable_machine_eof_cond_key_lens[cs]; + _cpc = 0; + { + const char *_lower = _cekeys; + const char *_upper = _cekeys + _klen - 1; + const char *_mid; + while ( 1 ) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( _cpc < (int)(*( _mid)) ) + _upper = _mid - 1; + else if ( _cpc > (int)(*( _mid)) ) + _lower = _mid + 1; + else { + goto _ok; + } + } + cs = -1; + goto _out; + } + _ok: {} + } + if ( _use_syllable_machine_eof_trans[cs] > 0 ) { + _trans = (unsigned int)_use_syllable_machine_eof_trans[cs] - 1; + goto _match_cond; + } + } + + } + _out: { {} + } + } } - } - - } - -#line 174 "hb-ot-shape-complex-use-machine.rl" - + } #undef found_syllable -- 2.7.4