diff --git a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs index 08bbb220..1e833ba3 100644 --- a/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs +++ b/src/SixLabors.Fonts/Tables/AdvancedTypographic/Shapers/IndicShaper.cs @@ -379,18 +379,19 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c GlyphShapingData current = substitutionCollection[i]; IndicShapingEngineInfo currentInfo = current.IndicShapingEngineInfo!; - glyphs[0] = current.GlyphId; - glyphs[1] = circleId; + glyphs[0] = circleId; + glyphs[1] = current.GlyphId; substitutionCollection.Replace(i, glyphs, FeatureTags.GlyphCompositionDecomposition); - // Update shaping info for newly inserted data. - GlyphShapingData dotted = substitutionCollection[i + 1]; + // The dotted circle is now at position i (inherits original shaping info). + // Update it to be a dotted circle base. + GlyphShapingData dotted = substitutionCollection[i]; dotted.IndicShapingEngineInfo!.Category = Categories.Dotted_Circle; dotted.IndicShapingEngineInfo.Position = Positions.End; - dotted.IndicShapingEngineInfo.SyllableType = currentInfo.SyllableType; - dotted.IndicShapingEngineInfo.Syllable = currentInfo.Syllable; + // The original mark glyph is now at position i + 1 (copy of original info). + // Its shaping info is already correct from the copy. end++; max++; } @@ -705,6 +706,15 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c } else if (info.Position != Positions.SMVD) { + // If an MPst follows an SM, update the SM's position to match + // so they move together during reordering. + if (info.Category == Categories.MPst + && i > start + && substitutionCollection[i - 1].IndicShapingEngineInfo?.Category == Categories.SM) + { + substitutionCollection[i - 1].IndicShapingEngineInfo!.Position = info.Position; + } + lastPosition = info.Position; } } @@ -732,7 +742,7 @@ private void InitialReorder(IGlyphShapingCollection collection, int index, int c last = i; } - else if ((FlagUnsafe(info.Category) & Flag(Categories.M)) != 0) + else if ((FlagUnsafe(info.Category) & (Flag(Categories.M) | Flag(Categories.MPst))) != 0) { last = i; } diff --git a/src/SixLabors.Fonts/Unicode/Resources/IndicShapingData.Generated.cs b/src/SixLabors.Fonts/Unicode/Resources/IndicShapingData.Generated.cs index ee6e1e76..19eca2b4 100644 --- a/src/SixLabors.Fonts/Unicode/Resources/IndicShapingData.Generated.cs +++ b/src/SixLabors.Fonts/Unicode/Resources/IndicShapingData.Generated.cs @@ -9,625 +9,242 @@ namespace SixLabors.Fonts.Unicode.Resources { internal static partial class IndicShapingData { - public static int[][] StateTable => new int[617][] + public static int[][] StateTable => new int[234][] { new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,2,3,4,5,6,7,8,9,10,11,11,12,0,13,14,15,16,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,18,19,20,21,22,23,24,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,28,29,30,31,32,33,34,0,0,35,0,0,0,36,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,38,5,7,7,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,39,0,0,0,40,41,0,9,10,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,43,44,44,8,9,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,43,44,44,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,45,46,47,48,49,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,50,0,0,51,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 }, - new int[] { 0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,53,54,55,56,57,58,59,0,0,60,0,0,0,61,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,4,5,7,7,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,2,3,4,5,6,7,8,9,10,11,11,12,0,0,2,15,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,18,63,20,21,22,23,24,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,64,65,65,8,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,67,0,68,68,0,69,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,71,72,0,0,40,41,0,9,10,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,73,19,74,74,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,0,0,76,77,0,23,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,79,80,80,22,23,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,18,19,20,74,22,23,24,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,81,82,83,84,85,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,86,0,0,87,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,18,19,74,74,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,89,90,90,22,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,92,93,0,0,76,77,0,23,24,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,94,29,95,31,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,96,0,0,0,97,98,0,33,34,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,100,101,101,32,33,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,100,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,102,103,104,105,106,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,107,0,0,108,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,28,29,95,31,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,110,111,111,32,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,113,114,0,0,97,98,0,33,34,0,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,5,7,7,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,115,116,117,118,8,9,10,0,0,119,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,121,121,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,39,0,122,0,123,123,8,9,10,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,124,72,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,39,0,0,0,121,125,0,9,10,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,46,47,48,49,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,47,47,49,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,127,127,49,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 }, - new int[] { 0,0,0,0,128,127,127,49,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 }, - new int[] { 0,0,0,129,130,131,132,133,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,2,3,4,5,6,7,8,9,10,11,11,12,8,13,14,15,16,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,19,20,21,22,23,24,25,0,0,26,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,29,30,31,32,33,34,35,0,0,36,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,39,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,40,0,0,0,41,42,0,43,10,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,45,46,46,8,9,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,45,46,46,8,9,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,47,48,49,50,8,9,10,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,10,0,0,51,10,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51 }, new int[] { 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 }, - new int[] { 0,0,0,0,0,50,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 }, - new int[] { 0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,135,54,56,56,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,136,0,0,0,137,138,0,58,59,0,0,0,0,0,136,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,140,141,141,57,58,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,140,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,140,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,142,143,144,145,146,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,147,0,0,148,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,53,54,56,56,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,150,151,151,57,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,153,154,0,0,137,138,0,58,59,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,3,4,5,155,156,8,157,158,0,11,12,0,0,75,15,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,40,160,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,161,44,44,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,124,72,0,0,40,160,0,9,10,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,68,68,0,69,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,162,0,0,163,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,165,116,166,167,8,9,10,0,0,168,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,121,121,0,9,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 }, - new int[] { 0,0,0,0,19,74,74,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,79,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,169,170,171,172,22,23,24,0,0,173,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,175,175,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,176,0,177,177,22,23,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,178,93,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,0,0,175,179,0,23,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,82,83,84,85,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,83,83,85,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,183,184,185,186,187,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,86,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,76,189,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,190,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,178,93,0,0,76,189,0,23,24,0,0,0,0,0,178,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,191,170,192,193,22,23,24,0,0,194,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,175,175,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,29,95,31,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,100,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,195,196,197,198,32,33,34,0,0,199,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,201,201,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,96,0,202,0,203,203,32,33,34,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,204,114,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,96,0,0,0,201,205,0,33,34,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,103,104,105,106,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,104,104,106,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,209,210,211,212,213,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,107,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,97,215,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,216,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,204,114,0,0,97,215,0,33,34,0,0,0,0,0,204,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,217,196,218,219,32,33,34,0,0,220,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,201,201,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,221,116,222,222,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,223,0,0,0,40,224,0,9,10,0,0,0,0,0,223,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,9,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,115,116,117,222,8,9,10,0,0,119,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,115,116,222,222,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,226,72,0,0,40,224,0,9,10,0,0,0,0,0,226,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 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 }, - new int[] { 0,39,0,0,0,121,121,0,9,10,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,44,44,8,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 }, - new int[] { 0,0,0,227,0,228,229,0,9,10,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,39,0,122,0,121,121,0,9,10,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,130,131,132,133,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,131,131,133,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,233,233,133,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 }, - new int[] { 0,0,0,0,234,233,233,133,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 }, - new int[] { 0,0,0,235,236,237,238,239,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,54,56,56,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,240,241,242,243,57,58,59,0,0,244,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,246,246,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,136,0,247,0,248,248,57,58,59,0,0,0,0,0,136,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,249,154,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,136,0,0,0,246,250,0,58,59,0,0,0,0,0,136,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,143,144,145,146,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,144,144,146,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,254,255,256,257,258,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,147,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,137,260,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,261,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,249,154,0,0,137,260,0,58,59,0,0,0,0,0,249,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,262,241,263,264,57,58,59,0,0,265,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,246,246,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,43,266,266,8,157,24,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,267,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,176,43,268,268,269,157,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,267,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,270,0,0,271,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,273,274,0,0,40,41,0,9,10,0,0,0,0,0,273,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,40,0,123,123,8,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,121,275,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,162,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,221,116,222,222,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,9,0,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,165,116,166,222,8,9,10,0,0,168,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,165,116,222,222,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,277,170,278,278,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,279,0,0,0,76,280,0,23,24,0,0,0,0,0,279,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,281,80,80,22,23,0,0,0,173,0,0,0,0,0,0,0,0,0,0,0,0,0,281,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,169,170,171,278,22,23,24,0,0,173,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,169,170,278,278,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,282,93,0,0,76,280,0,23,24,0,0,0,0,0,282,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,0,0,175,175,0,23,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,283,0,284,285,0,23,24,0,0,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,75,0,176,0,175,175,0,23,24,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,184,185,186,187,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,185,185,187,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,291,292,293,294,295,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,76,0,177,177,22,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,175,296,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,277,170,278,278,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,281,80,80,22,23,0,0,0,194,0,0,0,0,0,0,0,0,0,0,0,0,0,281,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,191,170,192,278,22,23,24,0,0,194,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,191,170,278,278,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,297,196,298,298,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,299,0,0,0,97,300,0,33,34,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,301,101,101,32,33,0,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,195,196,197,298,32,33,34,0,0,199,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,195,196,298,298,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,302,114,0,0,97,300,0,33,34,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,96,0,0,0,201,201,0,33,34,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,303,0,304,305,0,33,34,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,96,0,202,0,201,201,0,33,34,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,210,211,212,213,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,211,211,213,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,311,312,313,314,315,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,97,0,203,203,32,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,201,316,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,297,196,298,298,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,301,101,101,32,33,0,0,0,220,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,217,196,218,298,32,33,34,0,0,220,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,217,196,298,298,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,116,222,222,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,317,318,319,320,8,9,10,0,0,321,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,223,0,323,0,123,123,8,9,10,0,0,0,0,0,223,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,223,0,0,0,121,324,0,9,10,0,0,0,0,0,223,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,325,318,326,327,8,9,10,0,0,328,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,72,0,121,121,0,9,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 }, - new int[] { 0,0,0,0,0,0,0,0,9,0,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,227,0,228,121,0,9,10,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,227,0,121,121,0,9,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 }, - new int[] { 0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,236,237,238,239,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,237,237,239,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,331,331,239,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 }, - new int[] { 0,0,0,0,332,331,331,239,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 }, - new int[] { 0,0,0,333,40,121,334,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,335,241,336,336,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,337,0,0,0,137,338,0,58,59,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,339,141,141,57,58,0,0,0,244,0,0,0,0,0,0,0,0,0,0,0,0,0,339,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,240,241,242,336,57,58,59,0,0,244,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,240,241,336,336,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,340,154,0,0,137,338,0,58,59,0,0,0,0,0,340,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,136,0,0,0,246,246,0,58,59,0,0,0,0,0,136,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,341,0,342,343,0,58,59,0,0,344,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,136,0,247,0,246,246,0,58,59,0,0,0,0,0,136,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,255,256,257,258,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,256,256,258,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,349,350,351,352,353,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,137,0,248,248,57,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,246,354,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,335,241,336,336,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,339,141,141,57,58,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,339,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,262,241,263,336,57,58,59,0,0,265,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,262,241,336,336,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,355,93,0,0,121,125,0,9,10,0,0,0,0,0,355,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,357,358,359,360,361,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,270,0,0,0,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,364,116,365,366,8,157,158,0,0,367,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,368,368,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,40,0,121,121,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,170,278,278,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,281,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,281,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,369,370,371,372,22,23,24,0,0,373,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,279,0,375,0,177,177,22,23,24,0,0,0,0,0,279,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,279,0,0,0,175,376,0,23,24,0,0,0,0,0,279,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,377,370,378,379,22,23,24,0,0,380,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,93,0,175,175,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,23,0,0,0,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,283,0,284,175,0,23,24,0,0,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,283,0,175,175,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,52,53,54,55,56,57,58,0,0,59,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,4,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,2,3,4,5,6,7,8,9,10,11,11,12,8,0,2,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,19,62,21,22,23,24,25,0,0,26,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,63,64,64,8,9,10,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,66,0,67,67,0,68,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68 }, + new int[] { 0,2,0,0,0,0,0,0,0,0,11,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 }, + new int[] { 0,70,71,0,0,41,42,0,43,10,0,0,0,0,0,70,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,72,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,74,0,0,0,75,76,0,77,25,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,79,80,80,23,24,0,0,0,26,23,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,19,20,21,73,23,24,25,0,0,26,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,81,82,83,84,23,24,25,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,25,0,0,85,25,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85 }, + new int[] { 0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,19,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,86,87,87,23,24,25,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,89,90,0,0,75,76,0,77,25,0,0,0,0,0,89,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,91,30,92,32,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,93,0,0,0,94,95,0,96,35,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,98,99,99,33,34,0,0,0,36,33,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,98,99,99,33,34,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,100,101,102,103,33,34,35,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,35,0,0,104,35,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104 }, + new int[] { 0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,29,30,92,32,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,105,106,106,33,34,35,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,108,109,0,0,94,95,0,96,35,0,0,0,0,0,108,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,110,5,111,112,8,9,10,0,0,113,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,114,114,0,43,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,40,0,115,0,114,114,0,43,10,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,10,0,0,51,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,51 }, + new int[] { 0,116,71,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,40,0,0,0,114,42,0,43,10,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,46,46,8,117,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117 }, + new int[] { 0,0,0,0,48,49,50,8,9,10,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,49,49,8,9,10,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,46,46,8,9,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,118,46,46,8,9,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,10,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 }, + new int[] { 0,0,0,119,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,120,0,0,0,121,122,0,123,58,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,125,126,126,56,57,0,0,0,59,56,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,125,126,126,56,57,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,127,128,129,130,56,57,58,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,58,0,0,131,58,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131 }, + new int[] { 0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,52,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,132,133,133,56,57,58,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,135,136,0,0,121,122,0,123,58,0,0,0,0,0,135,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,74,3,4,5,137,138,8,139,140,0,11,12,8,0,74,15,0,0,0,0,0,0,0,0,0,141,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,0,41,142,0,43,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,143,46,46,8,9,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,116,71,0,0,41,142,0,43,10,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,67,67,0,68,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68 }, + new int[] { 0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68 }, + new int[] { 0,0,0,0,0,69,0,0,144,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144 }, + new int[] { 0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,145,5,146,147,8,9,10,0,0,148,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,114,114,0,43,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,43 }, + new int[] { 0,0,0,0,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,79,80,80,23,24,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,149,20,150,151,23,24,25,0,0,152,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,153,153,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,74,0,154,0,153,153,0,77,25,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,0,25,0,0,85,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85 }, + new int[] { 0,155,90,0,0,0,0,0,0,0,0,0,0,0,0,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,74,0,0,0,153,76,0,77,25,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,0,80,80,23,156,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156 }, + new int[] { 0,0,0,0,82,83,84,23,24,25,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,83,83,23,24,25,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,80,80,23,24,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,157,80,80,23,24,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,75,158,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,159,80,80,23,24,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,155,90,0,0,75,158,0,77,25,0,0,0,0,0,155,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,160,20,161,162,23,24,25,0,0,163,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,153,153,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,30,92,32,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,98,99,99,33,34,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,164,30,165,166,33,34,35,0,0,167,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,168,168,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,93,0,169,0,168,168,0,96,35,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,35,0,0,104,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104 }, + new int[] { 0,170,109,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,93,0,0,0,168,95,0,96,35,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,99,99,33,171,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171 }, + new int[] { 0,0,0,0,101,102,103,33,34,35,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,102,102,33,34,35,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,99,99,33,34,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,172,99,99,33,34,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,35,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,94,173,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,174,99,99,33,34,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,170,109,0,0,94,173,0,96,35,0,0,0,0,0,170,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,175,30,176,177,33,34,35,0,0,178,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,168,168,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,39,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,45,46,46,8,9,0,0,0,113,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,110,5,111,7,8,9,10,0,0,113,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,110,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,40,0,0,0,114,114,0,43,10,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,179,0,180,181,0,43,10,0,0,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,184,53,185,186,56,57,58,0,0,187,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,188,188,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,120,0,189,0,188,188,0,123,58,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,58,0,0,131,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131 }, + new int[] { 0,190,136,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,120,0,0,0,188,122,0,123,58,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,126,126,56,191,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191 }, + new int[] { 0,0,0,0,128,129,130,56,57,58,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,129,129,56,57,58,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,126,126,56,57,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,192,126,126,56,57,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,58,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,121,193,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,194,126,126,56,57,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,190,136,0,0,121,193,0,123,58,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,195,53,196,197,56,57,58,0,0,198,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,188,188,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,45,199,199,8,139,25,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,74,0,154,45,199,199,8,139,25,0,0,0,8,0,74,0,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,0,140,0,0,201,140,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201 }, + new int[] { 0,0,0,0,0,0,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,202,203,0,0,41,42,0,43,10,0,0,0,0,0,202,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,41,0,114,114,0,43,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,114,142,0,43,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,69,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,39,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,0,45,46,46,8,9,0,0,0,148,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,145,5,146,7,8,9,10,0,0,148,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,145,5,7,7,8,9,10,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9 }, + new int[] { 0,0,0,72,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,79,80,80,23,24,0,0,0,152,23,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,149,20,150,73,23,24,25,0,0,152,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,149,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,74,0,0,0,153,153,0,77,25,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,204,0,205,206,0,77,25,0,0,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,75,0,153,153,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,0,153,158,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,72,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,0,79,80,80,23,24,0,0,0,163,23,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,160,20,161,73,23,24,25,0,0,163,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,160,20,73,73,23,24,25,0,0,0,23,0,0,27,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,24 }, + new int[] { 0,0,0,209,30,92,92,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,98,99,99,33,34,0,0,0,167,33,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,164,30,165,92,33,34,35,0,0,167,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,164,30,92,92,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,93,0,0,0,168,168,0,96,35,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,210,0,211,212,0,96,35,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,0,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,94,0,168,168,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,168,173,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,209,30,92,92,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,0,98,99,99,33,34,0,0,0,178,33,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,175,30,176,92,33,34,35,0,0,178,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,175,30,92,92,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,71,0,114,114,0,43,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,43 }, + new int[] { 0,0,0,0,0,0,0,0,43,0,0,0,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,179,0,180,114,0,43,10,0,0,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,179,0,114,114,0,43,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,43 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,119,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,125,126,126,56,57,0,0,0,187,56,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,184,53,185,55,56,57,58,0,0,187,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,184,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,120,0,0,0,188,188,0,123,58,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,215,0,216,217,0,123,58,0,0,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,0,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,121,0,188,188,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,188,193,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,119,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,125,126,126,56,57,0,0,0,198,56,0,0,0,0,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,195,53,196,55,56,57,58,0,0,198,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,195,53,55,55,56,57,58,0,0,0,56,0,0,60,0,0,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,57 }, + new int[] { 0,0,0,0,0,46,46,8,220,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220 }, + new int[] { 0,221,90,0,0,114,42,0,43,10,0,0,0,0,0,221,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,43 }, + new int[] { 0,0,0,0,0,140,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,222,5,223,224,8,139,140,0,0,225,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,0,226,226,0,227,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227 }, + new int[] { 0,0,0,90,0,153,153,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,0,0,0,0,0,77,0,0,0,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,204,0,205,153,0,77,25,0,0,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, + new int[] { 0,0,0,204,0,153,153,0,77,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77 }, new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,292,293,294,295,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,293,293,295,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,385,76,175,386,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,76,0,175,175,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,196,298,298,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,301,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,387,388,389,390,32,33,34,0,0,391,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,299,0,393,0,203,203,32,33,34,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,299,0,0,0,201,394,0,33,34,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,395,388,396,397,32,33,34,0,0,398,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,114,0,201,201,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,33,0,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,303,0,304,201,0,33,34,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,303,0,201,201,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,312,313,314,315,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,313,313,315,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,403,97,201,404,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,97,0,201,201,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,405,318,406,406,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,407,0,0,0,40,408,0,9,10,0,0,0,0,0,407,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,409,44,44,8,9,0,0,0,321,0,0,0,0,0,0,0,0,0,0,0,0,0,409,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,317,318,319,406,8,9,10,0,0,321,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,317,318,406,406,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,410,72,0,0,40,408,0,9,10,0,0,0,0,0,410,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,223,0,0,0,121,121,0,9,10,0,0,0,0,0,223,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,223,0,323,0,121,121,0,9,10,0,0,0,0,0,223,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,405,318,406,406,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,409,44,44,8,9,0,0,0,328,0,0,0,0,0,0,0,0,0,0,0,0,0,409,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,325,318,326,406,8,9,10,0,0,328,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,325,318,406,406,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,40,121,334,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,413,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 }, - new int[] { 0,0,0,0,241,336,336,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,339,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,339,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,414,415,416,417,57,58,59,0,0,418,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,337,0,420,0,248,248,57,58,59,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,337,0,0,0,246,421,0,58,59,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,422,415,423,424,57,58,59,0,0,425,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,154,0,246,246,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,58,0,0,0,344,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,341,0,342,246,0,58,59,0,0,344,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,341,0,246,246,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,350,351,352,353,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,351,351,353,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,430,137,246,431,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,137,0,246,246,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,432,116,433,434,8,157,158,0,0,435,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,358,359,360,361,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,359,359,361,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,436,436,361,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,437,436,436,361,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,438,439,440,441,442,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,444,116,445,445,8,157,158,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,157,0,0,0,367,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,364,116,365,445,8,157,158,0,0,367,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,364,116,445,445,8,157,158,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,446,370,447,447,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,448,0,0,0,76,449,0,23,24,0,0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,450,80,80,22,23,0,0,0,373,0,0,0,0,0,0,0,0,0,0,0,0,0,450,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,369,370,371,447,22,23,24,0,0,373,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,369,370,447,447,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,451,93,0,0,76,449,0,23,24,0,0,0,0,0,451,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,279,0,0,0,175,175,0,23,24,0,0,0,0,0,279,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,279,0,375,0,175,175,0,23,24,0,0,0,0,0,279,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,446,370,447,447,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,450,80,80,22,23,0,0,0,380,0,0,0,0,0,0,0,0,0,0,0,0,0,450,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,377,370,378,447,22,23,24,0,0,380,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,377,370,447,447,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,76,175,386,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,455,388,456,456,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,457,0,0,0,97,458,0,33,34,0,0,0,0,0,457,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,459,101,101,32,33,0,0,0,391,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,387,388,389,456,32,33,34,0,0,391,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,387,388,456,456,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,460,114,0,0,97,458,0,33,34,0,0,0,0,0,460,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,299,0,0,0,201,201,0,33,34,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,299,0,393,0,201,201,0,33,34,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,455,388,456,456,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,459,101,101,32,33,0,0,0,398,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,395,388,396,456,32,33,34,0,0,398,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,395,388,456,456,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,97,201,404,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,318,406,406,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,322,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,409,44,44,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,409,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,464,465,466,467,8,9,10,0,0,468,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,407,0,470,0,123,123,8,9,10,0,0,0,0,0,407,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,407,0,0,0,121,471,0,9,10,0,0,0,0,0,407,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,472,465,473,474,8,9,10,0,0,475,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,477,415,478,478,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,479,0,0,0,137,480,0,58,59,0,0,0,0,0,479,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,481,141,141,57,58,0,0,0,418,0,0,0,0,0,0,0,0,0,0,0,0,0,481,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,414,415,416,478,57,58,59,0,0,418,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,414,415,478,478,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,482,154,0,0,137,480,0,58,59,0,0,0,0,0,482,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,337,0,0,0,246,246,0,58,59,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,337,0,420,0,246,246,0,58,59,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,477,415,478,478,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,481,141,141,57,58,0,0,0,425,0,0,0,0,0,0,0,0,0,0,0,0,0,481,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,422,415,423,478,57,58,59,0,0,425,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,422,415,478,478,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,137,246,431,0,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,444,116,445,445,8,157,158,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,157,0,0,0,435,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,432,116,433,445,8,157,158,0,0,435,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,432,116,445,445,8,157,158,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,439,440,441,442,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,440,440,442,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,488,488,442,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,489,488,488,442,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,490,491,492,493,494,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,495,0,496,497,0,157,158,0,0,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,116,445,445,8,157,158,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,225,44,44,8,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,370,447,447,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,374,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,450,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,499,500,501,502,22,23,24,0,0,503,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,448,0,505,0,177,177,22,23,24,0,0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,448,0,0,0,175,506,0,23,24,0,0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,507,500,508,509,22,23,24,0,0,510,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,388,456,456,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,459,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,512,513,514,515,32,33,34,0,0,516,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,457,0,518,0,203,203,32,33,34,0,0,0,0,0,457,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,457,0,0,0,201,519,0,33,34,0,0,0,0,0,457,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,520,513,521,522,32,33,34,0,0,523,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,525,465,526,526,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,527,0,0,0,40,528,0,9,10,0,0,0,0,0,527,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,529,44,44,8,9,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,529,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,464,465,466,526,8,9,10,0,0,468,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,464,465,526,526,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,530,72,0,0,40,528,0,9,10,0,0,0,0,0,530,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,407,0,0,0,121,121,0,9,10,0,0,0,0,0,407,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,407,0,470,0,121,121,0,9,10,0,0,0,0,0,407,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,525,465,526,526,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,529,44,44,8,9,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,529,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,472,465,473,526,8,9,10,0,0,475,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,472,465,526,526,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,415,478,478,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,419,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,481,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,481,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,531,532,533,534,57,58,59,0,0,535,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,479,0,537,0,248,248,57,58,59,0,0,0,0,0,479,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,479,0,0,0,246,538,0,58,59,0,0,0,0,0,479,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,539,532,540,541,57,58,59,0,0,542,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,491,492,493,494,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,492,492,494,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,546,546,494,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,547,546,546,494,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,548,549,368,550,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,274,0,368,368,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,157,0,0,0,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,495,0,496,368,0,157,158,0,0,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,495,0,368,368,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,551,500,552,552,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,553,0,0,0,76,554,0,23,24,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,555,80,80,22,23,0,0,0,503,0,0,0,0,0,0,0,0,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,499,500,501,552,22,23,24,0,0,503,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,499,500,552,552,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,556,93,0,0,76,554,0,23,24,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,448,0,0,0,175,175,0,23,24,0,0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,448,0,505,0,175,175,0,23,24,0,0,0,0,0,448,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,551,500,552,552,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,555,80,80,22,23,0,0,0,510,0,0,0,0,0,0,0,0,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,507,500,508,552,22,23,24,0,0,510,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,507,500,552,552,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,557,513,558,558,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,559,0,0,0,97,560,0,33,34,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,561,101,101,32,33,0,0,0,516,0,0,0,0,0,0,0,0,0,0,0,0,0,561,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,512,513,514,558,32,33,34,0,0,516,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,512,513,558,558,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,562,114,0,0,97,560,0,33,34,0,0,0,0,0,562,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,457,0,0,0,201,201,0,33,34,0,0,0,0,0,457,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,457,0,518,0,201,201,0,33,34,0,0,0,0,0,457,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,557,513,558,558,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,561,101,101,32,33,0,0,0,523,0,0,0,0,0,0,0,0,0,0,0,0,0,561,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,520,513,521,558,32,33,34,0,0,523,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,520,513,558,558,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,465,526,526,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,529,44,44,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,563,64,564,565,8,9,10,0,0,566,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,527,0,567,0,123,123,8,9,10,0,0,0,0,0,527,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,527,0,0,0,121,568,0,9,10,0,0,0,0,0,527,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,569,64,570,571,8,9,10,0,0,572,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,573,532,574,574,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,575,0,0,0,137,576,0,58,59,0,0,0,0,0,575,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,577,141,141,57,58,0,0,0,535,0,0,0,0,0,0,0,0,0,0,0,0,0,577,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,531,532,533,574,57,58,59,0,0,535,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,531,532,574,574,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,578,154,0,0,137,576,0,58,59,0,0,0,0,0,578,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,479,0,0,0,246,246,0,58,59,0,0,0,0,0,479,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,479,0,537,0,246,246,0,58,59,0,0,0,0,0,479,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,573,532,574,574,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,577,141,141,57,58,0,0,0,542,0,0,0,0,0,0,0,0,0,0,0,0,0,577,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,539,532,540,574,57,58,59,0,0,542,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,539,532,574,574,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,549,368,550,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,368,368,0,157,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,581,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,500,552,552,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,555,80,80,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,582,89,583,584,22,23,24,0,0,585,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,553,0,586,0,177,177,22,23,24,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,553,0,0,0,175,587,0,23,24,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,588,89,589,590,22,23,24,0,0,591,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,513,558,558,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,517,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,561,101,101,32,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,561,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,592,110,593,594,32,33,34,0,0,595,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,559,0,596,0,203,203,32,33,34,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,559,0,0,0,201,597,0,33,34,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,598,110,599,600,32,33,34,0,0,601,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,602,64,65,65,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,161,44,44,8,9,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,563,64,564,65,8,9,10,0,0,566,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,563,64,65,65,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,527,0,0,0,121,121,0,9,10,0,0,0,0,0,527,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,527,0,567,0,121,121,0,9,10,0,0,0,0,0,527,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,602,64,65,65,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,161,44,44,8,9,0,0,0,572,0,0,0,0,0,0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,569,64,570,65,8,9,10,0,0,572,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,569,64,65,65,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,532,574,574,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,536,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,577,141,141,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,603,150,604,605,57,58,59,0,0,606,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,575,0,607,0,248,248,57,58,59,0,0,0,0,0,575,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,575,0,0,0,246,608,0,58,59,0,0,0,0,0,575,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,609,150,610,611,57,58,59,0,0,612,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,614,89,90,90,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,190,80,80,22,23,0,0,0,585,0,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,582,89,583,90,22,23,24,0,0,585,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,582,89,90,90,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,553,0,0,0,175,175,0,23,24,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,553,0,586,0,175,175,0,23,24,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,614,89,90,90,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,190,80,80,22,23,0,0,0,591,0,0,0,0,0,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,588,89,589,90,22,23,24,0,0,591,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,588,89,90,90,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,615,110,111,111,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,216,101,101,32,33,0,0,0,595,0,0,0,0,0,0,0,0,0,0,0,0,0,216,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,592,110,593,111,32,33,34,0,0,595,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,592,110,111,111,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,559,0,0,0,201,201,0,33,34,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,559,0,596,0,201,201,0,33,34,0,0,0,0,0,559,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,615,110,111,111,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,216,101,101,32,33,0,0,0,601,0,0,0,0,0,0,0,0,0,0,0,0,0,216,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,598,110,599,111,32,33,34,0,0,601,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,598,110,111,111,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,64,65,65,8,9,10,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,616,150,151,151,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,261,141,141,57,58,0,0,0,606,0,0,0,0,0,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,603,150,604,151,57,58,59,0,0,606,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,603,150,151,151,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,575,0,0,0,246,246,0,58,59,0,0,0,0,0,575,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,575,0,607,0,246,246,0,58,59,0,0,0,0,0,575,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,616,150,151,151,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,261,141,141,57,58,0,0,0,612,0,0,0,0,0,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,609,150,610,151,57,58,59,0,0,612,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,609,150,151,151,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,89,90,90,22,23,24,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,110,111,111,32,33,34,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0 }, - new int[] { 0,0,0,0,150,151,151,57,58,59,0,0,0,0,0,0,61,0,0,0,0,0,0,0,0,0,152,0,0,0,0,0,0,0,0,0 } + new int[] { 0,0,0,0,30,92,92,33,34,35,0,0,0,33,0,0,37,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,34 }, + new int[] { 0,0,0,109,0,168,168,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,0,0,0,96,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,210,0,211,168,0,96,35,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,210,0,168,168,0,96,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,136,0,188,188,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,0,0,0,123,0,0,0,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,215,0,216,188,0,123,58,0,0,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,215,0,188,188,0,123,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123 }, + new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + new int[] { 0,0,0,0,0,25,0,0,85,25,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85 }, + new int[] { 0,0,0,228,5,229,230,8,139,140,0,0,231,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,232,5,233,233,8,139,140,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,45,46,46,8,139,0,0,0,225,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,222,5,223,233,8,139,140,0,0,225,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,222,5,233,233,8,139,140,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,0,0,0,0,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227 }, + new int[] { 0,0,0,0,0,140,0,0,201,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201 }, + new int[] { 0,0,0,232,5,233,233,8,139,140,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,45,46,46,8,139,0,0,0,231,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,228,5,229,233,8,139,140,0,0,231,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,228,5,233,233,8,139,140,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,5,233,233,8,139,140,0,0,0,8,0,0,15,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,139 }, + new int[] { 0,0,0,0,45,46,46,8,139,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,139 } }; public static bool[] AcceptingStates => new bool[] @@ -649,102 +266,16 @@ internal static partial class IndicShapingData true, true, true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - false, - true, - true, - false, - false, - true, - true, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - false, - true, - false, - true, - true, - false, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - false, - true, - true, - true, false, true, - false, true, true, false, - false, true, true, true, true, true, - false, - true, true, true, true, @@ -753,18 +284,9 @@ internal static partial class IndicShapingData true, true, true, - false, - true, - false, - true, true, - false, - false, - false, true, true, - false, - false, true, true, true, @@ -781,44 +303,20 @@ internal static partial class IndicShapingData true, true, true, - true, - true, false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, false, true, true, true, true, - false, - true, - true, true, - false, true, - false, true, true, false, - false, - false, true, true, false, - false, true, true, true, @@ -831,21 +329,14 @@ internal static partial class IndicShapingData true, false, true, - true, - true, - false, - true, false, true, true, false, false, - false, true, true, false, - false, - true, true, true, true, @@ -854,18 +345,9 @@ internal static partial class IndicShapingData true, true, true, - false, - true, - true, - true, - true, true, false, true, - true, - false, - false, - false, false, true, true, @@ -873,119 +355,66 @@ internal static partial class IndicShapingData false, true, true, - true, - false, - true, - true, - true, - false, - true, false, true, true, - false, - false, - false, true, true, false, - false, - true, - true, - true, true, true, false, true, true, false, - true, false, true, true, true, true, true, - true, - true, - true, - true, false, true, - true, - true, - true, - true, false, true, true, false, false, - false, - false, true, true, false, - false, true, true, true, - false, true, true, true, true, true, - false, true, true, - false, - false, - false, - false, true, true, false, - false, - true, true, true, true, false, true, true, - true, - true, - true, - true, false, true, true, false, false, - false, - false, - true, - false, - true, - false, - true, - true, true, true, true, false, true, true, - false, - false, - false, - false, - true, true, false, - false, - true, true, true, false, @@ -994,57 +423,28 @@ internal static partial class IndicShapingData false, false, true, - false, - true, - true, - false, - true, - true, - false, true, true, false, true, true, true, - true, - true, - true, false, true, true, false, - false, - false, - false, - true, - false, - true, true, false, true, true, - true, - true, - true, - true, false, true, true, false, false, - false, - false, - true, - false, - true, - false, true, true, true, - true, - false, - false, false, true, true, @@ -1054,204 +454,38 @@ internal static partial class IndicShapingData true, true, true, - true, false, true, true, false, - false, - false, - false, - true, - false, - true, - false, - true, true, - false, - false, true, - true, - false, false, true, true, - true, false, true, false, true, true, - true, - true, - false, - false, - false, - true, false, true, true, true, - true, - false, - false, - false, - true, - true, false, true, true, - true, - true, - true, - true, false, true, true, false, true, - false, - true, - true, true, true, - false, - false, - false, - false, - false, - false, - false, - true, - true, - false, - false, - true, - true, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - false, - true, - true, - false, - true, - true, - false, - true, - true, - true, - true, - true, - true, - false, - true, - true, - false, - true, - false, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - false, - true, - true, - false, - false, - false, - false, - false, - true, - true, - false, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - false, - true, - true, - true, - true, - false, - false, - false, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true, - false, - true, - true, - true + false }; - public static string[][] Tags => new string[617][] + public static string[][] Tags => new string[234][] { Array.Empty(), new string[] { "broken_cluster" }, @@ -1270,6 +504,7 @@ internal static partial class IndicShapingData new string[] { "consonant_syllable" }, new string[] { "broken_cluster" }, new string[] { "symbol_cluster" }, + Array.Empty(), new string[] { "broken_cluster" }, new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, @@ -1295,6 +530,7 @@ internal static partial class IndicShapingData new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, + new string[] { "broken_cluster" }, Array.Empty(), new string[] { "broken_cluster" }, Array.Empty(), @@ -1303,9 +539,6 @@ internal static partial class IndicShapingData Array.Empty(), Array.Empty(), new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, Array.Empty(), @@ -1331,6 +564,7 @@ internal static partial class IndicShapingData new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, + new string[] { "consonant_syllable" }, Array.Empty(), new string[] { "consonant_syllable" }, Array.Empty(), @@ -1340,9 +574,6 @@ internal static partial class IndicShapingData Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, @@ -1352,6 +583,7 @@ internal static partial class IndicShapingData new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, + new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, Array.Empty(), @@ -1361,33 +593,20 @@ internal static partial class IndicShapingData Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, Array.Empty(), new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, Array.Empty(), - Array.Empty(), - Array.Empty(), new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, Array.Empty(), Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, + new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, @@ -1401,9 +620,6 @@ internal static partial class IndicShapingData Array.Empty(), new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, Array.Empty(), new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, @@ -1416,26 +632,15 @@ internal static partial class IndicShapingData new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, new string[] { "symbol_cluster" }, - new string[] { "symbol_cluster" }, - new string[] { "symbol_cluster" }, new string[] { "broken_cluster" }, Array.Empty(), new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, Array.Empty(), - Array.Empty(), - Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, Array.Empty(), @@ -1443,25 +648,14 @@ internal static partial class IndicShapingData new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, Array.Empty(), - Array.Empty(), - Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, Array.Empty(), @@ -1469,8 +663,6 @@ internal static partial class IndicShapingData new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, @@ -1478,35 +670,12 @@ internal static partial class IndicShapingData Array.Empty(), new string[] { "broken_cluster" }, new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, Array.Empty(), new string[] { "standalone_cluster" }, Array.Empty(), new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, Array.Empty(), - Array.Empty(), - Array.Empty(), new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, Array.Empty(), @@ -1514,362 +683,44 @@ internal static partial class IndicShapingData new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, Array.Empty(), new string[] { "standalone_cluster" }, new string[] { "standalone_cluster" }, Array.Empty(), new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, new string[] { "consonant_syllable","broken_cluster" }, new string[] { "consonant_syllable","broken_cluster" }, new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "symbol_cluster" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), Array.Empty(), new string[] { "consonant_syllable" }, new string[] { "consonant_syllable" }, - new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, Array.Empty(), new string[] { "vowel_syllable" }, new string[] { "vowel_syllable" }, Array.Empty(), + new string[] { "standalone_cluster" }, Array.Empty(), + new string[] { "standalone_cluster" }, + new string[] { "standalone_cluster" }, Array.Empty(), + new string[] { "consonant_syllable" }, + new string[] { "consonant_syllable","broken_cluster" }, + new string[] { "consonant_syllable","broken_cluster" }, Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), + new string[] { "consonant_syllable","broken_cluster" }, + new string[] { "consonant_syllable","broken_cluster" }, Array.Empty(), + new string[] { "consonant_syllable","broken_cluster" }, + new string[] { "consonant_syllable","broken_cluster" }, Array.Empty(), new string[] { "consonant_syllable","broken_cluster" }, new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable","broken_cluster" }, - new string[] { "consonant_syllable","broken_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - Array.Empty(), - new string[] { "broken_cluster" }, - new string[] { "broken_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - Array.Empty(), - Array.Empty(), - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "consonant_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - Array.Empty(), - new string[] { "vowel_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "broken_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "standalone_cluster" }, - new string[] { "standalone_cluster" }, - Array.Empty(), - new string[] { "consonant_syllable" }, - new string[] { "vowel_syllable" }, - new string[] { "standalone_cluster" } + Array.Empty() }; } } diff --git a/src/SixLabors.Fonts/Unicode/Resources/IndicShapingTrie.Generated.cs b/src/SixLabors.Fonts/Unicode/Resources/IndicShapingTrie.Generated.cs index 9ddf8ac4..6e16522a 100644 --- a/src/SixLabors.Fonts/Unicode/Resources/IndicShapingTrie.Generated.cs +++ b/src/SixLabors.Fonts/Unicode/Resources/IndicShapingTrie.Generated.cs @@ -189,7 +189,7 @@ internal static class IndicShapingTrie 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 7, 0, 0, 15, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 57, 0, 0, 14, 57, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -223,9 +223,9 @@ internal static class IndicShapingTrie 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 14, 17, 0, 0, 12, 7, 0, 0, 2, 7, 0, 0, 12, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 8, 4, 0, 0, 4, 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, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, - 4, 15, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 2, 7, 0, 0, 11, 13, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, + 4, 15, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 2, 7, 0, 0, 12, 13, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 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, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 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, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 15, 0, 0, 0, 4, 16, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, @@ -251,7 +251,7 @@ internal static class IndicShapingTrie 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 14, 17, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 7, 7, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0, 9, 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, 4, 1, 0, 0, - 4, 1, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 15, 14, 0, 0, 15, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 1, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 15, 18, 0, 0, 15, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 4, 10, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 14, 17, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 0, 0, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, @@ -271,12 +271,12 @@ internal static class IndicShapingTrie 2, 7, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 0, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, - 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 6, 3, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, + 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 6, 3, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 9, 7, 0, 0, 14, 17, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 0, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 11, 23, 0, 0, 11, 23, 0, 0, 6, 20, 0, 0, 6, 20, 0, 0, 8, 21, 0, 0, 8, 21, 0, 0, 3, 22, 0, 0, 14, 9, 0, 0, 6, 20, 0, 0, 6, 20, 0, 0, 6, 20, 0, 0, 14, 9, 0, 0, 8, 3, 0, 0, 14, 8, 0, 0, 15, 28, 0, 0, 6, 32, 0, 0, 11, 38, 0, 0, 15, 36, 0, 0, 8, 37, 0, 0, 8, 35, 0, 0, 4, 1, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, @@ -300,11 +300,11 @@ internal static class IndicShapingTrie 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 15, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 6, 3, 0, 0, - 14, 8, 0, 0, 12, 7, 0, 0, 6, 12, 0, 0, 6, 12, 0, 0, 12, 7, 0, 0, 6, 3, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 12, 7, 0, 0, 15, 28, 0, 0, 12, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 17, 0, 0, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 8, 0, 0, 12, 7, 0, 0, 6, 12, 0, 0, 6, 12, 0, 0, 14, 8, 0, 0, 4, 16, 0, 0, 12, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 12, 7, 0, 0, 15, 28, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 17, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 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, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, - 4, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 14, 8, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 14, 8, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, @@ -313,8 +313,8 @@ internal static class IndicShapingTrie 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, - 4, 16, 0, 0, 4, 16, 0, 0, 6, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 0, 0, 0, 0, 15, 28, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, - 2, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, + 4, 16, 0, 0, 4, 16, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 0, 0, 0, 0, 15, 28, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, + 2, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 6, 3, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 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, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 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, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, @@ -327,12 +327,12 @@ internal static class IndicShapingTrie 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 15, 28, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 14, 17, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 6, 3, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 9, 7, 0, 0, 9, 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, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, - 4, 16, 0, 0, 4, 16, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 9, 7, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, + 4, 16, 0, 0, 4, 16, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 15, 0, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 14, 9, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 14, 17, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 14, 9, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, @@ -340,8 +340,8 @@ internal static class IndicShapingTrie 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 5, 0, 0, 15, 6, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, - 15, 0, 0, 0, 15, 0, 0, 0, 15, 7, 0, 0, 15, 7, 0, 0, 15, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 57, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, + 15, 0, 0, 0, 15, 0, 0, 0, 14, 57, 0, 0, 14, 57, 0, 0, 14, 57, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 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, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, @@ -369,7 +369,7 @@ internal static class IndicShapingTrie 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 2, 0, 0, 4, 16, 0, 0, - 4, 16, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 1, 0, 0, 14, 8, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, + 4, 16, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 4, 1, 0, 0, 14, 57, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 16, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 8, 4, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -447,7 +447,7 @@ internal static class IndicShapingTrie 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 15, 14, 0, 0, 15, 14, 0, 0, 4, 2, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 15, 18, 0, 0, 15, 18, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 6, 4, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, @@ -462,7 +462,7 @@ internal static class IndicShapingTrie 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 8, 3, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, - 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 11, 4, 0, 0, 14, 17, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, + 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 11, 4, 0, 0, 14, 17, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 8, 3, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 15, 0, 0, 0, 2, 7, 0, 0, 14, 8, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 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, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, @@ -475,11 +475,11 @@ internal static class IndicShapingTrie 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 8, 3, 0, 0, 8, 3, 0, 0, 14, 17, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 11, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 14, 57, 0, 0, 14, 57, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 9, 0, 0, 14, 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, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 8, 4, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 8, 3, 0, 0, 14, 17, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, - 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 15, 14, 0, 0, 15, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 14, 8, 0, 0, 14, 57, 0, 0, 15, 18, 0, 0, 15, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 2, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 8, 4, 0, 0, 8, 3, 0, 0, 14, 17, 0, 0, 15, 0, 0, 0, @@ -504,7 +504,7 @@ internal static class IndicShapingTrie 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, 2, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 8, 4, 0, 0, 14, 17, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, - 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 9, 7, 0, 0, + 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 14, 8, 0, 0, 9, 7, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 6, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 4, 10, 0, 0, 15, 0, 0, 0, 15, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 9, 7, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 4, 1, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 4, 16, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 14, 8, 0, 0, 15, 28, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 17, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, diff --git a/src/UnicodeTrieGenerator/Generator.IndicShapingEngine.cs b/src/UnicodeTrieGenerator/Generator.IndicShapingEngine.cs index 94f2da36..04a3ff23 100644 --- a/src/UnicodeTrieGenerator/Generator.IndicShapingEngine.cs +++ b/src/UnicodeTrieGenerator/Generator.IndicShapingEngine.cs @@ -34,8 +34,9 @@ public static partial class Generator { ISC.ConsonantPrecedingRepha, Categories.Repha }, { ISC.ConsonantPrefixed, Categories.X }, { ISC.ConsonantSubjoined, Categories.CM }, - { ISC.ConsonantSucceedingRepha, Categories.N }, - { ISC.ConsonantWithStacker, Categories.Repha }, + { ISC.ConsonantInitialPostfixed, Categories.C }, + { ISC.ConsonantSucceedingRepha, Categories.CM }, + { ISC.ConsonantWithStacker, Categories.CS }, { ISC.GeminationMark, Categories.SM }, // https://github.com/harfbuzz/harfbuzz/issues/552 { ISC.InvisibleStacker, Categories.Coeng }, // TODO: Use H once we add explicit Khmer shaper { ISC.Joiner, Categories.ZWJ }, @@ -46,7 +47,7 @@ public static partial class Generator { ISC.NumberJoiner, Categories.Placeholder }, { ISC.PureKiller, Categories.M }, { ISC.RegisterShifter, Categories.RS }, - { ISC.SyllableModifier, Categories.M }, + { ISC.SyllableModifier, Categories.SM }, { ISC.ToneLetter, Categories.X }, { ISC.ToneMark, Categories.N }, { ISC.Virama, Categories.H }, @@ -338,11 +339,11 @@ private static int GetPosition(Codepoint codepoint, Categories category) { position = Positions.Base_C; } - else if (category is Categories.M) + else if (category is Categories.M or Categories.MPst) { position = MatraPosition(codepoint, position); } - else if (category is Categories.SM or Categories.A or Categories.Symbol) + else if (category is Categories.SM or Categories.SMPst or Categories.A or Categories.Symbol) { position = Positions.SMVD; } @@ -367,11 +368,21 @@ private static void GenerateIndicShapingDataTrie(Codepoint[] codePoints) for (int i = 0; i < codePoints.Length; i++) { Codepoint codePoint = codePoints[i]; - Categories rawCategory = IndicShapingOverrides.GetValueOrDefault( - codePoint.Code, - CategoryMap.GetValueOrDefault(codePoint.IndicSyllabicCategory, Categories.X)); - // Apply HarfBuzz-style matra normalization for Khmer/Myanmar blocks. + // Step 1: Map from IndicSyllabicCategory to shaping category. + Categories baseCategory = CategoryMap.GetValueOrDefault(codePoint.IndicSyllabicCategory, Categories.X); + + // Step 2: SM with no positional category becomes SMPst. + // https://github.com/harfbuzz/harfbuzz/blob/main/src/gen-indic-table.py + if (baseCategory == Categories.SM && codePoint.IndicPositionalCategory == IPC.NA) + { + baseCategory = Categories.SMPst; + } + + // Step 3: Apply per-codepoint overrides. + Categories rawCategory = IndicShapingOverrides.GetValueOrDefault(codePoint.Code, baseCategory); + + // Step 4: Apply HarfBuzz-style matra normalization for Khmer/Myanmar blocks. Categories category = NormalizeCategoryForBlock(codePoint, rawCategory); int position = GetPosition(codePoint, category); diff --git a/src/UnicodeTrieGenerator/Rules/indic.machine b/src/UnicodeTrieGenerator/Rules/indic.machine index e4d1c635..9c29b63f 100644 --- a/src/UnicodeTrieGenerator/Rules/indic.machine +++ b/src/UnicodeTrieGenerator/Rules/indic.machine @@ -1,26 +1,28 @@ c = C | Ra; # is_consonant n = (ZWNJ? RS)? (N N?)?; # is_consonant_modifier z = ZWJ | ZWNJ; # is_joiner -h = H | Coeng; # is_halant_or_coeng +h = H | Coeng; # is_halant_or_coeng (Coeng for Khmer) reph = Ra H | Repha; # possible reph +sm = SM | SMPst; cn = c ZWJ? n?; forced_rakar = ZWJ H ZWJ Ra; symbol = Symbol N?; -matra_group = z{0,3} M N? (H | forced_rakar)?; -# syllable_tail = (z? SM SM? ZWNJ?)? A{0,3} VD{0,2}; -syllable_tail = (z? SM SM? ZWNJ?)? A{0,3}; +matra_group = z* (M | sm? MPst) N? (H | forced_rakar)?; +syllable_tail = (z? sm sm? ZWNJ?)? A*; place_holder = Placeholder | Dotted_Circle; halant_group = z? h (ZWJ N?)?; final_halant_group = halant_group | h ZWNJ; medial_group = CM?; -halant_or_matra_group = (final_halant_group | (h ZWJ)? matra_group{0,4}) (Coeng (cn | V))?; +halant_or_matra_group = (final_halant_group | matra_group*) (Coeng (cn | V))?; -consonant_syllable = Repha? (cn halant_group){0,4} cn medial_group halant_or_matra_group syllable_tail; -vowel_syllable = reph? V n? (ZWJ | (halant_group cn){0,4} medial_group halant_or_matra_group syllable_tail); -standalone_cluster = (Repha? Placeholder | reph? Dotted_Circle) n? (halant_group cn){0,4} medial_group halant_or_matra_group syllable_tail; +complex_syllable_tail = (halant_group cn)* medial_group halant_or_matra_group syllable_tail; + +consonant_syllable = (Repha | CS)? cn complex_syllable_tail; +vowel_syllable = reph? V n? (ZWJ | complex_syllable_tail); +standalone_cluster = ((Repha | CS)? Placeholder | reph? Dotted_Circle) n? complex_syllable_tail; symbol_cluster = symbol syllable_tail; -broken_cluster = reph? n? (halant_group cn){0,4} medial_group halant_or_matra_group syllable_tail; +broken_cluster = reph? n? complex_syllable_tail; Main = consonant_syllable:consonant_syllable diff --git a/tests/SixLabors.Fonts.Tests/Tables/AdvancedTypographic/GSub/GSubTableTests.Indic.cs b/tests/SixLabors.Fonts.Tests/Tables/AdvancedTypographic/GSub/GSubTableTests.Indic.cs index 920700dd..9868e34a 100644 --- a/tests/SixLabors.Fonts.Tests/Tables/AdvancedTypographic/GSub/GSubTableTests.Indic.cs +++ b/tests/SixLabors.Fonts.Tests/Tables/AdvancedTypographic/GSub/GSubTableTests.Indic.cs @@ -2,6 +2,9 @@ // Licensed under the Six Labors Split License. using SixLabors.Fonts.Rendering; +using SixLabors.Fonts.Unicode; +using SixLabors.Fonts.Unicode.Resources; +using Categories = SixLabors.Fonts.Unicode.Resources.IndicShapingData.Categories; namespace SixLabors.Fonts.Tests.Tables.AdvancedTypographic.GSub; @@ -447,6 +450,61 @@ public void CanShapeGurmukhiText(string input, int[] expectedGlyphIndices) } } + // https://github.com/SixLabors/Fonts/issues/XXX + [Fact] + public void CanShapeGurmukhiText_WithConjuncts() + { + // "ਤੇਜ਼ ਭੂਰੀ ਲੂੰਬੜੀ ਆਲਸੀ ਕੁੱਤੇ ਉੱਤੇ ਛਾਲ ਮਾਰਦੀ ਹੈ। ਸੰਯੁਕਤ: ੱਕ ੱਤ" + // The diacritic at ੱਕ (addak + kakka) is not offset correctly. + const string input = + "\u0a24\u0a47\u0a1c\u0a3c \u0a2d\u0a42\u0a30\u0a40 \u0a32\u0a42\u0a70\u0a2c\u0a5c\u0a40 " + + "\u0a06\u0a32\u0a38\u0a40 \u0a15\u0a41\u0a71\u0a24\u0a47 \u0a09\u0a71\u0a24\u0a47 " + + "\u0a1b\u0a3e\u0a32 \u0a2e\u0a3e\u0a30\u0a26\u0a40 \u0a39\u0a48\u0964 " + + "\u0a38\u0a70\u0a2f\u0a41\u0a15\u0a24: \u0a71\u0a15 \u0a71\u0a24"; + + int[] expectedGlyphIndices = + [ + 32, 56, 64, 3, // ਤੇਜ਼ (space) + 40, 55, 43, 53, 3, // ਭੂਰੀ (space) + 44, 55, 77, 39, 65, 53, 3, // ਲੂੰਬੜੀ (space) + 8, 44, 48, 53, 3, // ਆਲਸੀ (space) + 17, 54, 78, 32, 56, 3, // ਕੁੱਤੇ (space) + 275, 32, 56, 3, // ਉੱਤੇ (space) + 23, 51, 44, 3, // ਛਾਲ (space) + 41, 51, 43, 34, 53, 3, // ਮਾਰਦੀ (space) + 49, 57, 267, 3, // ਹੈ। (space) + 48, 77, 42, 54, 17, 32, 240, 3, // ਸੰਯੁਕਤ: (space) + 272, 78, 17, 3, // ੱਕ (space) — dotted circle base before addak mark + 272, 78, 32 // ੱਤ — dotted circle base before addak mark + ]; + + ColorGlyphRenderer renderer = new(); + TextRenderer.RenderTextTo(renderer, input, new TextOptions(GurmukhiNotoSansTTF)); + + Assert.Equal(expectedGlyphIndices.Length, renderer.GlyphKeys.Count); + for (int i = 0; i < expectedGlyphIndices.Length; i++) + { + Assert.Equal(expectedGlyphIndices[i], renderer.GlyphKeys[i].GlyphId); + } + } + + // Verifies that the generated Indic shaping trie assigns the correct + // HarfBuzz-compatible categories to codepoints whose mappings were + // previously incorrect. + [Theory] + [InlineData(0x0CF1, (int)Categories.CS)] // KANNADA SIGN JIHVAMULIYA + [InlineData(0x0CF2, (int)Categories.CS)] // KANNADA SIGN UPADHMANIYA + [InlineData(0x17CC, (int)Categories.CM)] // KHMER SIGN ROBAT + [InlineData(0x09FE, (int)Categories.SM)] // BENGALI SANDHI MARK + [InlineData(0x0A71, (int)Categories.SM)] // GURMUKHI ADDAK + [InlineData(0x0A40, (int)Categories.MPst)] // GURMUKHI VOWEL SIGN II + public void IndicShapingCategoryIsCorrect(int codePoint, int expectedCategory) + { + int properties = UnicodeData.GetIndicShapingProperties((uint)codePoint); + int actual = properties >> 8; + Assert.Equal(expectedCategory, actual); + } + [Theory] [InlineData("\u0a97\u0acd\u0ab7", new int[] { 132, 52 })] [InlineData("\u0a97\u0acd\u0ab8", new int[] { 132, 53 })]