10ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
29fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 1 "../../src/hb-buffer-deserialize-json.rl"
30ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien/*
40ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Copyright © 2013  Google, Inc.
50ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
60ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *  This is part of HarfBuzz, a text shaping library.
70ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
80ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Permission is hereby granted, without written agreement and without
90ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * license or royalty fees, to use, copy, modify, and distribute this
100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * software and its documentation for any purpose, provided that the
110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * above copyright notice and the following two paragraphs appear in
120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * all copies of this software.
130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DAMAGE.
190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Google Author(s): Behdad Esfahbod
270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien */
280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#ifndef HB_BUFFER_DESERIALIZE_JSON_HH
300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#define HB_BUFFER_DESERIALIZE_JSON_HH
310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#include "hb-private.hh"
330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 36 "hb-buffer-deserialize-json.hh.tmp"
360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const unsigned char _deserialize_json_trans_keys[] = {
370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u,
380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u,
390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u,
400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u,
410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u,
420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0
430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_json_key_spans[] = {
460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 115, 26, 7, 2, 1, 50, 49,
470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	10, 117, 117, 117, 1, 50, 49, 10,
480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	117, 117, 1, 1, 50, 49, 117, 117,
490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 1, 50, 49, 10, 117, 117, 1,
500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	50, 49, 10, 117, 117, 1, 50, 49,
510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	58, 89, 117, 117, 85, 115, 0
520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const short _deserialize_json_index_offsets[] = {
550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 116, 143, 151, 154, 156, 207,
560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	257, 268, 386, 504, 622, 624, 675, 725,
570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	736, 854, 972, 974, 976, 1027, 1077, 1195,
580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666,
590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069,
600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2119, 2178, 2268, 2386, 2504, 2590, 2706
610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_json_indicies[] = {
640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 0, 1, 1,
650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 1, 1, 1, 1, 1, 1, 1,
680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 2, 1, 3, 3, 3,
790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	3, 3, 1, 1, 1, 1, 1, 1,
800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 3, 1, 4, 1,
820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	5, 1, 6, 7, 1, 1, 8, 1,
830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 10, 1, 11, 1, 11, 11, 11,
840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	11, 11, 1, 1, 1, 1, 1, 1,
850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 11, 1, 1, 1,
870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 12, 1,
900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	12, 12, 12, 12, 12, 1, 1, 1,
910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 12,
930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 13, 1, 1, 14,
950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 15, 15, 15, 15, 15, 15, 15,
960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 1, 16, 17, 17, 17, 17, 17,
970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	17, 17, 17, 17, 1, 18, 18, 18,
980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	18, 18, 1, 1, 1, 1, 1, 1,
990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 18, 1, 1, 1,
1010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	19, 1, 1, 1, 1, 1, 1, 1,
1030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 20, 1, 21, 21, 21, 21, 21,
1130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 21, 1, 1, 1, 1, 1,
1160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 3, 1,
1170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 22,
1270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 18, 18, 18, 18, 18, 1, 1,
1280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	18, 1, 1, 1, 1, 1, 1, 1,
1310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 19, 1, 1, 1,
1320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	17, 17, 17, 17, 17, 17, 17, 17,
1330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	17, 17, 1, 1, 1, 1, 1, 1,
1340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 20, 1, 23,
1420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 23, 23, 23, 23, 23, 1, 1,
1430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	23, 1, 1, 1, 1, 1, 1, 1,
1460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 24, 1, 24, 24, 24, 24,
1490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	24, 1, 1, 1, 1, 1, 1, 1,
1500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 24, 1, 1, 1, 1,
1520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	25, 1, 1, 26, 27, 27, 27, 27,
1540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	27, 27, 27, 27, 27, 1, 28, 29,
1550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	29, 29, 29, 29, 29, 29, 29, 29,
1560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 30, 30, 30, 30, 30, 1, 1,
1570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	30, 1, 1, 1, 1, 1, 1, 1,
1600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 31, 1, 1, 1,
1610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 32, 1, 30,
1710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	30, 30, 30, 30, 1, 1, 1, 1,
1720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 30, 1,
1740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 31, 1, 1, 1, 29, 29,
1760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	29, 29, 29, 29, 29, 29, 29, 29,
1770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 32, 1, 33, 1, 34,
1860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 34, 34, 34, 34, 34, 1, 1,
1870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	34, 1, 1, 1, 1, 1, 1, 1,
1900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 35, 1, 35, 35, 35, 35,
1930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	35, 1, 1, 1, 1, 1, 1, 1,
1940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 35, 1, 1, 1, 1,
1960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 36, 37, 37, 37, 37,
1980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	37, 37, 37, 37, 37, 1, 38, 38,
1990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	38, 38, 38, 1, 1, 1, 1, 1,
2000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 38, 1, 1,
2020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 39, 1, 1, 1, 1, 1, 1,
2040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 40, 1, 38, 38, 38, 38,
2140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	38, 1, 1, 1, 1, 1, 1, 1,
2150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 38, 1, 1, 1, 1,
2170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 39,
2180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 41, 41, 41, 41, 41,
2190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	41, 41, 41, 41, 41, 1, 1, 1,
2200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	40, 1, 42, 43, 1, 44, 1, 44,
2290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	44, 44, 44, 44, 1, 1, 1, 1,
2300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 44, 1,
2320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	45, 1, 45, 45, 45, 45, 45, 1,
2360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 45, 1, 1, 1, 1, 1, 1,
2390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 46, 1,
2400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 47, 48, 48, 48, 48, 48, 48,
2410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	48, 48, 48, 1, 49, 50, 50, 50,
2420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	50, 50, 50, 50, 50, 50, 1, 51,
2430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	51, 51, 51, 51, 1, 1, 1, 1,
2440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 51, 1,
2460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 52, 1, 1, 1, 1, 1,
2480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 53, 1, 51, 51, 51,
2580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	51, 51, 1, 1, 1, 1, 1, 1,
2590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 51, 1, 1, 1,
2610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	52, 1, 1, 1, 50, 50, 50, 50,
2630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	50, 50, 50, 50, 50, 50, 1, 1,
2640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 53, 1, 54, 1, 54, 54, 54,
2730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	54, 54, 1, 1, 1, 1, 1, 1,
2740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 54, 1, 1, 1,
2760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 55, 1,
2790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 1, 1, 1,
2800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 55,
2820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 56, 1, 1, 57,
2840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	58, 58, 58, 58, 58, 58, 58, 58,
2850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	58, 1, 59, 60, 60, 60, 60, 60,
2860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	60, 60, 60, 60, 1, 61, 61, 61,
2870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	61, 61, 1, 1, 1, 1, 1, 1,
2880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 61, 1, 1, 1,
2900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	62, 1, 1, 1, 1, 1, 1, 1,
2920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 63, 1, 61, 61, 61, 61, 61,
3020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 61, 1, 1, 1, 1, 1,
3050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 62, 1,
3060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 60, 60, 60, 60, 60, 60,
3070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	60, 60, 60, 60, 1, 1, 1, 1,
3080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 63,
3160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 64, 1, 64, 64, 64, 64, 64,
3170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 64, 1, 1, 1, 1, 1,
3200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 65, 1, 65, 65,
3230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	65, 65, 65, 1, 1, 1, 1, 1,
3240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 65, 1, 66,
3260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 67, 68, 68,
3280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	68, 68, 68, 68, 68, 68, 68, 1,
3290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 1, 1, 1, 1, 1, 1,
3330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 69, 69, 69, 69, 69, 69,
3360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	69, 69, 1, 70, 1, 1, 1, 1,
3370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 71, 71,
3380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 71, 71, 71, 71, 71, 71, 71,
3390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 1, 1, 1, 1, 1,
3400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 71, 71, 71, 71, 71, 71,
3410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 71, 71, 71, 71,
3420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 71, 71, 71, 71,
3430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 1, 1, 1, 1,
3440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 1, 71, 71, 71, 71, 71, 71,
3450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 71, 71, 71, 71,
3460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 71, 71, 71, 71,
3470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	71, 71, 71, 71, 1, 72, 72, 72,
3480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	72, 72, 1, 1, 1, 1, 1, 1,
3490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 72, 1, 1, 1,
3510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	73, 1, 1, 1, 1, 1, 1, 1,
3530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 74, 1, 72, 72, 72, 72, 72,
3630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 72, 1, 1, 1, 1, 1,
3660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 73, 1,
3670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 75, 75, 75, 75, 75, 75,
3680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	75, 75, 75, 75, 1, 1, 1, 1,
3690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 74,
3770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 76, 76, 76, 76, 76, 1, 1,
3780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	76, 1, 1, 1, 1, 1, 1, 1,
3810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 77, 1, 1, 1,
3820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 78, 1, 0,
3880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 1, 1, 1, 1,
3890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 0, 1,
3910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
3990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
4000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
4010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
4020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 2, 1, 1, 0
4030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
4040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_json_trans_targs[] = {
4060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 0, 2, 2, 3, 4, 18, 24,
4070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	37, 5, 12, 6, 7, 8, 9, 11,
4080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 11, 10, 2, 44, 10, 44, 13,
4090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	14, 15, 16, 17, 16, 17, 10, 2,
4100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	44, 19, 20, 21, 22, 23, 10, 2,
4110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	44, 23, 25, 31, 26, 27, 28, 29,
4120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	30, 29, 30, 10, 2, 44, 32, 33,
4130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	34, 35, 36, 35, 36, 10, 2, 44,
4140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	38, 39, 40, 42, 43, 41, 10, 41,
4150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	10, 2, 44, 43, 44, 45, 46
4160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
4170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_json_trans_actions[] = {
4190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 1, 0, 0, 0, 0, 0,
4200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 0, 2, 2, 2,
4210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 3, 3, 4, 0, 5, 0,
4220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 2, 2, 2, 0, 0, 6, 6,
4230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	7, 0, 0, 0, 2, 2, 8, 8,
4240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 0, 0, 0, 0, 0, 2, 2,
4250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 0, 0, 10, 10, 11, 0, 0,
4260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 2, 2, 0, 0, 12, 12, 13,
4270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 2, 2, 2, 14, 0,
4280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 15, 16, 0, 0, 0, 0
4290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
4300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_json_start = 1;
4320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_json_first_final = 44;
4330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_json_error = 0;
4340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_json_en_main = 1;
4360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4389fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 97 "../../src/hb-buffer-deserialize-json.rl"
4390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic hb_bool_t
4420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer,
4430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    const char *buf,
4440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    unsigned int buf_len,
4450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    const char **end_ptr,
4460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    hb_font_t *font)
4470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien{
4480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  const char *p = buf, *pe = buf + buf_len;
4490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  /* Ensure we have positions. */
4510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  (void) hb_buffer_get_glyph_positions (buffer, NULL);
4520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  while (p < pe && ISSPACE (*p))
4540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    p++;
4550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  if (p < pe && *p == (buffer->len ? ',' : '['))
4560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  {
4570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    *end_ptr = ++p;
4580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  }
4590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  const char *tok = NULL;
4610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  int cs;
4620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  hb_glyph_info_t info;
4630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  hb_glyph_position_t pos;
4640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 466 "hb-buffer-deserialize-json.hh.tmp"
4660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = deserialize_json_start;
4680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
4690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 471 "hb-buffer-deserialize-json.hh.tmp"
4710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _slen;
4730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _trans;
4740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const unsigned char *_keys;
4750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const char *_inds;
4760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( p == pe )
4770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _test_eof;
4780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( cs == 0 )
4790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _out;
4800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_resume:
4810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_keys = _deserialize_json_trans_keys + (cs<<1);
4820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs];
4830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_slen = _deserialize_json_key_spans[cs];
4850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
4860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		(*p) <= _keys[1] ?
4870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		(*p) - _keys[0] : _slen ];
4880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = _deserialize_json_trans_targs[_trans];
4900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( _deserialize_json_trans_actions[_trans] == 0 )
4920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _again;
4930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _deserialize_json_trans_actions[_trans] ) {
4950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 1:
4969fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 38 "../../src/hb-buffer-deserialize-json.rl"
4970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	memset (&info, 0, sizeof (info));
4990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	memset (&pos , 0, sizeof (pos ));
5000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 5:
5039fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
5040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 2:
5139fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 51 "../../src/hb-buffer-deserialize-json.rl"
5140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	tok = p;
5160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 14:
5199fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 55 "../../src/hb-buffer-deserialize-json.rl"
5200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (!hb_font_glyph_from_string (font,
5220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					tok, p - tok,
5230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					&info.codepoint))
5240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 15:
5289fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-buffer-deserialize-json.rl"
5290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.codepoint)) return false; }
5300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 8:
5329fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 63 "../../src/hb-buffer-deserialize-json.rl"
5330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
5340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 10:
5369fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 64 "../../src/hb-buffer-deserialize-json.rl"
5370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
5380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 12:
5409fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 65 "../../src/hb-buffer-deserialize-json.rl"
5410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
5420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 3:
5449fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 66 "../../src/hb-buffer-deserialize-json.rl"
5450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
5460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 6:
5489fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 67 "../../src/hb-buffer-deserialize-json.rl"
5490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
5500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 16:
5529fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-buffer-deserialize-json.rl"
5530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.codepoint)) return false; }
5549fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
5550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 9:
5649fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 63 "../../src/hb-buffer-deserialize-json.rl"
5650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
5669fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
5670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 11:
5769fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 64 "../../src/hb-buffer-deserialize-json.rl"
5770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
5789fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
5790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 13:
5889fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 65 "../../src/hb-buffer-deserialize-json.rl"
5890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
5909fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
5910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 4:
6009fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 66 "../../src/hb-buffer-deserialize-json.rl"
6010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
6029fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
6030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
6040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
6050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
6060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
6070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
6080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
6090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
6100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
6110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 7:
6129fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 67 "../../src/hb-buffer-deserialize-json.rl"
6130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
6149fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-json.rl"
6150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
6160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
6170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
6180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
6190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
6200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
6210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
6220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
6230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 624 "hb-buffer-deserialize-json.hh.tmp"
6240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
6250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_again:
6270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( cs == 0 )
6280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _out;
6290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( ++p != pe )
6300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _resume;
6310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_test_eof: {}
6320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_out: {}
6330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
6340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6359fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 125 "../../src/hb-buffer-deserialize-json.rl"
6360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  *end_ptr = p;
6390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  return p == pe && *(p-1) != ']';
6410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
6420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
6430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#endif /* HB_BUFFER_DESERIALIZE_JSON_HH */
644