text-shaper 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/font/brotli/context.ts", "../src/font/brotli/dictionary.ts", "../src/font/brotli/transform.ts", "../src/font/brotli/decode.ts", "../src/aat/state-machine.ts", "../src/types.ts", "../src/buffer/glyph-buffer.ts", "../src/buffer/unicode-buffer.ts", "../src/font/binary/reader.ts", "../src/font/tables/avar.ts", "../src/font/tables/fvar.ts", "../src/font/tables/hvar.ts", "../src/font/face.ts", "../src/font/woff2.ts", "../src/font/tables/base.ts", "../src/font/tables/cbdt.ts", "../src/font/tables/cff.ts", "../src/font/tables/cff-charstring.ts", "../src/font/tables/cff2.ts", "../src/font/tables/cmap.ts", "../src/font/tables/colr.ts", "../src/font/tables/cpal.ts", "../src/font/tables/feat.ts", "../src/font/tables/gasp.ts", "../src/layout/structures/class-def.ts", "../src/font/tables/gdef.ts", "../src/font/tables/gvar.ts", "../src/font/tables/loca.ts", "../src/font/tables/glyf.ts", "../src/layout/structures/coverage.ts", "../src/layout/structures/device.ts", "../src/layout/structures/layout-common.ts", "../src/font/tables/gpos-contextual.ts", "../src/font/tables/gpos-mark.ts", "../src/font/tables/gpos.ts", "../src/font/tables/gsub-contextual.ts", "../src/font/tables/gsub.ts", "../src/font/tables/head.ts", "../src/font/tables/hhea.ts", "../src/font/tables/hinting.ts", "../src/font/tables/hmtx.ts", "../src/font/tables/jstf.ts", "../src/font/tables/kern.ts", "../src/font/tables/kerx.ts", "../src/font/tables/math.ts", "../src/font/tables/maxp.ts", "../src/font/tables/morx.ts", "../src/font/tables/mvar.ts", "../src/font/tables/name.ts", "../src/font/tables/os2.ts", "../src/font/tables/post.ts", "../src/font/tables/sbix.ts", "../src/font/tables/sfnt.ts", "../src/font/tables/stat.ts", "../src/font/tables/svg.ts", "../src/font/tables/trak.ts", "../src/font/tables/vhea.ts", "../src/font/tables/vmtx.ts", "../src/font/tables/vorg.ts", "../src/font/tables/vvar.ts", "../src/font/font.ts", "../src/layout/justify.ts", "../src/layout/structures/feature-variations.ts", "../src/raster/bbox.ts", "../src/raster/types.ts", "../src/raster/bitmap-utils.ts", "../src/raster/blur.ts", "../src/hinting/instructions/arithmetic.ts", "../src/hinting/instructions/control-flow.ts", "../src/hinting/types.ts", "../src/hinting/rounding.ts", "../src/hinting/instructions/points.ts", "../src/hinting/instructions/delta.ts", "../src/hinting/instructions/graphics-state.ts", "../src/hinting/instructions/interpolate.ts", "../src/hinting/instructions/stack.ts", "../src/hinting/interpreter.ts", "../src/hinting/programs.ts", "../src/render/path.ts", "../src/raster/fixed-point.ts", "../src/raster/cell.ts", "../src/raster/gray-raster.ts", "../src/raster/outline-decompose.ts", "../src/raster/sdf.ts", "../src/raster/stroker.ts", "../src/raster/synth.ts", "../src/raster/rasterize.ts", "../src/raster/gradient.ts", "../src/unicode/normalize.ts", "../src/shaper/fallback.ts", "../src/shaper/features.ts", "../src/shaper/shape-plan.ts", "../src/shaper/complex/arabic.ts", "../src/shaper/complex/hangul.ts", "../src/shaper/complex/hebrew.ts", "../src/shaper/complex/indic.ts", "../src/shaper/complex/khmer.ts", "../src/shaper/complex/myanmar.ts", "../src/shaper/complex/thai-lao.ts", "../src/shaper/complex/use.ts", "../src/shaper/shaper.ts", "../src/unicode/bidi/brackets.gen.ts", "../src/unicode/bidi/parse-character-map.ts", "../src/unicode/bidi/brackets.ts", "../src/unicode/bidi/char-types.gen.ts", "../src/unicode/bidi/char-types.ts", "../src/unicode/bidi/embedding-levels.ts", "../src/unicode/bidi/mirroring.gen.ts", "../src/unicode/bidi/mirroring.ts", "../src/unicode/bidi/reordering.ts", "../src/unicode/bidi.ts", "../src/unicode/line-break.ts", "../src/unicode/script.ts", "../src/unicode/segmentation.ts"],
3
+ "sources": ["../src/font/brotli/context.ts", "../src/font/brotli/dictionary.ts", "../src/font/brotli/transform.ts", "../src/font/brotli/decode.ts", "../src/aat/state-machine.ts", "../src/types.ts", "../src/buffer/glyph-buffer.ts", "../src/buffer/unicode-buffer.ts", "../src/font/binary/reader.ts", "../src/font/tables/avar.ts", "../src/font/tables/fvar.ts", "../src/font/tables/hvar.ts", "../src/font/face.ts", "../src/font/woff2.ts", "../src/font/tables/base.ts", "../src/font/tables/cbdt.ts", "../src/font/tables/cff.ts", "../src/font/tables/cff-charstring.ts", "../src/font/tables/cff2.ts", "../src/font/tables/cmap.ts", "../src/font/tables/colr.ts", "../src/font/tables/cpal.ts", "../src/font/tables/feat.ts", "../src/font/tables/gasp.ts", "../src/layout/structures/class-def.ts", "../src/font/tables/gdef.ts", "../src/font/tables/gvar.ts", "../src/font/tables/loca.ts", "../src/font/tables/glyf.ts", "../src/layout/structures/coverage.ts", "../src/layout/structures/device.ts", "../src/layout/structures/layout-common.ts", "../src/font/tables/gpos-contextual.ts", "../src/font/tables/gpos-mark.ts", "../src/font/tables/gpos.ts", "../src/font/tables/gsub-contextual.ts", "../src/font/tables/gsub.ts", "../src/font/tables/head.ts", "../src/font/tables/hhea.ts", "../src/font/tables/hinting.ts", "../src/font/tables/hmtx.ts", "../src/font/tables/jstf.ts", "../src/font/tables/kern.ts", "../src/font/tables/kerx.ts", "../src/font/tables/math.ts", "../src/font/tables/maxp.ts", "../src/font/tables/morx.ts", "../src/font/tables/mvar.ts", "../src/font/tables/name.ts", "../src/font/tables/os2.ts", "../src/font/tables/post.ts", "../src/font/tables/sbix.ts", "../src/font/tables/sfnt.ts", "../src/font/tables/stat.ts", "../src/font/tables/svg.ts", "../src/font/tables/trak.ts", "../src/font/tables/vhea.ts", "../src/font/tables/vmtx.ts", "../src/font/tables/vorg.ts", "../src/font/tables/vvar.ts", "../src/font/font.ts", "../src/layout/justify.ts", "../src/layout/structures/feature-variations.ts", "../src/raster/asymmetric-stroke.ts", "../src/hinting/instructions/arithmetic.ts", "../src/hinting/instructions/control-flow.ts", "../src/hinting/types.ts", "../src/hinting/rounding.ts", "../src/hinting/instructions/points.ts", "../src/hinting/instructions/delta.ts", "../src/hinting/instructions/graphics-state.ts", "../src/hinting/instructions/interpolate.ts", "../src/hinting/instructions/stack.ts", "../src/hinting/interpreter.ts", "../src/hinting/programs.ts", "../src/render/path.ts", "../src/raster/fixed-point.ts", "../src/raster/cell.ts", "../src/raster/types.ts", "../src/raster/gray-raster.ts", "../src/raster/outline-decompose.ts", "../src/raster/bbox.ts", "../src/raster/bitmap-utils.ts", "../src/raster/blur.ts", "../src/raster/gradient.ts", "../src/raster/sdf.ts", "../src/raster/stroker.ts", "../src/raster/synth.ts", "../src/raster/rasterize.ts", "../src/raster/atlas.ts", "../src/raster/cascade-blur.ts", "../src/raster/msdf.ts", "../src/render/outline-transform.ts", "../src/unicode/normalize.ts", "../src/shaper/fallback.ts", "../src/shaper/features.ts", "../src/shaper/shape-plan.ts", "../src/shaper/complex/arabic.ts", "../src/shaper/complex/hangul.ts", "../src/shaper/complex/hebrew.ts", "../src/shaper/complex/indic.ts", "../src/shaper/complex/khmer.ts", "../src/shaper/complex/myanmar.ts", "../src/shaper/complex/thai-lao.ts", "../src/shaper/complex/use.ts", "../src/shaper/shaper.ts", "../src/unicode/bidi/brackets.gen.ts", "../src/unicode/bidi/parse-character-map.ts", "../src/unicode/bidi/brackets.ts", "../src/unicode/bidi/char-types.gen.ts", "../src/unicode/bidi/char-types.ts", "../src/unicode/bidi/embedding-levels.ts", "../src/unicode/bidi/mirroring.gen.ts", "../src/unicode/bidi/mirroring.ts", "../src/unicode/bidi/reordering.ts", "../src/unicode/bidi.ts", "../src/unicode/line-break.ts", "../src/unicode/script.ts", "../src/unicode/segmentation.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Context lookup tables for Brotli decompression\n * Based on brotli.js reference implementation (Apache 2.0 License)\n */\n\n// Context lookup table combining all context modes\nexport const CONTEXT_LOOKUP = new Uint8Array([\n\t// CONTEXT_UTF8, last byte (0-255)\n\t// ASCII range\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36,\n\t12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48,\n\t52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52,\n\t48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60,\n\t60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60,\n\t24, 12, 28, 12, 0,\n\t// UTF8 continuation byte range\n\t0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n\t0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n\t0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n\t// UTF8 lead byte range\n\t2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n\t2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n\t2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n\t// CONTEXT_UTF8 second last byte (256-511)\n\t// ASCII range\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,\n\t2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3,\n\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n\t// UTF8 continuation byte range\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0,\n\t// UTF8 lead byte range\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t// CONTEXT_SIGNED, second last byte (512-767)\n\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,\n\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n\t5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n\t5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n\t// CONTEXT_SIGNED, last byte (768-1023)\n\t0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16,\n\t16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n\t16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n\t16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40,\n\t40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n\t40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n\t40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,\n\t48, 48, 48, 48, 56,\n\t// CONTEXT_LSB6, last byte (1024-1279)\n\t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,\n\t22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n\t41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n\t60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n\t18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,\n\t37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,\n\t56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,\n\t14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,\n\t33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n\t52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n\t10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,\n\t29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n\t48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n\t// CONTEXT_MSB6, last byte (1280-1535)\n\t0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6,\n\t6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,\n\t12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16,\n\t17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21,\n\t21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26,\n\t26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31,\n\t31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n\t36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40,\n\t40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45,\n\t45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50,\n\t50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54,\n\t55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59,\n\t59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n\t// CONTEXT_{M,L}SB6, second last byte (1536-1791)\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\n// Lookup offsets for different context modes\nexport const CONTEXT_LOOKUP_OFFSETS = new Uint16Array([\n\t// CONTEXT_LSB6\n\t1024, 1536,\n\t// CONTEXT_MSB6\n\t1280, 1536,\n\t// CONTEXT_UTF8\n\t0, 256,\n\t// CONTEXT_SIGNED\n\t768, 512,\n]);\n",
6
6
  "/**\n * Brotli static dictionary\n * Based on brotli.js reference implementation (Apache 2.0 License)\n *\n * The dictionary is loaded lazily to avoid bloating the initial bundle.\n */\n\n// Offsets into the dictionary by word length (4-24)\nexport const DICTIONARY_OFFSETS_BY_LENGTH = new Uint32Array([\n\t0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040,\n\t93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280,\n\t122016,\n]);\n\n// Size bits by word length\nexport const DICTIONARY_SIZE_BITS_BY_LENGTH = new Uint8Array([\n\t0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6,\n\t5, 5,\n]);\n\nexport const MIN_DICTIONARY_WORD_LENGTH = 4;\nexport const MAX_DICTIONARY_WORD_LENGTH = 24;\n\n// The Brotli dictionary is ~122KB of static data\n// For WOFF2 fonts, dictionary references are relatively rare in font data\n// since fonts are mostly binary glyph data, not text.\n// We initialize an empty dictionary - if dictionary references are needed,\n// the full dictionary can be loaded separately.\nexport const DICTIONARY = new Uint8Array(122784);\n",
@@ -65,10 +65,7 @@
65
65
  "import type { GlyphId, TableRecord, Tag } from \"../types.ts\";\nimport { Tags, tagToString } from \"../types.ts\";\nimport { Reader } from \"./binary/reader.ts\";\nimport { woff2ToSfnt } from \"./woff2.ts\";\n\n// WOFF/WOFF2 magic numbers\nconst WOFF_MAGIC = 0x774f4646; // 'wOFF'\nconst WOFF2_MAGIC = 0x774f4632; // 'wOF2'\n\n/** Check if buffer is WOFF2 format */\nfunction isWoff2(buffer: ArrayBuffer): boolean {\n\tconst view = new DataView(buffer);\n\treturn view.getUint32(0, false) === WOFF2_MAGIC;\n}\n\n/** Check if buffer is WOFF format */\nfunction isWoff(buffer: ArrayBuffer): boolean {\n\tconst view = new DataView(buffer);\n\treturn view.getUint32(0, false) === WOFF_MAGIC;\n}\n\nimport { type AvarTable, parseAvar } from \"./tables/avar.ts\";\nimport { type BaseTable, parseBase } from \"./tables/base.ts\";\nimport {\n\ttype CbdtTable,\n\ttype CblcTable,\n\tparseCbdt,\n\tparseCblc,\n} from \"./tables/cbdt.ts\";\nimport { type CffTable, parseCff } from \"./tables/cff.ts\";\nimport {\n\texecuteCff2CharString,\n\texecuteCffCharString,\n} from \"./tables/cff-charstring.ts\";\nimport { type Cff2Table, parseCff2 } from \"./tables/cff2.ts\";\nimport { type CmapTable, getGlyphId, parseCmap } from \"./tables/cmap.ts\";\nimport { type ColrTable, parseColr } from \"./tables/colr.ts\";\nimport { type CpalTable, parseCpal } from \"./tables/cpal.ts\";\nimport { type FeatTable, parseFeat } from \"./tables/feat.ts\";\nimport { type FvarTable, parseFvar } from \"./tables/fvar.ts\";\nimport { type GaspTable, parseGasp } from \"./tables/gasp.ts\";\nimport { type GdefTable, parseGdef } from \"./tables/gdef.ts\";\nimport {\n\ttype Contour,\n\ttype GlyfTable,\n\ttype Glyph,\n\tgetGlyphBounds,\n\tgetGlyphContours,\n\tgetGlyphContoursWithVariation,\n\tparseGlyf,\n\tparseGlyph,\n} from \"./tables/glyf.ts\";\nimport { type GposTable, parseGpos } from \"./tables/gpos.ts\";\nimport { type GsubTable, parseGsub } from \"./tables/gsub.ts\";\nimport { type GvarTable, parseGvar } from \"./tables/gvar.ts\";\nimport { type HeadTable, parseHead } from \"./tables/head.ts\";\nimport { type HheaTable, parseHhea } from \"./tables/hhea.ts\";\nimport {\n\ttype CvtTable,\n\ttype FpgmTable,\n\ttype PrepTable,\n\tparseCvt,\n\tparseFpgm,\n\tparsePrep,\n} from \"./tables/hinting.ts\";\nimport {\n\tgetAdvanceWidth,\n\tgetLeftSideBearing,\n\ttype HmtxTable,\n\tparseHmtx,\n} from \"./tables/hmtx.ts\";\nimport { type HvarTable, parseHvar } from \"./tables/hvar.ts\";\nimport { type JstfTable, parseJstf } from \"./tables/jstf.ts\";\nimport { type KernTable, parseKern } from \"./tables/kern.ts\";\nimport { type KerxTable, parseKerx } from \"./tables/kerx.ts\";\nimport { type LocaTable, parseLoca } from \"./tables/loca.ts\";\nimport { type MathTable, parseMath } from \"./tables/math.ts\";\nimport { type MaxpTable, parseMaxp } from \"./tables/maxp.ts\";\nimport { type MorxTable, parseMorx } from \"./tables/morx.ts\";\nimport { type MvarTable, parseMvar } from \"./tables/mvar.ts\";\nimport { type NameTable, parseName } from \"./tables/name.ts\";\nimport { type Os2Table, parseOs2 } from \"./tables/os2.ts\";\nimport { type PostTable, parsePost } from \"./tables/post.ts\";\nimport { parseSbix, type SbixTable } from \"./tables/sbix.ts\";\nimport {\n\ttype FontDirectory,\n\tisTrueType,\n\tparseFontDirectory,\n} from \"./tables/sfnt.ts\";\nimport { parseStat, type StatTable } from \"./tables/stat.ts\";\nimport { parseSvg, type SvgTable } from \"./tables/svg.ts\";\nimport { parseTrak, type TrakTable } from \"./tables/trak.ts\";\nimport { parseVhea, type VheaTable } from \"./tables/vhea.ts\";\nimport { parseVmtx, type VmtxTable } from \"./tables/vmtx.ts\";\nimport { parseVorg, type VorgTable } from \"./tables/vorg.ts\";\nimport { parseVvar, type VvarTable } from \"./tables/vvar.ts\";\n\n/** Font loading options */\nexport interface FontLoadOptions {\n\t/** Tables to parse eagerly (default: lazy) */\n\teagerTables?: Tag[];\n}\n\n/**\n * Represents a loaded font file.\n * Tables are parsed lazily on first access.\n */\nexport class Font {\n\tprivate readonly reader: Reader;\n\tprivate readonly directory: FontDirectory;\n\n\t// Lazy-loaded tables\n\tprivate _head: HeadTable | null = null;\n\tprivate _maxp: MaxpTable | null = null;\n\tprivate _hhea: HheaTable | null = null;\n\tprivate _hmtx: HmtxTable | null = null;\n\tprivate _cmap: CmapTable | null = null;\n\tprivate _gdef: GdefTable | null | undefined = undefined;\n\tprivate _gsub: GsubTable | null | undefined = undefined;\n\tprivate _gpos: GposTable | null | undefined = undefined;\n\tprivate _kern: KernTable | null | undefined = undefined;\n\tprivate _fvar: FvarTable | null | undefined = undefined;\n\tprivate _hvar: HvarTable | null | undefined = undefined;\n\tprivate _vhea: VheaTable | null | undefined = undefined;\n\tprivate _vmtx: VmtxTable | null | undefined = undefined;\n\tprivate _morx: MorxTable | null | undefined = undefined;\n\tprivate _gvar: GvarTable | null | undefined = undefined;\n\tprivate _avar: AvarTable | null | undefined = undefined;\n\tprivate _kerx: KerxTable | null | undefined = undefined;\n\tprivate _trak: TrakTable | null | undefined = undefined;\n\tprivate _cff: CffTable | null | undefined = undefined;\n\tprivate _cff2: Cff2Table | null | undefined = undefined;\n\tprivate _colr: ColrTable | null | undefined = undefined;\n\tprivate _cpal: CpalTable | null | undefined = undefined;\n\tprivate _vvar: VvarTable | null | undefined = undefined;\n\tprivate _mvar: MvarTable | null | undefined = undefined;\n\tprivate _os2: Os2Table | null | undefined = undefined;\n\tprivate _name: NameTable | null | undefined = undefined;\n\tprivate _post: PostTable | null | undefined = undefined;\n\tprivate _base: BaseTable | null | undefined = undefined;\n\tprivate _jstf: JstfTable | null | undefined = undefined;\n\tprivate _math: MathTable | null | undefined = undefined;\n\tprivate _loca: LocaTable | null | undefined = undefined;\n\tprivate _glyf: GlyfTable | null | undefined = undefined;\n\tprivate _svg: SvgTable | null | undefined = undefined;\n\tprivate _vorg: VorgTable | null | undefined = undefined;\n\tprivate _sbix: SbixTable | null | undefined = undefined;\n\tprivate _stat: StatTable | null | undefined = undefined;\n\tprivate _cbdt: CbdtTable | null | undefined = undefined;\n\tprivate _cblc: CblcTable | null | undefined = undefined;\n\tprivate _feat: FeatTable | null | undefined = undefined;\n\tprivate _fpgm: FpgmTable | null | undefined = undefined;\n\tprivate _prep: PrepTable | null | undefined = undefined;\n\tprivate _cvt: CvtTable | null | undefined = undefined;\n\tprivate _gasp: GaspTable | null | undefined = undefined;\n\n\tprivate constructor(buffer: ArrayBuffer, _options: FontLoadOptions = {}) {\n\t\tthis.reader = new Reader(buffer);\n\t\tthis.directory = parseFontDirectory(this.reader);\n\t}\n\n\t/** Load font from ArrayBuffer (sync - does not support WOFF2) */\n\tstatic load(buffer: ArrayBuffer, options?: FontLoadOptions): Font {\n\t\tif (isWoff2(buffer)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"WOFF2 requires async loading. Use Font.loadAsync() instead.\",\n\t\t\t);\n\t\t}\n\t\tif (isWoff(buffer)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"WOFF format is not supported. Please use TTF, OTF, or WOFF2.\",\n\t\t\t);\n\t\t}\n\t\treturn new Font(buffer, options);\n\t}\n\n\t/** Load font from ArrayBuffer with WOFF2 support (async) */\n\tstatic async loadAsync(\n\t\tbuffer: ArrayBuffer,\n\t\toptions?: FontLoadOptions,\n\t): Promise<Font> {\n\t\tif (isWoff2(buffer)) {\n\t\t\tbuffer = await woff2ToSfnt(buffer);\n\t\t} else if (isWoff(buffer)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"WOFF format is not supported. Please use TTF, OTF, or WOFF2.\",\n\t\t\t);\n\t\t}\n\t\treturn new Font(buffer, options);\n\t}\n\n\t/** Load font from URL (works in browser and Bun, supports WOFF2) */\n\tstatic async fromURL(url: string, options?: FontLoadOptions): Promise<Font> {\n\t\tconst response = await fetch(url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to fetch font: ${response.status} ${response.statusText}`,\n\t\t\t);\n\t\t}\n\t\tconst buffer = await response.arrayBuffer();\n\t\treturn Font.loadAsync(buffer, options);\n\t}\n\n\t/** Load font from file path (Bun only, supports WOFF2) */\n\tstatic async fromFile(\n\t\tpath: string,\n\t\toptions?: FontLoadOptions,\n\t): Promise<Font> {\n\t\tconst file = Bun.file(path);\n\t\tconst buffer = await file.arrayBuffer();\n\t\treturn Font.loadAsync(buffer, options);\n\t}\n\n\t// Table accessors\n\n\t/** Check if font has a specific table */\n\thasTable(tag: Tag): boolean {\n\t\treturn this.directory.tables.has(tag);\n\t}\n\n\t/** Get table record */\n\tgetTableRecord(tag: Tag): TableRecord | undefined {\n\t\treturn this.directory.tables.get(tag);\n\t}\n\n\t/** Get reader for a table */\n\tgetTableReader(tag: Tag): Reader | null {\n\t\tconst record = this.directory.tables.get(tag);\n\t\tif (!record) return null;\n\t\treturn this.reader.slice(record.offset, record.length);\n\t}\n\n\t// Required tables (lazy-loaded)\n\n\tget head(): HeadTable {\n\t\tif (!this._head) {\n\t\t\tconst reader = this.getTableReader(Tags.head);\n\t\t\tif (!reader) throw new Error(\"Missing required 'head' table\");\n\t\t\tthis._head = parseHead(reader);\n\t\t}\n\t\treturn this._head;\n\t}\n\n\tget maxp(): MaxpTable {\n\t\tif (!this._maxp) {\n\t\t\tconst reader = this.getTableReader(Tags.maxp);\n\t\t\tif (!reader) throw new Error(\"Missing required 'maxp' table\");\n\t\t\tthis._maxp = parseMaxp(reader);\n\t\t}\n\t\treturn this._maxp;\n\t}\n\n\tget hhea(): HheaTable {\n\t\tif (!this._hhea) {\n\t\t\tconst reader = this.getTableReader(Tags.hhea);\n\t\t\tif (!reader) throw new Error(\"Missing required 'hhea' table\");\n\t\t\tthis._hhea = parseHhea(reader);\n\t\t}\n\t\treturn this._hhea;\n\t}\n\n\tget hmtx(): HmtxTable {\n\t\tif (!this._hmtx) {\n\t\t\tconst reader = this.getTableReader(Tags.hmtx);\n\t\t\tif (!reader) throw new Error(\"Missing required 'hmtx' table\");\n\t\t\tthis._hmtx = parseHmtx(\n\t\t\t\treader,\n\t\t\t\tthis.hhea.numberOfHMetrics,\n\t\t\t\tthis.numGlyphs,\n\t\t\t);\n\t\t}\n\t\treturn this._hmtx;\n\t}\n\n\tget cmap(): CmapTable {\n\t\tif (!this._cmap) {\n\t\t\tconst record = this.getTableRecord(Tags.cmap);\n\t\t\tconst reader = this.getTableReader(Tags.cmap);\n\t\t\tif (!reader || !record) throw new Error(\"Missing required 'cmap' table\");\n\t\t\tthis._cmap = parseCmap(reader, record.length);\n\t\t}\n\t\treturn this._cmap;\n\t}\n\n\tget gdef(): GdefTable | null {\n\t\tif (this._gdef === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.GDEF);\n\t\t\tthis._gdef = reader ? parseGdef(reader) : null;\n\t\t}\n\t\treturn this._gdef;\n\t}\n\n\tget gsub(): GsubTable | null {\n\t\tif (this._gsub === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.GSUB);\n\t\t\tthis._gsub = reader ? parseGsub(reader) : null;\n\t\t}\n\t\treturn this._gsub;\n\t}\n\n\tget gpos(): GposTable | null {\n\t\tif (this._gpos === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.GPOS);\n\t\t\tthis._gpos = reader ? parseGpos(reader) : null;\n\t\t}\n\t\treturn this._gpos;\n\t}\n\n\tget kern(): KernTable | null {\n\t\tif (this._kern === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.kern);\n\t\t\tthis._kern = reader ? parseKern(reader) : null;\n\t\t}\n\t\treturn this._kern;\n\t}\n\n\tget fvar(): FvarTable | null {\n\t\tif (this._fvar === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.fvar);\n\t\t\tthis._fvar = reader ? parseFvar(reader) : null;\n\t\t}\n\t\treturn this._fvar;\n\t}\n\n\tget hvar(): HvarTable | null {\n\t\tif (this._hvar === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.HVAR);\n\t\t\tthis._hvar = reader ? parseHvar(reader) : null;\n\t\t}\n\t\treturn this._hvar;\n\t}\n\n\tget vhea(): VheaTable | null {\n\t\tif (this._vhea === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.vhea);\n\t\t\tthis._vhea = reader ? parseVhea(reader) : null;\n\t\t}\n\t\treturn this._vhea;\n\t}\n\n\tget vmtx(): VmtxTable | null {\n\t\tif (this._vmtx === undefined) {\n\t\t\tconst vhea = this.vhea;\n\t\t\tif (!vhea) {\n\t\t\t\tthis._vmtx = null;\n\t\t\t} else {\n\t\t\t\tconst reader = this.getTableReader(Tags.vmtx);\n\t\t\t\tthis._vmtx = reader\n\t\t\t\t\t? parseVmtx(reader, vhea.numberOfVMetrics, this.numGlyphs)\n\t\t\t\t\t: null;\n\t\t\t}\n\t\t}\n\t\treturn this._vmtx;\n\t}\n\n\tget morx(): MorxTable | null {\n\t\tif (this._morx === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.morx);\n\t\t\tthis._morx = reader ? parseMorx(reader) : null;\n\t\t}\n\t\treturn this._morx;\n\t}\n\n\tget gvar(): GvarTable | null {\n\t\tif (this._gvar === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.gvar);\n\t\t\tthis._gvar = reader ? parseGvar(reader, this.numGlyphs) : null;\n\t\t}\n\t\treturn this._gvar;\n\t}\n\n\tget avar(): AvarTable | null {\n\t\tif (this._avar === undefined) {\n\t\t\tconst fvar = this.fvar;\n\t\t\tif (!fvar) {\n\t\t\t\tthis._avar = null;\n\t\t\t} else {\n\t\t\t\tconst reader = this.getTableReader(Tags.avar);\n\t\t\t\tthis._avar = reader ? parseAvar(reader, fvar.axes.length) : null;\n\t\t\t}\n\t\t}\n\t\treturn this._avar;\n\t}\n\n\tget kerx(): KerxTable | null {\n\t\tif (this._kerx === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.kerx);\n\t\t\tthis._kerx = reader ? parseKerx(reader) : null;\n\t\t}\n\t\treturn this._kerx;\n\t}\n\n\tget trak(): TrakTable | null {\n\t\tif (this._trak === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.trak);\n\t\t\tthis._trak = reader ? parseTrak(reader) : null;\n\t\t}\n\t\treturn this._trak;\n\t}\n\n\tget cff(): CffTable | null {\n\t\tif (this._cff === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.CFF);\n\t\t\tthis._cff = reader ? parseCff(reader) : null;\n\t\t}\n\t\treturn this._cff;\n\t}\n\n\tget cff2(): Cff2Table | null {\n\t\tif (this._cff2 === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.CFF2);\n\t\t\tthis._cff2 = reader ? parseCff2(reader) : null;\n\t\t}\n\t\treturn this._cff2;\n\t}\n\n\tget colr(): ColrTable | null {\n\t\tif (this._colr === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.COLR);\n\t\t\tthis._colr = reader ? parseColr(reader) : null;\n\t\t}\n\t\treturn this._colr;\n\t}\n\n\tget cpal(): CpalTable | null {\n\t\tif (this._cpal === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.CPAL);\n\t\t\tthis._cpal = reader ? parseCpal(reader) : null;\n\t\t}\n\t\treturn this._cpal;\n\t}\n\n\tget vvar(): VvarTable | null {\n\t\tif (this._vvar === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.VVAR);\n\t\t\tthis._vvar = reader ? parseVvar(reader) : null;\n\t\t}\n\t\treturn this._vvar;\n\t}\n\n\tget mvar(): MvarTable | null {\n\t\tif (this._mvar === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.MVAR);\n\t\t\tthis._mvar = reader ? parseMvar(reader) : null;\n\t\t}\n\t\treturn this._mvar;\n\t}\n\n\tget os2(): Os2Table | null {\n\t\tif (this._os2 === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.OS2);\n\t\t\tthis._os2 = reader ? parseOs2(reader) : null;\n\t\t}\n\t\treturn this._os2;\n\t}\n\n\tget name(): NameTable | null {\n\t\tif (this._name === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.name);\n\t\t\tthis._name = reader ? parseName(reader) : null;\n\t\t}\n\t\treturn this._name;\n\t}\n\n\tget post(): PostTable | null {\n\t\tif (this._post === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.post);\n\t\t\tthis._post = reader ? parsePost(reader) : null;\n\t\t}\n\t\treturn this._post;\n\t}\n\n\tget base(): BaseTable | null {\n\t\tif (this._base === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.BASE);\n\t\t\tthis._base = reader ? parseBase(reader) : null;\n\t\t}\n\t\treturn this._base;\n\t}\n\n\tget jstf(): JstfTable | null {\n\t\tif (this._jstf === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.JSTF);\n\t\t\tthis._jstf = reader ? parseJstf(reader) : null;\n\t\t}\n\t\treturn this._jstf;\n\t}\n\n\tget math(): MathTable | null {\n\t\tif (this._math === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.MATH);\n\t\t\tthis._math = reader ? parseMath(reader) : null;\n\t\t}\n\t\treturn this._math;\n\t}\n\n\tget loca(): LocaTable | null {\n\t\tif (this._loca === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.loca);\n\t\t\tthis._loca = reader\n\t\t\t\t? parseLoca(reader, this.numGlyphs, this.head.indexToLocFormat)\n\t\t\t\t: null;\n\t\t}\n\t\treturn this._loca;\n\t}\n\n\tget glyf(): GlyfTable | null {\n\t\tif (this._glyf === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.glyf);\n\t\t\tthis._glyf = reader ? parseGlyf(reader) : null;\n\t\t}\n\t\treturn this._glyf;\n\t}\n\n\tget svg(): SvgTable | null {\n\t\tif (this._svg === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.SVG);\n\t\t\tthis._svg = reader ? parseSvg(reader) : null;\n\t\t}\n\t\treturn this._svg;\n\t}\n\n\tget vorg(): VorgTable | null {\n\t\tif (this._vorg === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.VORG);\n\t\t\tthis._vorg = reader ? parseVorg(reader) : null;\n\t\t}\n\t\treturn this._vorg;\n\t}\n\n\tget sbix(): SbixTable | null {\n\t\tif (this._sbix === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.sbix);\n\t\t\tthis._sbix = reader ? parseSbix(reader, this.numGlyphs) : null;\n\t\t}\n\t\treturn this._sbix;\n\t}\n\n\tget stat(): StatTable | null {\n\t\tif (this._stat === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.STAT);\n\t\t\tthis._stat = reader ? parseStat(reader) : null;\n\t\t}\n\t\treturn this._stat;\n\t}\n\n\tget cblc(): CblcTable | null {\n\t\tif (this._cblc === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.CBLC);\n\t\t\tthis._cblc = reader ? parseCblc(reader) : null;\n\t\t}\n\t\treturn this._cblc;\n\t}\n\n\tget cbdt(): CbdtTable | null {\n\t\tif (this._cbdt === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.CBDT);\n\t\t\tthis._cbdt = reader ? parseCbdt(reader) : null;\n\t\t}\n\t\treturn this._cbdt;\n\t}\n\n\tget feat(): FeatTable | null {\n\t\tif (this._feat === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.feat);\n\t\t\tthis._feat = reader ? parseFeat(reader) : null;\n\t\t}\n\t\treturn this._feat;\n\t}\n\n\tget fpgm(): FpgmTable | null {\n\t\tif (this._fpgm === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.fpgm);\n\t\t\tthis._fpgm = reader ? parseFpgm(reader) : null;\n\t\t}\n\t\treturn this._fpgm;\n\t}\n\n\tget prep(): PrepTable | null {\n\t\tif (this._prep === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.prep);\n\t\t\tthis._prep = reader ? parsePrep(reader) : null;\n\t\t}\n\t\treturn this._prep;\n\t}\n\n\tget cvtTable(): CvtTable | null {\n\t\tif (this._cvt === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.cvt);\n\t\t\tthis._cvt = reader ? parseCvt(reader) : null;\n\t\t}\n\t\treturn this._cvt;\n\t}\n\n\tget gasp(): GaspTable | null {\n\t\tif (this._gasp === undefined) {\n\t\t\tconst reader = this.getTableReader(Tags.gasp);\n\t\t\tthis._gasp = reader ? parseGasp(reader) : null;\n\t\t}\n\t\treturn this._gasp;\n\t}\n\n\t// Convenience properties\n\n\t/** Number of glyphs in the font */\n\tget numGlyphs(): number {\n\t\treturn this.maxp.numGlyphs;\n\t}\n\n\t/** Units per em */\n\tget unitsPerEm(): number {\n\t\treturn this.head.unitsPerEm;\n\t}\n\n\t/** Ascender (from hhea) */\n\tget ascender(): number {\n\t\treturn this.hhea.ascender;\n\t}\n\n\t/** Descender (from hhea) */\n\tget descender(): number {\n\t\treturn this.hhea.descender;\n\t}\n\n\t/** Line gap (from hhea) */\n\tget lineGap(): number {\n\t\treturn this.hhea.lineGap;\n\t}\n\n\t/** Is this a TrueType font (vs CFF)? */\n\tget isTrueType(): boolean {\n\t\treturn isTrueType(this.directory);\n\t}\n\n\t/** Is this a CFF font? */\n\tget isCFF(): boolean {\n\t\treturn this.hasTable(Tags.CFF) || this.hasTable(Tags.CFF2);\n\t}\n\n\t/** Is this a variable font? */\n\tget isVariable(): boolean {\n\t\treturn this.hasTable(Tags.fvar);\n\t}\n\n\t/** Has OpenType layout tables? */\n\tget hasOpenTypeLayout(): boolean {\n\t\treturn this.hasTable(Tags.GSUB) || this.hasTable(Tags.GPOS);\n\t}\n\n\t/** Has AAT layout tables? */\n\tget hasAATLayout(): boolean {\n\t\treturn this.hasTable(Tags.morx) || this.hasTable(Tags.kerx);\n\t}\n\n\t/** Is this a color font? */\n\tget isColorFont(): boolean {\n\t\treturn (\n\t\t\tthis.hasTable(Tags.COLR) ||\n\t\t\tthis.hasTable(Tags.SVG) ||\n\t\t\tthis.hasTable(Tags.sbix) ||\n\t\t\tthis.hasTable(Tags.CBDT)\n\t\t);\n\t}\n\n\t/** Does this font have TrueType hinting? */\n\tget hasHinting(): boolean {\n\t\treturn (\n\t\t\tthis.isTrueType && (this.hasTable(Tags.fpgm) || this.hasTable(Tags.prep))\n\t\t);\n\t}\n\n\t// Glyph operations\n\n\t/** Get glyph ID for a Unicode codepoint */\n\tglyphId(codepoint: number): GlyphId {\n\t\treturn getGlyphId(this.cmap, codepoint);\n\t}\n\n\t/** Get glyph ID for a character */\n\tglyphIdForChar(char: string): GlyphId {\n\t\tconst codepoint = char.codePointAt(0);\n\t\tif (codepoint === undefined) return 0;\n\t\treturn this.glyphId(codepoint);\n\t}\n\n\t/** Get advance width for a glyph */\n\tadvanceWidth(glyphId: GlyphId): number {\n\t\treturn getAdvanceWidth(this.hmtx, glyphId);\n\t}\n\n\t/** Get left side bearing for a glyph */\n\tleftSideBearing(glyphId: GlyphId): number {\n\t\treturn getLeftSideBearing(this.hmtx, glyphId);\n\t}\n\n\t/** List all table tags in the font */\n\tlistTables(): string[] {\n\t\treturn Array.from(this.directory.tables.keys()).map(tagToString);\n\t}\n\n\t// Glyph outline operations\n\n\t/** Get raw glyph data (simple or composite) - TrueType only */\n\tgetGlyph(glyphId: GlyphId): Glyph | null {\n\t\tif (!this.glyf || !this.loca) return null;\n\t\treturn parseGlyph(this.glyf, this.loca, glyphId);\n\t}\n\n\t/** Get flattened contours for a glyph (resolves composites) */\n\tgetGlyphContours(glyphId: GlyphId): Contour[] | null {\n\t\t// Try TrueType first\n\t\tif (this.glyf && this.loca) {\n\t\t\treturn getGlyphContours(this.glyf, this.loca, glyphId);\n\t\t}\n\t\t// Try CFF\n\t\tif (this.cff) {\n\t\t\treturn executeCffCharString(this.cff, glyphId, 0);\n\t\t}\n\t\t// Try CFF2\n\t\tif (this.cff2) {\n\t\t\treturn executeCff2CharString(this.cff2, glyphId, null);\n\t\t}\n\t\treturn null;\n\t}\n\n\t/** Get bounding box for a glyph */\n\tgetGlyphBounds(\n\t\tglyphId: GlyphId,\n\t): { xMin: number; yMin: number; xMax: number; yMax: number } | null {\n\t\t// Try TrueType first\n\t\tif (this.glyf && this.loca) {\n\t\t\treturn getGlyphBounds(this.glyf, this.loca, glyphId);\n\t\t}\n\t\t// For CFF, compute bounds from contours\n\t\tconst contours = this.getGlyphContours(glyphId);\n\t\tif (!contours || contours.length === 0) return null;\n\n\t\tlet xMin = Infinity;\n\t\tlet yMin = Infinity;\n\t\tlet xMax = -Infinity;\n\t\tlet yMax = -Infinity;\n\n\t\tfor (const contour of contours) {\n\t\t\tfor (const point of contour) {\n\t\t\t\txMin = Math.min(xMin, point.x);\n\t\t\t\tyMin = Math.min(yMin, point.y);\n\t\t\t\txMax = Math.max(xMax, point.x);\n\t\t\t\tyMax = Math.max(yMax, point.y);\n\t\t\t}\n\t\t}\n\n\t\tif (xMin === Infinity) return null;\n\t\treturn { xMin, yMin, xMax, yMax };\n\t}\n\n\t/** Get contours for a glyph with variation applied */\n\tgetGlyphContoursWithVariation(\n\t\tglyphId: GlyphId,\n\t\taxisCoords: number[],\n\t): Contour[] | null {\n\t\t// Try TrueType first\n\t\tif (this.glyf && this.loca) {\n\t\t\treturn getGlyphContoursWithVariation(\n\t\t\t\tthis.glyf,\n\t\t\t\tthis.loca,\n\t\t\t\tthis.gvar,\n\t\t\t\tglyphId,\n\t\t\t\taxisCoords,\n\t\t\t);\n\t\t}\n\t\t// Try CFF2 with variation\n\t\tif (this.cff2) {\n\t\t\treturn executeCff2CharString(this.cff2, glyphId, axisCoords);\n\t\t}\n\t\t// CFF doesn't support variations\n\t\treturn this.getGlyphContours(glyphId);\n\t}\n}\n",
66
66
  "import { GlyphBuffer } from \"../buffer/glyph-buffer.ts\";\nimport type { Font } from \"../font/font.ts\";\nimport {\n\tgetExtenderGlyphs,\n\tgetExtensionMods,\n\tgetJstfPriorities,\n\tgetShrinkageMods,\n} from \"../font/tables/jstf.ts\";\nimport type { GlyphId, Tag } from \"../types.ts\";\nimport { tag } from \"../types.ts\";\n\n/**\n * Justification mode\n */\nexport enum JustifyMode {\n\t/** Shrink text to fit */\n\tShrink = \"shrink\",\n\t/** Extend text to fit */\n\tExtend = \"extend\",\n\t/** Auto-select based on delta */\n\tAuto = \"auto\",\n}\n\n/**\n * Justification options\n */\nexport interface JustifyOptions {\n\t/** Target line width */\n\ttargetWidth: number;\n\t/** Script tag */\n\tscript?: Tag;\n\t/** Language tag */\n\tlanguage?: Tag;\n\t/** Justification mode */\n\tmode?: JustifyMode;\n\t/** Maximum priority level to use (0-based) */\n\tmaxPriority?: number;\n\t/** Enable Kashida insertion for Arabic */\n\tenableKashida?: boolean;\n\t/** Minimum word spacing factor (default: 0.8) */\n\tminWordSpacingFactor?: number;\n\t/** Maximum word spacing factor (default: 1.5) */\n\tmaxWordSpacingFactor?: number;\n\t/** Enable inter-character spacing adjustment */\n\tenableLetterSpacing?: boolean;\n\t/** Maximum letter spacing in font units */\n\tmaxLetterSpacing?: number;\n}\n\n/**\n * Justification result\n */\nexport interface JustifyResult {\n\t/** Whether justification succeeded */\n\tsuccess: boolean;\n\t/** Final line width after justification */\n\tfinalWidth: number;\n\t/** Delta from target (positive = too wide, negative = too narrow) */\n\tdelta: number;\n\t/** Priority level used */\n\tpriorityLevel: number;\n\t/** Adjustments applied */\n\tadjustments: JustifyAdjustment[];\n}\n\n/**\n * Individual justification adjustment\n */\nexport interface JustifyAdjustment {\n\ttype: \"spacing\" | \"kashida\" | \"lookup\";\n\t/** Glyph indices affected */\n\tglyphIndices: number[];\n\t/** Adjustment value */\n\tvalue: number;\n}\n\n/**\n * Calculate current line width from glyph buffer\n */\nexport function calculateLineWidth(buffer: GlyphBuffer): number {\n\tlet width = 0;\n\tfor (const pos of buffer.positions) {\n\t\twidth += pos.xAdvance;\n\t}\n\treturn width;\n}\n\n/**\n * Justify a shaped glyph buffer to fit a target width\n */\nexport function justify(\n\tfont: Font,\n\tbuffer: GlyphBuffer,\n\toptions: JustifyOptions,\n): JustifyResult {\n\tconst {\n\t\ttargetWidth,\n\t\tscript = tag(\"DFLT\"),\n\t\tlanguage,\n\t\tmode = JustifyMode.Auto,\n\t\tmaxPriority = 10,\n\t\tenableKashida = true,\n\t\tminWordSpacingFactor = 0.8,\n\t\tmaxWordSpacingFactor = 1.5,\n\t\tenableLetterSpacing = true,\n\t\tmaxLetterSpacing = 100,\n\t} = options;\n\n\tconst currentWidth = calculateLineWidth(buffer);\n\tconst delta = targetWidth - currentWidth;\n\n\t// Already at target width\n\tif (Math.abs(delta) < 1) {\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tfinalWidth: currentWidth,\n\t\t\tdelta: 0,\n\t\t\tpriorityLevel: 0,\n\t\t\tadjustments: [],\n\t\t};\n\t}\n\n\t// Determine mode\n\tlet actualMode: JustifyMode.Shrink | JustifyMode.Extend;\n\tif (mode === JustifyMode.Auto) {\n\t\tactualMode = delta > 0 ? JustifyMode.Extend : JustifyMode.Shrink;\n\t} else {\n\t\tactualMode = mode as JustifyMode.Shrink | JustifyMode.Extend;\n\t}\n\n\tconst adjustments: JustifyAdjustment[] = [];\n\tlet remainingDelta = delta;\n\tlet priorityLevel = 0;\n\n\t// Try JSTF-based justification first\n\tconst jstf = font.jstf;\n\tif (jstf) {\n\t\tconst priorities = getJstfPriorities(jstf, script, language);\n\n\t\tfor (let i = 0; i < Math.min(priorities.length, maxPriority); i++) {\n\t\t\tconst priority = priorities[i];\n\t\t\tconst mods =\n\t\t\t\tactualMode === JustifyMode.Shrink\n\t\t\t\t\t? getShrinkageMods(priority)\n\t\t\t\t\t: getExtensionMods(priority);\n\n\t\t\t// Apply JSTF lookup modifications\n\t\t\t// Note: This would require reshaping with modified lookups\n\t\t\t// For now, we just record the modifications needed\n\t\t\tif (\n\t\t\t\tmods.enableGsub.length > 0 ||\n\t\t\t\tmods.disableGsub.length > 0 ||\n\t\t\t\tmods.enableGpos.length > 0 ||\n\t\t\t\tmods.disableGpos.length > 0\n\t\t\t) {\n\t\t\t\tadjustments.push({\n\t\t\t\t\ttype: \"lookup\",\n\t\t\t\t\tglyphIndices: [],\n\t\t\t\t\tvalue: i,\n\t\t\t\t});\n\t\t\t\tpriorityLevel = i;\n\t\t\t}\n\t\t}\n\n\t\t// Kashida insertion for Arabic\n\t\tif (enableKashida && actualMode === JustifyMode.Extend) {\n\t\t\tconst extenderGlyphs = getExtenderGlyphs(jstf, script);\n\t\t\tif (extenderGlyphs.length > 0) {\n\t\t\t\tconst kashidaResult = insertKashida(\n\t\t\t\t\tbuffer,\n\t\t\t\t\textenderGlyphs[0],\n\t\t\t\t\tremainingDelta,\n\t\t\t\t\tfont,\n\t\t\t\t);\n\t\t\t\tremainingDelta -= kashidaResult.totalExtension;\n\t\t\t\tadjustments.push(...kashidaResult.adjustments);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Apply word spacing adjustment\n\tconst spaceGlyphId = font.glyphId(0x0020); // Space character\n\tif (spaceGlyphId !== 0) {\n\t\tconst spaceResult = adjustWordSpacing(\n\t\t\tbuffer,\n\t\t\tspaceGlyphId,\n\t\t\tremainingDelta,\n\t\t\tactualMode === JustifyMode.Shrink\n\t\t\t\t? minWordSpacingFactor\n\t\t\t\t: maxWordSpacingFactor,\n\t\t);\n\t\tremainingDelta -= spaceResult.totalAdjustment;\n\t\tadjustments.push(...spaceResult.adjustments);\n\t}\n\n\t// Apply letter spacing if still needed\n\tif (enableLetterSpacing && Math.abs(remainingDelta) > 1) {\n\t\tconst letterResult = adjustLetterSpacing(\n\t\t\tbuffer,\n\t\t\tremainingDelta,\n\t\t\tmaxLetterSpacing,\n\t\t);\n\t\tremainingDelta -= letterResult.totalAdjustment;\n\t\tadjustments.push(...letterResult.adjustments);\n\t}\n\n\tconst finalWidth = calculateLineWidth(buffer);\n\n\treturn {\n\t\tsuccess: Math.abs(remainingDelta) < 1,\n\t\tfinalWidth,\n\t\tdelta: targetWidth - finalWidth,\n\t\tpriorityLevel,\n\t\tadjustments,\n\t};\n}\n\n/**\n * Insert Kashida (tatweel) characters for Arabic justification\n */\nfunction insertKashida(\n\tbuffer: GlyphBuffer,\n\tkashidaGlyph: GlyphId,\n\ttargetExtension: number,\n\tfont: Font,\n): { totalExtension: number; adjustments: JustifyAdjustment[] } {\n\tconst adjustments: JustifyAdjustment[] = [];\n\tlet totalExtension = 0;\n\n\t// Find valid Kashida insertion points (between Arabic letters)\n\tconst insertionPoints: number[] = [];\n\tfor (let i = 0; i < buffer.infos.length - 1; i++) {\n\t\tconst info = buffer.infos[i];\n\t\t// Check if this is a valid insertion point\n\t\t// (between joining Arabic characters)\n\t\tif (isValidKashidaPoint(info.codepoint)) {\n\t\t\tinsertionPoints.push(i);\n\t\t}\n\t}\n\n\tif (insertionPoints.length === 0) {\n\t\treturn { totalExtension: 0, adjustments: [] };\n\t}\n\n\t// Get Kashida width\n\tconst kashidaWidth = font.advanceWidth(kashidaGlyph);\n\tif (kashidaWidth <= 0) {\n\t\treturn { totalExtension: 0, adjustments: [] };\n\t}\n\n\t// Distribute Kashida evenly\n\tconst kashidaPerPoint = Math.ceil(\n\t\ttargetExtension / kashidaWidth / insertionPoints.length,\n\t);\n\tconst adjustmentPerPoint = Math.min(\n\t\tkashidaPerPoint * kashidaWidth,\n\t\ttargetExtension / insertionPoints.length,\n\t);\n\n\tfor (const point of insertionPoints) {\n\t\tif (totalExtension >= targetExtension) break;\n\n\t\t// Add Kashida extension via xAdvance\n\t\tbuffer.positions[point].xAdvance += adjustmentPerPoint;\n\t\ttotalExtension += adjustmentPerPoint;\n\n\t\tadjustments.push({\n\t\t\ttype: \"kashida\",\n\t\t\tglyphIndices: [point],\n\t\t\tvalue: adjustmentPerPoint,\n\t\t});\n\t}\n\n\treturn { totalExtension, adjustments };\n}\n\n/**\n * Check if a codepoint is a valid Kashida insertion point\n */\nfunction isValidKashidaPoint(codepoint: number): boolean {\n\t// Arabic letters that can have Kashida after them\n\t// Simplified check - in reality need to check joining behavior\n\treturn codepoint >= 0x0620 && codepoint <= 0x06ff;\n}\n\n/**\n * Adjust word spacing (space character width)\n */\nfunction adjustWordSpacing(\n\tbuffer: GlyphBuffer,\n\tspaceGlyph: GlyphId,\n\ttargetAdjustment: number,\n\tlimitFactor: number,\n): { totalAdjustment: number; adjustments: JustifyAdjustment[] } {\n\tconst adjustments: JustifyAdjustment[] = [];\n\tlet totalAdjustment = 0;\n\n\t// Find all space glyphs\n\tconst spaceIndices: number[] = [];\n\tlet totalSpaceWidth = 0;\n\n\tfor (let i = 0; i < buffer.infos.length; i++) {\n\t\tif (buffer.infos[i]?.glyphId === spaceGlyph) {\n\t\t\tspaceIndices.push(i);\n\t\t\ttotalSpaceWidth += buffer.positions[i]?.xAdvance;\n\t\t}\n\t}\n\n\tif (spaceIndices.length === 0) {\n\t\treturn { totalAdjustment: 0, adjustments: [] };\n\t}\n\n\t// Calculate adjustment per space\n\tconst adjustmentPerSpace = targetAdjustment / spaceIndices.length;\n\tconst originalSpaceWidth = totalSpaceWidth / spaceIndices.length;\n\tconst maxAdjustment = originalSpaceWidth * (limitFactor - 1);\n\n\tconst clampedAdjustment =\n\t\ttargetAdjustment > 0\n\t\t\t? Math.min(adjustmentPerSpace, maxAdjustment)\n\t\t\t: Math.max(adjustmentPerSpace, -maxAdjustment);\n\n\tfor (const idx of spaceIndices) {\n\t\tbuffer.positions[idx].xAdvance += clampedAdjustment;\n\t\ttotalAdjustment += clampedAdjustment;\n\t}\n\n\tif (totalAdjustment !== 0) {\n\t\tadjustments.push({\n\t\t\ttype: \"spacing\",\n\t\t\tglyphIndices: spaceIndices,\n\t\t\tvalue: clampedAdjustment,\n\t\t});\n\t}\n\n\treturn { totalAdjustment, adjustments };\n}\n\n/**\n * Adjust letter spacing (inter-character spacing)\n */\nfunction adjustLetterSpacing(\n\tbuffer: GlyphBuffer,\n\ttargetAdjustment: number,\n\tmaxAdjustment: number,\n): { totalAdjustment: number; adjustments: JustifyAdjustment[] } {\n\tconst adjustments: JustifyAdjustment[] = [];\n\n\tconst numGlyphs = buffer.infos.length;\n\tif (numGlyphs <= 1) {\n\t\treturn { totalAdjustment: 0, adjustments: [] };\n\t}\n\n\t// Distribute across all inter-glyph gaps (n-1 gaps for n glyphs)\n\tconst numGaps = numGlyphs - 1;\n\tconst adjustmentPerGap = targetAdjustment / numGaps;\n\n\t// Clamp to max\n\tconst clampedAdjustment =\n\t\ttargetAdjustment > 0\n\t\t\t? Math.min(adjustmentPerGap, maxAdjustment)\n\t\t\t: Math.max(adjustmentPerGap, -maxAdjustment);\n\n\tconst affectedIndices: number[] = [];\n\tlet totalAdjustment = 0;\n\n\tfor (let i = 0; i < numGlyphs - 1; i++) {\n\t\tbuffer.positions[i].xAdvance += clampedAdjustment;\n\t\ttotalAdjustment += clampedAdjustment;\n\t\taffectedIndices.push(i);\n\t}\n\n\tif (totalAdjustment !== 0) {\n\t\tadjustments.push({\n\t\t\ttype: \"spacing\",\n\t\t\tglyphIndices: affectedIndices,\n\t\t\tvalue: clampedAdjustment,\n\t\t});\n\t}\n\n\treturn { totalAdjustment, adjustments };\n}\n\n/**\n * Simple line breaking for multi-line text\n */\nexport interface LineBreakResult {\n\tlines: GlyphBuffer[];\n\tbreakPoints: number[];\n}\n\n/**\n * Break shaped text into lines at a given width\n * Uses simple greedy algorithm\n */\nexport function breakIntoLines(\n\tbuffer: GlyphBuffer,\n\tmaxWidth: number,\n\tspaceGlyph?: GlyphId,\n): LineBreakResult {\n\tconst lines: GlyphBuffer[] = [];\n\tconst breakPoints: number[] = [];\n\n\tif (buffer.infos.length === 0) {\n\t\treturn { lines: [], breakPoints: [] };\n\t}\n\n\tlet lineStart = 0;\n\tlet currentWidth = 0;\n\tlet lastBreakPoint = -1;\n\tlet _lastBreakWidth = 0;\n\n\tfor (let i = 0; i < buffer.infos.length; i++) {\n\t\tconst pos = buffer.positions[i];\n\t\tconst info = buffer.infos[i];\n\n\t\tcurrentWidth += pos.xAdvance;\n\n\t\t// Track potential break points (after spaces)\n\t\tif (spaceGlyph !== undefined && info.glyphId === spaceGlyph) {\n\t\t\tlastBreakPoint = i;\n\t\t\t_lastBreakWidth = currentWidth;\n\t\t}\n\n\t\t// Check if we need to break\n\t\tif (currentWidth > maxWidth && lineStart < i) {\n\t\t\tlet breakAt: number;\n\n\t\t\tif (lastBreakPoint > lineStart) {\n\t\t\t\t// Break at last space\n\t\t\t\tbreakAt = lastBreakPoint + 1;\n\t\t\t} else {\n\t\t\t\t// Force break at current position\n\t\t\t\tbreakAt = i;\n\t\t\t}\n\n\t\t\t// Create line buffer\n\t\t\tconst lineBuffer = createLineBuffer(buffer, lineStart, breakAt);\n\t\t\tlines.push(lineBuffer);\n\t\t\tbreakPoints.push(breakAt);\n\n\t\t\t// Start new line\n\t\t\tlineStart = breakAt;\n\t\t\tcurrentWidth = 0;\n\t\t\tlastBreakPoint = -1;\n\n\t\t\t// Recalculate width from line start\n\t\t\tfor (let j = lineStart; j <= i; j++) {\n\t\t\t\tcurrentWidth += buffer.positions[j]?.xAdvance;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Add final line\n\tif (lineStart < buffer.infos.length) {\n\t\tconst lineBuffer = createLineBuffer(buffer, lineStart, buffer.infos.length);\n\t\tlines.push(lineBuffer);\n\t}\n\n\treturn { lines, breakPoints };\n}\n\n/**\n * Create a new GlyphBuffer from a slice of an existing buffer\n */\nfunction createLineBuffer(\n\tsource: GlyphBuffer,\n\tstart: number,\n\tend: number,\n): GlyphBuffer {\n\tconst lineBuffer = new GlyphBuffer();\n\tlineBuffer.direction = source.direction;\n\tlineBuffer.script = source.script;\n\tlineBuffer.language = source.language;\n\n\tfor (let i = start; i < end; i++) {\n\t\tlineBuffer.infos.push({ ...source.infos[i] });\n\t\tlineBuffer.positions.push({ ...source.positions[i] });\n\t}\n\n\treturn lineBuffer;\n}\n\n/**\n * Justify all lines in a paragraph to the same width\n */\nexport function justifyParagraph(\n\tfont: Font,\n\tlines: GlyphBuffer[],\n\toptions: JustifyOptions,\n): JustifyResult[] {\n\tconst results: JustifyResult[] = [];\n\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst line = lines[i];\n\t\tconst isLastLine = i === lines.length - 1;\n\n\t\t// Don't justify the last line (or justify less aggressively)\n\t\tif (isLastLine) {\n\t\t\tresults.push({\n\t\t\t\tsuccess: true,\n\t\t\t\tfinalWidth: calculateLineWidth(line),\n\t\t\t\tdelta: 0,\n\t\t\t\tpriorityLevel: 0,\n\t\t\t\tadjustments: [],\n\t\t\t});\n\t\t} else {\n\t\t\tresults.push(justify(font, line, options));\n\t\t}\n\t}\n\n\treturn results;\n}\n",
67
67
  "import type { Reader } from \"../../font/binary/reader.ts\";\nimport type { Tag, uint16, uint32 } from \"../../types.ts\";\n\n/**\n * FeatureVariations table\n * Allows different feature substitutions based on variation axis coordinates\n * Used in GSUB/GPOS for variable fonts\n */\nexport interface FeatureVariations {\n\tmajorVersion: number;\n\tminorVersion: number;\n\tfeatureVariationRecords: FeatureVariationRecord[];\n}\n\n/**\n * Feature variation record\n * Contains a condition set and feature substitutions to apply when conditions are met\n */\nexport interface FeatureVariationRecord {\n\tconditionSet: ConditionSet;\n\tfeatureTableSubstitution: FeatureTableSubstitution;\n}\n\n/**\n * Condition set - all conditions must be met\n */\nexport interface ConditionSet {\n\tconditions: Condition[];\n}\n\n/**\n * Single axis condition\n */\nexport interface Condition {\n\tformat: number;\n\taxisIndex: uint16;\n\tfilterRangeMinValue: number; // F2DOT14\n\tfilterRangeMaxValue: number; // F2DOT14\n}\n\n/**\n * Feature table substitution\n * Maps feature indices to replacement feature tables\n */\nexport interface FeatureTableSubstitution {\n\tmajorVersion: number;\n\tminorVersion: number;\n\tsubstitutions: FeatureSubstitutionRecord[];\n}\n\n/**\n * Single feature substitution record\n */\nexport interface FeatureSubstitutionRecord {\n\tfeatureIndex: uint16;\n\talternateFeature: AlternateFeature;\n}\n\n/**\n * Alternate feature table\n */\nexport interface AlternateFeature {\n\tfeatureParamsOffset: uint16;\n\tlookupListIndices: uint16[];\n}\n\n/**\n * Parse FeatureVariations table\n */\nexport function parseFeatureVariations(reader: Reader): FeatureVariations {\n\tconst majorVersion = reader.uint16();\n\tconst minorVersion = reader.uint16();\n\tconst featureVariationRecordCount = reader.uint32();\n\n\tconst recordOffsets: {\n\t\tconditionSetOffset: uint32;\n\t\tfeatureSubstOffset: uint32;\n\t}[] = [];\n\tfor (let i = 0; i < featureVariationRecordCount; i++) {\n\t\trecordOffsets.push({\n\t\t\tconditionSetOffset: reader.offset32(),\n\t\t\tfeatureSubstOffset: reader.offset32(),\n\t\t});\n\t}\n\n\tconst featureVariationRecords: FeatureVariationRecord[] = [];\n\tfor (const offsets of recordOffsets) {\n\t\tconst conditionSet = parseConditionSet(\n\t\t\treader.sliceFrom(offsets.conditionSetOffset),\n\t\t);\n\t\tconst featureTableSubstitution = parseFeatureTableSubstitution(\n\t\t\treader.sliceFrom(offsets.featureSubstOffset),\n\t\t);\n\n\t\tfeatureVariationRecords.push({\n\t\t\tconditionSet,\n\t\t\tfeatureTableSubstitution,\n\t\t});\n\t}\n\n\treturn {\n\t\tmajorVersion,\n\t\tminorVersion,\n\t\tfeatureVariationRecords,\n\t};\n}\n\nfunction parseConditionSet(reader: Reader): ConditionSet {\n\tconst conditionCount = reader.uint16();\n\tconst conditionOffsets: uint32[] = [];\n\tfor (let i = 0; i < conditionCount; i++) {\n\t\tconditionOffsets.push(reader.offset32());\n\t}\n\n\tconst conditions: Condition[] = [];\n\tfor (const offset of conditionOffsets) {\n\t\tconst condReader = reader.sliceFrom(offset);\n\t\tconst format = condReader.uint16();\n\n\t\tif (format === 1) {\n\t\t\tconditions.push({\n\t\t\t\tformat,\n\t\t\t\taxisIndex: condReader.uint16(),\n\t\t\t\tfilterRangeMinValue: condReader.f2dot14(),\n\t\t\t\tfilterRangeMaxValue: condReader.f2dot14(),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn { conditions };\n}\n\nfunction parseFeatureTableSubstitution(\n\treader: Reader,\n): FeatureTableSubstitution {\n\tconst majorVersion = reader.uint16();\n\tconst minorVersion = reader.uint16();\n\tconst substitutionCount = reader.uint16();\n\n\tconst substitutionRecords: { featureIndex: uint16; offset: uint32 }[] = [];\n\tfor (let i = 0; i < substitutionCount; i++) {\n\t\tsubstitutionRecords.push({\n\t\t\tfeatureIndex: reader.uint16(),\n\t\t\toffset: reader.offset32(),\n\t\t});\n\t}\n\n\tconst substitutions: FeatureSubstitutionRecord[] = [];\n\tfor (const record of substitutionRecords) {\n\t\tconst featureReader = reader.sliceFrom(record.offset);\n\t\tconst featureParamsOffset = featureReader.offset16();\n\t\tconst lookupIndexCount = featureReader.uint16();\n\t\tconst lookupListIndices = Array.from(\n\t\t\tfeatureReader.uint16Array(lookupIndexCount),\n\t\t);\n\n\t\tsubstitutions.push({\n\t\t\tfeatureIndex: record.featureIndex,\n\t\t\talternateFeature: {\n\t\t\t\tfeatureParamsOffset,\n\t\t\t\tlookupListIndices,\n\t\t\t},\n\t\t});\n\t}\n\n\treturn {\n\t\tmajorVersion,\n\t\tminorVersion,\n\t\tsubstitutions,\n\t};\n}\n\n/**\n * Evaluate condition set against axis coordinates\n * Returns true if all conditions are met\n */\nexport function evaluateConditionSet(\n\tconditionSet: ConditionSet,\n\taxisCoords: number[],\n): boolean {\n\tfor (const condition of conditionSet.conditions) {\n\t\tconst axisValue = axisCoords[condition.axisIndex] ?? 0;\n\t\tif (\n\t\t\taxisValue < condition.filterRangeMinValue ||\n\t\t\taxisValue > condition.filterRangeMaxValue\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n * Find matching feature variation record for given axis coordinates\n * Returns the first matching record, or null if none match\n */\nexport function findMatchingFeatureVariation(\n\tfeatureVariations: FeatureVariations,\n\taxisCoords: number[],\n): FeatureVariationRecord | null {\n\tfor (const record of featureVariations.featureVariationRecords) {\n\t\tif (evaluateConditionSet(record.conditionSet, axisCoords)) {\n\t\t\treturn record;\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Get substituted lookup list indices for a feature\n * Returns the original lookups if no substitution applies\n */\nexport function getSubstitutedLookups(\n\tfeatureVariations: FeatureVariations | null,\n\tfeatureIndex: number,\n\toriginalLookups: uint16[],\n\taxisCoords: number[] | null,\n): uint16[] {\n\tif (!featureVariations || !axisCoords) {\n\t\treturn originalLookups;\n\t}\n\n\tconst matchingRecord = findMatchingFeatureVariation(\n\t\tfeatureVariations,\n\t\taxisCoords,\n\t);\n\tif (!matchingRecord) {\n\t\treturn originalLookups;\n\t}\n\n\t// Check if this feature has a substitution\n\tconst substitution =\n\t\tmatchingRecord.featureTableSubstitution.substitutions.find(\n\t\t\t(s) => s.featureIndex === featureIndex,\n\t\t);\n\n\tif (substitution) {\n\t\treturn substitution.alternateFeature.lookupListIndices;\n\t}\n\n\treturn originalLookups;\n}\n\n/**\n * Apply feature variations to a feature list\n * Returns a modified feature list with substituted lookup indices\n */\nexport function applyFeatureVariations(\n\tfeatureVariations: FeatureVariations | null,\n\tfeatureLookups: Map<Tag, uint16[]>,\n\tfeatureIndices: Map<Tag, number>,\n\taxisCoords: number[] | null,\n): Map<Tag, uint16[]> {\n\tif (!featureVariations || !axisCoords) {\n\t\treturn featureLookups;\n\t}\n\n\tconst matchingRecord = findMatchingFeatureVariation(\n\t\tfeatureVariations,\n\t\taxisCoords,\n\t);\n\tif (!matchingRecord) {\n\t\treturn featureLookups;\n\t}\n\n\t// Create a new map with substituted lookups\n\tconst result = new Map(featureLookups);\n\n\tfor (const substitution of matchingRecord.featureTableSubstitution\n\t\t.substitutions) {\n\t\t// Find the feature tag for this index\n\t\tfor (const [tag, index] of featureIndices) {\n\t\t\tif (index === substitution.featureIndex) {\n\t\t\t\tresult.set(tag, substitution.alternateFeature.lookupListIndices);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n",
68
- "/**\n * Exact bounding box calculation for paths with bezier curves\n *\n * Bezier curves can extend beyond their control points, so we need to find\n * the actual extrema by solving for where the derivative equals zero.\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\n\n/**\n * Bounding box in 2D space\n */\nexport interface BBox {\n\txMin: number;\n\tyMin: number;\n\txMax: number;\n\tyMax: number;\n}\n\n/**\n * Calculate exact bounding box for a path\n *\n * For line segments: min/max of endpoints\n * For quadratic bezier: find t where derivative = 0, evaluate curve at those t values\n * For cubic bezier: solve quadratic for extrema, evaluate curve at those t values\n *\n * @param path - Path to calculate bounds for\n * @returns Bounding box or null for empty path\n */\nexport function getExactBounds(path: GlyphPath): BBox | null {\n\tif (!path.commands || path.commands.length === 0) {\n\t\treturn null;\n\t}\n\n\tlet xMin = Infinity;\n\tlet yMin = Infinity;\n\tlet xMax = -Infinity;\n\tlet yMax = -Infinity;\n\n\tlet currentX = 0;\n\tlet currentY = 0;\n\tlet hasPoints = false;\n\n\tconst updateBounds = (x: number, y: number) => {\n\t\txMin = Math.min(xMin, x);\n\t\tyMin = Math.min(yMin, y);\n\t\txMax = Math.max(xMax, x);\n\t\tyMax = Math.max(yMax, y);\n\t\thasPoints = true;\n\t};\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\": {\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tupdateBounds(currentX, currentY);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"L\": {\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tupdateBounds(currentX, currentY);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Q\": {\n\t\t\t\t// Quadratic bezier from (currentX, currentY) to (cmd.x, cmd.y)\n\t\t\t\t// with control point (cmd.x1, cmd.y1)\n\n\t\t\t\t// Check start point (already in bounds from previous command)\n\t\t\t\t// Check end point\n\t\t\t\tupdateBounds(cmd.x, cmd.y);\n\n\t\t\t\t// Find extrema in X direction\n\t\t\t\tconst xExtrema = getQuadraticExtrema(currentX, cmd.x1, cmd.x);\n\t\t\t\tfor (const t of xExtrema) {\n\t\t\t\t\tconst x = evaluateQuadratic(currentX, cmd.x1, cmd.x, t);\n\t\t\t\t\tupdateBounds(x, currentY); // Use current Y temporarily\n\t\t\t\t}\n\n\t\t\t\t// Find extrema in Y direction\n\t\t\t\tconst yExtrema = getQuadraticExtrema(currentY, cmd.y1, cmd.y);\n\t\t\t\tfor (const t of yExtrema) {\n\t\t\t\t\tconst y = evaluateQuadratic(currentY, cmd.y1, cmd.y, t);\n\t\t\t\t\tupdateBounds(currentX, y); // Use current X temporarily\n\t\t\t\t}\n\n\t\t\t\t// Evaluate both X and Y at extrema points\n\t\t\t\tconst allExtrema = new Set([...xExtrema, ...yExtrema]);\n\t\t\t\tfor (const t of allExtrema) {\n\t\t\t\t\tconst x = evaluateQuadratic(currentX, cmd.x1, cmd.x, t);\n\t\t\t\t\tconst y = evaluateQuadratic(currentY, cmd.y1, cmd.y, t);\n\t\t\t\t\tupdateBounds(x, y);\n\t\t\t\t}\n\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"C\": {\n\t\t\t\t// Cubic bezier from (currentX, currentY) to (cmd.x, cmd.y)\n\t\t\t\t// with control points (cmd.x1, cmd.y1) and (cmd.x2, cmd.y2)\n\n\t\t\t\t// Check end point\n\t\t\t\tupdateBounds(cmd.x, cmd.y);\n\n\t\t\t\t// Find extrema in X direction\n\t\t\t\tconst xExtrema = getCubicExtrema(currentX, cmd.x1, cmd.x2, cmd.x);\n\t\t\t\tfor (const t of xExtrema) {\n\t\t\t\t\tconst x = evaluateCubic(currentX, cmd.x1, cmd.x2, cmd.x, t);\n\t\t\t\t\tupdateBounds(x, currentY); // Use current Y temporarily\n\t\t\t\t}\n\n\t\t\t\t// Find extrema in Y direction\n\t\t\t\tconst yExtrema = getCubicExtrema(currentY, cmd.y1, cmd.y2, cmd.y);\n\t\t\t\tfor (const t of yExtrema) {\n\t\t\t\t\tconst y = evaluateCubic(currentY, cmd.y1, cmd.y2, cmd.y, t);\n\t\t\t\t\tupdateBounds(currentX, y); // Use current X temporarily\n\t\t\t\t}\n\n\t\t\t\t// Evaluate both X and Y at extrema points\n\t\t\t\tconst allExtrema = new Set([...xExtrema, ...yExtrema]);\n\t\t\t\tfor (const t of allExtrema) {\n\t\t\t\t\tconst x = evaluateCubic(currentX, cmd.x1, cmd.x2, cmd.x, t);\n\t\t\t\t\tconst y = evaluateCubic(currentY, cmd.y1, cmd.y2, cmd.y, t);\n\t\t\t\t\tupdateBounds(x, y);\n\t\t\t\t}\n\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Z\": {\n\t\t\t\t// Close path - no bounds update needed\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!hasPoints) {\n\t\treturn null;\n\t}\n\n\treturn { xMin, yMin, xMax, yMax };\n}\n\n/**\n * Find t values where a quadratic bezier has extrema\n *\n * For quadratic bezier B(t) = (1-t)²p0 + 2(1-t)t*p1 + t²p2\n * Derivative: B'(t) = 2(1-t)(p1-p0) + 2t(p2-p1)\n * = 2(p1-p0) + 2t(p0-2p1+p2)\n * = 2[(p1-p0) + t(p0-2p1+p2)]\n *\n * Set B'(t) = 0:\n * (p1-p0) + t(p0-2p1+p2) = 0\n * t = -(p1-p0)/(p0-2p1+p2)\n * = (p0-p1)/(p0-2p1+p2)\n *\n * @param p0 - Start point\n * @param p1 - Control point\n * @param p2 - End point\n * @returns Array of t values in [0,1] where extrema occur\n */\nexport function getQuadraticExtrema(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n): number[] {\n\tconst denominator = p0 - 2 * p1 + p2;\n\n\t// If denominator is zero, the curve is linear (no extrema)\n\tif (Math.abs(denominator) < 1e-10) {\n\t\treturn [];\n\t}\n\n\tconst t = (p0 - p1) / denominator;\n\n\t// Only include t values in the valid range [0, 1]\n\tif (t > 0 && t < 1) {\n\t\treturn [t];\n\t}\n\n\treturn [];\n}\n\n/**\n * Find t values where a cubic bezier has extrema\n *\n * For cubic bezier B(t) = (1-t)³p0 + 3(1-t)²t*p1 + 3(1-t)t²p2 + t³p3\n * Derivative: B'(t) = 3(1-t)²(p1-p0) + 6(1-t)t(p2-p1) + 3t²(p3-p2)\n *\n * Simplified: B'(t) = at² + bt + c where:\n * a = 3(p3 - 3p2 + 3p1 - p0)\n * b = 6(p2 - 2p1 + p0)\n * c = 3(p1 - p0)\n *\n * Solve using quadratic formula: t = (-b ± √(b²-4ac)) / 2a\n *\n * @param p0 - Start point\n * @param p1 - First control point\n * @param p2 - Second control point\n * @param p3 - End point\n * @returns Array of t values in [0,1] where extrema occur\n */\nexport function getCubicExtrema(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n): number[] {\n\tconst a = 3 * (p3 - 3 * p2 + 3 * p1 - p0);\n\tconst b = 6 * (p2 - 2 * p1 + p0);\n\tconst c = 3 * (p1 - p0);\n\n\tconst extrema: number[] = [];\n\n\t// If a is zero, we have a linear or quadratic equation\n\tif (Math.abs(a) < 1e-10) {\n\t\t// If b is also zero, there are no extrema (constant derivative)\n\t\tif (Math.abs(b) < 1e-10) {\n\t\t\treturn [];\n\t\t}\n\t\t// Linear equation: bt + c = 0 => t = -c/b\n\t\tconst t = -c / b;\n\t\tif (t > 0 && t < 1) {\n\t\t\textrema.push(t);\n\t\t}\n\t\treturn extrema;\n\t}\n\n\t// Quadratic formula\n\tconst discriminant = b * b - 4 * a * c;\n\n\t// No real solutions\n\tif (discriminant < 0) {\n\t\treturn [];\n\t}\n\n\t// One solution (discriminant = 0)\n\tif (Math.abs(discriminant) < 1e-10) {\n\t\tconst t = -b / (2 * a);\n\t\tif (t > 0 && t < 1) {\n\t\t\textrema.push(t);\n\t\t}\n\t\treturn extrema;\n\t}\n\n\t// Two solutions\n\tconst sqrtD = Math.sqrt(discriminant);\n\tconst t1 = (-b + sqrtD) / (2 * a);\n\tconst t2 = (-b - sqrtD) / (2 * a);\n\n\tif (t1 > 0 && t1 < 1) {\n\t\textrema.push(t1);\n\t}\n\tif (t2 > 0 && t2 < 1) {\n\t\textrema.push(t2);\n\t}\n\n\treturn extrema;\n}\n\n/**\n * Evaluate quadratic bezier at parameter t\n *\n * B(t) = (1-t)²p0 + 2(1-t)t*p1 + t²p2\n *\n * @param p0 - Start point\n * @param p1 - Control point\n * @param p2 - End point\n * @param t - Parameter in [0,1]\n * @returns Value at t\n */\nexport function evaluateQuadratic(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tt: number,\n): number {\n\tconst oneMinusT = 1 - t;\n\treturn oneMinusT * oneMinusT * p0 + 2 * oneMinusT * t * p1 + t * t * p2;\n}\n\n/**\n * Evaluate cubic bezier at parameter t\n *\n * B(t) = (1-t)³p0 + 3(1-t)²t*p1 + 3(1-t)t²p2 + t³p3\n *\n * @param p0 - Start point\n * @param p1 - First control point\n * @param p2 - Second control point\n * @param p3 - End point\n * @param t - Parameter in [0,1]\n * @returns Value at t\n */\nexport function evaluateCubic(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n\tt: number,\n): number {\n\tconst oneMinusT = 1 - t;\n\tconst oneMinusT2 = oneMinusT * oneMinusT;\n\tconst t2 = t * t;\n\n\treturn (\n\t\toneMinusT2 * oneMinusT * p0 +\n\t\t3 * oneMinusT2 * t * p1 +\n\t\t3 * oneMinusT * t2 * p2 +\n\t\tt2 * t * p3\n\t);\n}\n",
69
- "/**\n * Rasterizer types - FreeType-style bitmap rendering\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\n\n/**\n * Pixel modes for bitmap output\n */\nexport enum PixelMode {\n\t/** 1-bit per pixel, 8 pixels per byte */\n\tMono = 0,\n\t/** 8-bit grayscale, 1 byte per pixel */\n\tGray = 1,\n\t/** 24-bit LCD subpixel RGB, 3 bytes per pixel */\n\tLCD = 2,\n\t/** 24-bit LCD subpixel vertical RGB */\n\tLCD_V = 3,\n\t/** 32-bit RGBA, 4 bytes per pixel */\n\tRGBA = 4,\n}\n\n/**\n * Fill rule for outline rendering\n */\nexport enum FillRule {\n\t/** Non-zero winding rule (default) */\n\tNonZero = 0,\n\t/** Even-odd (alternating) fill rule */\n\tEvenOdd = 1,\n}\n\n/**\n * Bitmap buffer for rasterized glyphs\n */\nexport interface Bitmap {\n\t/** Pixel buffer */\n\tbuffer: Uint8Array;\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\trows: number;\n\t/** Bytes per row (may include padding) */\n\tpitch: number;\n\t/** Pixel format */\n\tpixelMode: PixelMode;\n\t/** Number of gray levels (256 for 8-bit) */\n\tnumGrays: number;\n}\n\n/**\n * A single horizontal span of pixels (for direct rendering)\n */\nexport interface Span {\n\t/** X position of span start */\n\tx: number;\n\t/** Length in pixels */\n\tlen: number;\n\t/** Coverage value 0-255 */\n\tcoverage: number;\n}\n\n/**\n * Callback for span-based rendering\n * @template T User data type passed through from render call\n */\nexport type SpanFunc<T = void> = (\n\ty: number,\n\tspans: Span[],\n\tuserData: T,\n) => void;\n\n/**\n * Rasterization parameters\n */\nexport interface RasterParams {\n\t/** Target bitmap (null for span callback mode) */\n\ttarget?: Bitmap;\n\t/** Source outline path */\n\tsource: GlyphPath;\n\t/** Fill rule */\n\tfillRule?: FillRule;\n\t/** Span callback for direct rendering */\n\tspanFunc?: SpanFunc;\n\t/** Clip box (in pixels) */\n\tclipBox?: {\n\t\txMin: number;\n\t\tyMin: number;\n\t\txMax: number;\n\t\tyMax: number;\n\t};\n}\n\n/**\n * Options for rasterizing a glyph\n */\nexport interface RasterizeOptions {\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\theight: number;\n\t/** Scale factor (font units to pixels) */\n\tscale: number;\n\t/** X offset in pixels */\n\toffsetX?: number;\n\t/** Y offset in pixels */\n\toffsetY?: number;\n\t/** Pixel mode */\n\tpixelMode?: PixelMode;\n\t/** Fill rule */\n\tfillRule?: FillRule;\n\t/** Flip Y axis (font coords are Y-up, bitmap is Y-down) */\n\tflipY?: boolean;\n}\n\n/**\n * Result of glyph rasterization\n */\nexport interface RasterizedGlyph {\n\t/** Pixel data */\n\tbitmap: Bitmap;\n\t/** Bearing X (offset from origin to left edge) */\n\tbearingX: number;\n\t/** Bearing Y (offset from origin to top edge) */\n\tbearingY: number;\n}\n\n/**\n * Glyph metrics for atlas building\n */\nexport interface GlyphMetrics {\n\t/** Glyph ID */\n\tglyphId: number;\n\t/** X position in atlas */\n\tatlasX: number;\n\t/** Y position in atlas */\n\tatlasY: number;\n\t/** Width in atlas */\n\twidth: number;\n\t/** Height in atlas */\n\theight: number;\n\t/** Bearing X */\n\tbearingX: number;\n\t/** Bearing Y */\n\tbearingY: number;\n\t/** Horizontal advance */\n\tadvance: number;\n}\n\n/**\n * Texture atlas containing multiple glyphs\n */\nexport interface GlyphAtlas {\n\t/** Atlas bitmap */\n\tbitmap: Bitmap;\n\t/** Glyph metrics indexed by glyph ID */\n\tglyphs: Map<number, GlyphMetrics>;\n\t/** Font size used for rendering */\n\tfontSize: number;\n}\n\n/**\n * Options for building a glyph atlas\n */\nexport interface AtlasOptions {\n\t/** Font size in pixels */\n\tfontSize: number;\n\t/** Padding between glyphs */\n\tpadding?: number;\n\t/** Maximum atlas width */\n\tmaxWidth?: number;\n\t/** Maximum atlas height */\n\tmaxHeight?: number;\n\t/** Pixel mode */\n\tpixelMode?: PixelMode;\n\t/** Enable hinting */\n\thinting?: boolean;\n}\n\n/**\n * Create an empty bitmap\n */\nexport function createBitmap(\n\twidth: number,\n\theight: number,\n\tpixelMode: PixelMode = PixelMode.Gray,\n): Bitmap {\n\tlet bytesPerPixel: number;\n\tswitch (pixelMode) {\n\t\tcase PixelMode.Mono:\n\t\t\tbytesPerPixel = 1 / 8; // 8 pixels per byte\n\t\t\tbreak;\n\t\tcase PixelMode.Gray:\n\t\t\tbytesPerPixel = 1;\n\t\t\tbreak;\n\t\tcase PixelMode.LCD:\n\t\tcase PixelMode.LCD_V:\n\t\t\tbytesPerPixel = 3;\n\t\t\tbreak;\n\t\tcase PixelMode.RGBA:\n\t\t\tbytesPerPixel = 4;\n\t\t\tbreak;\n\t}\n\n\tconst pitch =\n\t\tpixelMode === PixelMode.Mono ? Math.ceil(width / 8) : width * bytesPerPixel;\n\n\treturn {\n\t\tbuffer: new Uint8Array(pitch * height),\n\t\twidth,\n\t\trows: height,\n\t\tpitch,\n\t\tpixelMode,\n\t\tnumGrays: pixelMode === PixelMode.Mono ? 2 : 256,\n\t};\n}\n\n/**\n * Clear a bitmap to zero\n */\nexport function clearBitmap(bitmap: Bitmap): void {\n\tbitmap.buffer.fill(0);\n}\n\n/**\n * Create a bottom-up bitmap (negative pitch)\n * Bottom-up bitmaps have row 0 at the bottom of the image,\n * which matches some graphics APIs (e.g., Windows DIB, OpenGL textures)\n */\nexport function createBottomUpBitmap(\n\twidth: number,\n\theight: number,\n\tpixelMode: PixelMode = PixelMode.Gray,\n): Bitmap {\n\tconst bitmap = createBitmap(width, height, pixelMode);\n\t// Negative pitch indicates bottom-up storage\n\tbitmap.pitch = -bitmap.pitch;\n\treturn bitmap;\n}\n",
70
- "/**\n * Bitmap manipulation utilities\n */\n\nimport { type Bitmap, createBitmap, PixelMode } from \"./types.ts\";\n\n/**\n * Embolden a bitmap by dilating pixel values\n * Makes text bolder by spreading coverage in x and y directions\n */\nexport function emboldenBitmap(\n\tbitmap: Bitmap,\n\txStrength: number,\n\tyStrength: number,\n): Bitmap {\n\tif (xStrength === 0 && yStrength === 0) {\n\t\treturn copyBitmap(bitmap);\n\t}\n\n\tconst result = createBitmap(bitmap.width, bitmap.rows, bitmap.pixelMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet maxVal = 0;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst val = bitmap.buffer[sy * bitmap.pitch + sx] ?? 0;\n\t\t\t\t\t\t\tmaxVal = Math.max(maxVal, val);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresult.buffer[y * result.pitch + x] = maxVal;\n\t\t\t}\n\t\t}\n\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet hasSet = false;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst byteIdx = sy * bitmap.pitch + (sx >> 3);\n\t\t\t\t\t\t\tconst bitIdx = 7 - (sx & 7);\n\t\t\t\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\t\t\t\tif (bit) {\n\t\t\t\t\t\t\t\thasSet = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (hasSet) break;\n\t\t\t\t}\n\n\t\t\t\tif (hasSet) {\n\t\t\t\t\tconst dstByteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst dstBitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[dstByteIdx] |= 1 << dstBitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet maxR = 0,\n\t\t\t\t\tmaxG = 0,\n\t\t\t\t\tmaxB = 0;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst idx = sy * bitmap.pitch + sx * 3;\n\t\t\t\t\t\t\tmaxR = Math.max(maxR, bitmap.buffer[idx] ?? 0);\n\t\t\t\t\t\t\tmaxG = Math.max(maxG, bitmap.buffer[idx + 1] ?? 0);\n\t\t\t\t\t\t\tmaxB = Math.max(maxB, bitmap.buffer[idx + 2] ?? 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = maxR;\n\t\t\t\tresult.buffer[dstIdx + 1] = maxG;\n\t\t\t\tresult.buffer[dstIdx + 2] = maxB;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Convert bitmap between pixel modes\n */\nexport function convertBitmap(bitmap: Bitmap, targetMode: PixelMode): Bitmap {\n\tif (bitmap.pixelMode === targetMode) {\n\t\treturn bitmap;\n\t}\n\n\tconst result = createBitmap(bitmap.width, bitmap.rows, targetMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray && targetMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tif (gray >= 128) {\n\t\t\t\t\tconst byteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[byteIdx] |= 1 << bitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Mono &&\n\t\ttargetMode === PixelMode.Gray\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\tresult.buffer[y * result.pitch + x] = bit ? 255 : 0;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Gray &&\n\t\ttargetMode === PixelMode.LCD\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = gray;\n\t\t\t\tresult.buffer[dstIdx + 1] = gray;\n\t\t\t\tresult.buffer[dstIdx + 2] = gray;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Mono &&\n\t\ttargetMode === PixelMode.LCD\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\tconst val = bit ? 255 : 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = val;\n\t\t\t\tresult.buffer[dstIdx + 1] = val;\n\t\t\t\tresult.buffer[dstIdx + 2] = val;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Gray &&\n\t\ttargetMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = gray;\n\t\t\t\tresult.buffer[dstIdx + 1] = gray;\n\t\t\t\tresult.buffer[dstIdx + 2] = gray;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD &&\n\t\ttargetMode === PixelMode.Gray\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x * 3;\n\t\t\t\tconst r = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tconst g = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tconst b = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t\tresult.buffer[y * result.pitch + x] = Math.floor((r + g + b) / 3);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Alpha blend src bitmap onto dst bitmap at position (x, y)\n */\nexport function blendBitmap(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tx: number,\n\ty: number,\n\topacity: number,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\topacity = Math.max(0, Math.min(1, opacity));\n\n\tconst startX = Math.max(0, -x);\n\tconst startY = Math.max(0, -y);\n\tconst endX = Math.min(src.width, dst.width - x);\n\tconst endY = Math.min(src.rows, dst.rows - y);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = x + sx;\n\t\t\tconst dy = y + sy;\n\n\t\t\tif (dx >= 0 && dx < dst.width && dy >= 0 && dy < dst.rows) {\n\t\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\n\t\t\t\tconst blended = dstVal + srcVal * opacity;\n\t\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.min(255, Math.floor(blended));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Create a deep copy of a bitmap\n */\nexport function copyBitmap(bitmap: Bitmap): Bitmap {\n\treturn {\n\t\tbuffer: new Uint8Array(bitmap.buffer),\n\t\twidth: bitmap.width,\n\t\trows: bitmap.rows,\n\t\tpitch: bitmap.pitch,\n\t\tpixelMode: bitmap.pixelMode,\n\t\tnumGrays: bitmap.numGrays,\n\t};\n}\n\n/**\n * Resize bitmap using nearest-neighbor interpolation\n */\nexport function resizeBitmap(\n\tbitmap: Bitmap,\n\tnewWidth: number,\n\tnewHeight: number,\n): Bitmap {\n\tconst result = createBitmap(newWidth, newHeight, bitmap.pixelMode);\n\n\tconst xRatio = bitmap.width / newWidth;\n\tconst yRatio = bitmap.rows / newHeight;\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\t\t\t\tresult.buffer[y * result.pitch + x] =\n\t\t\t\t\tbitmap.buffer[sy * bitmap.pitch + sx] ?? 0;\n\t\t\t}\n\t\t}\n\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\n\t\t\t\tconst srcByteIdx = sy * bitmap.pitch + (sx >> 3);\n\t\t\t\tconst srcBitIdx = 7 - (sx & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[srcByteIdx] ?? 0) >> srcBitIdx) & 1;\n\n\t\t\t\tif (bit) {\n\t\t\t\t\tconst dstByteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst dstBitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[dstByteIdx] |= 1 << dstBitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\n\t\t\t\tconst srcIdx = sy * bitmap.pitch + sx * 3;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\n\t\t\t\tresult.buffer[dstIdx] = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 1] = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 2] = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n",
71
- "/**\n * Bitmap blur filters - Gaussian and Box blur\n */\n\nimport { convertBitmap } from \"./bitmap-utils.ts\";\nimport { type Bitmap, PixelMode } from \"./types.ts\";\n\n/**\n * Generate 1D Gaussian kernel\n * Uses Gaussian function: exp(-x²/(2σ²))\n */\nexport function createGaussianKernel(radius: number): Float32Array {\n\tif (radius <= 0) {\n\t\treturn new Float32Array([1.0]);\n\t}\n\n\t// sigma = radius, kernel extends to 3*sigma on each side\n\t// This captures >99% of the Gaussian\n\tconst sigma = radius;\n\tconst size = Math.ceil(radius * 2) * 2 + 1;\n\tconst kernel = new Float32Array(size);\n\tconst center = Math.floor(size / 2);\n\n\tlet sum = 0;\n\n\t// Calculate kernel weights\n\tfor (let i = 0; i < size; i++) {\n\t\tconst x = i - center;\n\t\tconst weight = Math.exp(-(x * x) / (2 * sigma * sigma));\n\t\tkernel[i] = weight;\n\t\tsum += weight;\n\t}\n\n\t// Normalize to sum to 1.0\n\tfor (let i = 0; i < size; i++) {\n\t\tkernel[i] /= sum;\n\t}\n\n\treturn kernel;\n}\n\n/**\n * Apply 1D convolution along a row (horizontal)\n */\nfunction convolveHorizontal(\n\tsrc: Uint8Array,\n\tdst: Uint8Array,\n\twidth: number,\n\theight: number,\n\tsrcPitch: number,\n\tdstPitch: number,\n\tkernel: Float32Array,\n\tchannels: number,\n): void {\n\tconst radius = Math.floor(kernel.length / 2);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t\tlet sum = 0;\n\n\t\t\t\tfor (let k = 0; k < kernel.length; k++) {\n\t\t\t\t\tconst sx = x + k - radius;\n\n\t\t\t\t\t// Clamp to edges\n\t\t\t\t\tconst clampedX = Math.max(0, Math.min(width - 1, sx));\n\t\t\t\t\tconst srcIdx = y * srcPitch + clampedX * channels + c;\n\t\t\t\t\tsum += (src[srcIdx] ?? 0) * kernel[k];\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * dstPitch + x * channels + c;\n\t\t\t\tdst[dstIdx] = Math.min(255, Math.max(0, Math.round(sum)));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Apply 1D convolution along a column (vertical)\n */\nfunction convolveVertical(\n\tsrc: Uint8Array,\n\tdst: Uint8Array,\n\twidth: number,\n\theight: number,\n\tsrcPitch: number,\n\tdstPitch: number,\n\tkernel: Float32Array,\n\tchannels: number,\n): void {\n\tconst radius = Math.floor(kernel.length / 2);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t\tlet sum = 0;\n\n\t\t\t\tfor (let k = 0; k < kernel.length; k++) {\n\t\t\t\t\tconst sy = y + k - radius;\n\n\t\t\t\t\t// Clamp to edges\n\t\t\t\t\tconst clampedY = Math.max(0, Math.min(height - 1, sy));\n\t\t\t\t\tconst srcIdx = clampedY * srcPitch + x * channels + c;\n\t\t\t\t\tsum += (src[srcIdx] ?? 0) * kernel[k];\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * dstPitch + x * channels + c;\n\t\t\t\tdst[dstIdx] = Math.min(255, Math.max(0, Math.round(sum)));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Gaussian blur implementation using separable 2-pass algorithm\n * Modifies bitmap in-place and returns it\n */\nexport function gaussianBlur(bitmap: Bitmap, radius: number): Bitmap {\n\t// Handle Mono by converting to Gray first\n\tif (bitmap.pixelMode === PixelMode.Mono) {\n\t\tconst converted = convertBitmap(bitmap, PixelMode.Gray);\n\t\treturn gaussianBlur(converted, radius);\n\t}\n\n\tif (radius <= 0) {\n\t\treturn bitmap;\n\t}\n\n\tconst kernel = createGaussianKernel(radius);\n\n\t// Determine channels based on pixel mode\n\tlet channels = 1;\n\tif (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tchannels = 3;\n\t} else if (bitmap.pixelMode === PixelMode.RGBA) {\n\t\tchannels = 4;\n\t}\n\n\t// Create temporary buffer for intermediate results\n\tconst temp = new Uint8Array(bitmap.buffer.length);\n\n\t// Pass 1: Horizontal blur (src -> temp)\n\tconvolveHorizontal(\n\t\tbitmap.buffer,\n\t\ttemp,\n\t\tbitmap.width,\n\t\tbitmap.rows,\n\t\tbitmap.pitch,\n\t\tbitmap.pitch,\n\t\tkernel,\n\t\tchannels,\n\t);\n\n\t// Pass 2: Vertical blur (temp -> bitmap.buffer)\n\tconvolveVertical(\n\t\ttemp,\n\t\tbitmap.buffer,\n\t\tbitmap.width,\n\t\tbitmap.rows,\n\t\tbitmap.pitch,\n\t\tbitmap.pitch,\n\t\tkernel,\n\t\tchannels,\n\t);\n\n\treturn bitmap;\n}\n\n/**\n * Box blur using running sum for O(1) per pixel\n * Modifies bitmap in-place and returns it\n */\nexport function boxBlur(bitmap: Bitmap, radius: number): Bitmap {\n\t// Handle Mono by converting to Gray first\n\tif (bitmap.pixelMode === PixelMode.Mono) {\n\t\tconst converted = convertBitmap(bitmap, PixelMode.Gray);\n\t\treturn boxBlur(converted, radius);\n\t}\n\n\tif (radius <= 0) {\n\t\treturn bitmap;\n\t}\n\n\t// Determine channels based on pixel mode\n\tlet channels = 1;\n\tif (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tchannels = 3;\n\t} else if (bitmap.pixelMode === PixelMode.RGBA) {\n\t\tchannels = 4;\n\t}\n\n\tconst iRadius = Math.floor(radius);\n\tconst _kernelSize = iRadius * 2 + 1;\n\n\t// Create temporary buffer\n\tconst temp = new Uint8Array(bitmap.buffer.length);\n\n\t// Pass 1: Horizontal box blur using running sum\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t// Initialize running sum\n\t\t\tlet sum = 0;\n\t\t\tlet count = 0;\n\n\t\t\t// Initialize sum with first window\n\t\t\tfor (let x = -iRadius; x <= iRadius; x++) {\n\t\t\t\tif (x >= 0 && x < bitmap.width) {\n\t\t\t\t\tconst idx = y * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += bitmap.buffer[idx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// First pixel\n\t\t\tconst dstIdx0 = y * bitmap.pitch + 0 * channels + c;\n\t\t\ttemp[dstIdx0] = Math.round(sum / count);\n\n\t\t\t// Slide window across row\n\t\t\tfor (let x = 1; x < bitmap.width; x++) {\n\t\t\t\t// Remove left pixel from sum\n\t\t\t\tconst leftX = x - iRadius - 1;\n\t\t\t\tif (leftX >= 0) {\n\t\t\t\t\tconst leftIdx = y * bitmap.pitch + leftX * channels + c;\n\t\t\t\t\tsum -= bitmap.buffer[leftIdx] ?? 0;\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\n\t\t\t\t// Add right pixel to sum\n\t\t\t\tconst rightX = x + iRadius;\n\t\t\t\tif (rightX < bitmap.width) {\n\t\t\t\t\tconst rightIdx = y * bitmap.pitch + rightX * channels + c;\n\t\t\t\t\tsum += bitmap.buffer[rightIdx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * bitmap.pitch + x * channels + c;\n\t\t\t\ttemp[dstIdx] = Math.round(sum / count);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass 2: Vertical box blur using running sum\n\tfor (let x = 0; x < bitmap.width; x++) {\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t// Initialize running sum\n\t\t\tlet sum = 0;\n\t\t\tlet count = 0;\n\n\t\t\t// Initialize sum with first window\n\t\t\tfor (let y = -iRadius; y <= iRadius; y++) {\n\t\t\t\tif (y >= 0 && y < bitmap.rows) {\n\t\t\t\t\tconst idx = y * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += temp[idx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// First pixel\n\t\t\tconst dstIdx0 = 0 * bitmap.pitch + x * channels + c;\n\t\t\tbitmap.buffer[dstIdx0] = Math.round(sum / count);\n\n\t\t\t// Slide window down column\n\t\t\tfor (let y = 1; y < bitmap.rows; y++) {\n\t\t\t\t// Remove top pixel from sum\n\t\t\t\tconst topY = y - iRadius - 1;\n\t\t\t\tif (topY >= 0) {\n\t\t\t\t\tconst topIdx = topY * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum -= temp[topIdx] ?? 0;\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\n\t\t\t\t// Add bottom pixel to sum\n\t\t\t\tconst bottomY = y + iRadius;\n\t\t\t\tif (bottomY < bitmap.rows) {\n\t\t\t\t\tconst bottomIdx = bottomY * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += temp[bottomIdx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * bitmap.pitch + x * channels + c;\n\t\t\t\tbitmap.buffer[dstIdx] = Math.round(sum / count);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Apply blur filter to a bitmap in-place\n * @param bitmap - Bitmap to blur (modified in-place)\n * @param radius - Blur radius in pixels (can be fractional)\n * @param type - Blur type: 'gaussian' (default) or 'box'\n * @returns The modified bitmap\n */\nexport function blurBitmap(\n\tbitmap: Bitmap,\n\tradius: number,\n\ttype: \"gaussian\" | \"box\" = \"gaussian\",\n): Bitmap {\n\tif (type === \"box\") {\n\t\treturn boxBlur(bitmap, radius);\n\t} else {\n\t\treturn gaussianBlur(bitmap, radius);\n\t}\n}\n",
68
+ "/**\n * Asymmetric Stroke\n *\n * Generates stroked outlines with independent X and Y border widths.\n * This enables effects like directional shadows, stretched borders,\n * and other asymmetric outline effects.\n *\n * The algorithm:\n * 1. Flatten curves to polylines with configurable precision\n * 2. For each segment, compute offset vectors scaled by (xBorder, yBorder)\n * 3. Handle line joins (miter, round, bevel)\n * 4. Generate both inner and outer contours for closed paths\n * 5. Handle caps for open paths\n */\n\nimport type { GlyphPath, PathCommand } from \"../render/path.ts\";\n\n/**\n * Options for asymmetric stroking\n */\nexport interface AsymmetricStrokeOptions {\n\t/** X-axis border width (in font units) */\n\txBorder: number;\n\t/** Y-axis border width (in font units) */\n\tyBorder: number;\n\t/** Precision for curve flattening (smaller = more accurate, default: 1) */\n\teps?: number;\n\t/** Line join style (default: \"round\") */\n\tlineJoin?: \"miter\" | \"round\" | \"bevel\";\n\t/** Miter limit for miter joins (default: 4) */\n\tmiterLimit?: number;\n}\n\ninterface Point {\n\tx: number;\n\ty: number;\n}\n\ninterface Normal {\n\tx: number;\n\ty: number;\n\tlen: number;\n}\n\n/**\n * Compute the asymmetric offset for a direction vector\n * The offset is perpendicular to the direction, scaled by (xBorder, yBorder)\n */\nfunction computeAsymmetricOffset(\n\tdx: number,\n\tdy: number,\n\txBorder: number,\n\tyBorder: number,\n): Normal {\n\t// Perpendicular direction (rotated 90° CCW): (-dy, dx)\n\t// Scale by border widths\n\tconst px = -dy * yBorder;\n\tconst py = dx * xBorder;\n\n\t// Length of scaled perpendicular\n\tconst len = Math.sqrt(px * px + py * py);\n\tif (len < 1e-10) {\n\t\treturn { x: 0, y: 0, len: 0 };\n\t}\n\n\t// Normalize\n\treturn {\n\t\tx: px / len,\n\t\ty: py / len,\n\t\tlen,\n\t};\n}\n\n/**\n * Flatten a quadratic Bézier curve to line segments\n */\nfunction flattenQuadratic(\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n\teps: number,\n\tresult: Point[],\n): void {\n\t// Check if flat enough using distance from control point to line\n\tconst dx = p2.x - p0.x;\n\tconst dy = p2.y - p0.y;\n\tconst d =\n\t\tMath.abs((p1.x - p0.x) * dy - (p1.y - p0.y) * dx) /\n\t\tMath.sqrt(dx * dx + dy * dy + 1e-10);\n\n\tif (d <= eps) {\n\t\tresult.push(p2);\n\t\treturn;\n\t}\n\n\t// Subdivide using de Casteljau\n\tconst p01: Point = { x: (p0.x + p1.x) / 2, y: (p0.y + p1.y) / 2 };\n\tconst p12: Point = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n\tconst p012: Point = { x: (p01.x + p12.x) / 2, y: (p01.y + p12.y) / 2 };\n\n\tflattenQuadratic(p0, p01, p012, eps, result);\n\tflattenQuadratic(p012, p12, p2, eps, result);\n}\n\n/**\n * Flatten a cubic Bézier curve to line segments\n */\nfunction flattenCubic(\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n\tp3: Point,\n\teps: number,\n\tresult: Point[],\n): void {\n\t// Check flatness using max distance of control points from line\n\tconst dx = p3.x - p0.x;\n\tconst dy = p3.y - p0.y;\n\tconst lenSq = dx * dx + dy * dy + 1e-10;\n\tconst d1 =\n\t\tMath.abs((p1.x - p0.x) * dy - (p1.y - p0.y) * dx) / Math.sqrt(lenSq);\n\tconst d2 =\n\t\tMath.abs((p2.x - p0.x) * dy - (p2.y - p0.y) * dx) / Math.sqrt(lenSq);\n\n\tif (d1 <= eps && d2 <= eps) {\n\t\tresult.push(p3);\n\t\treturn;\n\t}\n\n\t// Subdivide using de Casteljau\n\tconst p01: Point = { x: (p0.x + p1.x) / 2, y: (p0.y + p1.y) / 2 };\n\tconst p12: Point = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n\tconst p23: Point = { x: (p2.x + p3.x) / 2, y: (p2.y + p3.y) / 2 };\n\tconst p012: Point = { x: (p01.x + p12.x) / 2, y: (p01.y + p12.y) / 2 };\n\tconst p123: Point = { x: (p12.x + p23.x) / 2, y: (p12.y + p23.y) / 2 };\n\tconst p0123: Point = { x: (p012.x + p123.x) / 2, y: (p012.y + p123.y) / 2 };\n\n\tflattenCubic(p0, p01, p012, p0123, eps, result);\n\tflattenCubic(p0123, p123, p23, p3, eps, result);\n}\n\n/**\n * Convert path commands to polyline contours\n */\nfunction pathToContours(\n\tpath: GlyphPath,\n\teps: number,\n): { points: Point[]; closed: boolean }[] {\n\tconst contours: { points: Point[]; closed: boolean }[] = [];\n\tlet current: Point[] = [];\n\tlet curPoint: Point = { x: 0, y: 0 };\n\tlet startPoint: Point = { x: 0, y: 0 };\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tif (current.length > 1) {\n\t\t\t\t\tcontours.push({ points: current, closed: false });\n\t\t\t\t}\n\t\t\t\tcurPoint = { x: cmd.x, y: cmd.y };\n\t\t\t\tstartPoint = curPoint;\n\t\t\t\tcurrent = [curPoint];\n\t\t\t\tbreak;\n\n\t\t\tcase \"L\":\n\t\t\t\tcurPoint = { x: cmd.x, y: cmd.y };\n\t\t\t\tcurrent.push(curPoint);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Q\":\n\t\t\t\tflattenQuadratic(\n\t\t\t\t\tcurPoint,\n\t\t\t\t\t{ x: cmd.x1, y: cmd.y1 },\n\t\t\t\t\t{ x: cmd.x, y: cmd.y },\n\t\t\t\t\teps,\n\t\t\t\t\tcurrent,\n\t\t\t\t);\n\t\t\t\tcurPoint = { x: cmd.x, y: cmd.y };\n\t\t\t\tbreak;\n\n\t\t\tcase \"C\":\n\t\t\t\tflattenCubic(\n\t\t\t\t\tcurPoint,\n\t\t\t\t\t{ x: cmd.x1, y: cmd.y1 },\n\t\t\t\t\t{ x: cmd.x2, y: cmd.y2 },\n\t\t\t\t\t{ x: cmd.x, y: cmd.y },\n\t\t\t\t\teps,\n\t\t\t\t\tcurrent,\n\t\t\t\t);\n\t\t\t\tcurPoint = { x: cmd.x, y: cmd.y };\n\t\t\t\tbreak;\n\n\t\t\tcase \"Z\":\n\t\t\t\t// Close path - connect back to start if needed\n\t\t\t\tif (current.length > 1) {\n\t\t\t\t\t// Check if already closed\n\t\t\t\t\tconst first = current[0];\n\t\t\t\t\tconst last = current[current.length - 1];\n\t\t\t\t\tif (first && last) {\n\t\t\t\t\t\tconst dx = last.x - first.x;\n\t\t\t\t\t\tconst dy = last.y - first.y;\n\t\t\t\t\t\tif (dx * dx + dy * dy > eps * eps) {\n\t\t\t\t\t\t\tcurrent.push({ ...first });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontours.push({ points: current, closed: true });\n\t\t\t\t}\n\t\t\t\tcurrent = [];\n\t\t\t\tcurPoint = startPoint;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Handle unclosed path\n\tif (current.length > 1) {\n\t\tcontours.push({ points: current, closed: false });\n\t}\n\n\treturn contours;\n}\n\n/**\n * Add a round join between two segments\n */\nfunction addRoundJoin(\n\tresult: Point[],\n\tcenter: Point,\n\tnormal0: Normal,\n\tnormal1: Normal,\n\txBorder: number,\n\tyBorder: number,\n\touter: boolean,\n): void {\n\t// Compute angle between normals\n\tconst dot = normal0.x * normal1.x + normal0.y * normal1.y;\n\tconst cross = normal0.x * normal1.y - normal0.y * normal1.x;\n\tconst angle = Math.atan2(cross, dot);\n\n\t// Number of segments for the arc\n\tconst numSegments = Math.max(2, Math.ceil(Math.abs(angle) / (Math.PI / 8)));\n\n\tconst sign = outer ? 1 : -1;\n\tconst startAngle = Math.atan2(normal0.y, normal0.x);\n\n\tfor (let i = 1; i <= numSegments; i++) {\n\t\tconst t = i / numSegments;\n\t\tconst currentAngle = startAngle + angle * t;\n\t\tconst nx = Math.cos(currentAngle);\n\t\tconst ny = Math.sin(currentAngle);\n\t\tresult.push({\n\t\t\tx: center.x + nx * xBorder * sign,\n\t\t\ty: center.y + ny * yBorder * sign,\n\t\t});\n\t}\n}\n\n/**\n * Add a miter join between two segments\n */\nfunction addMiterJoin(\n\tresult: Point[],\n\tcenter: Point,\n\tnormal0: Normal,\n\tnormal1: Normal,\n\txBorder: number,\n\tyBorder: number,\n\tmiterLimit: number,\n\touter: boolean,\n): boolean {\n\tconst sign = outer ? 1 : -1;\n\n\t// Compute miter point\n\tconst dot = normal0.x * normal1.x + normal0.y * normal1.y;\n\tconst sinHalfAngle = Math.sqrt((1 - dot) / 2);\n\n\tif (sinHalfAngle < 1e-10) {\n\t\treturn false; // Nearly parallel\n\t}\n\n\tconst miterLength = 1 / sinHalfAngle;\n\n\tif (miterLength > miterLimit) {\n\t\treturn false; // Exceeds miter limit, use bevel\n\t}\n\n\t// Miter direction (bisector)\n\tconst mx = normal0.x + normal1.x;\n\tconst my = normal0.y + normal1.y;\n\tconst mlen = Math.sqrt(mx * mx + my * my);\n\n\tif (mlen < 1e-10) {\n\t\treturn false;\n\t}\n\n\tconst miterDist =\n\t\t(miterLength * Math.sqrt(xBorder * xBorder + yBorder * yBorder)) / 2;\n\n\tresult.push({\n\t\tx: center.x + (mx / mlen) * miterDist * sign,\n\t\ty: center.y + (my / mlen) * miterDist * sign,\n\t});\n\n\treturn true;\n}\n\n/**\n * Stroke a single closed contour with asymmetric borders\n * Returns both outer and inner contours\n */\nfunction strokeClosedContour(\n\tpoints: Point[],\n\txBorder: number,\n\tyBorder: number,\n\tlineJoin: \"miter\" | \"round\" | \"bevel\",\n\tmiterLimit: number,\n): { outer: Point[]; inner: Point[] } {\n\tconst n = points.length;\n\tif (n < 3) {\n\t\treturn { outer: [], inner: [] };\n\t}\n\n\t// Remove duplicate closing point if present\n\tconst lastIdx = n - 1;\n\tconst first = points[0];\n\tconst last = points[lastIdx];\n\tlet effectiveN = n;\n\tif (first && last) {\n\t\tconst dx = last.x - first.x;\n\t\tconst dy = last.y - first.y;\n\t\tif (dx * dx + dy * dy < 1) {\n\t\t\teffectiveN = n - 1;\n\t\t}\n\t}\n\n\tif (effectiveN < 3) {\n\t\treturn { outer: [], inner: [] };\n\t}\n\n\t// Compute normals for each segment\n\tconst normals: Normal[] = [];\n\tfor (let i = 0; i < effectiveN; i++) {\n\t\tconst p0 = points[i];\n\t\tconst p1 = points[(i + 1) % effectiveN];\n\t\tif (!p0 || !p1) continue;\n\n\t\tconst dx = p1.x - p0.x;\n\t\tconst dy = p1.y - p0.y;\n\t\tconst len = Math.sqrt(dx * dx + dy * dy);\n\n\t\tif (len < 1e-10) {\n\t\t\tnormals.push({ x: 0, y: 0, len: 0 });\n\t\t} else {\n\t\t\tnormals.push(\n\t\t\t\tcomputeAsymmetricOffset(dx / len, dy / len, xBorder, yBorder),\n\t\t\t);\n\t\t}\n\t}\n\n\tconst outer: Point[] = [];\n\tconst inner: Point[] = [];\n\n\t// Generate outer contour\n\tfor (let i = 0; i < effectiveN; i++) {\n\t\tconst pt = points[i];\n\t\tconst prevNormal = normals[(i - 1 + effectiveN) % effectiveN];\n\t\tconst nextNormal = normals[i];\n\t\tif (!pt || !prevNormal || !nextNormal) continue;\n\n\t\t// Skip zero-length segments\n\t\tif (prevNormal.len < 1e-10 || nextNormal.len < 1e-10) {\n\t\t\touter.push({\n\t\t\t\tx: pt.x + (nextNormal.len > 0 ? nextNormal.x * xBorder : 0),\n\t\t\t\ty: pt.y + (nextNormal.len > 0 ? nextNormal.y * yBorder : 0),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\t// First point of segment\n\t\tconst offsetPt: Point = {\n\t\t\tx: pt.x + nextNormal.x * xBorder,\n\t\t\ty: pt.y + nextNormal.y * yBorder,\n\t\t};\n\n\t\t// Check if we need a join\n\t\tconst cross = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x;\n\t\tconst isConvex = cross > 0;\n\n\t\tif (Math.abs(cross) < 0.01) {\n\t\t\t// Nearly parallel\n\t\t\touter.push(offsetPt);\n\t\t} else if (isConvex) {\n\t\t\t// Convex corner - add join\n\t\t\tswitch (lineJoin) {\n\t\t\t\tcase \"round\":\n\t\t\t\t\taddRoundJoin(\n\t\t\t\t\t\touter,\n\t\t\t\t\t\tpt,\n\t\t\t\t\t\tprevNormal,\n\t\t\t\t\t\tnextNormal,\n\t\t\t\t\t\txBorder,\n\t\t\t\t\t\tyBorder,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"miter\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!addMiterJoin(\n\t\t\t\t\t\t\touter,\n\t\t\t\t\t\t\tpt,\n\t\t\t\t\t\t\tprevNormal,\n\t\t\t\t\t\t\tnextNormal,\n\t\t\t\t\t\t\txBorder,\n\t\t\t\t\t\t\tyBorder,\n\t\t\t\t\t\t\tmiterLimit,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\touter.push(offsetPt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\touter.push(offsetPt);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t// Concave corner - just add the point\n\t\t\touter.push(offsetPt);\n\t\t}\n\t}\n\n\t// Generate inner contour (reverse direction)\n\tfor (let i = 0; i < effectiveN; i++) {\n\t\tconst pt = points[i];\n\t\tconst prevNormal = normals[(i - 1 + effectiveN) % effectiveN];\n\t\tconst nextNormal = normals[i];\n\t\tif (!pt || !prevNormal || !nextNormal) continue;\n\n\t\tif (prevNormal.len < 1e-10 || nextNormal.len < 1e-10) {\n\t\t\tinner.push({\n\t\t\t\tx: pt.x - (nextNormal.len > 0 ? nextNormal.x * xBorder : 0),\n\t\t\t\ty: pt.y - (nextNormal.len > 0 ? nextNormal.y * yBorder : 0),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst offsetPt: Point = {\n\t\t\tx: pt.x - nextNormal.x * xBorder,\n\t\t\ty: pt.y - nextNormal.y * yBorder,\n\t\t};\n\n\t\tconst cross = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x;\n\t\tconst isConvex = cross < 0; // Reversed for inner\n\n\t\tif (Math.abs(cross) < 0.01) {\n\t\t\tinner.push(offsetPt);\n\t\t} else if (isConvex) {\n\t\t\tswitch (lineJoin) {\n\t\t\t\tcase \"round\":\n\t\t\t\t\taddRoundJoin(\n\t\t\t\t\t\tinner,\n\t\t\t\t\t\tpt,\n\t\t\t\t\t\tprevNormal,\n\t\t\t\t\t\tnextNormal,\n\t\t\t\t\t\txBorder,\n\t\t\t\t\t\tyBorder,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"miter\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!addMiterJoin(\n\t\t\t\t\t\t\tinner,\n\t\t\t\t\t\t\tpt,\n\t\t\t\t\t\t\tprevNormal,\n\t\t\t\t\t\t\tnextNormal,\n\t\t\t\t\t\t\txBorder,\n\t\t\t\t\t\t\tyBorder,\n\t\t\t\t\t\t\tmiterLimit,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tinner.push(offsetPt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tinner.push(offsetPt);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tinner.push(offsetPt);\n\t\t}\n\t}\n\n\treturn { outer, inner };\n}\n\n/**\n * Convert points back to path commands\n */\nfunction pointsToPath(points: Point[], closed: boolean): PathCommand[] {\n\tif (points.length === 0) return [];\n\n\tconst commands: PathCommand[] = [];\n\tconst first = points[0];\n\tif (!first) return [];\n\n\tcommands.push({ type: \"M\", x: first.x, y: first.y });\n\n\tfor (let i = 1; i < points.length; i++) {\n\t\tconst pt = points[i];\n\t\tif (!pt) continue;\n\t\tcommands.push({ type: \"L\", x: pt.x, y: pt.y });\n\t}\n\n\tif (closed) {\n\t\tcommands.push({ type: \"Z\" });\n\t}\n\n\treturn commands;\n}\n\n/**\n * Stroke a path with asymmetric X/Y borders\n *\n * @param path Input path to stroke\n * @param options Stroke options including xBorder and yBorder\n * @returns Two paths: outer (positive offset) and inner (negative offset)\n *\n * For filled text with border:\n * - Combine outer outline with original fill\n * - Or use outer outline alone for hollow border effect\n */\nexport function strokeAsymmetric(\n\tpath: GlyphPath,\n\toptions: AsymmetricStrokeOptions,\n): { outer: GlyphPath; inner: GlyphPath } {\n\tconst {\n\t\txBorder,\n\t\tyBorder,\n\t\teps = 1,\n\t\tlineJoin = \"round\",\n\t\tmiterLimit = 4,\n\t} = options;\n\n\tif (xBorder <= 0 && yBorder <= 0) {\n\t\treturn {\n\t\t\touter: { commands: [], bounds: null },\n\t\t\tinner: { commands: [], bounds: null },\n\t\t};\n\t}\n\n\t// Flatten path to polylines\n\tconst contours = pathToContours(path, eps);\n\n\tconst outerCommands: PathCommand[] = [];\n\tconst innerCommands: PathCommand[] = [];\n\n\tfor (const contour of contours) {\n\t\tif (!contour.closed) {\n\t\t\t// For open paths, we'd need to handle caps\n\t\t\t// For now, treat as closed by connecting ends\n\t\t\tconst firstPoint = contour.points[0];\n\t\t\tif (firstPoint) contour.points.push(firstPoint);\n\t\t\tcontour.closed = true;\n\t\t}\n\n\t\tconst { outer, inner } = strokeClosedContour(\n\t\t\tcontour.points,\n\t\t\txBorder,\n\t\t\tyBorder,\n\t\t\tlineJoin,\n\t\t\tmiterLimit,\n\t\t);\n\n\t\touterCommands.push(...pointsToPath(outer, true));\n\t\tinnerCommands.push(...pointsToPath(inner, true));\n\t}\n\n\t// Compute bounds\n\tlet outerBounds = null;\n\tlet innerBounds = null;\n\n\tif (path.bounds) {\n\t\touterBounds = {\n\t\t\txMin: path.bounds.xMin - xBorder,\n\t\t\tyMin: path.bounds.yMin - yBorder,\n\t\t\txMax: path.bounds.xMax + xBorder,\n\t\t\tyMax: path.bounds.yMax + yBorder,\n\t\t};\n\t\tinnerBounds = {\n\t\t\txMin: path.bounds.xMin + xBorder,\n\t\t\tyMin: path.bounds.yMin + yBorder,\n\t\t\txMax: path.bounds.xMax - xBorder,\n\t\t\tyMax: path.bounds.yMax - yBorder,\n\t\t};\n\t}\n\n\treturn {\n\t\touter: { commands: outerCommands, bounds: outerBounds, flags: path.flags },\n\t\tinner: { commands: innerCommands, bounds: innerBounds, flags: path.flags },\n\t};\n}\n\n/**\n * Create a combined stroke path (both inner and outer as single path)\n * This creates a ring/donut shape that can be filled\n */\nexport function strokeAsymmetricCombined(\n\tpath: GlyphPath,\n\toptions: AsymmetricStrokeOptions,\n): GlyphPath {\n\tconst { outer, inner } = strokeAsymmetric(path, options);\n\n\t// Combine both paths - outer goes clockwise, inner goes counter-clockwise\n\t// This creates a fillable ring shape\n\tconst commands: PathCommand[] = [...outer.commands, ...inner.commands];\n\n\tconst bounds = outer.bounds;\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Stroke with uniform border (convenience function)\n */\nexport function strokeUniform(\n\tpath: GlyphPath,\n\tborder: number,\n\toptions?: Omit<AsymmetricStrokeOptions, \"xBorder\" | \"yBorder\">,\n): { outer: GlyphPath; inner: GlyphPath } {\n\treturn strokeAsymmetric(path, {\n\t\txBorder: border,\n\t\tyBorder: border,\n\t\t...options,\n\t});\n}\n",
72
69
  "/**\n * Arithmetic and logic instructions\n */\n\nimport type { ExecContext } from \"../types.ts\";\n\n/** ADD - Add top two values */\nexport function ADD(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"ADD: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a + b;\n}\n\n/** SUB - Subtract top two values */\nexport function SUB(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"SUB: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a - b;\n}\n\n/** DIV - Divide (26.6 fixed-point) */\nexport function DIV(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"DIV: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\n\tif (b === 0) {\n\t\tctx.error = \"DIV: division by zero\";\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\n\t// Result is (a * 64) / b for 26.6 precision\n\tctx.stack[ctx.stackTop++] = Math.trunc((a * 64) / b);\n}\n\n/** MUL - Multiply (26.6 fixed-point) */\nexport function MUL(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"MUL: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\n\t// Result is (a * b) / 64 for 26.6 precision\n\tctx.stack[ctx.stackTop++] = Math.trunc((a * b) / 64);\n}\n\n/** ABS - Absolute value */\nexport function ABS(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"ABS: stack underflow\";\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop - 1] = val < 0 ? -val : val;\n}\n\n/** NEG - Negate */\nexport function NEG(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"NEG: stack underflow\";\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop - 1] = -val;\n}\n\n/** FLOOR - Floor to 26.6 integer (multiple of 64) */\nexport function FLOOR(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"FLOOR: stack underflow\";\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop - 1] = val & ~63;\n}\n\n/** CEILING - Ceiling to 26.6 integer (multiple of 64) */\nexport function CEILING(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"CEILING: stack underflow\";\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop - 1] = (val + 63) & ~63;\n}\n\n/** MAX - Maximum of top two */\nexport function MAX(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"MAX: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a > b ? a : b;\n}\n\n/** MIN - Minimum of top two */\nexport function MIN(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"MIN: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a < b ? a : b;\n}\n\n// Comparison instructions\n\n/** LT - Less than */\nexport function LT(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"LT: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a < b ? 1 : 0;\n}\n\n/** LTEQ - Less than or equal */\nexport function LTEQ(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"LTEQ: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a <= b ? 1 : 0;\n}\n\n/** GT - Greater than */\nexport function GT(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"GT: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a > b ? 1 : 0;\n}\n\n/** GTEQ - Greater than or equal */\nexport function GTEQ(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"GTEQ: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a >= b ? 1 : 0;\n}\n\n/** EQ - Equal */\nexport function EQ(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"EQ: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a === b ? 1 : 0;\n}\n\n/** NEQ - Not equal */\nexport function NEQ(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"NEQ: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a !== b ? 1 : 0;\n}\n\n/** ODD - Test if odd (after rounding to pixels) */\nexport function ODD(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"ODD: stack underflow\";\n\t\treturn;\n\t}\n\t// Round to nearest pixel and test bit 6\n\tconst rounded = (val + 32) & ~63;\n\tctx.stack[ctx.stackTop - 1] = rounded & 64 ? 1 : 0;\n}\n\n/** EVEN - Test if even (after rounding to pixels) */\nexport function EVEN(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"EVEN: stack underflow\";\n\t\treturn;\n\t}\n\t// Round to nearest pixel and test bit 6\n\tconst rounded = (val + 32) & ~63;\n\tctx.stack[ctx.stackTop - 1] = rounded & 64 ? 0 : 1;\n}\n\n// Logic instructions\n\n/** AND - Logical AND */\nexport function AND(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"AND: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a && b ? 1 : 0;\n}\n\n/** OR - Logical OR */\nexport function OR(ctx: ExecContext): void {\n\tconst b = ctx.stack[--ctx.stackTop];\n\tconst a = ctx.stack[--ctx.stackTop];\n\tif (a === undefined || b === undefined) {\n\t\tctx.error = \"OR: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\tctx.stack[ctx.stackTop++] = 0;\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop++] = a || b ? 1 : 0;\n}\n\n/** NOT - Logical NOT */\nexport function NOT(ctx: ExecContext): void {\n\tconst val = ctx.stack[ctx.stackTop - 1];\n\tif (val === undefined) {\n\t\tctx.error = \"NOT: stack underflow\";\n\t\treturn;\n\t}\n\tctx.stack[ctx.stackTop - 1] = val ? 0 : 1;\n}\n",
73
70
  "/**\n * Control flow instructions\n */\n\nimport type { ExecContext } from \"../types.ts\";\n\n/** IF - Conditional branch */\nexport function IF(ctx: ExecContext): void {\n\tconst condition = ctx.stack[--ctx.stackTop];\n\tif (condition === undefined) {\n\t\tctx.error = \"IF: stack underflow\";\n\t\tctx.stackTop++;\n\t\treturn;\n\t}\n\n\tif (condition) {\n\t\t// Continue execution (true branch)\n\t\treturn;\n\t}\n\n\t// Skip to ELSE or EIF\n\tlet depth = 1;\n\n\twhile (ctx.IP < ctx.codeSize) {\n\t\tconst opcode = ctx.code[ctx.IP++];\n\t\tif (opcode === undefined) break;\n\n\t\tswitch (opcode) {\n\t\t\tcase 0x58: // IF\n\t\t\t\tdepth++;\n\t\t\t\tbreak;\n\t\t\tcase 0x1b: // ELSE\n\t\t\t\tif (depth === 1) {\n\t\t\t\t\t// Found matching ELSE, continue from here\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x59: // EIF\n\t\t\t\tdepth--;\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t// Skip push instructions\n\t\t\tcase 0x40: // NPUSHB\n\t\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0);\n\t\t\t\tbreak;\n\t\t\tcase 0x41: // NPUSHW\n\t\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0) * 2;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (opcode >= 0xb0 && opcode <= 0xb7) {\n\t\t\t\t\t// PUSHB[n]\n\t\t\t\t\tctx.IP += opcode - 0xb0 + 1;\n\t\t\t\t} else if (opcode >= 0xb8 && opcode <= 0xbf) {\n\t\t\t\t\t// PUSHW[n]\n\t\t\t\t\tctx.IP += (opcode - 0xb8 + 1) * 2;\n\t\t\t\t}\n\t\t}\n\t}\n\n\tctx.error = \"IF: missing EIF\";\n}\n\n/** ELSE - Alternative branch */\nexport function ELSE(ctx: ExecContext): void {\n\t// We're in the true branch and hit ELSE, skip to EIF\n\tlet depth = 1;\n\n\twhile (ctx.IP < ctx.codeSize) {\n\t\tconst opcode = ctx.code[ctx.IP++];\n\t\tif (opcode === undefined) break;\n\n\t\tswitch (opcode) {\n\t\t\tcase 0x58: // IF\n\t\t\t\tdepth++;\n\t\t\t\tbreak;\n\t\t\tcase 0x59: // EIF\n\t\t\t\tdepth--;\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x40: // NPUSHB\n\t\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0);\n\t\t\t\tbreak;\n\t\t\tcase 0x41: // NPUSHW\n\t\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0) * 2;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (opcode >= 0xb0 && opcode <= 0xb7) {\n\t\t\t\t\tctx.IP += opcode - 0xb0 + 1;\n\t\t\t\t} else if (opcode >= 0xb8 && opcode <= 0xbf) {\n\t\t\t\t\tctx.IP += (opcode - 0xb8 + 1) * 2;\n\t\t\t\t}\n\t\t}\n\t}\n\n\tctx.error = \"ELSE: missing EIF\";\n}\n\n/** EIF - End IF */\nexport function EIF(_ctx: ExecContext): void {\n\t// Nothing to do - just a marker\n}\n\n/** JMPR - Jump relative */\nexport function JMPR(ctx: ExecContext): void {\n\tconst offset = ctx.stack[--ctx.stackTop];\n\tif (offset === undefined) {\n\t\tctx.error = \"JMPR: stack underflow\";\n\t\tctx.stackTop++;\n\t\treturn;\n\t}\n\tctx.IP += offset - 1; // -1 because IP was already incremented\n}\n\n/** JROT - Jump relative on true */\nexport function JROT(ctx: ExecContext): void {\n\tconst condition = ctx.stack[--ctx.stackTop];\n\tconst offset = ctx.stack[--ctx.stackTop];\n\tif (condition === undefined || offset === undefined) {\n\t\tctx.error = \"JROT: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\treturn;\n\t}\n\n\tif (condition) {\n\t\tctx.IP += offset - 1;\n\t}\n}\n\n/** JROF - Jump relative on false */\nexport function JROF(ctx: ExecContext): void {\n\tconst condition = ctx.stack[--ctx.stackTop];\n\tconst offset = ctx.stack[--ctx.stackTop];\n\tif (condition === undefined || offset === undefined) {\n\t\tctx.error = \"JROF: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\treturn;\n\t}\n\n\tif (!condition) {\n\t\tctx.IP += offset - 1;\n\t}\n}\n\n/** FDEF - Define function */\nexport function FDEF(ctx: ExecContext): void {\n\tconst funcNum = ctx.stack[--ctx.stackTop];\n\tif (funcNum === undefined) {\n\t\tctx.error = \"FDEF: stack underflow\";\n\t\tctx.stackTop++;\n\t\treturn;\n\t}\n\n\tif (funcNum < 0 || funcNum >= ctx.maxFDefs) {\n\t\tctx.error = `FDEF: invalid function number ${funcNum}`;\n\t\treturn;\n\t}\n\n\tconst def = ctx.FDefs[funcNum];\n\tif (!def) {\n\t\tctx.error = `FDEF: no slot for function ${funcNum}`;\n\t\treturn;\n\t}\n\tdef.id = funcNum;\n\tdef.start = ctx.IP;\n\tdef.active = true;\n\tdef.range = ctx.currentRange;\n\n\t// Skip to ENDF\n\twhile (ctx.IP < ctx.codeSize) {\n\t\tconst opcode = ctx.code[ctx.IP++];\n\t\tif (opcode === undefined) break;\n\n\t\tif (opcode === 0x2d) {\n\t\t\t// ENDF\n\t\t\tdef.end = ctx.IP;\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip push instructions\n\t\tif (opcode === 0x40) {\n\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0);\n\t\t} else if (opcode === 0x41) {\n\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0) * 2;\n\t\t} else if (opcode >= 0xb0 && opcode <= 0xb7) {\n\t\t\tctx.IP += opcode - 0xb0 + 1;\n\t\t} else if (opcode >= 0xb8 && opcode <= 0xbf) {\n\t\t\tctx.IP += (opcode - 0xb8 + 1) * 2;\n\t\t}\n\t}\n\n\tctx.error = \"FDEF: missing ENDF\";\n}\n\n/** ENDF - End function definition */\nexport function ENDF(ctx: ExecContext): void {\n\t// Called when returning from function call\n\tif (ctx.callStackTop <= 0) {\n\t\tctx.error = \"ENDF: not in function call\";\n\t\treturn;\n\t}\n\n\tconst call = ctx.callStack[ctx.callStackTop - 1];\n\tif (!call) {\n\t\tctx.error = \"ENDF: missing call frame\";\n\t\treturn;\n\t}\n\n\t// Decrement loop count for LOOPCALL\n\tcall.count--;\n\n\tif (call.count > 0) {\n\t\t// Loop again\n\t\tctx.IP = call.def.start;\n\t} else {\n\t\t// Return to caller\n\t\tctx.callStackTop--;\n\t\tctx.IP = call.callerIP;\n\t\tctx.currentRange = call.callerRange;\n\n\t\t// Restore code pointer\n\t\tconst range = ctx.codeRanges.get(ctx.currentRange);\n\t\tif (range) {\n\t\t\tctx.code = range.code;\n\t\t\tctx.codeSize = range.size;\n\t\t}\n\t}\n}\n\n/** CALL - Call function */\nexport function CALL(ctx: ExecContext): void {\n\tconst funcNum = ctx.stack[--ctx.stackTop];\n\tif (funcNum === undefined) {\n\t\tctx.error = \"CALL: stack underflow\";\n\t\tctx.stackTop++;\n\t\treturn;\n\t}\n\n\tif (funcNum < 0 || funcNum >= ctx.maxFDefs) {\n\t\tctx.error = `CALL: invalid function number ${funcNum}`;\n\t\treturn;\n\t}\n\n\tconst def = ctx.FDefs[funcNum];\n\tif (!def || !def.active) {\n\t\tctx.error = `CALL: function ${funcNum} not defined`;\n\t\treturn;\n\t}\n\n\tif (ctx.callStackTop >= ctx.maxCallStack) {\n\t\tctx.error = \"CALL: call stack overflow\";\n\t\treturn;\n\t}\n\n\t// Push call record\n\tconst call = ctx.callStack[ctx.callStackTop++];\n\tif (!call) {\n\t\tctx.error = \"CALL: no call frame available\";\n\t\tctx.callStackTop--;\n\t\treturn;\n\t}\n\tcall.callerIP = ctx.IP;\n\tcall.callerRange = ctx.currentRange;\n\tcall.def = def;\n\tcall.count = 1;\n\n\t// Switch to function's code range\n\tctx.currentRange = def.range;\n\tconst range = ctx.codeRanges.get(ctx.currentRange);\n\tif (range) {\n\t\tctx.code = range.code;\n\t\tctx.codeSize = range.size;\n\t}\n\tctx.IP = def.start;\n}\n\n/** LOOPCALL - Call function with loop count */\nexport function LOOPCALL(ctx: ExecContext): void {\n\tconst funcNum = ctx.stack[--ctx.stackTop];\n\tconst count = ctx.stack[--ctx.stackTop];\n\tif (funcNum === undefined || count === undefined) {\n\t\tctx.error = \"LOOPCALL: stack underflow\";\n\t\tctx.stackTop += 2;\n\t\treturn;\n\t}\n\n\tif (funcNum < 0 || funcNum >= ctx.maxFDefs) {\n\t\tctx.error = `LOOPCALL: invalid function number ${funcNum}`;\n\t\treturn;\n\t}\n\n\tconst def = ctx.FDefs[funcNum];\n\tif (!def || !def.active) {\n\t\tctx.error = `LOOPCALL: function ${funcNum} not defined`;\n\t\treturn;\n\t}\n\n\tif (count <= 0) {\n\t\treturn; // Nothing to do\n\t}\n\n\tif (ctx.callStackTop >= ctx.maxCallStack) {\n\t\tctx.error = \"LOOPCALL: call stack overflow\";\n\t\treturn;\n\t}\n\n\t// Push call record\n\tconst call = ctx.callStack[ctx.callStackTop++];\n\tif (!call) {\n\t\tctx.error = \"LOOPCALL: no call frame available\";\n\t\tctx.callStackTop--;\n\t\treturn;\n\t}\n\tcall.callerIP = ctx.IP;\n\tcall.callerRange = ctx.currentRange;\n\tcall.def = def;\n\tcall.count = count;\n\n\t// Switch to function's code range\n\tctx.currentRange = def.range;\n\tconst range = ctx.codeRanges.get(ctx.currentRange);\n\tif (range) {\n\t\tctx.code = range.code;\n\t\tctx.codeSize = range.size;\n\t}\n\tctx.IP = def.start;\n}\n\n/** IDEF - Define instruction */\nexport function IDEF(ctx: ExecContext): void {\n\tconst opcode = ctx.stack[--ctx.stackTop];\n\tif (opcode === undefined) {\n\t\tctx.error = \"IDEF: stack underflow\";\n\t\tctx.stackTop++;\n\t\treturn;\n\t}\n\n\tif (opcode < 0 || opcode >= ctx.maxIDefs) {\n\t\tctx.error = `IDEF: invalid opcode ${opcode}`;\n\t\treturn;\n\t}\n\n\tconst def = ctx.IDefs[opcode];\n\tif (!def) {\n\t\tctx.error = `IDEF: no slot for opcode ${opcode}`;\n\t\treturn;\n\t}\n\tdef.opcode = opcode;\n\tdef.start = ctx.IP;\n\tdef.active = true;\n\tdef.range = ctx.currentRange;\n\n\t// Skip to ENDF\n\twhile (ctx.IP < ctx.codeSize) {\n\t\tconst op = ctx.code[ctx.IP++];\n\t\tif (op === undefined) break;\n\n\t\tif (op === 0x2d) {\n\t\t\t// ENDF\n\t\t\tdef.end = ctx.IP;\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip push instructions\n\t\tif (op === 0x40) {\n\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0);\n\t\t} else if (op === 0x41) {\n\t\t\tctx.IP += 1 + (ctx.code[ctx.IP] ?? 0) * 2;\n\t\t} else if (op >= 0xb0 && op <= 0xb7) {\n\t\t\tctx.IP += op - 0xb0 + 1;\n\t\t} else if (op >= 0xb8 && op <= 0xbf) {\n\t\t\tctx.IP += (op - 0xb8 + 1) * 2;\n\t\t}\n\t}\n\n\tctx.error = \"IDEF: missing ENDF\";\n}\n",
74
71
  "/**\n * TrueType Hinting Types\n *\n * Based on FreeType's ttinterp.h and ttobjs.h\n */\n\n/**\n * 26.6 fixed-point number (used for coordinates)\n */\nexport type F26Dot6 = number;\n\n/**\n * 2.14 fixed-point number (used for unit vectors)\n */\nexport type F2Dot14 = number;\n\n/**\n * Unit vector in 2.14 format\n */\nexport interface UnitVector {\n\tx: F2Dot14;\n\ty: F2Dot14;\n}\n\n/**\n * Point coordinate\n */\nexport interface Point {\n\tx: F26Dot6;\n\ty: F26Dot6;\n}\n\n/**\n * Rounding mode for ROUND instruction\n */\nexport enum RoundMode {\n\tToHalfGrid = 0,\n\tToGrid = 1,\n\tToDoubleGrid = 2,\n\tDownToGrid = 3,\n\tUpToGrid = 4,\n\tOff = 5,\n\tSuper = 6,\n\tSuper45 = 7,\n}\n\n/**\n * Touch flags for points\n */\nexport enum TouchFlag {\n\tX = 0x01,\n\tY = 0x02,\n\tBoth = 0x03,\n}\n\n/**\n * Glyph zone - holds glyph points\n */\nexport interface GlyphZone {\n\t/** Number of points */\n\tnPoints: number;\n\t/** Number of contours */\n\tnContours: number;\n\t/** Original point positions (before hinting) */\n\torg: Point[];\n\t/** Current point positions (after hinting) */\n\tcur: Point[];\n\t/** Original unscaled positions */\n\torus: Point[];\n\t/** Touch flags per point */\n\ttags: Uint8Array;\n\t/** Contour end indices */\n\tcontours: Uint16Array;\n}\n\n/**\n * TrueType Graphics State\n *\n * Contains all state variables that control how instructions operate\n */\nexport interface GraphicsState {\n\t// Reference points\n\trp0: number;\n\trp1: number;\n\trp2: number;\n\n\t// Dual projection vector (for getting distances)\n\tdualVector: UnitVector;\n\t// Projection vector (direction along which we measure)\n\tprojVector: UnitVector;\n\t// Freedom vector (direction in which points can move)\n\tfreeVector: UnitVector;\n\n\t// Loop counter for repeated operations\n\tloop: number;\n\n\t// Minimum distance\n\tminimumDistance: F26Dot6;\n\n\t// Round state\n\troundState: RoundMode;\n\n\t// Auto flip for MIRP/MDRP\n\tautoFlip: boolean;\n\n\t// Control value cut-in\n\tcontrolValueCutIn: F26Dot6;\n\n\t// Single width cut-in\n\tsingleWidthCutIn: F26Dot6;\n\t// Single width value\n\tsingleWidthValue: F26Dot6;\n\n\t// Delta base (for DELTA instructions)\n\tdeltaBase: number;\n\t// Delta shift (for DELTA instructions)\n\tdeltaShift: number;\n\n\t// Instruction control flags\n\tinstructControl: number;\n\n\t// Scan control flags\n\tscanControl: number;\n\tscanType: number;\n\n\t// Zone pointers (0 = twilight, 1 = glyph)\n\tgep0: number;\n\tgep1: number;\n\tgep2: number;\n\n\t// Super rounding parameters\n\tperiod: F26Dot6;\n\tphase: F26Dot6;\n\tthreshold: F26Dot6;\n}\n\n/**\n * Create default graphics state\n */\nexport function createDefaultGraphicsState(): GraphicsState {\n\treturn {\n\t\trp0: 0,\n\t\trp1: 0,\n\t\trp2: 0,\n\t\tdualVector: { x: 0x4000, y: 0 }, // 1.0, 0.0 in 2.14\n\t\tprojVector: { x: 0x4000, y: 0 },\n\t\tfreeVector: { x: 0x4000, y: 0 },\n\t\tloop: 1,\n\t\tminimumDistance: 64, // 1 pixel in 26.6\n\t\troundState: RoundMode.ToGrid,\n\t\tautoFlip: true,\n\t\tcontrolValueCutIn: 68, // 17/16 pixel in 26.6\n\t\tsingleWidthCutIn: 0,\n\t\tsingleWidthValue: 0,\n\t\tdeltaBase: 9,\n\t\tdeltaShift: 3,\n\t\tinstructControl: 0,\n\t\tscanControl: 0,\n\t\tscanType: 0,\n\t\tgep0: 1,\n\t\tgep1: 1,\n\t\tgep2: 1,\n\t\tperiod: 64,\n\t\tphase: 0,\n\t\tthreshold: 32,\n\t};\n}\n\n/**\n * Function definition (from FDEF instruction)\n */\nexport interface FunctionDef {\n\t/** Function number */\n\tid: number;\n\t/** Start offset in bytecode */\n\tstart: number;\n\t/** End offset (just after ENDF) */\n\tend: number;\n\t/** Active (has been defined) */\n\tactive: boolean;\n\t/** Which code range */\n\trange: CodeRange;\n}\n\n/**\n * Instruction definition (from IDEF instruction)\n */\nexport interface InstructionDef {\n\t/** Opcode being redefined */\n\topcode: number;\n\t/** Start offset */\n\tstart: number;\n\t/** End offset */\n\tend: number;\n\t/** Active */\n\tactive: boolean;\n\t/** Code range */\n\trange: CodeRange;\n}\n\n/**\n * Code range type\n */\nexport enum CodeRange {\n\tNone = 0,\n\tFont = 1, // fpgm table\n\tCVT = 2, // prep table\n\tGlyph = 3, // glyph instructions\n}\n\n/**\n * Call stack record\n */\nexport interface CallRecord {\n\t/** Caller's instruction pointer */\n\tcallerIP: number;\n\t/** Caller's code range */\n\tcallerRange: CodeRange;\n\t/** Function definition */\n\tdef: FunctionDef;\n\t/** Loop count (for LOOPCALL) */\n\tcount: number;\n}\n\n/**\n * Execution context for the TrueType interpreter\n */\nexport interface ExecContext {\n\t// Graphics state\n\tGS: GraphicsState;\n\t// Default graphics state (reset after each glyph)\n\tdefaultGS: GraphicsState;\n\n\t// Zone pointers\n\tzp0: GlyphZone;\n\tzp1: GlyphZone;\n\tzp2: GlyphZone;\n\n\t// Twilight zone (synthetic points)\n\ttwilight: GlyphZone;\n\t// Glyph zone (actual glyph points)\n\tpts: GlyphZone;\n\n\t// Stack\n\tstack: Int32Array;\n\tstackTop: number;\n\n\t// Instruction pointer and code\n\tIP: number;\n\tcode: Uint8Array;\n\tcodeSize: number;\n\tcurrentRange: CodeRange;\n\n\t// Current opcode\n\topcode: number;\n\t// Number of arguments for current opcode\n\tnumArgs: number;\n\n\t// Control Value Table (scaled)\n\tcvt: Int32Array;\n\tcvtSize: number;\n\n\t// Storage area\n\tstorage: Int32Array;\n\tstorageSize: number;\n\n\t// Function definitions\n\tFDefs: FunctionDef[];\n\tmaxFDefs: number;\n\n\t// Instruction definitions\n\tIDefs: InstructionDef[];\n\tmaxIDefs: number;\n\n\t// Call stack\n\tcallStack: CallRecord[];\n\tcallStackTop: number;\n\tmaxCallStack: number;\n\n\t// Code ranges\n\tcodeRanges: Map<CodeRange, { code: Uint8Array; size: number }>;\n\n\t// Pixels per EM\n\tppem: number;\n\t// Point size\n\tpointSize: number;\n\n\t// Scale factor from font units to 26.6 pixels\n\tscale: number;\n\n\t// Error state\n\terror: string | null;\n\n\t// Instruction execution count (for infinite loop protection)\n\tinstructionCount: number;\n\tmaxInstructions: number;\n}\n\n/**\n * Create an empty glyph zone\n */\nexport function createGlyphZone(\n\tmaxPoints: number,\n\tmaxContours: number,\n): GlyphZone {\n\treturn {\n\t\tnPoints: 0,\n\t\tnContours: 0,\n\t\torg: new Array(maxPoints).fill(null).map(() => ({ x: 0, y: 0 })),\n\t\tcur: new Array(maxPoints).fill(null).map(() => ({ x: 0, y: 0 })),\n\t\torus: new Array(maxPoints).fill(null).map(() => ({ x: 0, y: 0 })),\n\t\ttags: new Uint8Array(maxPoints),\n\t\tcontours: new Uint16Array(maxContours),\n\t};\n}\n\n/**\n * Create execution context\n */\nexport function createExecContext(\n\tmaxStack: number = 256,\n\tmaxStorage: number = 64,\n\tmaxFDefs: number = 64,\n\tmaxIDefs: number = 64,\n\tmaxCallStack: number = 32,\n\tmaxTwilightPoints: number = 16,\n): ExecContext {\n\tconst defaultGS = createDefaultGraphicsState();\n\n\treturn {\n\t\tGS: { ...defaultGS },\n\t\tdefaultGS,\n\n\t\tzp0: createGlyphZone(0, 0),\n\t\tzp1: createGlyphZone(0, 0),\n\t\tzp2: createGlyphZone(0, 0),\n\n\t\ttwilight: createGlyphZone(maxTwilightPoints, 1),\n\t\tpts: createGlyphZone(0, 0),\n\n\t\tstack: new Int32Array(maxStack),\n\t\tstackTop: 0,\n\n\t\tIP: 0,\n\t\tcode: new Uint8Array(0),\n\t\tcodeSize: 0,\n\t\tcurrentRange: CodeRange.None,\n\n\t\topcode: 0,\n\t\tnumArgs: 0,\n\n\t\tcvt: new Int32Array(0),\n\t\tcvtSize: 0,\n\n\t\tstorage: new Int32Array(maxStorage),\n\t\tstorageSize: maxStorage,\n\n\t\tFDefs: new Array(maxFDefs).fill(null).map((_, i) => ({\n\t\t\tid: i,\n\t\t\tstart: 0,\n\t\t\tend: 0,\n\t\t\tactive: false,\n\t\t\trange: CodeRange.None,\n\t\t})),\n\t\tmaxFDefs,\n\n\t\tIDefs: new Array(maxIDefs).fill(null).map((_, i) => ({\n\t\t\topcode: i,\n\t\t\tstart: 0,\n\t\t\tend: 0,\n\t\t\tactive: false,\n\t\t\trange: CodeRange.None,\n\t\t})),\n\t\tmaxIDefs,\n\n\t\tcallStack: new Array(maxCallStack).fill(null).map(() => ({\n\t\t\tcallerIP: 0,\n\t\t\tcallerRange: CodeRange.None,\n\t\t\tdef: { id: 0, start: 0, end: 0, active: false, range: CodeRange.None },\n\t\t\tcount: 0,\n\t\t})),\n\t\tcallStackTop: 0,\n\t\tmaxCallStack,\n\n\t\tcodeRanges: new Map(),\n\n\t\tppem: 12,\n\t\tpointSize: 12,\n\t\tscale: 1,\n\n\t\terror: null,\n\n\t\tinstructionCount: 0,\n\t\tmaxInstructions: 1000000,\n\t};\n}\n\n/**\n * TrueType Opcodes\n */\nexport const Opcode = {\n\t// Push instructions\n\tNPUSHB: 0x40,\n\tNPUSHW: 0x41,\n\tPUSHB_0: 0xb0,\n\tPUSHB_1: 0xb1,\n\tPUSHB_2: 0xb2,\n\tPUSHB_3: 0xb3,\n\tPUSHB_4: 0xb4,\n\tPUSHB_5: 0xb5,\n\tPUSHB_6: 0xb6,\n\tPUSHB_7: 0xb7,\n\tPUSHW_0: 0xb8,\n\tPUSHW_1: 0xb9,\n\tPUSHW_2: 0xba,\n\tPUSHW_3: 0xbb,\n\tPUSHW_4: 0xbc,\n\tPUSHW_5: 0xbd,\n\tPUSHW_6: 0xbe,\n\tPUSHW_7: 0xbf,\n\n\t// Storage instructions\n\tRS: 0x43,\n\tWS: 0x42,\n\n\t// CVT instructions\n\tRCVT: 0x45,\n\tWCVTP: 0x44,\n\tWCVTF: 0x70,\n\n\t// Stack operations\n\tDUP: 0x20,\n\tPOP: 0x21,\n\tCLEAR: 0x22,\n\tSWAP: 0x23,\n\tDEPTH: 0x24,\n\tCINDEX: 0x25,\n\tMINDEX: 0x26,\n\tROLL: 0x8a,\n\n\t// Arithmetic\n\tADD: 0x60,\n\tSUB: 0x61,\n\tDIV: 0x62,\n\tMUL: 0x63,\n\tABS: 0x64,\n\tNEG: 0x65,\n\tFLOOR: 0x66,\n\tCEILING: 0x67,\n\tMAX: 0x8b,\n\tMIN: 0x8c,\n\n\t// Comparison\n\tLT: 0x50,\n\tLTEQ: 0x51,\n\tGT: 0x52,\n\tGTEQ: 0x53,\n\tEQ: 0x54,\n\tNEQ: 0x55,\n\tODD: 0x56,\n\tEVEN: 0x57,\n\n\t// Logic\n\tAND: 0x5a,\n\tOR: 0x5b,\n\tNOT: 0x5c,\n\n\t// Control flow\n\tIF: 0x58,\n\tELSE: 0x1b,\n\tEIF: 0x59,\n\tJMPR: 0x1c,\n\tJROT: 0x78,\n\tJROF: 0x79,\n\n\t// Functions\n\tFDEF: 0x2c,\n\tENDF: 0x2d,\n\tCALL: 0x2b,\n\tLOOPCALL: 0x2a,\n\tIDEF: 0x89,\n\n\t// Graphics state - vectors\n\tSVTCA_Y: 0x00,\n\tSVTCA_X: 0x01,\n\tSPVTCA_Y: 0x02,\n\tSPVTCA_X: 0x03,\n\tSFVTCA_Y: 0x04,\n\tSFVTCA_X: 0x05,\n\tSPVTL_0: 0x06,\n\tSPVTL_1: 0x07,\n\tSFVTL_0: 0x08,\n\tSFVTL_1: 0x09,\n\tSDPVTL_0: 0x86,\n\tSDPVTL_1: 0x87,\n\tSPVFS: 0x0a,\n\tSFVFS: 0x0b,\n\tGPV: 0x0c,\n\tGFV: 0x0d,\n\tSFVTPV: 0x0e,\n\tISECT: 0x0f,\n\n\t// Graphics state - reference points\n\tSRP0: 0x10,\n\tSRP1: 0x11,\n\tSRP2: 0x12,\n\n\t// Graphics state - zone pointers\n\tSZP0: 0x13,\n\tSZP1: 0x14,\n\tSZP2: 0x15,\n\tSZPS: 0x16,\n\n\t// Graphics state - other\n\tSLOOP: 0x17,\n\tRTG: 0x18,\n\tRTHG: 0x19,\n\tSMD: 0x1a,\n\tRDTG: 0x7d,\n\tRUTG: 0x7c,\n\tROFF: 0x7a,\n\tSROUND: 0x76,\n\tS45ROUND: 0x77,\n\tSCVTCI: 0x1d,\n\tSSWCI: 0x1e,\n\tSSW: 0x1f,\n\tFLIPON: 0x4d,\n\tFLIPOFF: 0x4e,\n\tSANGW: 0x7e,\n\tSDB: 0x5e,\n\tSDS: 0x5f,\n\n\t// Point operations\n\tGC_0: 0x46,\n\tGC_1: 0x47,\n\tSCFS: 0x48,\n\tMD_0: 0x49,\n\tMD_1: 0x4a,\n\tMPPEM: 0x4b,\n\tMPS: 0x4c,\n\tFLIPPT: 0x80,\n\tFLIPRGON: 0x81,\n\tFLIPRGOFF: 0x82,\n\n\t// Point movement\n\tSHP_0: 0x32,\n\tSHP_1: 0x33,\n\tSHC_0: 0x34,\n\tSHC_1: 0x35,\n\tSHZ_0: 0x36,\n\tSHZ_1: 0x37,\n\tSHPIX: 0x38,\n\tIP: 0x39,\n\tMSIRP_0: 0x3a,\n\tMSIRP_1: 0x3b,\n\tALIGNRP: 0x3c,\n\tRTDG: 0x3d,\n\tMIAP_0: 0x3e,\n\tMIAP_1: 0x3f,\n\n\t// ALIGNPTS - Align Points\n\tALIGNPTS: 0x27,\n\n\t// UTP - UnTouch Point\n\tUTP: 0x29,\n\n\t// MDAP - Move Direct Absolute Point\n\tMDAP_0: 0x2e,\n\tMDAP_1: 0x2f,\n\n\t// IUP - Interpolate Untouched Points\n\tIUP_Y: 0x30,\n\tIUP_X: 0x31,\n\n\t// Delta instructions\n\tDELTAP1: 0x5d,\n\tDELTAP2: 0x71,\n\tDELTAP3: 0x72,\n\tDELTAC1: 0x73,\n\tDELTAC2: 0x74,\n\tDELTAC3: 0x75,\n\n\t// Rounding\n\tROUND_0: 0x68,\n\tROUND_1: 0x69,\n\tROUND_2: 0x6a,\n\tROUND_3: 0x6b,\n\tNROUND_0: 0x6c,\n\tNROUND_1: 0x6d,\n\tNROUND_2: 0x6e,\n\tNROUND_3: 0x6f,\n\n\t// Other\n\tGETINFO: 0x88,\n\tINSTCTRL: 0x8e,\n\tSCANCTRL: 0x85,\n\tSCANTYPE: 0x8d,\n\tAA: 0x7f,\n\tDEBUG: 0x4f,\n\n\t// MDRP - Move Direct Relative Point (32 variants: 0xc0-0xdf)\n\tMDRP_BASE: 0xc0,\n\n\t// MIRP - Move Indirect Relative Point (32 variants: 0xe0-0xff)\n\tMIRP_BASE: 0xe0,\n} as const;\n\n/**\n * Number of values popped from stack for each opcode\n */\nexport const OpcodePops: Record<number, number> = {\n\t[Opcode.RS]: 1,\n\t[Opcode.WS]: 2,\n\t[Opcode.RCVT]: 1,\n\t[Opcode.WCVTP]: 2,\n\t[Opcode.WCVTF]: 2,\n\t[Opcode.DUP]: 1,\n\t[Opcode.POP]: 1,\n\t[Opcode.CLEAR]: 0,\n\t[Opcode.SWAP]: 2,\n\t[Opcode.DEPTH]: 0,\n\t[Opcode.CINDEX]: 1,\n\t[Opcode.MINDEX]: 1,\n\t[Opcode.ROLL]: 3,\n\t[Opcode.ADD]: 2,\n\t[Opcode.SUB]: 2,\n\t[Opcode.DIV]: 2,\n\t[Opcode.MUL]: 2,\n\t[Opcode.ABS]: 1,\n\t[Opcode.NEG]: 1,\n\t[Opcode.FLOOR]: 1,\n\t[Opcode.CEILING]: 1,\n\t[Opcode.MAX]: 2,\n\t[Opcode.MIN]: 2,\n\t[Opcode.LT]: 2,\n\t[Opcode.LTEQ]: 2,\n\t[Opcode.GT]: 2,\n\t[Opcode.GTEQ]: 2,\n\t[Opcode.EQ]: 2,\n\t[Opcode.NEQ]: 2,\n\t[Opcode.ODD]: 1,\n\t[Opcode.EVEN]: 1,\n\t[Opcode.AND]: 2,\n\t[Opcode.OR]: 2,\n\t[Opcode.NOT]: 1,\n\t[Opcode.IF]: 1,\n\t[Opcode.JMPR]: 1,\n\t[Opcode.JROT]: 2,\n\t[Opcode.JROF]: 2,\n\t[Opcode.CALL]: 1,\n\t[Opcode.LOOPCALL]: 2,\n\t[Opcode.SRP0]: 1,\n\t[Opcode.SRP1]: 1,\n\t[Opcode.SRP2]: 1,\n\t[Opcode.SZP0]: 1,\n\t[Opcode.SZP1]: 1,\n\t[Opcode.SZP2]: 1,\n\t[Opcode.SZPS]: 1,\n\t[Opcode.SLOOP]: 1,\n\t[Opcode.SMD]: 1,\n\t[Opcode.SCVTCI]: 1,\n\t[Opcode.SSWCI]: 1,\n\t[Opcode.SSW]: 1,\n\t[Opcode.SDB]: 1,\n\t[Opcode.SDS]: 1,\n\t[Opcode.SPVFS]: 2,\n\t[Opcode.SFVFS]: 2,\n\t[Opcode.SPVTL_0]: 2,\n\t[Opcode.SPVTL_1]: 2,\n\t[Opcode.SFVTL_0]: 2,\n\t[Opcode.SFVTL_1]: 2,\n\t[Opcode.SCFS]: 2,\n\t[Opcode.GC_0]: 1,\n\t[Opcode.GC_1]: 1,\n\t[Opcode.MD_0]: 2,\n\t[Opcode.MD_1]: 2,\n\t[Opcode.ISECT]: 5,\n\t[Opcode.ALIGNRP]: 0, // Uses loop\n\t[Opcode.IP]: 0, // Uses loop\n\t[Opcode.SHPIX]: 1, // Plus loop points\n\t[Opcode.MSIRP_0]: 2,\n\t[Opcode.MSIRP_1]: 2,\n\t[Opcode.MIAP_0]: 2,\n\t[Opcode.MIAP_1]: 2,\n\t[Opcode.MDAP_0]: 1,\n\t[Opcode.MDAP_1]: 1,\n\t[Opcode.DELTAP1]: 1,\n\t[Opcode.DELTAP2]: 1,\n\t[Opcode.DELTAP3]: 1,\n\t[Opcode.DELTAC1]: 1,\n\t[Opcode.DELTAC2]: 1,\n\t[Opcode.DELTAC3]: 1,\n\t[Opcode.SROUND]: 1,\n\t[Opcode.S45ROUND]: 1,\n\t[Opcode.ROUND_0]: 1,\n\t[Opcode.ROUND_1]: 1,\n\t[Opcode.ROUND_2]: 1,\n\t[Opcode.ROUND_3]: 1,\n\t[Opcode.NROUND_0]: 1,\n\t[Opcode.NROUND_1]: 1,\n\t[Opcode.NROUND_2]: 1,\n\t[Opcode.NROUND_3]: 1,\n\t[Opcode.INSTCTRL]: 2,\n\t[Opcode.SCANCTRL]: 1,\n\t[Opcode.SCANTYPE]: 1,\n\t[Opcode.GETINFO]: 1,\n\t[Opcode.FLIPPT]: 0, // Uses loop\n\t[Opcode.FLIPRGON]: 2,\n\t[Opcode.FLIPRGOFF]: 2,\n};\n",
@@ -83,13 +80,21 @@
83
80
  "import type { GlyphBuffer } from \"../buffer/glyph-buffer.ts\";\nimport type { Font } from \"../font/font.ts\";\nimport type { Contour, GlyphPoint } from \"../font/tables/glyf.ts\";\nimport type { GlyphId } from \"../types.ts\";\n\n/**\n * Path command types for glyph rendering\n */\nexport type PathCommand =\n\t| { type: \"M\"; x: number; y: number }\n\t| { type: \"L\"; x: number; y: number }\n\t| { type: \"Q\"; x1: number; y1: number; x: number; y: number }\n\t| {\n\t\t\ttype: \"C\";\n\t\t\tx1: number;\n\t\t\ty1: number;\n\t\t\tx2: number;\n\t\t\ty2: number;\n\t\t\tx: number;\n\t\t\ty: number;\n\t }\n\t| { type: \"Z\" };\n\n/**\n * Outline flags (like FreeType's FT_OUTLINE_* flags)\n */\nexport enum OutlineFlags {\n\t/** No flags */\n\tNone = 0,\n\t/** Use even-odd fill rule instead of non-zero winding */\n\tEvenOddFill = 1 << 0,\n\t/** Outline has been hinted */\n\tHighPrecision = 1 << 1,\n\t/** Outline is a single stroke (not filled) */\n\tSinglePass = 1 << 2,\n}\n\n/**\n * A glyph path is a series of drawing commands\n */\nexport interface GlyphPath {\n\tcommands: PathCommand[];\n\tbounds: { xMin: number; yMin: number; xMax: number; yMax: number } | null;\n\t/** Outline flags (like FreeType's FT_OUTLINE_* flags) */\n\tflags?: OutlineFlags;\n}\n\n/**\n * Convert contours to path commands\n * Handles both TrueType (quadratic Béziers) and CFF (cubic Béziers)\n */\nexport function contourToPath(contour: Contour): PathCommand[] {\n\tif (contour.length === 0) return [];\n\n\tconst _commands: PathCommand[] = [];\n\n\t// Check if this contour uses cubic beziers (CFF font)\n\tconst hasCubic = contour.some((p) => p.cubic);\n\n\tif (hasCubic) {\n\t\t// CFF-style contour with cubic beziers\n\t\treturn contourToPathCubic(contour);\n\t}\n\n\t// TrueType-style contour with quadratic beziers\n\treturn contourToPathQuadratic(contour);\n}\n\n/**\n * Convert CFF contour (cubic beziers) to path commands\n */\nfunction contourToPathCubic(contour: Contour): PathCommand[] {\n\tif (contour.length === 0) return [];\n\n\tconst commands: PathCommand[] = [];\n\tlet i = 0;\n\n\t// First point should be on-curve (moveto)\n\tconst first = contour[0];\n\tif (!first) return [];\n\n\tcommands.push({ type: \"M\", x: first.x, y: first.y });\n\ti = 1;\n\n\twhile (i < contour.length) {\n\t\tconst point = contour[i];\n\t\tif (!point) break;\n\n\t\tif (point.onCurve) {\n\t\t\t// Line to\n\t\t\tcommands.push({ type: \"L\", x: point.x, y: point.y });\n\t\t\ti++;\n\t\t} else if (point.cubic) {\n\t\t\t// Cubic bezier: expect cp1, cp2, endpoint\n\t\t\tconst cp1 = point;\n\t\t\tconst cp2 = contour[i + 1];\n\t\t\tconst end = contour[i + 2];\n\n\t\t\tif (!cp2 || !end) {\n\t\t\t\t// Malformed, skip\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcommands.push({\n\t\t\t\ttype: \"C\",\n\t\t\t\tx1: cp1.x,\n\t\t\t\ty1: cp1.y,\n\t\t\t\tx2: cp2.x,\n\t\t\t\ty2: cp2.y,\n\t\t\t\tx: end.x,\n\t\t\t\ty: end.y,\n\t\t\t});\n\t\t\ti += 3;\n\t\t} else {\n\t\t\t// Quadratic bezier (shouldn't happen in CFF but handle anyway)\n\t\t\tconst cp = point;\n\t\t\tconst next = contour[i + 1];\n\t\t\tif (!next) {\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet endPoint: GlyphPoint;\n\t\t\tif (next.onCurve) {\n\t\t\t\tendPoint = next;\n\t\t\t\ti += 2;\n\t\t\t} else {\n\t\t\t\tendPoint = {\n\t\t\t\t\tx: (cp.x + next.x) / 2,\n\t\t\t\t\ty: (cp.y + next.y) / 2,\n\t\t\t\t\tonCurve: true,\n\t\t\t\t};\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tcommands.push({\n\t\t\t\ttype: \"Q\",\n\t\t\t\tx1: cp.x,\n\t\t\t\ty1: cp.y,\n\t\t\t\tx: endPoint.x,\n\t\t\t\ty: endPoint.y,\n\t\t\t});\n\t\t}\n\t}\n\n\tcommands.push({ type: \"Z\" });\n\treturn commands;\n}\n\n/**\n * Convert TrueType contour (quadratic beziers) to path commands\n */\nfunction contourToPathQuadratic(contour: Contour): PathCommand[] {\n\tif (contour.length === 0) return [];\n\n\tconst commands: PathCommand[] = [];\n\n\t// Find the first on-curve point to start\n\tlet startIndex = 0;\n\tfor (const [i, point] of contour.entries()) {\n\t\tif (point.onCurve) {\n\t\t\tstartIndex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// If all points are off-curve, calculate implied on-curve point\n\tconst allOffCurve = contour.every((p) => !p.onCurve);\n\tlet startPoint: GlyphPoint;\n\n\tif (allOffCurve) {\n\t\t// Start at midpoint between first and last off-curve points\n\t\tconst first = contour[0];\n\t\tconst last = contour[contour.length - 1];\n\t\tif (!first || !last) return [];\n\t\tstartPoint = {\n\t\t\tx: (first.x + last.x) / 2,\n\t\t\ty: (first.y + last.y) / 2,\n\t\t\tonCurve: true,\n\t\t};\n\t\tstartIndex = 0;\n\t} else {\n\t\tconst point = contour[startIndex];\n\t\tif (!point) return [];\n\t\tstartPoint = point;\n\t}\n\n\tcommands.push({ type: \"M\", x: startPoint.x, y: startPoint.y });\n\n\tconst n = contour.length;\n\tlet i = allOffCurve ? 0 : (startIndex + 1) % n;\n\tlet current = startPoint;\n\tlet iterations = 0;\n\n\twhile (iterations < n) {\n\t\tconst point = contour[i];\n\t\tif (!point) break;\n\n\t\tif (point.onCurve) {\n\t\t\t// Line to on-curve point\n\t\t\tcommands.push({ type: \"L\", x: point.x, y: point.y });\n\t\t\tcurrent = point;\n\t\t} else {\n\t\t\t// Off-curve point - need to find the end point\n\t\t\tconst nextIndex = (i + 1) % n;\n\t\t\tconst nextPoint = contour[nextIndex];\n\t\t\tif (!nextPoint) break;\n\n\t\t\tlet endPoint: GlyphPoint;\n\t\t\tif (nextPoint.onCurve) {\n\t\t\t\t// Next point is on-curve, use it directly\n\t\t\t\tendPoint = nextPoint;\n\t\t\t\ti = nextIndex;\n\t\t\t\titerations++;\n\t\t\t} else {\n\t\t\t\t// Next point is also off-curve, calculate implied on-curve point\n\t\t\t\tendPoint = {\n\t\t\t\t\tx: (point.x + nextPoint.x) / 2,\n\t\t\t\t\ty: (point.y + nextPoint.y) / 2,\n\t\t\t\t\tonCurve: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Quadratic Bézier curve\n\t\t\tcommands.push({\n\t\t\t\ttype: \"Q\",\n\t\t\t\tx1: point.x,\n\t\t\t\ty1: point.y,\n\t\t\t\tx: endPoint.x,\n\t\t\t\ty: endPoint.y,\n\t\t\t});\n\t\t\tcurrent = endPoint;\n\t\t}\n\n\t\ti = (i + 1) % n;\n\t\titerations++;\n\n\t\t// Check if we've returned to start\n\t\tif (current.x === startPoint.x && current.y === startPoint.y) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Close the path\n\tcommands.push({ type: \"Z\" });\n\n\treturn commands;\n}\n\n/**\n * Get path commands for a glyph\n */\nexport function getGlyphPath(font: Font, glyphId: GlyphId): GlyphPath | null {\n\tconst contours = font.getGlyphContours(glyphId);\n\tif (!contours) return null;\n\n\tconst commands: PathCommand[] = [];\n\tfor (const contour of contours) {\n\t\tcommands.push(...contourToPath(contour));\n\t}\n\n\tconst bounds = font.getGlyphBounds(glyphId);\n\n\treturn { commands, bounds };\n}\n\n/**\n * Convert path commands to SVG path data string\n */\nexport function pathToSVG(\n\tpath: GlyphPath,\n\toptions?: { flipY?: boolean; scale?: number },\n): string {\n\tconst scale = options?.scale ?? 1;\n\tconst flipY = options?.flipY ?? true;\n\n\tconst parts: string[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tparts.push(\n\t\t\t\t\t`M ${cmd.x * scale} ${flipY ? -cmd.y * scale : cmd.y * scale}`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tparts.push(\n\t\t\t\t\t`L ${cmd.x * scale} ${flipY ? -cmd.y * scale : cmd.y * scale}`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tparts.push(\n\t\t\t\t\t`Q ${cmd.x1 * scale} ${flipY ? -cmd.y1 * scale : cmd.y1 * scale} ${cmd.x * scale} ${flipY ? -cmd.y * scale : cmd.y * scale}`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tparts.push(\n\t\t\t\t\t`C ${cmd.x1 * scale} ${flipY ? -cmd.y1 * scale : cmd.y1 * scale} ${cmd.x2 * scale} ${flipY ? -cmd.y2 * scale : cmd.y2 * scale} ${cmd.x * scale} ${flipY ? -cmd.y * scale : cmd.y * scale}`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tparts.push(\"Z\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parts.join(\" \");\n}\n\n/**\n * Render options for stroke/fill\n */\nexport interface RenderOptions {\n\tflipY?: boolean;\n\tscale?: number;\n\toffsetX?: number;\n\toffsetY?: number;\n\tfill?: string;\n\tstroke?: string;\n\tstrokeWidth?: number;\n\tlineCap?: CanvasLineCap;\n\tlineJoin?: CanvasLineJoin;\n\tmiterLimit?: number;\n}\n\n/**\n * Render path commands to a Canvas 2D context\n */\nexport function pathToCanvas(\n\tctx: CanvasRenderingContext2D | Path2D,\n\tpath: GlyphPath,\n\toptions?: {\n\t\tflipY?: boolean;\n\t\tscale?: number;\n\t\toffsetX?: number;\n\t\toffsetY?: number;\n\t},\n): void {\n\tconst scale = options?.scale ?? 1;\n\tconst flipY = options?.flipY ?? true;\n\tconst offsetX = options?.offsetX ?? 0;\n\tconst offsetY = options?.offsetY ?? 0;\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tctx.moveTo(\n\t\t\t\t\tcmd.x * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y : cmd.y) * scale + offsetY,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tctx.lineTo(\n\t\t\t\t\tcmd.x * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y : cmd.y) * scale + offsetY,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tctx.quadraticCurveTo(\n\t\t\t\t\tcmd.x1 * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y1 : cmd.y1) * scale + offsetY,\n\t\t\t\t\tcmd.x * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y : cmd.y) * scale + offsetY,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tctx.bezierCurveTo(\n\t\t\t\t\tcmd.x1 * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y1 : cmd.y1) * scale + offsetY,\n\t\t\t\t\tcmd.x2 * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y2 : cmd.y2) * scale + offsetY,\n\t\t\t\t\tcmd.x * scale + offsetX,\n\t\t\t\t\t(flipY ? -cmd.y : cmd.y) * scale + offsetY,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tctx.closePath();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Generate an SVG element for a glyph\n */\nexport function glyphToSVG(\n\tfont: Font,\n\tglyphId: GlyphId,\n\toptions?: {\n\t\tfontSize?: number;\n\t\tfill?: string;\n\t\tstroke?: string;\n\t\tstrokeWidth?: number;\n\t},\n): string | null {\n\tconst path = getGlyphPath(font, glyphId);\n\tif (!path) return null;\n\n\tconst fontSize = options?.fontSize ?? 100;\n\tconst fill = options?.fill ?? \"currentColor\";\n\tconst stroke = options?.stroke;\n\tconst strokeWidth = options?.strokeWidth ?? 1;\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tconst bounds = path.bounds;\n\tif (!bounds) return null;\n\n\t// Add stroke width to bounds for proper sizing\n\tconst strokePadding = stroke ? strokeWidth / 2 : 0;\n\tconst width = Math.ceil(\n\t\t(bounds.xMax - bounds.xMin) * scale + strokePadding * 2,\n\t);\n\tconst height = Math.ceil(\n\t\t(bounds.yMax - bounds.yMin) * scale + strokePadding * 2,\n\t);\n\tconst viewBox = `${bounds.xMin - strokePadding} ${-bounds.yMax - strokePadding} ${bounds.xMax - bounds.xMin + strokePadding * 2} ${bounds.yMax - bounds.yMin + strokePadding * 2}`;\n\n\tconst pathData = pathToSVG(path, { flipY: true, scale: 1 });\n\n\tconst strokeAttr = stroke\n\t\t? ` stroke=\"${stroke}\" stroke-width=\"${strokeWidth}\"`\n\t\t: \"\";\n\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"${viewBox}\">\n <path d=\"${pathData}\" fill=\"${fill}\"${strokeAttr}/>\n</svg>`;\n}\n\n/**\n * Render shaped text to Canvas\n */\nexport interface ShapedGlyph {\n\tglyphId: GlyphId;\n\txOffset: number;\n\tyOffset: number;\n\txAdvance: number;\n\tyAdvance: number;\n}\n\nexport function renderShapedText(\n\tctx: CanvasRenderingContext2D,\n\tfont: Font,\n\tglyphs: ShapedGlyph[],\n\toptions?: {\n\t\tfontSize?: number;\n\t\tx?: number;\n\t\ty?: number;\n\t\tfill?: string;\n\t\tstroke?: string;\n\t\tstrokeWidth?: number;\n\t\tlineCap?: CanvasLineCap;\n\t\tlineJoin?: CanvasLineJoin;\n\t},\n): void {\n\tconst fontSize = options?.fontSize ?? 16;\n\tconst startX = options?.x ?? 0;\n\tconst startY = options?.y ?? 0;\n\tconst fill = options?.fill ?? \"black\";\n\tconst stroke = options?.stroke;\n\tconst strokeWidth = options?.strokeWidth ?? 1;\n\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tctx.fillStyle = fill;\n\tif (stroke) {\n\t\tctx.strokeStyle = stroke;\n\t\tctx.lineWidth = strokeWidth * scale;\n\t\tif (options?.lineCap) ctx.lineCap = options.lineCap;\n\t\tif (options?.lineJoin) ctx.lineJoin = options.lineJoin;\n\t}\n\n\tlet x = startX;\n\tlet y = startY;\n\n\tfor (const glyph of glyphs) {\n\t\tconst path = getGlyphPath(font, glyph.glyphId);\n\t\tif (path) {\n\t\t\tctx.beginPath();\n\t\t\tpathToCanvas(ctx, path, {\n\t\t\t\tscale,\n\t\t\t\tflipY: true,\n\t\t\t\toffsetX: x + glyph.xOffset * scale,\n\t\t\t\toffsetY: y - glyph.yOffset * scale,\n\t\t\t});\n\t\t\tif (fill !== \"none\") ctx.fill();\n\t\t\tif (stroke) ctx.stroke();\n\t\t}\n\n\t\tx += glyph.xAdvance * scale;\n\t\ty += glyph.yAdvance * scale;\n\t}\n}\n\n/**\n * Generate SVG for shaped text\n */\nexport function shapedTextToSVG(\n\tfont: Font,\n\tglyphs: ShapedGlyph[],\n\toptions?: {\n\t\tfontSize?: number;\n\t\tfill?: string;\n\t\tstroke?: string;\n\t\tstrokeWidth?: number;\n\t\tlineCap?: \"butt\" | \"round\" | \"square\";\n\t\tlineJoin?: \"miter\" | \"round\" | \"bevel\";\n\t},\n): string {\n\tconst fontSize = options?.fontSize ?? 100;\n\tconst fill = options?.fill ?? \"currentColor\";\n\tconst stroke = options?.stroke;\n\tconst strokeWidth = options?.strokeWidth ?? 1;\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tconst paths: string[] = [];\n\tlet x = 0;\n\tlet y = 0;\n\tlet minX = Infinity;\n\tlet maxX = -Infinity;\n\tlet minY = Infinity;\n\tlet maxY = -Infinity;\n\n\tfor (const glyph of glyphs) {\n\t\tconst path = getGlyphPath(font, glyph.glyphId);\n\t\tif (path?.bounds) {\n\t\t\tconst offsetX = x + glyph.xOffset * scale;\n\t\t\tconst offsetY = y - glyph.yOffset * scale;\n\n\t\t\t// Transform commands with offset\n\t\t\tconst transformedCommands = path.commands.map((cmd): PathCommand => {\n\t\t\t\tswitch (cmd.type) {\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"Q\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\t\t\tx1: cmd.x1 * scale + offsetX,\n\t\t\t\t\t\t\ty1: -cmd.y1 * scale + offsetY,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"C\",\n\t\t\t\t\t\t\tx1: cmd.x1 * scale + offsetX,\n\t\t\t\t\t\t\ty1: -cmd.y1 * scale + offsetY,\n\t\t\t\t\t\t\tx2: cmd.x2 * scale + offsetX,\n\t\t\t\t\t\t\ty2: -cmd.y2 * scale + offsetY,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\treturn { type: \"Z\" };\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn cmd;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst pathStr = pathToSVG(\n\t\t\t\t{ commands: transformedCommands, bounds: null },\n\t\t\t\t{ flipY: false, scale: 1 },\n\t\t\t);\n\t\t\tpaths.push(pathStr);\n\n\t\t\t// Update bounds\n\t\t\tconst b = path.bounds;\n\t\t\tminX = Math.min(minX, offsetX + b.xMin * scale);\n\t\t\tmaxX = Math.max(maxX, offsetX + b.xMax * scale);\n\t\t\tminY = Math.min(minY, offsetY - b.yMax * scale);\n\t\t\tmaxY = Math.max(maxY, offsetY - b.yMin * scale);\n\t\t}\n\n\t\tx += glyph.xAdvance * scale;\n\t\ty += glyph.yAdvance * scale;\n\t}\n\n\tif (paths.length === 0) {\n\t\treturn '<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>';\n\t}\n\n\t// Add stroke padding to bounds\n\tconst strokePadding = stroke ? strokeWidth / 2 : 0;\n\tconst width = Math.ceil(maxX - minX + strokePadding * 2);\n\tconst height = Math.ceil(maxY - minY + strokePadding * 2);\n\tconst viewBox = `${Math.floor(minX - strokePadding)} ${Math.floor(minY - strokePadding)} ${width} ${height}`;\n\n\tconst strokeAttr = stroke\n\t\t? ` stroke=\"${stroke}\" stroke-width=\"${strokeWidth}\"${options?.lineCap ? ` stroke-linecap=\"${options.lineCap}\"` : \"\"}${options?.lineJoin ? ` stroke-linejoin=\"${options.lineJoin}\"` : \"\"}`\n\t\t: \"\";\n\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"${viewBox}\">\n <path d=\"${paths.join(\" \")}\" fill=\"${fill}\"${strokeAttr}/>\n</svg>`;\n}\n\n/**\n * Convert GlyphBuffer output to ShapedGlyph array\n */\nexport function glyphBufferToShapedGlyphs(buffer: GlyphBuffer): ShapedGlyph[] {\n\tconst result: ShapedGlyph[] = [];\n\tfor (const [i, info] of buffer.infos.entries()) {\n\t\tconst pos = buffer.positions[i];\n\t\tif (!pos) continue;\n\t\tresult.push({\n\t\t\tglyphId: info.glyphId,\n\t\t\txOffset: pos.xOffset,\n\t\t\tyOffset: pos.yOffset,\n\t\t\txAdvance: pos.xAdvance,\n\t\t\tyAdvance: pos.yAdvance,\n\t\t});\n\t}\n\treturn result;\n}\n\n/**\n * Get glyph path with variable font variation applied\n */\nexport function getGlyphPathWithVariation(\n\tfont: Font,\n\tglyphId: GlyphId,\n\taxisCoords: number[],\n): GlyphPath | null {\n\tconst contours = font.getGlyphContoursWithVariation(glyphId, axisCoords);\n\tif (!contours) return null;\n\n\tconst commands: PathCommand[] = [];\n\tfor (const contour of contours) {\n\t\tcommands.push(...contourToPath(contour));\n\t}\n\n\tconst bounds = font.getGlyphBounds(glyphId);\n\n\treturn { commands, bounds };\n}\n\n/**\n * Render shaped text with variable font support\n */\nexport function renderShapedTextWithVariation(\n\tctx: CanvasRenderingContext2D,\n\tfont: Font,\n\tglyphs: ShapedGlyph[],\n\taxisCoords: number[],\n\toptions?: {\n\t\tfontSize?: number;\n\t\tx?: number;\n\t\ty?: number;\n\t\tfill?: string;\n\t\tstroke?: string;\n\t\tstrokeWidth?: number;\n\t\tlineCap?: CanvasLineCap;\n\t\tlineJoin?: CanvasLineJoin;\n\t},\n): void {\n\tconst fontSize = options?.fontSize ?? 16;\n\tconst startX = options?.x ?? 0;\n\tconst startY = options?.y ?? 0;\n\tconst fill = options?.fill ?? \"black\";\n\tconst stroke = options?.stroke;\n\tconst strokeWidth = options?.strokeWidth ?? 1;\n\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tctx.fillStyle = fill;\n\tif (stroke) {\n\t\tctx.strokeStyle = stroke;\n\t\tctx.lineWidth = strokeWidth * scale;\n\t\tif (options?.lineCap) ctx.lineCap = options.lineCap;\n\t\tif (options?.lineJoin) ctx.lineJoin = options.lineJoin;\n\t}\n\n\tlet x = startX;\n\tlet y = startY;\n\n\tfor (const glyph of glyphs) {\n\t\tconst path = getGlyphPathWithVariation(font, glyph.glyphId, axisCoords);\n\t\tif (path) {\n\t\t\tctx.beginPath();\n\t\t\tpathToCanvas(ctx, path, {\n\t\t\t\tscale,\n\t\t\t\tflipY: true,\n\t\t\t\toffsetX: x + glyph.xOffset * scale,\n\t\t\t\toffsetY: y - glyph.yOffset * scale,\n\t\t\t});\n\t\t\tif (fill !== \"none\") ctx.fill();\n\t\t\tif (stroke) ctx.stroke();\n\t\t}\n\n\t\tx += glyph.xAdvance * scale;\n\t\ty += glyph.yAdvance * scale;\n\t}\n}\n\n/**\n * Generate SVG for shaped text with variable font support\n */\nexport function shapedTextToSVGWithVariation(\n\tfont: Font,\n\tglyphs: ShapedGlyph[],\n\taxisCoords: number[],\n\toptions?: {\n\t\tfontSize?: number;\n\t\tfill?: string;\n\t\tstroke?: string;\n\t\tstrokeWidth?: number;\n\t\tlineCap?: \"butt\" | \"round\" | \"square\";\n\t\tlineJoin?: \"miter\" | \"round\" | \"bevel\";\n\t},\n): string {\n\tconst fontSize = options?.fontSize ?? 100;\n\tconst fill = options?.fill ?? \"currentColor\";\n\tconst stroke = options?.stroke;\n\tconst strokeWidth = options?.strokeWidth ?? 1;\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tconst paths: string[] = [];\n\tlet x = 0;\n\tlet y = 0;\n\tlet minX = Infinity;\n\tlet maxX = -Infinity;\n\tlet minY = Infinity;\n\tlet maxY = -Infinity;\n\n\tfor (const glyph of glyphs) {\n\t\tconst path = getGlyphPathWithVariation(font, glyph.glyphId, axisCoords);\n\t\tif (path?.bounds) {\n\t\t\tconst offsetX = x + glyph.xOffset * scale;\n\t\t\tconst offsetY = y - glyph.yOffset * scale;\n\n\t\t\tconst transformedCommands = path.commands.map((cmd): PathCommand => {\n\t\t\t\tswitch (cmd.type) {\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"Q\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\t\t\tx1: cmd.x1 * scale + offsetX,\n\t\t\t\t\t\t\ty1: -cmd.y1 * scale + offsetY,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"C\",\n\t\t\t\t\t\t\tx1: cmd.x1 * scale + offsetX,\n\t\t\t\t\t\t\ty1: -cmd.y1 * scale + offsetY,\n\t\t\t\t\t\t\tx2: cmd.x2 * scale + offsetX,\n\t\t\t\t\t\t\ty2: -cmd.y2 * scale + offsetY,\n\t\t\t\t\t\t\tx: cmd.x * scale + offsetX,\n\t\t\t\t\t\t\ty: -cmd.y * scale + offsetY,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\treturn { type: \"Z\" };\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn cmd;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst pathStr = pathToSVG(\n\t\t\t\t{ commands: transformedCommands, bounds: null },\n\t\t\t\t{ flipY: false, scale: 1 },\n\t\t\t);\n\t\t\tpaths.push(pathStr);\n\n\t\t\tconst b = path.bounds;\n\t\t\tminX = Math.min(minX, offsetX + b.xMin * scale);\n\t\t\tmaxX = Math.max(maxX, offsetX + b.xMax * scale);\n\t\t\tminY = Math.min(minY, offsetY - b.yMax * scale);\n\t\t\tmaxY = Math.max(maxY, offsetY - b.yMin * scale);\n\t\t}\n\n\t\tx += glyph.xAdvance * scale;\n\t\ty += glyph.yAdvance * scale;\n\t}\n\n\tif (paths.length === 0) {\n\t\treturn '<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>';\n\t}\n\n\t// Add stroke padding to bounds\n\tconst strokePadding = stroke ? strokeWidth / 2 : 0;\n\tconst width = Math.ceil(maxX - minX + strokePadding * 2);\n\tconst height = Math.ceil(maxY - minY + strokePadding * 2);\n\tconst viewBox = `${Math.floor(minX - strokePadding)} ${Math.floor(minY - strokePadding)} ${width} ${height}`;\n\n\tconst strokeAttr = stroke\n\t\t? ` stroke=\"${stroke}\" stroke-width=\"${strokeWidth}\"${options?.lineCap ? ` stroke-linecap=\"${options.lineCap}\"` : \"\"}${options?.lineJoin ? ` stroke-linejoin=\"${options.lineJoin}\"` : \"\"}`\n\t\t: \"\";\n\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"${viewBox}\">\n <path d=\"${paths.join(\" \")}\" fill=\"${fill}\"${strokeAttr}/>\n</svg>`;\n}\n\n/**\n * Calculate the total advance width of shaped text\n */\nexport function getTextWidth(\n\tglyphs: ShapedGlyph[],\n\tfont: Font,\n\tfontSize: number,\n): number {\n\tconst scale = fontSize / font.unitsPerEm;\n\tlet width = 0;\n\tfor (const glyph of glyphs) {\n\t\twidth += glyph.xAdvance;\n\t}\n\treturn width * scale;\n}\n\n/**\n * Create a Path2D object from glyph path\n */\nexport function createPath2D(\n\tpath: GlyphPath,\n\toptions?: {\n\t\tflipY?: boolean;\n\t\tscale?: number;\n\t\toffsetX?: number;\n\t\toffsetY?: number;\n\t},\n): Path2D {\n\tconst p = new Path2D();\n\tpathToCanvas(p, path, options);\n\treturn p;\n}\n",
84
81
  "/**\n * Fixed-point arithmetic utilities for rasterization\n *\n * FreeType uses several fixed-point formats:\n * - F26Dot6: 26.6 format (64 units per pixel) for coordinates\n * - F16Dot16: 16.16 format for high-precision calculations\n * - F2Dot14: 2.14 format for normalized vectors\n */\n\n// Bit shifts for fixed-point formats\nexport const PIXEL_BITS = 8; // Subpixel precision (256 levels per pixel)\nexport const ONE_PIXEL = 1 << PIXEL_BITS; // 256\nexport const PIXEL_MASK = ONE_PIXEL - 1; // 0xFF\n\n// 26.6 fixed-point (FreeType's standard format)\nexport const F26DOT6_SHIFT = 6;\nexport const F26DOT6_ONE = 1 << F26DOT6_SHIFT; // 64\n\n// 16.16 fixed-point\nexport const F16DOT16_SHIFT = 16;\nexport const F16DOT16_ONE = 1 << F16DOT16_SHIFT; // 65536\n\n/**\n * Convert float to 26.6 fixed-point\n */\nexport function floatToF26Dot6(x: number): number {\n\treturn Math.round(x * F26DOT6_ONE);\n}\n\n/**\n * Convert 26.6 fixed-point to float\n */\nexport function f26Dot6ToFloat(x: number): number {\n\treturn x / F26DOT6_ONE;\n}\n\n/**\n * Convert float to internal raster coordinates (PIXEL_BITS precision)\n * Input is in font units, output has 256 subpixel levels per pixel\n */\nexport function floatToPixel(x: number, scale: number): number {\n\treturn Math.round(x * scale * ONE_PIXEL);\n}\n\n/**\n * Truncate to pixel (floor for positive, ceil for negative)\n */\nexport function truncPixel(x: number): number {\n\treturn x >> PIXEL_BITS;\n}\n\n/**\n * Get fractional part (0 to ONE_PIXEL-1)\n */\nexport function fracPixel(x: number): number {\n\treturn x & PIXEL_MASK;\n}\n\n/**\n * Round to nearest pixel\n */\nexport function roundPixel(x: number): number {\n\treturn (x + (ONE_PIXEL >> 1)) >> PIXEL_BITS;\n}\n\n/**\n * Floor to pixel boundary\n */\nexport function floorPixel(x: number): number {\n\treturn x & ~PIXEL_MASK;\n}\n\n/**\n * Ceiling to pixel boundary\n */\nexport function ceilPixel(x: number): number {\n\treturn (x + PIXEL_MASK) & ~PIXEL_MASK;\n}\n\n/**\n * Upscale from 26.6 to internal PIXEL_BITS format\n * PIXEL_BITS=8 means 2 extra bits of precision vs 26.6\n */\nexport function upscale(x: number): number {\n\treturn x << (PIXEL_BITS - F26DOT6_SHIFT);\n}\n\n/**\n * Downscale from internal format to 26.6\n */\nexport function downscale(x: number): number {\n\treturn x >> (PIXEL_BITS - F26DOT6_SHIFT);\n}\n\n/**\n * Multiply two fixed-point numbers and divide, avoiding overflow\n * Computes (a * b) / c with 64-bit intermediate precision\n */\nexport function mulDiv(a: number, b: number, c: number): number {\n\tif (c === 0) return 0;\n\t// Use BigInt for 64-bit precision\n\tconst result = (BigInt(a) * BigInt(b)) / BigInt(c);\n\treturn Number(result);\n}\n\n/**\n * Multiply two 16.16 fixed-point numbers\n */\nexport function mulFix(a: number, b: number): number {\n\treturn mulDiv(a, b, F16DOT16_ONE);\n}\n\n/**\n * Divide two numbers and return 16.16 fixed-point result\n */\nexport function divFix(a: number, b: number): number {\n\tif (b === 0) return 0;\n\treturn mulDiv(a, F16DOT16_ONE, b);\n}\n\n/**\n * Fast approximation of sqrt(x*x + y*y) using \"alpha max plus beta min\" algorithm.\n * Uses alpha = 1, beta = 3/8 for max error < 7% vs exact value.\n * From FreeType's FT_HYPOT macro.\n */\nexport function hypot(x: number, y: number): number {\n\tx = abs(x);\n\ty = abs(y);\n\treturn x > y ? x + ((3 * y) >> 3) : y + ((3 * x) >> 3);\n}\n\n/**\n * Calculate the length of a 2D vector (integer math)\n * Uses FreeType's \"alpha max plus beta min\" approximation\n */\nexport function vectorLength(dx: number, dy: number): number {\n\treturn hypot(dx, dy);\n}\n\n/**\n * Normalize a 2D vector to unit length (16.16 fixed-point output)\n */\nexport function normalizeVector(\n\tdx: number,\n\tdy: number,\n): { x: number; y: number } {\n\tconst len = Math.sqrt(dx * dx + dy * dy);\n\tif (len === 0) return { x: F16DOT16_ONE, y: 0 };\n\treturn {\n\t\tx: Math.round((dx / len) * F16DOT16_ONE),\n\t\ty: Math.round((dy / len) * F16DOT16_ONE),\n\t};\n}\n\n/**\n * Clamp value to range\n */\nexport function clamp(x: number, min: number, max: number): number {\n\treturn x < min ? min : x > max ? max : x;\n}\n\n/**\n * Absolute value\n */\nexport function abs(x: number): number {\n\treturn x < 0 ? -x : x;\n}\n\n/**\n * Sign of value (-1, 0, or 1)\n */\nexport function sign(x: number): number {\n\treturn x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n",
85
82
  "/**\n * Cell management for scanline rasterization\n *\n * Based on FreeType's ftgrays.c cell accumulation approach.\n * Each cell tracks coverage and area for anti-aliased rendering.\n *\n * Uses pool-based allocation with overflow detection for bounded memory.\n */\n\nimport { PIXEL_BITS, truncPixel } from \"./fixed-point.ts\";\n\n/** Default pool size (matches FreeType's FT_MAX_GRAY_POOL) */\nconst DEFAULT_POOL_SIZE = 2048;\n\n/** Sentinel X value for null cell */\nconst CELL_MAX_X = 0x7fffffff;\n\n/**\n * Pool overflow error - thrown when cell pool is exhausted\n */\nexport class PoolOverflowError extends Error {\n\tconstructor() {\n\t\tsuper(\"Cell pool overflow\");\n\t\tthis.name = \"PoolOverflowError\";\n\t}\n}\n\n/**\n * A cell accumulates coverage information for one pixel\n */\nexport interface Cell {\n\t/** X coordinate in pixels */\n\tx: number;\n\t/** Accumulated signed area */\n\tarea: number;\n\t/** Accumulated coverage (winding number contribution) */\n\tcover: number;\n\t/** Next cell in linked list (index into pool, -1 for end) */\n\tnext: number;\n}\n\n/**\n * Cell storage with pool-based allocation and linked lists per scanline.\n * Matches FreeType's approach for bounded memory usage.\n */\nexport class CellBuffer {\n\t/** Fixed-size cell pool */\n\tprivate pool: Cell[];\n\t/** Pool size */\n\tprivate poolSize: number;\n\t/** Next free cell index */\n\tprivate freeIndex: number;\n\t/** Per-scanline linked list heads (index into pool, -1 for empty) */\n\tprivate ycells: number[];\n\n\t/** Band bounds (Y range for current render pass) */\n\tprivate bandMinY: number = 0;\n\tprivate bandMaxY: number = 0;\n\n\t/** Bounding box of active cells */\n\tminY: number = Infinity;\n\tmaxY: number = -Infinity;\n\tminX: number = Infinity;\n\tmaxX: number = -Infinity;\n\n\t/** Current position for incremental cell updates */\n\tprivate currentX: number = 0;\n\tprivate currentY: number = 0;\n\tprivate currentCellIndex: number = -1;\n\n\t/** Clip bounds in pixels */\n\tprivate clipMinX: number = -Infinity;\n\tprivate clipMinY: number = -Infinity;\n\tprivate clipMaxX: number = Infinity;\n\tprivate clipMaxY: number = Infinity;\n\n\t/** Null cell index (sentinel at end of pool) */\n\tprivate nullCellIndex: number;\n\n\t/** Whether band bounds have been set */\n\tprivate bandSet: boolean = false;\n\n\tconstructor(poolSize: number = DEFAULT_POOL_SIZE) {\n\t\tthis.poolSize = poolSize;\n\t\tthis.nullCellIndex = poolSize - 1;\n\n\t\t// Pre-allocate pool\n\t\tthis.pool = new Array(poolSize);\n\t\tfor (let i = 0; i < poolSize; i++) {\n\t\t\tthis.pool[i] = { x: 0, area: 0, cover: 0, next: -1 };\n\t\t}\n\n\t\t// Initialize null cell (sentinel)\n\t\tthis.pool[this.nullCellIndex].x = CELL_MAX_X;\n\t\tthis.pool[this.nullCellIndex].next = -1;\n\n\t\tthis.ycells = [];\n\t\tthis.freeIndex = 0;\n\n\t\t// Default band bounds (large range for backward compatibility)\n\t\tthis.bandMinY = -10000;\n\t\tthis.bandMaxY = 10000;\n\t}\n\n\t/**\n\t * Set clipping bounds\n\t */\n\tsetClip(minX: number, minY: number, maxX: number, maxY: number): void {\n\t\tthis.clipMinX = minX;\n\t\tthis.clipMinY = minY;\n\t\tthis.clipMaxX = maxX;\n\t\tthis.clipMaxY = maxY;\n\t}\n\n\t/**\n\t * Set band bounds for current render pass\n\t */\n\tsetBandBounds(minY: number, maxY: number): void {\n\t\tthis.bandMinY = minY;\n\t\tthis.bandMaxY = maxY;\n\t\tthis.bandSet = true;\n\n\t\t// Resize ycells array for band height\n\t\tconst height = maxY - minY;\n\t\tif (this.ycells.length < height) {\n\t\t\tthis.ycells = new Array(height);\n\t\t}\n\n\t\t// Initialize all rows to null cell\n\t\tfor (let i = 0; i < height; i++) {\n\t\t\tthis.ycells[i] = this.nullCellIndex;\n\t\t}\n\n\t\t// Calculate how many cells we need for ycells pointers\n\t\t// Reserve space at start of pool for ycells (like FreeType)\n\t\tthis.freeIndex = 0;\n\t}\n\n\t/**\n\t * Clear all cells for new band\n\t */\n\treset(): void {\n\t\t// Reset pool\n\t\tthis.freeIndex = 0;\n\n\t\t// Reset null cell\n\t\tthis.pool[this.nullCellIndex].x = CELL_MAX_X;\n\t\tthis.pool[this.nullCellIndex].area = 0;\n\t\tthis.pool[this.nullCellIndex].cover = 0;\n\t\tthis.pool[this.nullCellIndex].next = -1;\n\n\t\t// Reset ycells to null (only if band was set; otherwise leave for dynamic expansion)\n\t\tif (this.bandSet) {\n\t\t\tfor (let i = 0; i < this.ycells.length; i++) {\n\t\t\t\tthis.ycells[i] = this.nullCellIndex;\n\t\t\t}\n\t\t} else {\n\t\t\t// Clear ycells for dynamic mode - will be initialized on first use\n\t\t\tthis.ycells = [];\n\t\t\t// Use very large bounds to avoid clipping before ensureYCellsCapacity is called\n\t\t\tthis.bandMinY = -100000;\n\t\t\tthis.bandMaxY = 100000;\n\t\t}\n\n\t\tthis.minY = Infinity;\n\t\tthis.maxY = -Infinity;\n\t\tthis.minX = Infinity;\n\t\tthis.maxX = -Infinity;\n\t\tthis.currentCellIndex = -1;\n\t}\n\n\t/**\n\t * Set current position (in subpixel coordinates)\n\t * @throws PoolOverflowError if pool is exhausted\n\t */\n\tsetCurrentCell(x: number, y: number): void {\n\t\tconst px = truncPixel(x);\n\t\tconst py = truncPixel(y);\n\n\t\t// Check if we're already at this cell\n\t\tif (\n\t\t\tthis.currentCellIndex >= 0 &&\n\t\t\tthis.currentX === px &&\n\t\t\tthis.currentY === py\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check clipping (use both band bounds and clip bounds for Y)\n\t\tif (\n\t\t\tpy < this.bandMinY ||\n\t\t\tpy >= this.bandMaxY ||\n\t\t\tpy < this.clipMinY ||\n\t\t\tpy >= this.clipMaxY ||\n\t\t\tpx < this.clipMinX ||\n\t\t\tpx >= this.clipMaxX\n\t\t) {\n\t\t\tthis.currentCellIndex = this.nullCellIndex;\n\t\t\tthis.currentX = px;\n\t\t\tthis.currentY = py;\n\t\t\treturn;\n\t\t}\n\n\t\t// Get or create cell for this position\n\t\tthis.currentX = px;\n\t\tthis.currentY = py;\n\t\tthis.currentCellIndex = this.findOrCreateCell(px, py);\n\n\t\t// Update bounds\n\t\tthis.minY = Math.min(this.minY, py);\n\t\tthis.maxY = Math.max(this.maxY, py);\n\t\tthis.minX = Math.min(this.minX, px);\n\t\tthis.maxX = Math.max(this.maxX, px);\n\t}\n\n\t/**\n\t * Find or create a cell at the given pixel position\n\t * @throws PoolOverflowError if pool is exhausted\n\t */\n\tprivate findOrCreateCell(x: number, y: number): number {\n\t\t// Auto-expand band if needed (for backward compatibility when setBandBounds not called)\n\t\tif (!this.bandSet) {\n\t\t\tthis.ensureYCellsCapacity(y);\n\t\t}\n\n\t\tconst rowIndex = y - this.bandMinY;\n\t\tif (rowIndex < 0 || rowIndex >= this.ycells.length) {\n\t\t\treturn this.nullCellIndex;\n\t\t}\n\n\t\t// Walk linked list for this row\n\t\tlet prevIndex = -1;\n\t\tlet cellIndex = this.ycells[rowIndex];\n\n\t\twhile (cellIndex !== this.nullCellIndex) {\n\t\t\tconst cell = this.pool[cellIndex];\n\t\t\tif (cell.x === x) {\n\t\t\t\treturn cellIndex; // Found existing cell\n\t\t\t}\n\t\t\tif (cell.x > x) {\n\t\t\t\tbreak; // Insert before this cell\n\t\t\t}\n\t\t\tprevIndex = cellIndex;\n\t\t\tcellIndex = cell.next;\n\t\t}\n\n\t\t// Need to allocate new cell\n\t\tif (this.freeIndex >= this.nullCellIndex) {\n\t\t\tthrow new PoolOverflowError();\n\t\t}\n\n\t\tconst newIndex = this.freeIndex++;\n\t\tconst newCell = this.pool[newIndex];\n\t\tnewCell.x = x;\n\t\tnewCell.area = 0;\n\t\tnewCell.cover = 0;\n\t\tnewCell.next = cellIndex;\n\n\t\t// Link into list\n\t\tif (prevIndex === -1) {\n\t\t\tthis.ycells[rowIndex] = newIndex;\n\t\t} else {\n\t\t\tthis.pool[prevIndex].next = newIndex;\n\t\t}\n\n\t\treturn newIndex;\n\t}\n\n\t/**\n\t * Ensure ycells array can accommodate the given Y coordinate\n\t * Used for backward compatibility when setBandBounds is not called\n\t */\n\tprivate ensureYCellsCapacity(y: number): void {\n\t\t// Initialize band if first access\n\t\tif (this.ycells.length === 0) {\n\t\t\t// Start with a reasonable range centered around y\n\t\t\tthis.bandMinY = Math.min(y, 0);\n\t\t\tthis.bandMaxY = Math.max(y + 1, 256);\n\t\t\tconst height = this.bandMaxY - this.bandMinY;\n\t\t\tthis.ycells = new Array(height);\n\t\t\tfor (let i = 0; i < height; i++) {\n\t\t\t\tthis.ycells[i] = this.nullCellIndex;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Expand if needed\n\t\tif (y < this.bandMinY) {\n\t\t\tconst expand = this.bandMinY - y;\n\t\t\tconst newYcells = new Array(this.ycells.length + expand);\n\t\t\tfor (let i = 0; i < expand; i++) {\n\t\t\t\tnewYcells[i] = this.nullCellIndex;\n\t\t\t}\n\t\t\tfor (let i = 0; i < this.ycells.length; i++) {\n\t\t\t\tnewYcells[expand + i] = this.ycells[i];\n\t\t\t}\n\t\t\tthis.ycells = newYcells;\n\t\t\tthis.bandMinY = y;\n\t\t} else if (y >= this.bandMaxY) {\n\t\t\tconst newMaxY = y + 1;\n\t\t\tconst oldLen = this.ycells.length;\n\t\t\tconst newLen = newMaxY - this.bandMinY;\n\t\t\tif (newLen > oldLen) {\n\t\t\t\tconst newYcells = new Array(newLen);\n\t\t\t\tfor (let i = 0; i < oldLen; i++) {\n\t\t\t\t\tnewYcells[i] = this.ycells[i];\n\t\t\t\t}\n\t\t\t\tfor (let i = oldLen; i < newLen; i++) {\n\t\t\t\t\tnewYcells[i] = this.nullCellIndex;\n\t\t\t\t}\n\t\t\t\tthis.ycells = newYcells;\n\t\t\t}\n\t\t\tthis.bandMaxY = newMaxY;\n\t\t}\n\t}\n\n\t/**\n\t * Add area and cover to current cell\n\t */\n\taddArea(area: number, cover: number): void {\n\t\tif (this.currentCellIndex >= 0) {\n\t\t\tconst cell = this.pool[this.currentCellIndex];\n\t\t\tcell.area += area;\n\t\t\tcell.cover += cover;\n\t\t}\n\t}\n\n\t/**\n\t * Get current cell area (for accumulation)\n\t */\n\tgetArea(): number {\n\t\tif (this.currentCellIndex >= 0) {\n\t\t\treturn this.pool[this.currentCellIndex]?.area;\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Get current cell cover\n\t */\n\tgetCover(): number {\n\t\tif (this.currentCellIndex >= 0) {\n\t\t\treturn this.pool[this.currentCellIndex]?.cover;\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Get all cells for a given Y coordinate, sorted by X\n\t */\n\tgetCellsForRow(y: number): Cell[] {\n\t\tconst rowIndex = y - this.bandMinY;\n\t\tif (rowIndex < 0 || rowIndex >= this.ycells.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst cells: Cell[] = [];\n\t\tlet cellIndex = this.ycells[rowIndex];\n\t\twhile (cellIndex !== this.nullCellIndex) {\n\t\t\tcells.push(this.pool[cellIndex]);\n\t\t\tcellIndex = this.pool[cellIndex]?.next;\n\t\t}\n\t\treturn cells;\n\t}\n\n\t/**\n\t * Iterate over all cells in scanline order within band\n\t */\n\t*iterateCells(): Generator<{ y: number; cells: Cell[] }> {\n\t\tfor (let i = 0; i < this.ycells.length; i++) {\n\t\t\tconst y = this.bandMinY + i;\n\t\t\tlet cellIndex = this.ycells[i];\n\t\t\tif (cellIndex === this.nullCellIndex) continue;\n\n\t\t\tconst cells: Cell[] = [];\n\t\t\twhile (cellIndex !== this.nullCellIndex) {\n\t\t\t\tcells.push(this.pool[cellIndex]);\n\t\t\t\tcellIndex = this.pool[cellIndex]?.next;\n\t\t\t}\n\t\t\tif (cells.length > 0) {\n\t\t\t\tyield { y, cells };\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterate cells for a single row (for band sweep)\n\t */\n\t*iterateRowCells(y: number): Generator<Cell> {\n\t\tconst rowIndex = y - this.bandMinY;\n\t\tif (rowIndex < 0 || rowIndex >= this.ycells.length) return;\n\n\t\tlet cellIndex = this.ycells[rowIndex];\n\t\twhile (cellIndex !== this.nullCellIndex) {\n\t\t\tyield this.pool[cellIndex];\n\t\t\tcellIndex = this.pool[cellIndex]?.next;\n\t\t}\n\t}\n\n\t/**\n\t * Get number of cells currently allocated\n\t */\n\tgetCellCount(): number {\n\t\treturn this.freeIndex;\n\t}\n\n\t/**\n\t * Check if pool is near capacity\n\t */\n\tisNearCapacity(): boolean {\n\t\treturn this.freeIndex > this.poolSize * 0.9;\n\t}\n}\n\n/**\n * Convert cell coverage to 8-bit grayscale value\n *\n * The area is accumulated in 2*PIXEL_BITS precision.\n * We need to shift down to get 0-255 coverage.\n */\nexport function coverageToGray(area: number): number {\n\t// Area is in ONE_PIXEL * ONE_PIXEL precision\n\t// Shift down to 0-255 range\n\tlet coverage = area >> (PIXEL_BITS * 2 - 8);\n\n\t// Clamp to 0-255\n\tif (coverage < 0) coverage = -coverage;\n\tif (coverage > 255) coverage = 255;\n\n\treturn coverage;\n}\n\n/**\n * Apply non-zero winding fill rule\n */\nexport function applyNonZeroRule(cover: number): number {\n\tlet c = cover;\n\tif (c < 0) c = -c;\n\tif (c > 255) c = 255;\n\treturn c;\n}\n\n/**\n * Apply even-odd fill rule\n */\nexport function applyEvenOddRule(cover: number): number {\n\tlet c = cover;\n\tif (c < 0) c = -c;\n\tc &= 511; // Mod 512\n\tif (c > 256) c = 512 - c;\n\tif (c > 255) c = 255;\n\treturn c;\n}\n",
83
+ "/**\n * Rasterizer types - FreeType-style bitmap rendering\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\n\n/**\n * Pixel modes for bitmap output\n */\nexport enum PixelMode {\n\t/** 1-bit per pixel, 8 pixels per byte */\n\tMono = 0,\n\t/** 8-bit grayscale, 1 byte per pixel */\n\tGray = 1,\n\t/** 24-bit LCD subpixel RGB, 3 bytes per pixel */\n\tLCD = 2,\n\t/** 24-bit LCD subpixel vertical RGB */\n\tLCD_V = 3,\n\t/** 32-bit RGBA, 4 bytes per pixel */\n\tRGBA = 4,\n}\n\n/**\n * Fill rule for outline rendering\n */\nexport enum FillRule {\n\t/** Non-zero winding rule (default) */\n\tNonZero = 0,\n\t/** Even-odd (alternating) fill rule */\n\tEvenOdd = 1,\n}\n\n/**\n * Bitmap buffer for rasterized glyphs\n */\nexport interface Bitmap {\n\t/** Pixel buffer */\n\tbuffer: Uint8Array;\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\trows: number;\n\t/** Bytes per row (may include padding) */\n\tpitch: number;\n\t/** Pixel format */\n\tpixelMode: PixelMode;\n\t/** Number of gray levels (256 for 8-bit) */\n\tnumGrays: number;\n}\n\n/**\n * A single horizontal span of pixels (for direct rendering)\n */\nexport interface Span {\n\t/** X position of span start */\n\tx: number;\n\t/** Length in pixels */\n\tlen: number;\n\t/** Coverage value 0-255 */\n\tcoverage: number;\n}\n\n/**\n * Callback for span-based rendering\n * @template T User data type passed through from render call\n */\nexport type SpanFunc<T = void> = (\n\ty: number,\n\tspans: Span[],\n\tuserData: T,\n) => void;\n\n/**\n * Rasterization parameters\n */\nexport interface RasterParams {\n\t/** Target bitmap (null for span callback mode) */\n\ttarget?: Bitmap;\n\t/** Source outline path */\n\tsource: GlyphPath;\n\t/** Fill rule */\n\tfillRule?: FillRule;\n\t/** Span callback for direct rendering */\n\tspanFunc?: SpanFunc;\n\t/** Clip box (in pixels) */\n\tclipBox?: {\n\t\txMin: number;\n\t\tyMin: number;\n\t\txMax: number;\n\t\tyMax: number;\n\t};\n}\n\n/**\n * Options for rasterizing a glyph\n */\nexport interface RasterizeOptions {\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\theight: number;\n\t/** Scale factor (font units to pixels) */\n\tscale: number;\n\t/** X offset in pixels */\n\toffsetX?: number;\n\t/** Y offset in pixels */\n\toffsetY?: number;\n\t/** Pixel mode */\n\tpixelMode?: PixelMode;\n\t/** Fill rule */\n\tfillRule?: FillRule;\n\t/** Flip Y axis (font coords are Y-up, bitmap is Y-down) */\n\tflipY?: boolean;\n}\n\n/**\n * Result of glyph rasterization\n */\nexport interface RasterizedGlyph {\n\t/** Pixel data */\n\tbitmap: Bitmap;\n\t/** Bearing X (offset from origin to left edge) */\n\tbearingX: number;\n\t/** Bearing Y (offset from origin to top edge) */\n\tbearingY: number;\n}\n\n/**\n * Glyph metrics for atlas building\n */\nexport interface GlyphMetrics {\n\t/** Glyph ID */\n\tglyphId: number;\n\t/** X position in atlas */\n\tatlasX: number;\n\t/** Y position in atlas */\n\tatlasY: number;\n\t/** Width in atlas */\n\twidth: number;\n\t/** Height in atlas */\n\theight: number;\n\t/** Bearing X */\n\tbearingX: number;\n\t/** Bearing Y */\n\tbearingY: number;\n\t/** Horizontal advance */\n\tadvance: number;\n}\n\n/**\n * Texture atlas containing multiple glyphs\n */\nexport interface GlyphAtlas {\n\t/** Atlas bitmap */\n\tbitmap: Bitmap;\n\t/** Glyph metrics indexed by glyph ID */\n\tglyphs: Map<number, GlyphMetrics>;\n\t/** Font size used for rendering */\n\tfontSize: number;\n}\n\n/**\n * Options for building a glyph atlas\n */\nexport interface AtlasOptions {\n\t/** Font size in pixels */\n\tfontSize: number;\n\t/** Padding between glyphs */\n\tpadding?: number;\n\t/** Maximum atlas width */\n\tmaxWidth?: number;\n\t/** Maximum atlas height */\n\tmaxHeight?: number;\n\t/** Pixel mode */\n\tpixelMode?: PixelMode;\n\t/** Enable hinting */\n\thinting?: boolean;\n}\n\n/**\n * Options for building an MSDF atlas\n */\nexport interface MsdfAtlasOptions {\n\t/** Font size in pixels (size of each glyph cell in the atlas) */\n\tfontSize: number;\n\t/** Padding between glyphs */\n\tpadding?: number;\n\t/** Maximum atlas width */\n\tmaxWidth?: number;\n\t/** Maximum atlas height */\n\tmaxHeight?: number;\n\t/** SDF spread/radius in pixels (default: 4) */\n\tspread?: number;\n}\n\n/**\n * Create an empty bitmap\n */\nexport function createBitmap(\n\twidth: number,\n\theight: number,\n\tpixelMode: PixelMode = PixelMode.Gray,\n): Bitmap {\n\tlet bytesPerPixel: number;\n\tswitch (pixelMode) {\n\t\tcase PixelMode.Mono:\n\t\t\tbytesPerPixel = 1 / 8; // 8 pixels per byte\n\t\t\tbreak;\n\t\tcase PixelMode.Gray:\n\t\t\tbytesPerPixel = 1;\n\t\t\tbreak;\n\t\tcase PixelMode.LCD:\n\t\tcase PixelMode.LCD_V:\n\t\t\tbytesPerPixel = 3;\n\t\t\tbreak;\n\t\tcase PixelMode.RGBA:\n\t\t\tbytesPerPixel = 4;\n\t\t\tbreak;\n\t}\n\n\tconst pitch =\n\t\tpixelMode === PixelMode.Mono ? Math.ceil(width / 8) : width * bytesPerPixel;\n\n\treturn {\n\t\tbuffer: new Uint8Array(pitch * height),\n\t\twidth,\n\t\trows: height,\n\t\tpitch,\n\t\tpixelMode,\n\t\tnumGrays: pixelMode === PixelMode.Mono ? 2 : 256,\n\t};\n}\n\n/**\n * Clear a bitmap to zero\n */\nexport function clearBitmap(bitmap: Bitmap): void {\n\tbitmap.buffer.fill(0);\n}\n\n/**\n * Create a bottom-up bitmap (negative pitch)\n * Bottom-up bitmaps have row 0 at the bottom of the image,\n * which matches some graphics APIs (e.g., Windows DIB, OpenGL textures)\n */\nexport function createBottomUpBitmap(\n\twidth: number,\n\theight: number,\n\tpixelMode: PixelMode = PixelMode.Gray,\n): Bitmap {\n\tconst bitmap = createBitmap(width, height, pixelMode);\n\t// Negative pitch indicates bottom-up storage\n\tbitmap.pitch = -bitmap.pitch;\n\treturn bitmap;\n}\n",
86
84
  "/**\n * Gray-scale anti-aliased rasterizer\n *\n * Based on FreeType's ftgrays.c - a coverage-based scanline rasterizer\n * that produces high-quality anti-aliased output.\n *\n * Algorithm overview:\n * 1. Convert outline to line segments (flatten curves)\n * 2. For each line segment, compute coverage contribution to cells\n * 3. Sweep scanlines, accumulating coverage\n * 4. Convert coverage to grayscale pixels\n *\n * Key concepts:\n * - cover: accumulated vertical change (winding contribution)\n * - area: accumulated (y-delta * x-position) for edge anti-aliasing\n *\n * Band processing:\n * - Large glyphs are divided into vertical bands\n * - Each band is rendered with bounded memory pool\n * - On overflow, band is bisected and retried\n */\n\nimport { CellBuffer, PoolOverflowError } from \"./cell.ts\";\nimport {\n\tabs,\n\tfracPixel,\n\tONE_PIXEL,\n\tPIXEL_BITS,\n\ttruncPixel,\n} from \"./fixed-point.ts\";\nimport type { Bitmap, FillRule, Span } from \"./types.ts\";\nimport { FillRule as FillRuleEnum, PixelMode } from \"./types.ts\";\n\n/** Maximum band bisection depth (like FreeType's 32 bands stack) */\nconst MAX_BAND_DEPTH = 32;\n\n/** Span buffer size for direct rendering */\nconst MAX_GRAY_SPANS = 16;\n\n/**\n * Rasterizer state\n */\nexport class GrayRaster {\n\tprivate cells: CellBuffer;\n\n\t// Current position in subpixel coordinates\n\tprivate x: number = 0;\n\tprivate y: number = 0;\n\n\t// Clip bounds in pixels\n\tprivate minX: number = 0;\n\tprivate minY: number = 0;\n\tprivate maxX: number = 0;\n\tprivate maxY: number = 0;\n\n\tconstructor() {\n\t\tthis.cells = new CellBuffer();\n\t}\n\n\t/**\n\t * Set clip rectangle (in pixels)\n\t */\n\tsetClip(minX: number, minY: number, maxX: number, maxY: number): void {\n\t\tthis.minX = minX;\n\t\tthis.minY = minY;\n\t\tthis.maxX = maxX;\n\t\tthis.maxY = maxY;\n\t\tthis.cells.setClip(minX, minY, maxX, maxY);\n\t}\n\n\t/**\n\t * Set band bounds for current render pass\n\t */\n\tsetBandBounds(minY: number, maxY: number): void {\n\t\tthis.cells.setBandBounds(minY, maxY);\n\t}\n\n\t/**\n\t * Reset rasterizer state\n\t */\n\treset(): void {\n\t\tthis.cells.reset();\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t}\n\n\t/**\n\t * Move to a new position (start new contour)\n\t * Coordinates are in subpixel units (ONE_PIXEL per pixel)\n\t */\n\tmoveTo(x: number, y: number): void {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.cells.setCurrentCell(x, y);\n\t}\n\n\t/**\n\t * Draw line to position\n\t */\n\tlineTo(toX: number, toY: number): void {\n\t\tthis.renderLine(toX, toY);\n\t\tthis.x = toX;\n\t\tthis.y = toY;\n\t}\n\n\t/**\n\t * Render a line from current position to (toX, toY)\n\t * This is the core rasterization algorithm.\n\t */\n\tprivate renderLine(toX: number, toY: number): void {\n\t\tlet ey1 = truncPixel(this.y);\n\t\tconst ey2 = truncPixel(toY);\n\n\t\t// Vertical clipping\n\t\tif (\n\t\t\t(ey1 >= this.maxY && ey2 >= this.maxY) ||\n\t\t\t(ey1 < this.minY && ey2 < this.minY)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst fy1 = fracPixel(this.y);\n\t\tconst fy2 = fracPixel(toY);\n\n\t\t// Single scanline case\n\t\tif (ey1 === ey2) {\n\t\t\tthis.renderScanline(ey1, this.x, fy1, toX, fy2);\n\t\t\treturn;\n\t\t}\n\n\t\tconst dx = toX - this.x;\n\t\tconst dy = toY - this.y;\n\n\t\t// Vertical line - optimized path\n\t\tif (dx === 0) {\n\t\t\tconst _ex = truncPixel(this.x);\n\t\t\tconst twoFx = fracPixel(this.x) * 2;\n\n\t\t\tlet first: number;\n\t\t\tlet incr: number;\n\n\t\t\tif (dy > 0) {\n\t\t\t\tfirst = ONE_PIXEL;\n\t\t\t\tincr = 1;\n\t\t\t} else {\n\t\t\t\tfirst = 0;\n\t\t\t\tincr = -1;\n\t\t\t}\n\n\t\t\t// First partial scanline\n\t\t\tlet delta = first - fy1;\n\t\t\tthis.cells.setCurrentCell(this.x, ey1 << PIXEL_BITS);\n\t\t\tthis.cells.addArea(delta * twoFx, delta);\n\t\t\tey1 += incr;\n\n\t\t\t// Full scanlines\n\t\t\tthis.cells.setCurrentCell(this.x, ey1 << PIXEL_BITS);\n\t\t\tdelta = first + first - ONE_PIXEL;\n\t\t\twhile (ey1 !== ey2) {\n\t\t\t\tthis.cells.addArea(delta * twoFx, delta);\n\t\t\t\tey1 += incr;\n\t\t\t\tthis.cells.setCurrentCell(this.x, ey1 << PIXEL_BITS);\n\t\t\t}\n\n\t\t\t// Last partial scanline\n\t\t\tdelta = fy2 - ONE_PIXEL + first;\n\t\t\tthis.cells.addArea(delta * twoFx, delta);\n\t\t\treturn;\n\t\t}\n\n\t\t// General case: line crosses multiple scanlines\n\t\tlet x = this.x;\n\t\tlet incr: number;\n\t\tlet first: number;\n\n\t\tif (dy > 0) {\n\t\t\tfirst = ONE_PIXEL;\n\t\t\tincr = 1;\n\t\t} else {\n\t\t\tfirst = 0;\n\t\t\tincr = -1;\n\t\t}\n\n\t\t// First partial scanline\n\t\tlet delta = first - fy1;\n\t\tconst xDelta = this.mulDiv(dx, delta, abs(dy));\n\t\tlet x2 = x + xDelta;\n\n\t\tthis.renderScanline(ey1, x, fy1, x2, first);\n\t\tx = x2;\n\t\tey1 += incr;\n\n\t\tthis.cells.setCurrentCell(x, ey1 << PIXEL_BITS);\n\n\t\t// Full scanlines\n\t\tif (ey1 !== ey2) {\n\t\t\tconst xLift = this.mulDiv(dx, ONE_PIXEL, abs(dy));\n\t\t\tdelta = first + first - ONE_PIXEL;\n\n\t\t\twhile (ey1 !== ey2) {\n\t\t\t\tx2 = x + xLift;\n\t\t\t\tthis.renderScanline(ey1, x, ONE_PIXEL - first, x2, first);\n\t\t\t\tx = x2;\n\t\t\t\tey1 += incr;\n\t\t\t\tthis.cells.setCurrentCell(x, ey1 << PIXEL_BITS);\n\t\t\t}\n\t\t}\n\n\t\t// Last partial scanline\n\t\tdelta = fy2 - ONE_PIXEL + first;\n\t\tthis.renderScanline(ey1, x, ONE_PIXEL - first, toX, fy2);\n\t}\n\n\t/**\n\t * Render a line segment within a single scanline\n\t */\n\tprivate renderScanline(\n\t\tey: number,\n\t\tx1: number,\n\t\ty1: number,\n\t\tx2: number,\n\t\ty2: number,\n\t): void {\n\t\tconst ex1 = truncPixel(x1);\n\t\tconst ex2 = truncPixel(x2);\n\n\t\t// Trivial case: horizontal line\n\t\tif (y1 === y2) {\n\t\t\tthis.cells.setCurrentCell(x2, ey << PIXEL_BITS);\n\t\t\treturn;\n\t\t}\n\n\t\tconst fx1 = fracPixel(x1);\n\t\tconst fx2 = fracPixel(x2);\n\n\t\t// Single cell case\n\t\tif (ex1 === ex2) {\n\t\t\tconst delta = y2 - y1;\n\t\t\tthis.cells.setCurrentCell(x1, ey << PIXEL_BITS);\n\t\t\tthis.cells.addArea(delta * (fx1 + fx2), delta);\n\t\t\treturn;\n\t\t}\n\n\t\t// Multiple cells\n\t\tconst dx = x2 - x1;\n\t\tconst dy = y2 - y1;\n\n\t\tlet first: number;\n\t\tlet incr: number;\n\n\t\tif (dx > 0) {\n\t\t\tfirst = ONE_PIXEL;\n\t\t\tincr = 1;\n\t\t} else {\n\t\t\tfirst = 0;\n\t\t\tincr = -1;\n\t\t}\n\n\t\t// First cell\n\t\tlet delta = this.mulDiv(dy, first - fx1, abs(dx));\n\t\tthis.cells.setCurrentCell(x1, ey << PIXEL_BITS);\n\t\tthis.cells.addArea(delta * (fx1 + first), delta);\n\n\t\tlet y = y1 + delta;\n\t\tlet ex = ex1 + incr;\n\t\tthis.cells.setCurrentCell(ex << PIXEL_BITS, ey << PIXEL_BITS);\n\n\t\t// Middle cells (full width)\n\t\tif (ex !== ex2) {\n\t\t\tconst yLift = this.mulDiv(dy, ONE_PIXEL, abs(dx));\n\n\t\t\twhile (ex !== ex2) {\n\t\t\t\tdelta = yLift;\n\t\t\t\tthis.cells.addArea(delta * ONE_PIXEL, delta);\n\t\t\t\ty += delta;\n\t\t\t\tex += incr;\n\t\t\t\tthis.cells.setCurrentCell(ex << PIXEL_BITS, ey << PIXEL_BITS);\n\t\t\t}\n\t\t}\n\n\t\t// Last cell\n\t\tdelta = y2 - y;\n\t\tthis.cells.addArea(delta * (fx2 + ONE_PIXEL - first), delta);\n\t}\n\n\t/**\n\t * Multiply and divide with 64-bit precision\n\t */\n\tprivate mulDiv(a: number, b: number, c: number): number {\n\t\tif (c === 0) return 0;\n\t\treturn Math.trunc((a * b) / c);\n\t}\n\n\t/**\n\t * Draw a quadratic Bezier curve using simple parametric sampling\n\t */\n\tconicTo(cx: number, cy: number, toX: number, toY: number): void {\n\t\tconst p0x = this.x;\n\t\tconst p0y = this.y;\n\n\t\t// Estimate number of segments based on curve length\n\t\tconst dx1 = cx - p0x;\n\t\tconst dy1 = cy - p0y;\n\t\tconst dx2 = toX - cx;\n\t\tconst dy2 = toY - cy;\n\t\tconst len =\n\t\t\tMath.sqrt(dx1 * dx1 + dy1 * dy1) + Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n\t\t// At least 4 segments, more for longer curves\n\t\tconst numSegments = Math.max(4, Math.ceil(len / (ONE_PIXEL * 4)));\n\n\t\tfor (let i = 1; i <= numSegments; i++) {\n\t\t\tconst t = i / numSegments;\n\t\t\tconst ti = 1 - t;\n\t\t\t// Quadratic bezier: B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2\n\t\t\tconst x = Math.round(ti * ti * p0x + 2 * ti * t * cx + t * t * toX);\n\t\t\tconst y = Math.round(ti * ti * p0y + 2 * ti * t * cy + t * t * toY);\n\t\t\tthis.renderLine(x, y);\n\t\t\t// Update current position for next segment\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t}\n\n\t\tthis.x = toX;\n\t\tthis.y = toY;\n\t}\n\n\t/**\n\t * Draw a cubic Bezier curve\n\t */\n\tcubicTo(\n\t\tcx1: number,\n\t\tcy1: number,\n\t\tcx2: number,\n\t\tcy2: number,\n\t\tx: number,\n\t\ty: number,\n\t): void {\n\t\tthis.subdivCubic(this.x, this.y, cx1, cy1, cx2, cy2, x, y, 0);\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t}\n\n\tprivate subdivCubic(\n\t\tx1: number,\n\t\ty1: number,\n\t\tcx1: number,\n\t\tcy1: number,\n\t\tcx2: number,\n\t\tcy2: number,\n\t\tx4: number,\n\t\ty4: number,\n\t\tlevel: number,\n\t): void {\n\t\tif (level > 16) {\n\t\t\tthis.renderLine(x4, y4);\n\t\t\tthis.x = x4;\n\t\t\tthis.y = y4;\n\t\t\treturn;\n\t\t}\n\n\t\t// De Casteljau midpoints\n\t\tconst x12 = (x1 + cx1) >> 1;\n\t\tconst y12 = (y1 + cy1) >> 1;\n\t\tconst x23 = (cx1 + cx2) >> 1;\n\t\tconst y23 = (cy1 + cy2) >> 1;\n\t\tconst x34 = (cx2 + x4) >> 1;\n\t\tconst y34 = (cy2 + y4) >> 1;\n\t\tconst x123 = (x12 + x23) >> 1;\n\t\tconst y123 = (y12 + y23) >> 1;\n\t\tconst x234 = (x23 + x34) >> 1;\n\t\tconst y234 = (y23 + y34) >> 1;\n\t\tconst x1234 = (x123 + x234) >> 1;\n\t\tconst y1234 = (y123 + y234) >> 1;\n\n\t\t// Flatness test\n\t\tconst dx = x4 - x1;\n\t\tconst dy = y4 - y1;\n\t\tconst d1 = abs((cx1 - x4) * dy - (cy1 - y4) * dx);\n\t\tconst d2 = abs((cx2 - x4) * dy - (cy2 - y4) * dx);\n\n\t\tif (d1 + d2 <= (ONE_PIXEL >> 1) * (abs(dx) + abs(dy))) {\n\t\t\tthis.renderLine(x4, y4);\n\t\t\tthis.x = x4;\n\t\t\tthis.y = y4;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.subdivCubic(x1, y1, x12, y12, x123, y123, x1234, y1234, level + 1);\n\t\tthis.subdivCubic(x1234, y1234, x234, y234, x34, y34, x4, y4, level + 1);\n\t}\n\n\t/**\n\t * Sweep all cells and render to bitmap\n\t *\n\t * Supports both top-down (positive pitch) and bottom-up (negative pitch) bitmaps.\n\t * For positive pitch: y=0 is at top of image (first row in buffer)\n\t * For negative pitch: y=0 is at bottom of image (last row in buffer)\n\t */\n\tsweep(bitmap: Bitmap, fillRule: FillRule = FillRuleEnum.NonZero): void {\n\t\t// Calculate origin offset for pitch direction\n\t\t// Positive pitch (top-down): origin at start of buffer\n\t\t// Negative pitch (bottom-up): origin at (rows-1)*|pitch| for y=0 to be at bottom\n\t\tconst pitch = bitmap.pitch;\n\t\tconst origin = pitch < 0 ? (bitmap.rows - 1) * -pitch : 0;\n\n\t\tfor (const { y, cells } of this.cells.iterateCells()) {\n\t\t\tif (y < 0 || y >= bitmap.rows) continue;\n\n\t\t\tlet cover = 0;\n\t\t\tlet x = 0;\n\t\t\t// For positive pitch: row = y * pitch (y=0 at top)\n\t\t\t// For negative pitch: row = origin - y * |pitch| (y=0 at bottom)\n\t\t\tconst row = pitch < 0 ? origin - y * -pitch : y * pitch;\n\n\t\t\tfor (const cell of cells) {\n\t\t\t\t// Fill span from previous x to current cell\n\t\t\t\tif (cell.x > x && cover !== 0) {\n\t\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\t\tif (gray > 0) {\n\t\t\t\t\t\tconst start = Math.max(0, x);\n\t\t\t\t\t\tconst end = Math.min(bitmap.width, cell.x);\n\t\t\t\t\t\tthis.fillSpan(bitmap, row, start, end, gray);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Compute anti-aliased coverage for this edge cell\n\t\t\t\t// FreeType: cover += cell->cover * (ONE_PIXEL * 2)\n\t\t\t\t// area = cover - cell->area\n\t\t\t\t// The area is SUBTRACTED from scaled cover, not added\n\t\t\t\tconst scaledCover = cover * (ONE_PIXEL * 2);\n\t\t\t\tconst area = scaledCover - cell.area;\n\t\t\t\tconst gray = this.applyFillRule(area >> (PIXEL_BITS + 1), fillRule);\n\n\t\t\t\tif (gray > 0 && cell.x >= 0 && cell.x < bitmap.width) {\n\t\t\t\t\tthis.setPixel(bitmap, row, cell.x, gray);\n\t\t\t\t}\n\n\t\t\t\tcover += cell.cover;\n\t\t\t\tx = cell.x + 1;\n\t\t\t}\n\n\t\t\t// Fill remaining span\n\t\t\tif (x < bitmap.width && cover !== 0) {\n\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\tif (gray > 0) {\n\t\t\t\t\tthis.fillSpan(bitmap, row, x, bitmap.width, gray);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate applyFillRule(value: number, fillRule: FillRule): number {\n\t\tlet v = value;\n\t\tif (v < 0) v = -v;\n\n\t\tif (fillRule === FillRuleEnum.EvenOdd) {\n\t\t\tv &= 511;\n\t\t\tif (v > 256) v = 512 - v;\n\t\t}\n\n\t\treturn v > 255 ? 255 : v;\n\t}\n\n\tprivate fillSpan(\n\t\tbitmap: Bitmap,\n\t\trow: number,\n\t\tstart: number,\n\t\tend: number,\n\t\tgray: number,\n\t): void {\n\t\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\t\tfor (let x = start; x < end; x++) {\n\t\t\t\tbitmap.buffer[row + x] = gray;\n\t\t\t}\n\t\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\t\tif (gray >= 128) {\n\t\t\t\tfor (let x = start; x < end; x++) {\n\t\t\t\t\tconst byteIdx = row + (x >> 3);\n\t\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\t\tbitmap.buffer[byteIdx] |= 1 << bitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (bitmap.pixelMode === PixelMode.LCD) {\n\t\t\t// LCD mode: 3 bytes per pixel (RGB subpixels)\n\t\t\t// For now, write same coverage to all 3 subpixels\n\t\t\t// A proper implementation would use subpixel positioning\n\t\t\tfor (let x = start; x < end; x++) {\n\t\t\t\tconst idx = row + x * 3;\n\t\t\t\tbitmap.buffer[idx] = gray;\n\t\t\t\tbitmap.buffer[idx + 1] = gray;\n\t\t\t\tbitmap.buffer[idx + 2] = gray;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setPixel(bitmap: Bitmap, row: number, x: number, gray: number): void {\n\t\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\t\tbitmap.buffer[row + x] = gray;\n\t\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\t\tif (gray >= 128) {\n\t\t\t\tconst byteIdx = row + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tbitmap.buffer[byteIdx] |= 1 << bitIdx;\n\t\t\t}\n\t\t} else if (bitmap.pixelMode === PixelMode.LCD) {\n\t\t\t// LCD mode: 3 bytes per pixel (RGB subpixels)\n\t\t\tconst idx = row + x * 3;\n\t\t\tbitmap.buffer[idx] = gray;\n\t\t\tbitmap.buffer[idx + 1] = gray;\n\t\t\tbitmap.buffer[idx + 2] = gray;\n\t\t}\n\t}\n\n\t/**\n\t * Sweep and call span callback (unbuffered)\n\t * @param callback Span callback function\n\t * @param fillRule Fill rule to apply\n\t * @param userData User data passed to callback (like FreeType's render_span_data)\n\t */\n\tsweepSpans<T = void>(\n\t\tcallback: (y: number, spans: Span[], userData: T) => void,\n\t\tfillRule: FillRule = FillRuleEnum.NonZero,\n\t\tuserData?: T,\n\t): void {\n\t\tfor (const { y, cells } of this.cells.iterateCells()) {\n\t\t\tconst spans: Span[] = [];\n\t\t\tlet cover = 0;\n\t\t\tlet spanStart = -1;\n\n\t\t\tfor (const cell of cells) {\n\t\t\t\t// If we have cover, emit span\n\t\t\t\tif (cover !== 0 && cell.x > spanStart + 1) {\n\t\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\t\tif (gray > 0) {\n\t\t\t\t\t\tspans.push({\n\t\t\t\t\t\t\tx: spanStart + 1,\n\t\t\t\t\t\t\tlen: cell.x - spanStart - 1,\n\t\t\t\t\t\t\tcoverage: gray,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Edge cell - area is SUBTRACTED from scaled cover\n\t\t\t\tconst scaledCover = cover * (ONE_PIXEL * 2);\n\t\t\t\tconst area = scaledCover - cell.area;\n\t\t\t\tconst gray = this.applyFillRule(area >> (PIXEL_BITS + 1), fillRule);\n\t\t\t\tif (gray > 0) {\n\t\t\t\t\tspans.push({ x: cell.x, len: 1, coverage: gray });\n\t\t\t\t}\n\n\t\t\t\tcover += cell.cover;\n\t\t\t\tspanStart = cell.x;\n\t\t\t}\n\n\t\t\tif (spans.length > 0) {\n\t\t\t\tcallback(y, spans, userData as T);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sweep with span buffering (like FreeType's gray_sweep_direct)\n\t * Buffers up to 16 spans before flushing for better performance\n\t * @param callback Span callback function\n\t * @param fillRule Fill rule to apply\n\t * @param minX Minimum X clip bound\n\t * @param maxX Maximum X clip bound\n\t * @param userData User data passed to callback (like FreeType's render_span_data)\n\t */\n\tsweepDirect<T = void>(\n\t\tcallback: (y: number, spans: Span[], userData: T) => void,\n\t\tfillRule: FillRule = FillRuleEnum.NonZero,\n\t\tminX: number = 0,\n\t\tmaxX: number = Infinity,\n\t\tuserData?: T,\n\t): void {\n\t\tconst spanBuffer: Span[] = [];\n\n\t\tfor (const { y, cells } of this.cells.iterateCells()) {\n\t\t\tlet cover = 0;\n\t\t\tlet x = minX;\n\n\t\t\tfor (const cell of cells) {\n\t\t\t\t// Fill span from previous x to current cell\n\t\t\t\tif (cover !== 0 && cell.x > x) {\n\t\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\t\tif (gray > 0) {\n\t\t\t\t\t\tspanBuffer.push({ x, len: cell.x - x, coverage: gray });\n\t\t\t\t\t\tif (spanBuffer.length >= MAX_GRAY_SPANS) {\n\t\t\t\t\t\t\tcallback(\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tspanBuffer.splice(0, spanBuffer.length),\n\t\t\t\t\t\t\t\tuserData as T,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Edge cell - area is SUBTRACTED from scaled cover\n\t\t\t\tconst scaledCover = cover * (ONE_PIXEL * 2);\n\t\t\t\tconst area = scaledCover - cell.area;\n\t\t\t\tconst gray = this.applyFillRule(area >> (PIXEL_BITS + 1), fillRule);\n\t\t\t\tif (gray > 0 && cell.x >= minX && cell.x < maxX) {\n\t\t\t\t\tspanBuffer.push({ x: cell.x, len: 1, coverage: gray });\n\t\t\t\t\tif (spanBuffer.length >= MAX_GRAY_SPANS) {\n\t\t\t\t\t\tcallback(y, spanBuffer.splice(0, spanBuffer.length), userData as T);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcover += cell.cover;\n\t\t\t\tx = cell.x + 1;\n\t\t\t}\n\n\t\t\t// Fill remaining span\n\t\t\tif (cover !== 0 && x < maxX) {\n\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\tif (gray > 0) {\n\t\t\t\t\tspanBuffer.push({\n\t\t\t\t\t\tx,\n\t\t\t\t\t\tlen: Math.min(maxX, this.maxX + 1) - x,\n\t\t\t\t\t\tcoverage: gray,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Flush remaining spans for this row\n\t\t\tif (spanBuffer.length > 0) {\n\t\t\t\tcallback(y, spanBuffer.splice(0, spanBuffer.length), userData as T);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Render with band processing for bounded memory.\n\t * Divides large glyphs into bands, retries with bisection on overflow.\n\t * Supports both Y-dimension (vertical) and X-dimension (horizontal) bisection\n\t * like FreeType's ftgrays.c gray_convert_glyph.\n\t *\n\t * @param bitmap Target bitmap\n\t * @param decomposeFn Function that decomposes outline to rasterizer commands\n\t * @param bounds Glyph bounds (minY, maxY, optionally minX, maxX)\n\t * @param fillRule Fill rule to apply\n\t */\n\trenderWithBands(\n\t\tbitmap: Bitmap,\n\t\tdecomposeFn: () => void,\n\t\tbounds: { minY: number; maxY: number; minX?: number; maxX?: number },\n\t\tfillRule: FillRule = FillRuleEnum.NonZero,\n\t): void {\n\t\t// Calculate initial band height based on pool size\n\t\t// Aim for bands that use ~1/8 of pool to leave room for overflow\n\t\tconst poolSize = 2048;\n\t\tconst height = bounds.maxY - bounds.minY;\n\t\tlet bandHeight = Math.max(1, Math.floor(poolSize / 8));\n\n\t\t// Adjust if glyph is small enough for single band\n\t\tif (height <= bandHeight) {\n\t\t\tbandHeight = height;\n\t\t}\n\n\t\t// X bounds default to bitmap width\n\t\tconst xMin = bounds.minX ?? 0;\n\t\tconst xMax = bounds.maxX ?? bitmap.width;\n\n\t\t// Stack for band bisection (like FreeType's bands[32])\n\t\t// Each band has Y bounds and X bounds for 2D bisection\n\t\tconst bandStack: Array<{\n\t\t\tminY: number;\n\t\t\tmaxY: number;\n\t\t\tminX: number;\n\t\t\tmaxX: number;\n\t\t}> = [];\n\n\t\t// Initial bands (full X range for each Y band)\n\t\tfor (let y = bounds.minY; y < bounds.maxY; y += bandHeight) {\n\t\t\tbandStack.push({\n\t\t\t\tminY: y,\n\t\t\t\tmaxY: Math.min(y + bandHeight, bounds.maxY),\n\t\t\t\tminX: xMin,\n\t\t\t\tmaxX: xMax,\n\t\t\t});\n\t\t}\n\n\t\t// Process bands with 2D bisection on overflow\n\t\tlet depth = 0;\n\t\twhile (bandStack.length > 0 && depth < MAX_BAND_DEPTH) {\n\t\t\tconst band = bandStack.pop();\n\t\t\tif (!band) break;\n\n\t\t\tif (\n\t\t\t\tthis.renderBandWithXClip(\n\t\t\t\t\tbitmap,\n\t\t\t\t\tdecomposeFn,\n\t\t\t\t\tband.minY,\n\t\t\t\t\tband.maxY,\n\t\t\t\t\tband.minX,\n\t\t\t\t\tband.maxX,\n\t\t\t\t\tfillRule,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontinue; // Success\n\t\t\t}\n\n\t\t\t// Overflow - try X bisection first (like FreeType), then Y\n\t\t\tconst midX = (band.minX + band.maxX) >> 1;\n\t\t\tif (midX > band.minX) {\n\t\t\t\t// Bisect in X dimension\n\t\t\t\tbandStack.push({\n\t\t\t\t\tminY: band.minY,\n\t\t\t\t\tmaxY: band.maxY,\n\t\t\t\t\tminX: midX,\n\t\t\t\t\tmaxX: band.maxX,\n\t\t\t\t});\n\t\t\t\tbandStack.push({\n\t\t\t\t\tminY: band.minY,\n\t\t\t\t\tmaxY: band.maxY,\n\t\t\t\t\tminX: band.minX,\n\t\t\t\t\tmaxX: midX,\n\t\t\t\t});\n\t\t\t\tdepth++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// X can't be bisected, try Y\n\t\t\tconst midY = (band.minY + band.maxY) >> 1;\n\t\t\tif (midY > band.minY) {\n\t\t\t\t// Bisect in Y dimension\n\t\t\t\tbandStack.push({\n\t\t\t\t\tminY: midY,\n\t\t\t\t\tmaxY: band.maxY,\n\t\t\t\t\tminX: band.minX,\n\t\t\t\t\tmaxX: band.maxX,\n\t\t\t\t});\n\t\t\t\tbandStack.push({\n\t\t\t\t\tminY: band.minY,\n\t\t\t\t\tmaxY: midY,\n\t\t\t\t\tminX: band.minX,\n\t\t\t\t\tmaxX: band.maxX,\n\t\t\t\t});\n\t\t\t\tdepth++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Can't bisect in either dimension - rotten glyph\n\t\t\tconsole.warn(\n\t\t\t\t`Rasterizer: band overflow at (${band.minX},${band.minY}), cannot bisect further`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Render a single band with X clipping\n\t * @returns true on success, false on pool overflow\n\t */\n\tprivate renderBandWithXClip(\n\t\tbitmap: Bitmap,\n\t\tdecomposeFn: () => void,\n\t\tminY: number,\n\t\tmaxY: number,\n\t\tminX: number,\n\t\tmaxX: number,\n\t\tfillRule: FillRule,\n\t): boolean {\n\t\t// Set up band bounds\n\t\tthis.cells.setBandBounds(minY, maxY);\n\t\tthis.cells.reset();\n\t\tthis.minY = minY;\n\t\tthis.maxY = maxY;\n\n\t\ttry {\n\t\t\t// Decompose outline (may throw PoolOverflowError)\n\t\t\tdecomposeFn();\n\n\t\t\t// Sweep and render to bitmap with X clipping\n\t\t\tthis.sweepBandWithXClip(bitmap, minY, maxY, minX, maxX, fillRule);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\tif (e instanceof PoolOverflowError) {\n\t\t\t\treturn false; // Need to bisect\n\t\t\t}\n\t\t\tthrow e; // Re-throw other errors\n\t\t}\n\t}\n\n\t/**\n\t * Sweep a band with X clipping and render to bitmap\n\t */\n\tprivate sweepBandWithXClip(\n\t\tbitmap: Bitmap,\n\t\tminY: number,\n\t\tmaxY: number,\n\t\tminX: number,\n\t\tmaxX: number,\n\t\tfillRule: FillRule,\n\t): void {\n\t\tconst pitch = bitmap.pitch;\n\t\tconst origin = pitch < 0 ? (bitmap.rows - 1) * -pitch : 0;\n\n\t\tfor (let y = minY; y < maxY; y++) {\n\t\t\tif (y < 0 || y >= bitmap.rows) continue;\n\n\t\t\tlet cover = 0;\n\t\t\tlet x = minX;\n\t\t\tconst row = pitch < 0 ? origin - y * -pitch : y * pitch;\n\n\t\t\tfor (const cell of this.cells.iterateRowCells(y)) {\n\t\t\t\t// Skip cells outside X clip\n\t\t\t\tif (cell.x < minX) {\n\t\t\t\t\tcover += cell.cover;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (cell.x >= maxX) {\n\t\t\t\t\t// Fill remaining clipped span\n\t\t\t\t\tif (cover !== 0 && x < maxX) {\n\t\t\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\t\t\tif (gray > 0) {\n\t\t\t\t\t\t\tthis.fillSpan(\n\t\t\t\t\t\t\t\tbitmap,\n\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\tMath.max(0, x),\n\t\t\t\t\t\t\t\tMath.min(bitmap.width, maxX),\n\t\t\t\t\t\t\t\tgray,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Fill span from previous x to current cell\n\t\t\t\tif (cell.x > x && cover !== 0) {\n\t\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\t\tif (gray > 0) {\n\t\t\t\t\t\tconst start = Math.max(0, x);\n\t\t\t\t\t\tconst end = Math.min(bitmap.width, cell.x);\n\t\t\t\t\t\tthis.fillSpan(bitmap, row, start, end, gray);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Edge cell anti-aliasing - area is SUBTRACTED from scaled cover\n\t\t\t\tconst scaledCover = cover * (ONE_PIXEL * 2);\n\t\t\t\tconst area = scaledCover - cell.area;\n\t\t\t\tconst gray = this.applyFillRule(area >> (PIXEL_BITS + 1), fillRule);\n\n\t\t\t\tif (gray > 0 && cell.x >= 0 && cell.x < bitmap.width) {\n\t\t\t\t\tthis.setPixel(bitmap, row, cell.x, gray);\n\t\t\t\t}\n\n\t\t\t\tcover += cell.cover;\n\t\t\t\tx = cell.x + 1;\n\t\t\t}\n\n\t\t\t// Fill remaining span within X clip\n\t\t\tif (x < maxX && x < bitmap.width && cover !== 0) {\n\t\t\t\tconst gray = this.applyFillRule(cover, fillRule);\n\t\t\t\tif (gray > 0) {\n\t\t\t\t\tthis.fillSpan(bitmap, row, x, Math.min(bitmap.width, maxX), gray);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n",
87
85
  "/**\n * Decompose path commands into rasterizer calls\n */\n\nimport {\n\ttype GlyphPath,\n\tOutlineFlags,\n\ttype PathCommand,\n} from \"../render/path.ts\";\nimport { ONE_PIXEL } from \"./fixed-point.ts\";\nimport type { GrayRaster } from \"./gray-raster.ts\";\nimport { FillRule } from \"./types.ts\";\n\n/**\n * Outline validation error types (like FreeType's error codes)\n */\nexport enum OutlineError {\n\tOk = 0,\n\tInvalidOutline = 1,\n\tInvalidArgument = 2,\n\tEmptyOutline = 3,\n}\n\n/**\n * Validation result with error code and message\n */\nexport interface ValidationResult {\n\terror: OutlineError;\n\tmessage?: string;\n}\n\n/**\n * Validate a GlyphPath before rasterization (like FreeType's outline validation)\n *\n * Checks:\n * - Path is not null/undefined\n * - Commands array exists\n * - Path is not empty (unless allowEmpty is true)\n * - Command structure is valid\n * - Contours are properly closed (start with M, end with Z)\n */\nexport function validateOutline(\n\tpath: GlyphPath | null | undefined,\n\tallowEmpty: boolean = true,\n): ValidationResult {\n\t// Check for null/undefined path\n\tif (!path) {\n\t\treturn {\n\t\t\terror: OutlineError.InvalidOutline,\n\t\t\tmessage: \"Path is null or undefined\",\n\t\t};\n\t}\n\n\t// Check commands array exists\n\tif (!path.commands) {\n\t\treturn {\n\t\t\terror: OutlineError.InvalidOutline,\n\t\t\tmessage: \"Path commands array is missing\",\n\t\t};\n\t}\n\n\t// Check for empty path\n\tif (path.commands.length === 0) {\n\t\tif (allowEmpty) {\n\t\t\treturn { error: OutlineError.EmptyOutline };\n\t\t}\n\t\treturn { error: OutlineError.InvalidOutline, message: \"Path is empty\" };\n\t}\n\n\t// Validate command structure\n\tlet hasMove = false;\n\tlet inContour = false;\n\tlet contourCount = 0;\n\n\tfor (let i = 0; i < path.commands.length; i++) {\n\t\tconst cmd = path.commands[i];\n\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tif (inContour) {\n\t\t\t\t\t// Implicit close - allowed but noted\n\t\t\t\t}\n\t\t\t\thasMove = true;\n\t\t\t\tinContour = true;\n\t\t\t\tcontourCount++;\n\t\t\t\t// Validate coordinates are finite numbers\n\t\t\t\tif (!Number.isFinite(cmd.x) || !Number.isFinite(cmd.y)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Invalid coordinates at command ${i}: (${cmd.x}, ${cmd.y})`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"L\":\n\t\t\t\tif (!hasMove) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Line command at ${i} without preceding moveTo`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!Number.isFinite(cmd.x) || !Number.isFinite(cmd.y)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Invalid coordinates at command ${i}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Q\":\n\t\t\t\tif (!hasMove) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Quadratic curve at ${i} without preceding moveTo`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!Number.isFinite(cmd.x1) ||\n\t\t\t\t\t!Number.isFinite(cmd.y1) ||\n\t\t\t\t\t!Number.isFinite(cmd.x) ||\n\t\t\t\t\t!Number.isFinite(cmd.y)\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Invalid coordinates at command ${i}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"C\":\n\t\t\t\tif (!hasMove) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Cubic curve at ${i} without preceding moveTo`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t!Number.isFinite(cmd.x1) ||\n\t\t\t\t\t!Number.isFinite(cmd.y1) ||\n\t\t\t\t\t!Number.isFinite(cmd.x2) ||\n\t\t\t\t\t!Number.isFinite(cmd.y2) ||\n\t\t\t\t\t!Number.isFinite(cmd.x) ||\n\t\t\t\t\t!Number.isFinite(cmd.y)\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\t\tmessage: `Invalid coordinates at command ${i}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Z\":\n\t\t\t\tinContour = false;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\terror: OutlineError.InvalidOutline,\n\t\t\t\t\tmessage: `Unknown command type at ${i}: ${(cmd as PathCommand).type}`,\n\t\t\t\t};\n\t\t}\n\t}\n\n\t// Warn if no contours found (valid but useless)\n\tif (contourCount === 0 && !allowEmpty) {\n\t\treturn { error: OutlineError.EmptyOutline, message: \"No contours in path\" };\n\t}\n\n\treturn { error: OutlineError.Ok };\n}\n\n/**\n * Convert a GlyphPath to rasterizer commands\n *\n * @param raster - The rasterizer instance\n * @param path - Path commands to decompose\n * @param scale - Scale factor (font units to pixels)\n * @param offsetX - X offset in pixels\n * @param offsetY - Y offset in pixels\n * @param flipY - Flip Y axis (font coords are Y-up)\n */\nexport function decomposePath(\n\traster: GrayRaster,\n\tpath: GlyphPath,\n\tscale: number,\n\toffsetX: number = 0,\n\toffsetY: number = 0,\n\tflipY: boolean = true,\n): void {\n\tlet startX = 0;\n\tlet startY = 0;\n\tlet inContour = false;\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\": {\n\t\t\t\t// Close previous contour if open\n\t\t\t\tif (inContour) {\n\t\t\t\t\traster.lineTo(startX, startY);\n\t\t\t\t}\n\n\t\t\t\t// Convert to subpixel coordinates\n\t\t\t\tconst x = toSubpixel(cmd.x, scale, offsetX);\n\t\t\t\tconst y = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y, scale, offsetY);\n\n\t\t\t\traster.moveTo(x, y);\n\t\t\t\tstartX = x;\n\t\t\t\tstartY = y;\n\t\t\t\tinContour = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"L\": {\n\t\t\t\tconst x = toSubpixel(cmd.x, scale, offsetX);\n\t\t\t\tconst y = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y, scale, offsetY);\n\n\t\t\t\traster.lineTo(x, y);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Q\": {\n\t\t\t\tconst cx = toSubpixel(cmd.x1, scale, offsetX);\n\t\t\t\tconst cy = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y1, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y1, scale, offsetY);\n\t\t\t\tconst x = toSubpixel(cmd.x, scale, offsetX);\n\t\t\t\tconst y = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y, scale, offsetY);\n\n\t\t\t\traster.conicTo(cx, cy, x, y);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"C\": {\n\t\t\t\tconst cx1 = toSubpixel(cmd.x1, scale, offsetX);\n\t\t\t\tconst cy1 = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y1, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y1, scale, offsetY);\n\t\t\t\tconst cx2 = toSubpixel(cmd.x2, scale, offsetX);\n\t\t\t\tconst cy2 = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y2, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y2, scale, offsetY);\n\t\t\t\tconst x = toSubpixel(cmd.x, scale, offsetX);\n\t\t\t\tconst y = flipY\n\t\t\t\t\t? toSubpixelFlipY(cmd.y, scale, offsetY)\n\t\t\t\t\t: toSubpixel(cmd.y, scale, offsetY);\n\n\t\t\t\traster.cubicTo(cx1, cy1, cx2, cy2, x, y);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Z\": {\n\t\t\t\t// Close contour\n\t\t\t\tif (inContour) {\n\t\t\t\t\traster.lineTo(startX, startY);\n\t\t\t\t\tinContour = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Close final contour if still open\n\tif (inContour) {\n\t\traster.lineTo(startX, startY);\n\t}\n}\n\n/**\n * Convert font units to subpixel coordinates\n */\nfunction toSubpixel(value: number, scale: number, offset: number): number {\n\treturn Math.round((value * scale + offset) * ONE_PIXEL);\n}\n\n/**\n * Convert font units to subpixel coordinates with Y flip\n * Font coordinates are Y-up, bitmap is Y-down\n */\nfunction toSubpixelFlipY(value: number, scale: number, offset: number): number {\n\treturn Math.round((-value * scale + offset) * ONE_PIXEL);\n}\n\n/**\n * Calculate bounding box of path in pixel coordinates\n */\nexport function getPathBounds(\n\tpath: GlyphPath,\n\tscale: number,\n\tflipY: boolean = true,\n): { minX: number; minY: number; maxX: number; maxY: number } | null {\n\tif (!path.bounds) return null;\n\n\tconst b = path.bounds;\n\n\tif (flipY) {\n\t\treturn {\n\t\t\tminX: Math.floor(b.xMin * scale),\n\t\t\tminY: Math.floor(-b.yMax * scale),\n\t\t\tmaxX: Math.ceil(b.xMax * scale),\n\t\t\tmaxY: Math.ceil(-b.yMin * scale),\n\t\t};\n\t} else {\n\t\treturn {\n\t\t\tminX: Math.floor(b.xMin * scale),\n\t\t\tminY: Math.floor(b.yMin * scale),\n\t\t\tmaxX: Math.ceil(b.xMax * scale),\n\t\t\tmaxY: Math.ceil(b.yMax * scale),\n\t\t};\n\t}\n}\n\n/**\n * Get fill rule from outline flags (like FreeType's FT_OUTLINE_EVEN_ODD_FILL check)\n *\n * @param path Path with optional flags\n * @param defaultRule Default fill rule if flags not set\n * @returns Fill rule to use\n */\nexport function getFillRuleFromFlags(\n\tpath: GlyphPath | null | undefined,\n\tdefaultRule: FillRule = FillRule.NonZero,\n): FillRule {\n\tif (!path?.flags) return defaultRule;\n\treturn (path.flags & OutlineFlags.EvenOddFill) !== 0\n\t\t? FillRule.EvenOdd\n\t\t: FillRule.NonZero;\n}\n",
86
+ "/**\n * Exact bounding box calculation for paths with bezier curves\n *\n * Bezier curves can extend beyond their control points, so we need to find\n * the actual extrema by solving for where the derivative equals zero.\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\n\n/**\n * Bounding box in 2D space\n */\nexport interface BBox {\n\txMin: number;\n\tyMin: number;\n\txMax: number;\n\tyMax: number;\n}\n\n/**\n * Calculate exact bounding box for a path\n *\n * For line segments: min/max of endpoints\n * For quadratic bezier: find t where derivative = 0, evaluate curve at those t values\n * For cubic bezier: solve quadratic for extrema, evaluate curve at those t values\n *\n * @param path - Path to calculate bounds for\n * @returns Bounding box or null for empty path\n */\nexport function getExactBounds(path: GlyphPath): BBox | null {\n\tif (!path.commands || path.commands.length === 0) {\n\t\treturn null;\n\t}\n\n\tlet xMin = Infinity;\n\tlet yMin = Infinity;\n\tlet xMax = -Infinity;\n\tlet yMax = -Infinity;\n\n\tlet currentX = 0;\n\tlet currentY = 0;\n\tlet hasPoints = false;\n\n\tconst updateBounds = (x: number, y: number) => {\n\t\txMin = Math.min(xMin, x);\n\t\tyMin = Math.min(yMin, y);\n\t\txMax = Math.max(xMax, x);\n\t\tyMax = Math.max(yMax, y);\n\t\thasPoints = true;\n\t};\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\": {\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tupdateBounds(currentX, currentY);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"L\": {\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tupdateBounds(currentX, currentY);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Q\": {\n\t\t\t\t// Quadratic bezier from (currentX, currentY) to (cmd.x, cmd.y)\n\t\t\t\t// with control point (cmd.x1, cmd.y1)\n\n\t\t\t\t// Check start point (already in bounds from previous command)\n\t\t\t\t// Check end point\n\t\t\t\tupdateBounds(cmd.x, cmd.y);\n\n\t\t\t\t// Find extrema in X direction\n\t\t\t\tconst xExtrema = getQuadraticExtrema(currentX, cmd.x1, cmd.x);\n\t\t\t\tfor (const t of xExtrema) {\n\t\t\t\t\tconst x = evaluateQuadratic(currentX, cmd.x1, cmd.x, t);\n\t\t\t\t\tupdateBounds(x, currentY); // Use current Y temporarily\n\t\t\t\t}\n\n\t\t\t\t// Find extrema in Y direction\n\t\t\t\tconst yExtrema = getQuadraticExtrema(currentY, cmd.y1, cmd.y);\n\t\t\t\tfor (const t of yExtrema) {\n\t\t\t\t\tconst y = evaluateQuadratic(currentY, cmd.y1, cmd.y, t);\n\t\t\t\t\tupdateBounds(currentX, y); // Use current X temporarily\n\t\t\t\t}\n\n\t\t\t\t// Evaluate both X and Y at extrema points\n\t\t\t\tconst allExtrema = new Set([...xExtrema, ...yExtrema]);\n\t\t\t\tfor (const t of allExtrema) {\n\t\t\t\t\tconst x = evaluateQuadratic(currentX, cmd.x1, cmd.x, t);\n\t\t\t\t\tconst y = evaluateQuadratic(currentY, cmd.y1, cmd.y, t);\n\t\t\t\t\tupdateBounds(x, y);\n\t\t\t\t}\n\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"C\": {\n\t\t\t\t// Cubic bezier from (currentX, currentY) to (cmd.x, cmd.y)\n\t\t\t\t// with control points (cmd.x1, cmd.y1) and (cmd.x2, cmd.y2)\n\n\t\t\t\t// Check end point\n\t\t\t\tupdateBounds(cmd.x, cmd.y);\n\n\t\t\t\t// Find extrema in X direction\n\t\t\t\tconst xExtrema = getCubicExtrema(currentX, cmd.x1, cmd.x2, cmd.x);\n\t\t\t\tfor (const t of xExtrema) {\n\t\t\t\t\tconst x = evaluateCubic(currentX, cmd.x1, cmd.x2, cmd.x, t);\n\t\t\t\t\tupdateBounds(x, currentY); // Use current Y temporarily\n\t\t\t\t}\n\n\t\t\t\t// Find extrema in Y direction\n\t\t\t\tconst yExtrema = getCubicExtrema(currentY, cmd.y1, cmd.y2, cmd.y);\n\t\t\t\tfor (const t of yExtrema) {\n\t\t\t\t\tconst y = evaluateCubic(currentY, cmd.y1, cmd.y2, cmd.y, t);\n\t\t\t\t\tupdateBounds(currentX, y); // Use current X temporarily\n\t\t\t\t}\n\n\t\t\t\t// Evaluate both X and Y at extrema points\n\t\t\t\tconst allExtrema = new Set([...xExtrema, ...yExtrema]);\n\t\t\t\tfor (const t of allExtrema) {\n\t\t\t\t\tconst x = evaluateCubic(currentX, cmd.x1, cmd.x2, cmd.x, t);\n\t\t\t\t\tconst y = evaluateCubic(currentY, cmd.y1, cmd.y2, cmd.y, t);\n\t\t\t\t\tupdateBounds(x, y);\n\t\t\t\t}\n\n\t\t\t\tcurrentX = cmd.x;\n\t\t\t\tcurrentY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Z\": {\n\t\t\t\t// Close path - no bounds update needed\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!hasPoints) {\n\t\treturn null;\n\t}\n\n\treturn { xMin, yMin, xMax, yMax };\n}\n\n/**\n * Find t values where a quadratic bezier has extrema\n *\n * For quadratic bezier B(t) = (1-t)²p0 + 2(1-t)t*p1 + t²p2\n * Derivative: B'(t) = 2(1-t)(p1-p0) + 2t(p2-p1)\n * = 2(p1-p0) + 2t(p0-2p1+p2)\n * = 2[(p1-p0) + t(p0-2p1+p2)]\n *\n * Set B'(t) = 0:\n * (p1-p0) + t(p0-2p1+p2) = 0\n * t = -(p1-p0)/(p0-2p1+p2)\n * = (p0-p1)/(p0-2p1+p2)\n *\n * @param p0 - Start point\n * @param p1 - Control point\n * @param p2 - End point\n * @returns Array of t values in [0,1] where extrema occur\n */\nexport function getQuadraticExtrema(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n): number[] {\n\tconst denominator = p0 - 2 * p1 + p2;\n\n\t// If denominator is zero, the curve is linear (no extrema)\n\tif (Math.abs(denominator) < 1e-10) {\n\t\treturn [];\n\t}\n\n\tconst t = (p0 - p1) / denominator;\n\n\t// Only include t values in the valid range [0, 1]\n\tif (t > 0 && t < 1) {\n\t\treturn [t];\n\t}\n\n\treturn [];\n}\n\n/**\n * Find t values where a cubic bezier has extrema\n *\n * For cubic bezier B(t) = (1-t)³p0 + 3(1-t)²t*p1 + 3(1-t)t²p2 + t³p3\n * Derivative: B'(t) = 3(1-t)²(p1-p0) + 6(1-t)t(p2-p1) + 3t²(p3-p2)\n *\n * Simplified: B'(t) = at² + bt + c where:\n * a = 3(p3 - 3p2 + 3p1 - p0)\n * b = 6(p2 - 2p1 + p0)\n * c = 3(p1 - p0)\n *\n * Solve using quadratic formula: t = (-b ± √(b²-4ac)) / 2a\n *\n * @param p0 - Start point\n * @param p1 - First control point\n * @param p2 - Second control point\n * @param p3 - End point\n * @returns Array of t values in [0,1] where extrema occur\n */\nexport function getCubicExtrema(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n): number[] {\n\tconst a = 3 * (p3 - 3 * p2 + 3 * p1 - p0);\n\tconst b = 6 * (p2 - 2 * p1 + p0);\n\tconst c = 3 * (p1 - p0);\n\n\tconst extrema: number[] = [];\n\n\t// If a is zero, we have a linear or quadratic equation\n\tif (Math.abs(a) < 1e-10) {\n\t\t// If b is also zero, there are no extrema (constant derivative)\n\t\tif (Math.abs(b) < 1e-10) {\n\t\t\treturn [];\n\t\t}\n\t\t// Linear equation: bt + c = 0 => t = -c/b\n\t\tconst t = -c / b;\n\t\tif (t > 0 && t < 1) {\n\t\t\textrema.push(t);\n\t\t}\n\t\treturn extrema;\n\t}\n\n\t// Quadratic formula\n\tconst discriminant = b * b - 4 * a * c;\n\n\t// No real solutions\n\tif (discriminant < 0) {\n\t\treturn [];\n\t}\n\n\t// One solution (discriminant = 0)\n\tif (Math.abs(discriminant) < 1e-10) {\n\t\tconst t = -b / (2 * a);\n\t\tif (t > 0 && t < 1) {\n\t\t\textrema.push(t);\n\t\t}\n\t\treturn extrema;\n\t}\n\n\t// Two solutions\n\tconst sqrtD = Math.sqrt(discriminant);\n\tconst t1 = (-b + sqrtD) / (2 * a);\n\tconst t2 = (-b - sqrtD) / (2 * a);\n\n\tif (t1 > 0 && t1 < 1) {\n\t\textrema.push(t1);\n\t}\n\tif (t2 > 0 && t2 < 1) {\n\t\textrema.push(t2);\n\t}\n\n\treturn extrema;\n}\n\n/**\n * Evaluate quadratic bezier at parameter t\n *\n * B(t) = (1-t)²p0 + 2(1-t)t*p1 + t²p2\n *\n * @param p0 - Start point\n * @param p1 - Control point\n * @param p2 - End point\n * @param t - Parameter in [0,1]\n * @returns Value at t\n */\nexport function evaluateQuadratic(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tt: number,\n): number {\n\tconst oneMinusT = 1 - t;\n\treturn oneMinusT * oneMinusT * p0 + 2 * oneMinusT * t * p1 + t * t * p2;\n}\n\n/**\n * Evaluate cubic bezier at parameter t\n *\n * B(t) = (1-t)³p0 + 3(1-t)²t*p1 + 3(1-t)t²p2 + t³p3\n *\n * @param p0 - Start point\n * @param p1 - First control point\n * @param p2 - Second control point\n * @param p3 - End point\n * @param t - Parameter in [0,1]\n * @returns Value at t\n */\nexport function evaluateCubic(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n\tt: number,\n): number {\n\tconst oneMinusT = 1 - t;\n\tconst oneMinusT2 = oneMinusT * oneMinusT;\n\tconst t2 = t * t;\n\n\treturn (\n\t\toneMinusT2 * oneMinusT * p0 +\n\t\t3 * oneMinusT2 * t * p1 +\n\t\t3 * oneMinusT * t2 * p2 +\n\t\tt2 * t * p3\n\t);\n}\n",
87
+ "/**\n * Bitmap manipulation utilities\n */\n\nimport { type Bitmap, createBitmap, PixelMode } from \"./types.ts\";\n\n/**\n * Embolden a bitmap by dilating pixel values\n * Makes text bolder by spreading coverage in x and y directions\n */\nexport function emboldenBitmap(\n\tbitmap: Bitmap,\n\txStrength: number,\n\tyStrength: number,\n): Bitmap {\n\tif (xStrength === 0 && yStrength === 0) {\n\t\treturn copyBitmap(bitmap);\n\t}\n\n\tconst result = createBitmap(bitmap.width, bitmap.rows, bitmap.pixelMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet maxVal = 0;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst val = bitmap.buffer[sy * bitmap.pitch + sx] ?? 0;\n\t\t\t\t\t\t\tmaxVal = Math.max(maxVal, val);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresult.buffer[y * result.pitch + x] = maxVal;\n\t\t\t}\n\t\t}\n\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet hasSet = false;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst byteIdx = sy * bitmap.pitch + (sx >> 3);\n\t\t\t\t\t\t\tconst bitIdx = 7 - (sx & 7);\n\t\t\t\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\t\t\t\tif (bit) {\n\t\t\t\t\t\t\t\thasSet = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (hasSet) break;\n\t\t\t\t}\n\n\t\t\t\tif (hasSet) {\n\t\t\t\t\tconst dstByteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst dstBitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[dstByteIdx] |= 1 << dstBitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tlet maxR = 0,\n\t\t\t\t\tmaxG = 0,\n\t\t\t\t\tmaxB = 0;\n\n\t\t\t\tfor (\n\t\t\t\t\tlet dy = -Math.floor(yStrength);\n\t\t\t\t\tdy <= Math.ceil(yStrength);\n\t\t\t\t\tdy++\n\t\t\t\t) {\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet dx = -Math.floor(xStrength);\n\t\t\t\t\t\tdx <= Math.ceil(xStrength);\n\t\t\t\t\t\tdx++\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst sx = x + dx;\n\t\t\t\t\t\tconst sy = y + dy;\n\n\t\t\t\t\t\tif (sx >= 0 && sx < bitmap.width && sy >= 0 && sy < bitmap.rows) {\n\t\t\t\t\t\t\tconst idx = sy * bitmap.pitch + sx * 3;\n\t\t\t\t\t\t\tmaxR = Math.max(maxR, bitmap.buffer[idx] ?? 0);\n\t\t\t\t\t\t\tmaxG = Math.max(maxG, bitmap.buffer[idx + 1] ?? 0);\n\t\t\t\t\t\t\tmaxB = Math.max(maxB, bitmap.buffer[idx + 2] ?? 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = maxR;\n\t\t\t\tresult.buffer[dstIdx + 1] = maxG;\n\t\t\t\tresult.buffer[dstIdx + 2] = maxB;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Convert bitmap between pixel modes\n */\nexport function convertBitmap(bitmap: Bitmap, targetMode: PixelMode): Bitmap {\n\tif (bitmap.pixelMode === targetMode) {\n\t\treturn bitmap;\n\t}\n\n\tconst result = createBitmap(bitmap.width, bitmap.rows, targetMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray && targetMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tif (gray >= 128) {\n\t\t\t\t\tconst byteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[byteIdx] |= 1 << bitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Mono &&\n\t\ttargetMode === PixelMode.Gray\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\tresult.buffer[y * result.pitch + x] = bit ? 255 : 0;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Gray &&\n\t\ttargetMode === PixelMode.LCD\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = gray;\n\t\t\t\tresult.buffer[dstIdx + 1] = gray;\n\t\t\t\tresult.buffer[dstIdx + 2] = gray;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Mono &&\n\t\ttargetMode === PixelMode.LCD\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1;\n\t\t\t\tconst val = bit ? 255 : 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = val;\n\t\t\t\tresult.buffer[dstIdx + 1] = val;\n\t\t\t\tresult.buffer[dstIdx + 2] = val;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.Gray &&\n\t\ttargetMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst gray = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\t\t\t\tresult.buffer[dstIdx] = gray;\n\t\t\t\tresult.buffer[dstIdx + 1] = gray;\n\t\t\t\tresult.buffer[dstIdx + 2] = gray;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD &&\n\t\ttargetMode === PixelMode.Gray\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x * 3;\n\t\t\t\tconst r = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tconst g = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tconst b = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t\tresult.buffer[y * result.pitch + x] = Math.floor((r + g + b) / 3);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Alpha blend src bitmap onto dst bitmap at position (x, y)\n */\nexport function blendBitmap(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tx: number,\n\ty: number,\n\topacity: number,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\topacity = Math.max(0, Math.min(1, opacity));\n\n\tconst startX = Math.max(0, -x);\n\tconst startY = Math.max(0, -y);\n\tconst endX = Math.min(src.width, dst.width - x);\n\tconst endY = Math.min(src.rows, dst.rows - y);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = x + sx;\n\t\t\tconst dy = y + sy;\n\n\t\t\tif (dx >= 0 && dx < dst.width && dy >= 0 && dy < dst.rows) {\n\t\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\n\t\t\t\tconst blended = dstVal + srcVal * opacity;\n\t\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.min(255, Math.floor(blended));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Create a deep copy of a bitmap\n */\nexport function copyBitmap(bitmap: Bitmap): Bitmap {\n\treturn {\n\t\tbuffer: new Uint8Array(bitmap.buffer),\n\t\twidth: bitmap.width,\n\t\trows: bitmap.rows,\n\t\tpitch: bitmap.pitch,\n\t\tpixelMode: bitmap.pixelMode,\n\t\tnumGrays: bitmap.numGrays,\n\t};\n}\n\n/**\n * Resize bitmap using nearest-neighbor interpolation\n */\nexport function resizeBitmap(\n\tbitmap: Bitmap,\n\tnewWidth: number,\n\tnewHeight: number,\n): Bitmap {\n\tconst result = createBitmap(newWidth, newHeight, bitmap.pixelMode);\n\n\tconst xRatio = bitmap.width / newWidth;\n\tconst yRatio = bitmap.rows / newHeight;\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\t\t\t\tresult.buffer[y * result.pitch + x] =\n\t\t\t\t\tbitmap.buffer[sy * bitmap.pitch + sx] ?? 0;\n\t\t\t}\n\t\t}\n\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\n\t\t\t\tconst srcByteIdx = sy * bitmap.pitch + (sx >> 3);\n\t\t\t\tconst srcBitIdx = 7 - (sx & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[srcByteIdx] ?? 0) >> srcBitIdx) & 1;\n\n\t\t\t\tif (bit) {\n\t\t\t\t\tconst dstByteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst dstBitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[dstByteIdx] |= 1 << dstBitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < newHeight; y++) {\n\t\t\tfor (let x = 0; x < newWidth; x++) {\n\t\t\t\tconst sx = Math.floor(x * xRatio);\n\t\t\t\tconst sy = Math.floor(y * yRatio);\n\n\t\t\t\tconst srcIdx = sy * bitmap.pitch + sx * 3;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\n\t\t\t\tresult.buffer[dstIdx] = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 1] = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 2] = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Add two bitmaps together (additive blend)\n * Result: dst = clamp(dst + src, 0, 255)\n * Used for combining glyph with shadow/glow\n */\nexport function addBitmaps(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number = 0,\n\tsrcY: number = 0,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -srcX);\n\tconst startY = Math.max(0, -srcY);\n\tconst endX = Math.min(src.width, dst.width - srcX);\n\tconst endY = Math.min(src.rows, dst.rows - srcY);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tconst dy = srcY + sy;\n\t\tif (dy < 0 || dy >= dst.rows) continue;\n\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = srcX + sx;\n\t\t\tif (dx < 0 || dx >= dst.width) continue;\n\n\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.min(255, srcVal + dstVal);\n\t\t}\n\t}\n}\n\n/**\n * Multiply two bitmaps (multiplicative blend)\n * Result: dst = (dst * src) / 255\n * Used for masking operations\n */\nexport function mulBitmaps(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number = 0,\n\tsrcY: number = 0,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -srcX);\n\tconst startY = Math.max(0, -srcY);\n\tconst endX = Math.min(src.width, dst.width - srcX);\n\tconst endY = Math.min(src.rows, dst.rows - srcY);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tconst dy = srcY + sy;\n\t\tif (dy < 0 || dy >= dst.rows) continue;\n\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = srcX + sx;\n\t\t\tif (dx < 0 || dx >= dst.width) continue;\n\n\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\t\t\t// Use integer math for speed: (a * b + 127) / 255 ≈ (a * b) >> 8\n\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.floor(\n\t\t\t\t(srcVal * dstVal + 127) / 255,\n\t\t\t);\n\t\t}\n\t}\n}\n\n/**\n * Subtract src from dst (subtractive blend)\n * Result: dst = clamp(dst - src, 0, 255)\n * Used for outline effects\n */\nexport function subBitmaps(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number = 0,\n\tsrcY: number = 0,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -srcX);\n\tconst startY = Math.max(0, -srcY);\n\tconst endX = Math.min(src.width, dst.width - srcX);\n\tconst endY = Math.min(src.rows, dst.rows - srcY);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tconst dy = srcY + sy;\n\t\tif (dy < 0 || dy >= dst.rows) continue;\n\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = srcX + sx;\n\t\t\tif (dx < 0 || dx >= dst.width) continue;\n\n\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.max(0, dstVal - srcVal);\n\t\t}\n\t}\n}\n\n/**\n * Alpha composite src over dst using src as alpha\n * Result: dst = src + dst * (1 - src/255)\n * Standard Porter-Duff \"over\" operation\n */\nexport function compositeBitmaps(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number = 0,\n\tsrcY: number = 0,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -srcX);\n\tconst startY = Math.max(0, -srcY);\n\tconst endX = Math.min(src.width, dst.width - srcX);\n\tconst endY = Math.min(src.rows, dst.rows - srcY);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tconst dy = srcY + sy;\n\t\tif (dy < 0 || dy >= dst.rows) continue;\n\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = srcX + sx;\n\t\t\tif (dx < 0 || dx >= dst.width) continue;\n\n\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\t\t\t// src + dst * (255 - src) / 255\n\t\t\tconst result = srcVal + Math.floor((dstVal * (255 - srcVal) + 127) / 255);\n\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.min(255, result);\n\t\t}\n\t}\n}\n\n/**\n * Shift bitmap position by integer offset\n * Creates a new bitmap with the content shifted\n */\nexport function shiftBitmap(\n\tbitmap: Bitmap,\n\tshiftX: number,\n\tshiftY: number,\n): Bitmap {\n\tconst result = createBitmap(bitmap.width, bitmap.rows, bitmap.pixelMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tconst sy = y - shiftY;\n\t\t\tif (sy < 0 || sy >= bitmap.rows) continue;\n\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst sx = x - shiftX;\n\t\t\t\tif (sx < 0 || sx >= bitmap.width) continue;\n\n\t\t\t\tresult.buffer[y * result.pitch + x] =\n\t\t\t\t\tbitmap.buffer[sy * bitmap.pitch + sx] ?? 0;\n\t\t\t}\n\t\t}\n\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tconst sy = y - shiftY;\n\t\t\tif (sy < 0 || sy >= bitmap.rows) continue;\n\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst sx = x - shiftX;\n\t\t\t\tif (sx < 0 || sx >= bitmap.width) continue;\n\n\t\t\t\tconst srcByteIdx = sy * bitmap.pitch + (sx >> 3);\n\t\t\t\tconst srcBitIdx = 7 - (sx & 7);\n\t\t\t\tconst bit = ((bitmap.buffer[srcByteIdx] ?? 0) >> srcBitIdx) & 1;\n\n\t\t\t\tif (bit) {\n\t\t\t\t\tconst dstByteIdx = y * result.pitch + (x >> 3);\n\t\t\t\t\tconst dstBitIdx = 7 - (x & 7);\n\t\t\t\t\tresult.buffer[dstByteIdx] |= 1 << dstBitIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tconst sy = y - shiftY;\n\t\t\tif (sy < 0 || sy >= bitmap.rows) continue;\n\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst sx = x - shiftX;\n\t\t\t\tif (sx < 0 || sx >= bitmap.width) continue;\n\n\t\t\t\tconst srcIdx = sy * bitmap.pitch + sx * 3;\n\t\t\t\tconst dstIdx = y * result.pitch + x * 3;\n\n\t\t\t\tresult.buffer[dstIdx] = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 1] = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 2] = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Fix outline bitmap by removing glyph interior\n * Used when you want only the border, not the filled shape\n * Result: outline = outline - glyph (where glyph coverage > threshold)\n */\nexport function fixOutline(\n\toutlineBitmap: Bitmap,\n\tglyphBitmap: Bitmap,\n\tglyphX: number = 0,\n\tglyphY: number = 0,\n\tthreshold: number = 128,\n): void {\n\tif (\n\t\toutlineBitmap.pixelMode !== PixelMode.Gray ||\n\t\tglyphBitmap.pixelMode !== PixelMode.Gray\n\t) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -glyphX);\n\tconst startY = Math.max(0, -glyphY);\n\tconst endX = Math.min(glyphBitmap.width, outlineBitmap.width - glyphX);\n\tconst endY = Math.min(glyphBitmap.rows, outlineBitmap.rows - glyphY);\n\n\tfor (let gy = startY; gy < endY; gy++) {\n\t\tconst oy = glyphY + gy;\n\t\tif (oy < 0 || oy >= outlineBitmap.rows) continue;\n\n\t\tfor (let gx = startX; gx < endX; gx++) {\n\t\t\tconst ox = glyphX + gx;\n\t\t\tif (ox < 0 || ox >= outlineBitmap.width) continue;\n\n\t\t\tconst glyphVal = glyphBitmap.buffer[gy * glyphBitmap.pitch + gx] ?? 0;\n\t\t\tif (glyphVal >= threshold) {\n\t\t\t\t// Zero out outline where glyph is solid\n\t\t\t\toutlineBitmap.buffer[oy * outlineBitmap.pitch + ox] = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Maximum blend: take the maximum of two bitmaps\n * Result: dst = max(dst, src)\n * Used for combining multiple layers\n */\nexport function maxBitmaps(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number = 0,\n\tsrcY: number = 0,\n): void {\n\tif (dst.pixelMode !== PixelMode.Gray || src.pixelMode !== PixelMode.Gray) {\n\t\treturn;\n\t}\n\n\tconst startX = Math.max(0, -srcX);\n\tconst startY = Math.max(0, -srcY);\n\tconst endX = Math.min(src.width, dst.width - srcX);\n\tconst endY = Math.min(src.rows, dst.rows - srcY);\n\n\tfor (let sy = startY; sy < endY; sy++) {\n\t\tconst dy = srcY + sy;\n\t\tif (dy < 0 || dy >= dst.rows) continue;\n\n\t\tfor (let sx = startX; sx < endX; sx++) {\n\t\t\tconst dx = srcX + sx;\n\t\t\tif (dx < 0 || dx >= dst.width) continue;\n\n\t\t\tconst srcVal = src.buffer[sy * src.pitch + sx] ?? 0;\n\t\t\tconst dstVal = dst.buffer[dy * dst.pitch + dx] ?? 0;\n\t\t\tdst.buffer[dy * dst.pitch + dx] = Math.max(srcVal, dstVal);\n\t\t}\n\t}\n}\n\n/**\n * Create a padded copy of a bitmap with extra space around edges\n * Useful before blur operations to prevent edge artifacts\n */\nexport function padBitmap(\n\tbitmap: Bitmap,\n\tpadLeft: number,\n\tpadTop: number,\n\tpadRight: number,\n\tpadBottom: number,\n): Bitmap {\n\tconst newWidth = bitmap.width + padLeft + padRight;\n\tconst newHeight = bitmap.rows + padTop + padBottom;\n\tconst result = createBitmap(newWidth, newHeight, bitmap.pixelMode);\n\n\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tresult.buffer[(y + padTop) * result.pitch + (x + padLeft)] =\n\t\t\t\t\tbitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x * 3;\n\t\t\t\tconst dstIdx = (y + padTop) * result.pitch + (x + padLeft) * 3;\n\t\t\t\tresult.buffer[dstIdx] = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 1] = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tresult.buffer[dstIdx + 2] = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Create an expanded bitmap that can contain both dst and src\n * Returns the expanded bitmap and the offsets for both original bitmaps\n */\nexport function expandToFit(\n\tdst: Bitmap,\n\tsrc: Bitmap,\n\tsrcX: number,\n\tsrcY: number,\n): {\n\texpanded: Bitmap;\n\tdstOffsetX: number;\n\tdstOffsetY: number;\n\tsrcOffsetX: number;\n\tsrcOffsetY: number;\n} {\n\t// Calculate bounds\n\tconst dstLeft = 0;\n\tconst dstTop = 0;\n\tconst dstRight = dst.width;\n\tconst dstBottom = dst.rows;\n\n\tconst srcLeft = srcX;\n\tconst srcTop = srcY;\n\tconst srcRight = srcX + src.width;\n\tconst srcBottom = srcY + src.rows;\n\n\tconst left = Math.min(dstLeft, srcLeft);\n\tconst top = Math.min(dstTop, srcTop);\n\tconst right = Math.max(dstRight, srcRight);\n\tconst bottom = Math.max(dstBottom, srcBottom);\n\n\tconst newWidth = right - left;\n\tconst newHeight = bottom - top;\n\n\tconst expanded = createBitmap(newWidth, newHeight, dst.pixelMode);\n\n\tconst dstOffsetX = dstLeft - left;\n\tconst dstOffsetY = dstTop - top;\n\tconst srcOffsetX = srcLeft - left;\n\tconst srcOffsetY = srcTop - top;\n\n\t// Copy dst to expanded\n\tif (dst.pixelMode === PixelMode.Gray) {\n\t\tfor (let y = 0; y < dst.rows; y++) {\n\t\t\tfor (let x = 0; x < dst.width; x++) {\n\t\t\t\texpanded.buffer[(y + dstOffsetY) * expanded.pitch + (x + dstOffsetX)] =\n\t\t\t\t\tdst.buffer[y * dst.pitch + x] ?? 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { expanded, dstOffsetX, dstOffsetY, srcOffsetX, srcOffsetY };\n}\n",
88
+ "/**\n * Bitmap blur filters - Gaussian and Box blur\n */\n\nimport { convertBitmap } from \"./bitmap-utils.ts\";\nimport { type Bitmap, PixelMode } from \"./types.ts\";\n\n/**\n * Generate 1D Gaussian kernel\n * Uses Gaussian function: exp(-x²/(2σ²))\n */\nexport function createGaussianKernel(radius: number): Float32Array {\n\tif (radius <= 0) {\n\t\treturn new Float32Array([1.0]);\n\t}\n\n\t// sigma = radius, kernel extends to 3*sigma on each side\n\t// This captures >99% of the Gaussian\n\tconst sigma = radius;\n\tconst size = Math.ceil(radius * 2) * 2 + 1;\n\tconst kernel = new Float32Array(size);\n\tconst center = Math.floor(size / 2);\n\n\tlet sum = 0;\n\n\t// Calculate kernel weights\n\tfor (let i = 0; i < size; i++) {\n\t\tconst x = i - center;\n\t\tconst weight = Math.exp(-(x * x) / (2 * sigma * sigma));\n\t\tkernel[i] = weight;\n\t\tsum += weight;\n\t}\n\n\t// Normalize to sum to 1.0\n\tfor (let i = 0; i < size; i++) {\n\t\tkernel[i] /= sum;\n\t}\n\n\treturn kernel;\n}\n\n/**\n * Apply 1D convolution along a row (horizontal)\n */\nfunction convolveHorizontal(\n\tsrc: Uint8Array,\n\tdst: Uint8Array,\n\twidth: number,\n\theight: number,\n\tsrcPitch: number,\n\tdstPitch: number,\n\tkernel: Float32Array,\n\tchannels: number,\n): void {\n\tconst radius = Math.floor(kernel.length / 2);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t\tlet sum = 0;\n\n\t\t\t\tfor (let k = 0; k < kernel.length; k++) {\n\t\t\t\t\tconst sx = x + k - radius;\n\n\t\t\t\t\t// Clamp to edges\n\t\t\t\t\tconst clampedX = Math.max(0, Math.min(width - 1, sx));\n\t\t\t\t\tconst srcIdx = y * srcPitch + clampedX * channels + c;\n\t\t\t\t\tsum += (src[srcIdx] ?? 0) * kernel[k];\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * dstPitch + x * channels + c;\n\t\t\t\tdst[dstIdx] = Math.min(255, Math.max(0, Math.round(sum)));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Apply 1D convolution along a column (vertical)\n */\nfunction convolveVertical(\n\tsrc: Uint8Array,\n\tdst: Uint8Array,\n\twidth: number,\n\theight: number,\n\tsrcPitch: number,\n\tdstPitch: number,\n\tkernel: Float32Array,\n\tchannels: number,\n): void {\n\tconst radius = Math.floor(kernel.length / 2);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t\tlet sum = 0;\n\n\t\t\t\tfor (let k = 0; k < kernel.length; k++) {\n\t\t\t\t\tconst sy = y + k - radius;\n\n\t\t\t\t\t// Clamp to edges\n\t\t\t\t\tconst clampedY = Math.max(0, Math.min(height - 1, sy));\n\t\t\t\t\tconst srcIdx = clampedY * srcPitch + x * channels + c;\n\t\t\t\t\tsum += (src[srcIdx] ?? 0) * kernel[k];\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * dstPitch + x * channels + c;\n\t\t\t\tdst[dstIdx] = Math.min(255, Math.max(0, Math.round(sum)));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Gaussian blur implementation using separable 2-pass algorithm\n * Modifies bitmap in-place and returns it\n */\nexport function gaussianBlur(bitmap: Bitmap, radius: number): Bitmap {\n\t// Handle Mono by converting to Gray first\n\tif (bitmap.pixelMode === PixelMode.Mono) {\n\t\tconst converted = convertBitmap(bitmap, PixelMode.Gray);\n\t\treturn gaussianBlur(converted, radius);\n\t}\n\n\tif (radius <= 0) {\n\t\treturn bitmap;\n\t}\n\n\tconst kernel = createGaussianKernel(radius);\n\n\t// Determine channels based on pixel mode\n\tlet channels = 1;\n\tif (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tchannels = 3;\n\t} else if (bitmap.pixelMode === PixelMode.RGBA) {\n\t\tchannels = 4;\n\t}\n\n\t// Create temporary buffer for intermediate results\n\tconst temp = new Uint8Array(bitmap.buffer.length);\n\n\t// Pass 1: Horizontal blur (src -> temp)\n\tconvolveHorizontal(\n\t\tbitmap.buffer,\n\t\ttemp,\n\t\tbitmap.width,\n\t\tbitmap.rows,\n\t\tbitmap.pitch,\n\t\tbitmap.pitch,\n\t\tkernel,\n\t\tchannels,\n\t);\n\n\t// Pass 2: Vertical blur (temp -> bitmap.buffer)\n\tconvolveVertical(\n\t\ttemp,\n\t\tbitmap.buffer,\n\t\tbitmap.width,\n\t\tbitmap.rows,\n\t\tbitmap.pitch,\n\t\tbitmap.pitch,\n\t\tkernel,\n\t\tchannels,\n\t);\n\n\treturn bitmap;\n}\n\n/**\n * Box blur using running sum for O(1) per pixel\n * Modifies bitmap in-place and returns it\n */\nexport function boxBlur(bitmap: Bitmap, radius: number): Bitmap {\n\t// Handle Mono by converting to Gray first\n\tif (bitmap.pixelMode === PixelMode.Mono) {\n\t\tconst converted = convertBitmap(bitmap, PixelMode.Gray);\n\t\treturn boxBlur(converted, radius);\n\t}\n\n\tif (radius <= 0) {\n\t\treturn bitmap;\n\t}\n\n\t// Determine channels based on pixel mode\n\tlet channels = 1;\n\tif (\n\t\tbitmap.pixelMode === PixelMode.LCD ||\n\t\tbitmap.pixelMode === PixelMode.LCD_V\n\t) {\n\t\tchannels = 3;\n\t} else if (bitmap.pixelMode === PixelMode.RGBA) {\n\t\tchannels = 4;\n\t}\n\n\tconst iRadius = Math.floor(radius);\n\tconst _kernelSize = iRadius * 2 + 1;\n\n\t// Create temporary buffer\n\tconst temp = new Uint8Array(bitmap.buffer.length);\n\n\t// Pass 1: Horizontal box blur using running sum\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t// Initialize running sum\n\t\t\tlet sum = 0;\n\t\t\tlet count = 0;\n\n\t\t\t// Initialize sum with first window\n\t\t\tfor (let x = -iRadius; x <= iRadius; x++) {\n\t\t\t\tif (x >= 0 && x < bitmap.width) {\n\t\t\t\t\tconst idx = y * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += bitmap.buffer[idx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// First pixel\n\t\t\tconst dstIdx0 = y * bitmap.pitch + 0 * channels + c;\n\t\t\ttemp[dstIdx0] = Math.round(sum / count);\n\n\t\t\t// Slide window across row\n\t\t\tfor (let x = 1; x < bitmap.width; x++) {\n\t\t\t\t// Remove left pixel from sum\n\t\t\t\tconst leftX = x - iRadius - 1;\n\t\t\t\tif (leftX >= 0) {\n\t\t\t\t\tconst leftIdx = y * bitmap.pitch + leftX * channels + c;\n\t\t\t\t\tsum -= bitmap.buffer[leftIdx] ?? 0;\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\n\t\t\t\t// Add right pixel to sum\n\t\t\t\tconst rightX = x + iRadius;\n\t\t\t\tif (rightX < bitmap.width) {\n\t\t\t\t\tconst rightIdx = y * bitmap.pitch + rightX * channels + c;\n\t\t\t\t\tsum += bitmap.buffer[rightIdx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * bitmap.pitch + x * channels + c;\n\t\t\t\ttemp[dstIdx] = Math.round(sum / count);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass 2: Vertical box blur using running sum\n\tfor (let x = 0; x < bitmap.width; x++) {\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\t// Initialize running sum\n\t\t\tlet sum = 0;\n\t\t\tlet count = 0;\n\n\t\t\t// Initialize sum with first window\n\t\t\tfor (let y = -iRadius; y <= iRadius; y++) {\n\t\t\t\tif (y >= 0 && y < bitmap.rows) {\n\t\t\t\t\tconst idx = y * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += temp[idx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// First pixel\n\t\t\tconst dstIdx0 = 0 * bitmap.pitch + x * channels + c;\n\t\t\tbitmap.buffer[dstIdx0] = Math.round(sum / count);\n\n\t\t\t// Slide window down column\n\t\t\tfor (let y = 1; y < bitmap.rows; y++) {\n\t\t\t\t// Remove top pixel from sum\n\t\t\t\tconst topY = y - iRadius - 1;\n\t\t\t\tif (topY >= 0) {\n\t\t\t\t\tconst topIdx = topY * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum -= temp[topIdx] ?? 0;\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\n\t\t\t\t// Add bottom pixel to sum\n\t\t\t\tconst bottomY = y + iRadius;\n\t\t\t\tif (bottomY < bitmap.rows) {\n\t\t\t\t\tconst bottomIdx = bottomY * bitmap.pitch + x * channels + c;\n\t\t\t\t\tsum += temp[bottomIdx] ?? 0;\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\n\t\t\t\tconst dstIdx = y * bitmap.pitch + x * channels + c;\n\t\t\t\tbitmap.buffer[dstIdx] = Math.round(sum / count);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Apply blur filter to a bitmap in-place\n * @param bitmap - Bitmap to blur (modified in-place)\n * @param radius - Blur radius in pixels (can be fractional)\n * @param type - Blur type: 'gaussian' (default) or 'box'\n * @returns The modified bitmap\n */\nexport function blurBitmap(\n\tbitmap: Bitmap,\n\tradius: number,\n\ttype: \"gaussian\" | \"box\" = \"gaussian\",\n): Bitmap {\n\tif (type === \"box\") {\n\t\treturn boxBlur(bitmap, radius);\n\t} else {\n\t\treturn gaussianBlur(bitmap, radius);\n\t}\n}\n",
89
+ "/**\n * Gradient fill rendering for paths\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\nimport { rasterizePath } from \"./rasterize.ts\";\nimport {\n\ttype Bitmap,\n\tcreateBitmap,\n\tPixelMode,\n\ttype RasterizeOptions,\n} from \"./types.ts\";\n\n/**\n * Color stop in a gradient (RGBA, 0-255 each)\n */\nexport interface ColorStop {\n\t/** Position along gradient, 0.0 to 1.0 */\n\toffset: number;\n\t/** RGBA color values, 0-255 each */\n\tcolor: [number, number, number, number];\n}\n\n/**\n * Linear gradient from point (x0,y0) to (x1,y1)\n */\nexport interface LinearGradient {\n\ttype: \"linear\";\n\t/** Start X coordinate */\n\tx0: number;\n\t/** Start Y coordinate */\n\ty0: number;\n\t/** End X coordinate */\n\tx1: number;\n\t/** End Y coordinate */\n\ty1: number;\n\t/** Color stops */\n\tstops: ColorStop[];\n}\n\n/**\n * Radial gradient from center point with radius\n */\nexport interface RadialGradient {\n\ttype: \"radial\";\n\t/** Center X coordinate */\n\tcx: number;\n\t/** Center Y coordinate */\n\tcy: number;\n\t/** Gradient radius */\n\tradius: number;\n\t/** Color stops */\n\tstops: ColorStop[];\n}\n\n/**\n * Gradient type union\n */\nexport type Gradient = LinearGradient | RadialGradient;\n\n/**\n * Interpolate color between two stops\n */\nfunction lerpColor(\n\tcolor1: [number, number, number, number],\n\tcolor2: [number, number, number, number],\n\tt: number,\n): [number, number, number, number] {\n\treturn [\n\t\tMath.round(color1[0] + (color2[0] - color1[0]) * t),\n\t\tMath.round(color1[1] + (color2[1] - color1[1]) * t),\n\t\tMath.round(color1[2] + (color2[2] - color1[2]) * t),\n\t\tMath.round(color1[3] + (color2[3] - color1[3]) * t),\n\t];\n}\n\n/**\n * Get color at position in gradient\n */\nexport function interpolateGradient(\n\tgradient: Gradient,\n\tx: number,\n\ty: number,\n): [number, number, number, number] {\n\tif (gradient.stops.length === 0) {\n\t\treturn [0, 0, 0, 0];\n\t}\n\n\tif (gradient.stops.length === 1) {\n\t\treturn gradient.stops[0].color;\n\t}\n\n\tlet t: number;\n\n\tif (gradient.type === \"linear\") {\n\t\tconst dx = gradient.x1 - gradient.x0;\n\t\tconst dy = gradient.y1 - gradient.y0;\n\t\tconst lengthSq = dx * dx + dy * dy;\n\n\t\tif (lengthSq === 0) {\n\t\t\treturn gradient.stops[0].color;\n\t\t}\n\n\t\tconst px = x - gradient.x0;\n\t\tconst py = y - gradient.y0;\n\t\tt = (px * dx + py * dy) / lengthSq;\n\t} else {\n\t\tconst dx = x - gradient.cx;\n\t\tconst dy = y - gradient.cy;\n\t\tconst distance = Math.sqrt(dx * dx + dy * dy);\n\t\tt = gradient.radius > 0 ? distance / gradient.radius : 0;\n\t}\n\n\tt = Math.max(0, Math.min(1, t));\n\n\tconst sortedStops = [...gradient.stops].sort((a, b) => a.offset - b.offset);\n\n\tif (t <= sortedStops[0].offset) {\n\t\treturn sortedStops[0].color;\n\t}\n\n\tif (t >= sortedStops[sortedStops.length - 1].offset) {\n\t\treturn sortedStops[sortedStops.length - 1].color;\n\t}\n\n\tfor (let i = 0; i < sortedStops.length - 1; i++) {\n\t\tconst stop1 = sortedStops[i];\n\t\tconst stop2 = sortedStops[i + 1];\n\n\t\tif (t >= stop1.offset && t <= stop2.offset) {\n\t\t\tconst range = stop2.offset - stop1.offset;\n\t\t\tif (range === 0) {\n\t\t\t\treturn stop2.color;\n\t\t\t}\n\t\t\tconst localT = (t - stop1.offset) / range;\n\t\t\treturn lerpColor(stop1.color, stop2.color, localT);\n\t\t}\n\t}\n\n\treturn sortedStops[sortedStops.length - 1].color;\n}\n\n/**\n * Create a bitmap filled with gradient (no path)\n */\nexport function createGradientBitmap(\n\twidth: number,\n\theight: number,\n\tgradient: Gradient,\n): Bitmap {\n\tconst bitmap = createBitmap(width, height, PixelMode.RGBA);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst color = interpolateGradient(gradient, x, y);\n\t\t\tconst idx = (y * width + x) * 4;\n\t\t\tbitmap.buffer[idx] = color[0];\n\t\t\tbitmap.buffer[idx + 1] = color[1];\n\t\t\tbitmap.buffer[idx + 2] = color[2];\n\t\t\tbitmap.buffer[idx + 3] = color[3];\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Rasterize path with gradient fill\n * First rasterizes path to get coverage mask, then fills with gradient\n */\nexport function rasterizePathWithGradient(\n\tpath: GlyphPath,\n\tgradient: Gradient,\n\toptions: RasterizeOptions,\n): Bitmap {\n\tconst { width, height } = options;\n\n\tconst coverageBitmap = rasterizePath(path, {\n\t\t...options,\n\t\tpixelMode: PixelMode.Gray,\n\t\tflipY: options.flipY ?? false,\n\t});\n\n\tconst resultBitmap = createBitmap(width, height, PixelMode.RGBA);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst coverage = coverageBitmap.buffer[y * coverageBitmap.pitch + x] ?? 0;\n\n\t\t\tif (coverage > 0) {\n\t\t\t\tconst color = interpolateGradient(gradient, x, y);\n\t\t\t\tconst idx = (y * width + x) * 4;\n\n\t\t\t\tconst alpha = (color[3] * coverage) / 255;\n\n\t\t\t\tresultBitmap.buffer[idx] = color[0];\n\t\t\t\tresultBitmap.buffer[idx + 1] = color[1];\n\t\t\t\tresultBitmap.buffer[idx + 2] = color[2];\n\t\t\t\tresultBitmap.buffer[idx + 3] = Math.round(alpha);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn resultBitmap;\n}\n",
88
90
  "/**\n * Signed Distance Field (SDF) rasterizer\n *\n * For each pixel, compute the shortest distance to the outline.\n * Positive values are inside the outline, negative are outside.\n * This allows GPU text rendering at any scale.\n *\n * Algorithm:\n * 1. For each pixel center, find the minimum distance to all outline edges\n * 2. Determine sign based on whether point is inside or outside the outline\n * 3. Normalize and encode to 0-255 (128 = on the edge)\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\nimport { type Bitmap, createBitmap, PixelMode } from \"./types.ts\";\n\n/**\n * Options for SDF rendering\n */\nexport interface SdfOptions {\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\theight: number;\n\t/** Scale factor (font units to pixels) */\n\tscale: number;\n\t/** X offset in pixels */\n\toffsetX?: number;\n\t/** Y offset in pixels */\n\toffsetY?: number;\n\t/** Flip Y axis (font coords are Y-up, bitmap is Y-down) */\n\tflipY?: boolean;\n\t/** Spread/radius - how far the distance field extends in pixels (default: 8) */\n\tspread?: number;\n}\n\n/**\n * A point in 2D space\n */\ninterface Point {\n\tx: number;\n\ty: number;\n}\n\n/**\n * An edge in the outline (line segment or curve)\n */\ntype Edge =\n\t| { type: \"line\"; p0: Point; p1: Point }\n\t| { type: \"quadratic\"; p0: Point; p1: Point; p2: Point }\n\t| { type: \"cubic\"; p0: Point; p1: Point; p2: Point; p3: Point };\n\n/**\n * Render a glyph path as a signed distance field\n */\nexport function renderSdf(path: GlyphPath, options: SdfOptions): Bitmap {\n\tconst {\n\t\twidth,\n\t\theight,\n\t\tscale,\n\t\toffsetX = 0,\n\t\toffsetY = 0,\n\t\tflipY = false,\n\t\tspread = 8,\n\t} = options;\n\n\t// Create bitmap\n\tconst bitmap = createBitmap(width, height, PixelMode.Gray);\n\n\t// Convert path commands to edges\n\tconst edges = extractEdges(path, scale, offsetX, offsetY, flipY);\n\n\t// If no edges, fill with 0 (maximum negative distance)\n\tif (edges.length === 0) {\n\t\tbitmap.buffer.fill(0);\n\t\treturn bitmap;\n\t}\n\n\t// For each pixel, compute signed distance\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\t// Pixel center\n\t\t\tconst px = x + 0.5;\n\t\t\tconst py = y + 0.5;\n\n\t\t\t// Find minimum distance to all edges\n\t\t\tlet minDist = Infinity;\n\t\t\tfor (const edge of edges) {\n\t\t\t\tconst dist = distanceToEdge(px, py, edge);\n\t\t\t\tminDist = Math.min(minDist, dist);\n\t\t\t}\n\n\t\t\t// Determine if point is inside or outside\n\t\t\tconst inside = isPointInside(px, py, edges);\n\n\t\t\t// Sign: positive inside, negative outside\n\t\t\tconst signedDist = inside ? minDist : -minDist;\n\n\t\t\t// Normalize to 0-255 range\n\t\t\t// spread is the distance in pixels that maps to 0-128 or 128-255\n\t\t\t// 0 = -spread (far outside)\n\t\t\t// 128 = 0 (on edge)\n\t\t\t// 255 = +spread (far inside)\n\t\t\tconst normalized = 128 + (signedDist / spread) * 127;\n\t\t\tconst clamped = Math.max(0, Math.min(255, Math.round(normalized)));\n\n\t\t\tbitmap.buffer[y * bitmap.pitch + x] = clamped;\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Extract edges from path commands\n */\nfunction extractEdges(\n\tpath: GlyphPath,\n\tscale: number,\n\toffsetX: number,\n\toffsetY: number,\n\tflipY: boolean,\n): Edge[] {\n\tconst edges: Edge[] = [];\n\tlet currentPoint: Point | null = null;\n\tlet firstPoint: Point | null = null;\n\n\tconst transform = (x: number, y: number): Point => ({\n\t\tx: x * scale + offsetX,\n\t\ty: flipY ? -(y * scale) + offsetY : y * scale + offsetY,\n\t});\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tcurrentPoint = transform(cmd.x, cmd.y);\n\t\t\t\tfirstPoint = currentPoint;\n\t\t\t\tbreak;\n\n\t\t\tcase \"L\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x, cmd.y);\n\t\t\t\t\tedges.push({ type: \"line\", p0: currentPoint, p1 });\n\t\t\t\t\tcurrentPoint = p1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Q\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x1, cmd.y1);\n\t\t\t\t\tconst p2 = transform(cmd.x, cmd.y);\n\t\t\t\t\tedges.push({ type: \"quadratic\", p0: currentPoint, p1, p2 });\n\t\t\t\t\tcurrentPoint = p2;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"C\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x1, cmd.y1);\n\t\t\t\t\tconst p2 = transform(cmd.x2, cmd.y2);\n\t\t\t\t\tconst p3 = transform(cmd.x, cmd.y);\n\t\t\t\t\tedges.push({ type: \"cubic\", p0: currentPoint, p1, p2, p3 });\n\t\t\t\t\tcurrentPoint = p3;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Z\":\n\t\t\t\t// Close path with a line back to start\n\t\t\t\tif (currentPoint && firstPoint) {\n\t\t\t\t\t// Only add closing edge if not already at start\n\t\t\t\t\tif (\n\t\t\t\t\t\tMath.abs(currentPoint.x - firstPoint.x) > 0.001 ||\n\t\t\t\t\t\tMath.abs(currentPoint.y - firstPoint.y) > 0.001\n\t\t\t\t\t) {\n\t\t\t\t\t\tedges.push({ type: \"line\", p0: currentPoint, p1: firstPoint });\n\t\t\t\t\t}\n\t\t\t\t\tcurrentPoint = firstPoint;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn edges;\n}\n\n/**\n * Compute distance from point to edge\n */\nfunction distanceToEdge(px: number, py: number, edge: Edge): number {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn distanceToLine(px, py, edge.p0, edge.p1);\n\t\tcase \"quadratic\":\n\t\t\treturn distanceToQuadratic(px, py, edge.p0, edge.p1, edge.p2);\n\t\tcase \"cubic\":\n\t\t\treturn distanceToCubic(px, py, edge.p0, edge.p1, edge.p2, edge.p3);\n\t}\n}\n\n/**\n * Distance from point to line segment\n */\nfunction distanceToLine(px: number, py: number, p0: Point, p1: Point): number {\n\tconst dx = p1.x - p0.x;\n\tconst dy = p1.y - p0.y;\n\tconst lenSq = dx * dx + dy * dy;\n\n\tif (lenSq < 0.0001) {\n\t\t// Degenerate segment - just distance to point\n\t\tconst dpx = px - p0.x;\n\t\tconst dpy = py - p0.y;\n\t\treturn Math.sqrt(dpx * dpx + dpy * dpy);\n\t}\n\n\t// Project point onto line\n\tlet t = ((px - p0.x) * dx + (py - p0.y) * dy) / lenSq;\n\tt = Math.max(0, Math.min(1, t)); // Clamp to segment\n\n\tconst closestX = p0.x + t * dx;\n\tconst closestY = p0.y + t * dy;\n\n\tconst distX = px - closestX;\n\tconst distY = py - closestY;\n\treturn Math.sqrt(distX * distX + distY * distY);\n}\n\n/**\n * Distance from point to quadratic bezier curve\n * Uses sampling approximation for simplicity\n */\nfunction distanceToQuadratic(\n\tpx: number,\n\tpy: number,\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n): number {\n\tlet minDist = Infinity;\n\n\t// Sample the curve at multiple points\n\tconst samples = 32;\n\tfor (let i = 0; i <= samples; i++) {\n\t\tconst t = i / samples;\n\t\tconst ti = 1 - t;\n\n\t\t// Quadratic bezier: B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2\n\t\tconst x = ti * ti * p0.x + 2 * ti * t * p1.x + t * t * p2.x;\n\t\tconst y = ti * ti * p0.y + 2 * ti * t * p1.y + t * t * p2.y;\n\n\t\tconst dx = px - x;\n\t\tconst dy = py - y;\n\t\tconst dist = Math.sqrt(dx * dx + dy * dy);\n\t\tminDist = Math.min(minDist, dist);\n\t}\n\n\treturn minDist;\n}\n\n/**\n * Distance from point to cubic bezier curve\n * Uses sampling approximation for simplicity\n */\nfunction distanceToCubic(\n\tpx: number,\n\tpy: number,\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n\tp3: Point,\n): number {\n\tlet minDist = Infinity;\n\n\t// Sample the curve at multiple points\n\tconst samples = 32;\n\tfor (let i = 0; i <= samples; i++) {\n\t\tconst t = i / samples;\n\t\tconst ti = 1 - t;\n\n\t\t// Cubic bezier: B(t) = (1-t)³P0 + 3(1-t)²tP1 + 3(1-t)t²P2 + t³P3\n\t\tconst x =\n\t\t\tti * ti * ti * p0.x +\n\t\t\t3 * ti * ti * t * p1.x +\n\t\t\t3 * ti * t * t * p2.x +\n\t\t\tt * t * t * p3.x;\n\t\tconst y =\n\t\t\tti * ti * ti * p0.y +\n\t\t\t3 * ti * ti * t * p1.y +\n\t\t\t3 * ti * t * t * p2.y +\n\t\t\tt * t * t * p3.y;\n\n\t\tconst dx = px - x;\n\t\tconst dy = py - y;\n\t\tconst dist = Math.sqrt(dx * dx + dy * dy);\n\t\tminDist = Math.min(minDist, dist);\n\t}\n\n\treturn minDist;\n}\n\n/**\n * Determine if a point is inside the outline using ray casting\n * (even-odd rule)\n */\nfunction isPointInside(px: number, py: number, edges: Edge[]): boolean {\n\tlet crossings = 0;\n\n\tfor (const edge of edges) {\n\t\t// Flatten curves to line segments for inside test\n\t\tconst points = flattenEdge(edge);\n\n\t\tfor (let i = 0; i < points.length - 1; i++) {\n\t\t\tconst p0 = points[i];\n\t\t\tconst p1 = points[i + 1];\n\t\t\tif (!p0 || !p1) continue;\n\n\t\t\t// Ray casting: cast horizontal ray to the right from (px, py)\n\t\t\t// Check if it crosses this edge\n\t\t\tif (p0.y > py !== p1.y > py) {\n\t\t\t\t// Edge crosses the horizontal line at y = py\n\t\t\t\tconst slope = (p1.x - p0.x) / (p1.y - p0.y);\n\t\t\t\tconst x = p0.x + slope * (py - p0.y);\n\n\t\t\t\tif (px < x) {\n\t\t\t\t\tcrossings++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Odd number of crossings = inside\n\treturn (crossings & 1) === 1;\n}\n\n/**\n * Flatten an edge to a sequence of points for inside testing\n */\nfunction flattenEdge(edge: Edge): Point[] {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn [edge.p0, edge.p1];\n\n\t\tcase \"quadratic\": {\n\t\t\tconst points: Point[] = [edge.p0];\n\t\t\tconst samples = 16;\n\t\t\tfor (let i = 1; i <= samples; i++) {\n\t\t\t\tconst t = i / samples;\n\t\t\t\tconst ti = 1 - t;\n\t\t\t\tpoints.push({\n\t\t\t\t\tx: ti * ti * edge.p0.x + 2 * ti * t * edge.p1.x + t * t * edge.p2.x,\n\t\t\t\t\ty: ti * ti * edge.p0.y + 2 * ti * t * edge.p1.y + t * t * edge.p2.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn points;\n\t\t}\n\n\t\tcase \"cubic\": {\n\t\t\tconst points: Point[] = [edge.p0];\n\t\t\tconst samples = 16;\n\t\t\tfor (let i = 1; i <= samples; i++) {\n\t\t\t\tconst t = i / samples;\n\t\t\t\tconst ti = 1 - t;\n\t\t\t\tpoints.push({\n\t\t\t\t\tx:\n\t\t\t\t\t\tti * ti * ti * edge.p0.x +\n\t\t\t\t\t\t3 * ti * ti * t * edge.p1.x +\n\t\t\t\t\t\t3 * ti * t * t * edge.p2.x +\n\t\t\t\t\t\tt * t * t * edge.p3.x,\n\t\t\t\t\ty:\n\t\t\t\t\t\tti * ti * ti * edge.p0.y +\n\t\t\t\t\t\t3 * ti * ti * t * edge.p1.y +\n\t\t\t\t\t\t3 * ti * t * t * edge.p2.y +\n\t\t\t\t\t\tt * t * t * edge.p3.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn points;\n\t\t}\n\t}\n}\n",
89
91
  "/**\n * Path Stroker\n *\n * Converts a path outline into a stroked outline that can be filled.\n * Based on FreeType's ftstroke.c algorithm.\n *\n * The stroker generates two borders (inside and outside) by offsetting\n * the original path by half the stroke width in both directions.\n */\n\nimport type { GlyphPath, PathCommand } from \"../render/path.ts\";\n\n/** Line cap styles */\nexport type LineCap = \"butt\" | \"round\" | \"square\";\n\n/** Line join styles */\nexport type LineJoin = \"miter\" | \"round\" | \"bevel\";\n\n/** Stroker options */\nexport interface StrokerOptions {\n\t/** Stroke width in font units */\n\twidth: number;\n\t/** Line cap style (default: \"butt\") */\n\tlineCap?: LineCap;\n\t/** Line join style (default: \"miter\") */\n\tlineJoin?: LineJoin;\n\t/** Miter limit for miter joins (default: 4) */\n\tmiterLimit?: number;\n}\n\ninterface Point {\n\tx: number;\n\ty: number;\n}\n\ninterface Vector {\n\tx: number;\n\ty: number;\n}\n\n/**\n * Normalize a vector to unit length\n */\nfunction normalize(v: Vector): Vector {\n\tconst len = Math.sqrt(v.x * v.x + v.y * v.y);\n\tif (len === 0) return { x: 0, y: 0 };\n\treturn { x: v.x / len, y: v.y / len };\n}\n\n/**\n * Get perpendicular vector (rotate 90 degrees counter-clockwise)\n */\nfunction perp(v: Vector): Vector {\n\treturn { x: -v.y, y: v.x };\n}\n\n/**\n * Compute angle between two vectors (in radians)\n */\nfunction angleBetween(v1: Vector, v2: Vector): number {\n\tconst dot = v1.x * v2.x + v1.y * v2.y;\n\tconst cross = v1.x * v2.y - v1.y * v2.x;\n\treturn Math.atan2(cross, dot);\n}\n\n/**\n * Add round cap at a point\n */\nfunction addRoundCap(\n\tcommands: PathCommand[],\n\tcenter: Point,\n\tdirection: Vector,\n\tradius: number,\n\tclockwise: boolean,\n): void {\n\t// Perpendicular direction\n\tconst perpDir = perp(direction);\n\n\t// Start and end points of the arc\n\tconst start: Point = {\n\t\tx: center.x + perpDir.x * radius * (clockwise ? 1 : -1),\n\t\ty: center.y + perpDir.y * radius * (clockwise ? 1 : -1),\n\t};\n\tconst end: Point = {\n\t\tx: center.x - perpDir.x * radius * (clockwise ? 1 : -1),\n\t\ty: center.y - perpDir.y * radius * (clockwise ? 1 : -1),\n\t};\n\n\t// Approximate semicircle with two quadratic curves\n\tconst mid: Point = {\n\t\tx: center.x + direction.x * radius,\n\t\ty: center.y + direction.y * radius,\n\t};\n\n\t// Control points for the two quadratic curves\n\tconst ctrl1: Point = {\n\t\tx: start.x + direction.x * radius * 0.5523,\n\t\ty: start.y + direction.y * radius * 0.5523,\n\t};\n\tconst ctrl2: Point = {\n\t\tx: end.x + direction.x * radius * 0.5523,\n\t\ty: end.y + direction.y * radius * 0.5523,\n\t};\n\n\tcommands.push({ type: \"Q\", x1: ctrl1.x, y1: ctrl1.y, x: mid.x, y: mid.y });\n\tcommands.push({ type: \"Q\", x1: ctrl2.x, y1: ctrl2.y, x: end.x, y: end.y });\n}\n\n/**\n * Add square cap at a point\n */\nfunction addSquareCap(\n\tcommands: PathCommand[],\n\tcenter: Point,\n\tdirection: Vector,\n\tradius: number,\n): void {\n\tconst perpDir = perp(direction);\n\n\t// Extend by half width in the direction\n\tconst extended: Point = {\n\t\tx: center.x + direction.x * radius,\n\t\ty: center.y + direction.y * radius,\n\t};\n\n\t// Corner points\n\tconst corner1: Point = {\n\t\tx: extended.x + perpDir.x * radius,\n\t\ty: extended.y + perpDir.y * radius,\n\t};\n\tconst corner2: Point = {\n\t\tx: extended.x - perpDir.x * radius,\n\t\ty: extended.y - perpDir.y * radius,\n\t};\n\n\tcommands.push({ type: \"L\", x: corner1.x, y: corner1.y });\n\tcommands.push({ type: \"L\", x: corner2.x, y: corner2.y });\n}\n\n/**\n * Add a line join between two segments\n */\nfunction addJoin(\n\tcommands: PathCommand[],\n\tpoint: Point,\n\tprevDir: Vector,\n\tnextDir: Vector,\n\tradius: number,\n\tlineJoin: LineJoin,\n\tmiterLimit: number,\n\touter: boolean,\n): void {\n\tconst angle = angleBetween(prevDir, nextDir);\n\tconst isConvex = outer ? angle < 0 : angle > 0;\n\n\tif (Math.abs(angle) < 0.01) {\n\t\t// Nearly straight - just continue\n\t\treturn;\n\t}\n\n\tconst prevPerp = perp(prevDir);\n\tconst nextPerp = perp(nextDir);\n\tconst sign = outer ? 1 : -1;\n\n\tconst _prevOffset: Point = {\n\t\tx: point.x + prevPerp.x * radius * sign,\n\t\ty: point.y + prevPerp.y * radius * sign,\n\t};\n\tconst nextOffset: Point = {\n\t\tx: point.x + nextPerp.x * radius * sign,\n\t\ty: point.y + nextPerp.y * radius * sign,\n\t};\n\n\tif (!isConvex) {\n\t\t// Inner join - just connect with line\n\t\tcommands.push({ type: \"L\", x: nextOffset.x, y: nextOffset.y });\n\t\treturn;\n\t}\n\n\t// Outer join\n\tswitch (lineJoin) {\n\t\tcase \"round\": {\n\t\t\t// Arc from prevOffset to nextOffset\n\t\t\tconst arcAngle = Math.abs(angle);\n\t\t\tconst numSegments = Math.max(2, Math.ceil(arcAngle / (Math.PI / 4)));\n\n\t\t\tfor (let i = 1; i <= numSegments; i++) {\n\t\t\t\tconst t = i / numSegments;\n\t\t\t\tconst currentAngle =\n\t\t\t\t\tMath.atan2(prevPerp.y, prevPerp.x) + angle * t * sign;\n\t\t\t\tconst px = point.x + Math.cos(currentAngle) * radius * sign;\n\t\t\t\tconst py = point.y + Math.sin(currentAngle) * radius * sign;\n\t\t\t\tcommands.push({ type: \"L\", x: px, y: py });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"miter\": {\n\t\t\t// Check miter limit\n\t\t\tconst miterLength = 1 / Math.sin(Math.abs(angle) / 2);\n\t\t\tif (miterLength <= miterLimit) {\n\t\t\t\t// Compute miter point\n\t\t\t\tconst halfAngle = angle / 2;\n\t\t\t\tconst miterDir = normalize({\n\t\t\t\t\tx: prevDir.x + nextDir.x,\n\t\t\t\t\ty: prevDir.y + nextDir.y,\n\t\t\t\t});\n\t\t\t\tconst miterDist = radius / Math.cos(halfAngle);\n\t\t\t\tconst miterPoint: Point = {\n\t\t\t\t\tx: point.x + miterDir.x * miterDist * sign,\n\t\t\t\t\ty: point.y + miterDir.y * miterDist * sign,\n\t\t\t\t};\n\t\t\t\tcommands.push({ type: \"L\", x: miterPoint.x, y: miterPoint.y });\n\t\t\t\tcommands.push({ type: \"L\", x: nextOffset.x, y: nextOffset.y });\n\t\t\t} else {\n\t\t\t\t// Fall back to bevel\n\t\t\t\tcommands.push({ type: \"L\", x: nextOffset.x, y: nextOffset.y });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tcommands.push({ type: \"L\", x: nextOffset.x, y: nextOffset.y });\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Stroke a single contour (closed path)\n */\nfunction strokeContour(\n\tpoints: Point[],\n\toptions: Required<StrokerOptions>,\n): PathCommand[] {\n\tif (points.length < 2) return [];\n\n\tconst { width, lineJoin, miterLimit } = options;\n\tconst radius = width / 2;\n\n\tconst commands: PathCommand[] = [];\n\tconst n = points.length;\n\n\t// Compute directions for each segment\n\tconst directions: Vector[] = [];\n\tfor (let i = 0; i < n; i++) {\n\t\tconst p1 = points[i];\n\t\tconst p2 = points[(i + 1) % n];\n\t\tif (!p1 || !p2) continue;\n\t\tdirections.push(normalize({ x: p2.x - p1.x, y: p2.y - p1.y }));\n\t}\n\n\t// Generate outer border (going forward)\n\tconst firstDir = directions[0];\n\tconst firstPoint = points[0];\n\tif (!firstDir || !firstPoint) return [];\n\n\tconst firstPerp = perp(firstDir);\n\tcommands.push({\n\t\ttype: \"M\",\n\t\tx: firstPoint.x + firstPerp.x * radius,\n\t\ty: firstPoint.y + firstPerp.y * radius,\n\t});\n\n\tfor (let i = 0; i < n; i++) {\n\t\tconst p1 = points[i];\n\t\tconst p2 = points[(i + 1) % n];\n\t\tconst dir = directions[i];\n\t\tconst nextDir = directions[(i + 1) % n];\n\t\tif (!p1 || !p2 || !dir || !nextDir) continue;\n\n\t\tconst perpDir = perp(dir);\n\n\t\t// Line to end of current segment\n\t\tcommands.push({\n\t\t\ttype: \"L\",\n\t\t\tx: p2.x + perpDir.x * radius,\n\t\t\ty: p2.y + perpDir.y * radius,\n\t\t});\n\n\t\t// Add join\n\t\taddJoin(commands, p2, dir, nextDir, radius, lineJoin, miterLimit, true);\n\t}\n\n\tcommands.push({ type: \"Z\" });\n\n\t// Generate inner border (going backward)\n\tconst lastIdx = n - 1;\n\tconst lastDir = directions[lastIdx];\n\tconst lastPoint = points[0];\n\tif (!lastDir || !lastPoint) return commands;\n\n\tconst lastPerp = perp(firstDir);\n\tcommands.push({\n\t\ttype: \"M\",\n\t\tx: firstPoint.x - lastPerp.x * radius,\n\t\ty: firstPoint.y - lastPerp.y * radius,\n\t});\n\n\tfor (let i = 0; i < n; i++) {\n\t\tconst p1 = points[i];\n\t\tconst p2 = points[(i + 1) % n];\n\t\tconst dir = directions[i];\n\t\tconst nextDir = directions[(i + 1) % n];\n\t\tif (!p1 || !p2 || !dir || !nextDir) continue;\n\n\t\tconst perpDir = perp(dir);\n\n\t\t// Line to end of current segment (inner side)\n\t\tcommands.push({\n\t\t\ttype: \"L\",\n\t\t\tx: p2.x - perpDir.x * radius,\n\t\t\ty: p2.y - perpDir.y * radius,\n\t\t});\n\n\t\t// Add join (inner)\n\t\taddJoin(commands, p2, dir, nextDir, radius, lineJoin, miterLimit, false);\n\t}\n\n\tcommands.push({ type: \"Z\" });\n\n\treturn commands;\n}\n\n/**\n * Stroke an open path (with caps)\n */\nfunction strokeOpenPath(\n\tpoints: Point[],\n\toptions: Required<StrokerOptions>,\n): PathCommand[] {\n\tif (points.length < 2) return [];\n\n\tconst { width, lineCap, lineJoin, miterLimit } = options;\n\tconst radius = width / 2;\n\n\tconst commands: PathCommand[] = [];\n\tconst n = points.length;\n\n\t// Compute directions for each segment\n\tconst directions: Vector[] = [];\n\tfor (let i = 0; i < n - 1; i++) {\n\t\tconst p1 = points[i];\n\t\tconst p2 = points[i + 1];\n\t\tif (!p1 || !p2) continue;\n\t\tdirections.push(normalize({ x: p2.x - p1.x, y: p2.y - p1.y }));\n\t}\n\n\tconst firstPoint = points[0];\n\tconst lastPoint = points[n - 1];\n\tconst firstDir = directions[0];\n\tconst lastDir = directions[directions.length - 1];\n\tif (!firstPoint || !lastPoint || !firstDir || !lastDir) return [];\n\n\t// Start with cap at beginning\n\tconst firstPerp = perp(firstDir);\n\n\t// Start at the right side of the first point\n\tcommands.push({\n\t\ttype: \"M\",\n\t\tx: firstPoint.x + firstPerp.x * radius,\n\t\ty: firstPoint.y + firstPerp.y * radius,\n\t});\n\n\t// Forward pass (right side)\n\tfor (let i = 0; i < n - 1; i++) {\n\t\tconst p2 = points[i + 1];\n\t\tconst dir = directions[i];\n\t\tconst nextDir = directions[i + 1];\n\t\tif (!p2 || !dir) continue;\n\n\t\tconst perpDir = perp(dir);\n\t\tcommands.push({\n\t\t\ttype: \"L\",\n\t\t\tx: p2.x + perpDir.x * radius,\n\t\t\ty: p2.y + perpDir.y * radius,\n\t\t});\n\n\t\tif (nextDir) {\n\t\t\taddJoin(commands, p2, dir, nextDir, radius, lineJoin, miterLimit, true);\n\t\t}\n\t}\n\n\t// End cap\n\tconst _negLastDir: Vector = { x: -lastDir.x, y: -lastDir.y };\n\tswitch (lineCap) {\n\t\tcase \"round\":\n\t\t\taddRoundCap(commands, lastPoint, lastDir, radius, true);\n\t\t\tbreak;\n\t\tcase \"square\":\n\t\t\taddSquareCap(commands, lastPoint, lastDir, radius);\n\t\t\tbreak;\n\t\tdefault: {\n\t\t\tconst lastPerp = perp(lastDir);\n\t\t\tcommands.push({\n\t\t\t\ttype: \"L\",\n\t\t\t\tx: lastPoint.x - lastPerp.x * radius,\n\t\t\t\ty: lastPoint.y - lastPerp.y * radius,\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Backward pass (left side)\n\tfor (let i = n - 2; i >= 0; i--) {\n\t\tconst p1 = points[i];\n\t\tconst dir = directions[i];\n\t\tconst prevDir = directions[i - 1];\n\t\tif (!p1 || !dir) continue;\n\n\t\tconst perpDir = perp(dir);\n\t\tcommands.push({\n\t\t\ttype: \"L\",\n\t\t\tx: p1.x - perpDir.x * radius,\n\t\t\ty: p1.y - perpDir.y * radius,\n\t\t});\n\n\t\tif (prevDir) {\n\t\t\taddJoin(\n\t\t\t\tcommands,\n\t\t\t\tp1,\n\t\t\t\t{ x: -dir.x, y: -dir.y },\n\t\t\t\t{ x: -prevDir.x, y: -prevDir.y },\n\t\t\t\tradius,\n\t\t\t\tlineJoin,\n\t\t\t\tmiterLimit,\n\t\t\t\ttrue,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Start cap\n\tconst negFirstDir: Vector = { x: -firstDir.x, y: -firstDir.y };\n\tswitch (lineCap) {\n\t\tcase \"round\":\n\t\t\taddRoundCap(commands, firstPoint, negFirstDir, radius, true);\n\t\t\tbreak;\n\t\tcase \"square\":\n\t\t\taddSquareCap(commands, firstPoint, negFirstDir, radius);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Already at the right position, close the path\n\t\t\tbreak;\n\t}\n\n\tcommands.push({ type: \"Z\" });\n\n\treturn commands;\n}\n\n/**\n * Extract points from path commands\n * Returns an array of contours, each contour is an array of points\n */\nfunction extractContours(\n\tpath: GlyphPath,\n): { points: Point[]; closed: boolean }[] {\n\tconst contours: { points: Point[]; closed: boolean }[] = [];\n\tlet currentContour: Point[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push({ points: currentContour, closed: false });\n\t\t\t\t}\n\t\t\t\tcurrentContour = [{ x: cmd.x, y: cmd.y }];\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tcurrentContour.push({ x: cmd.x, y: cmd.y });\n\t\t\t\tbreak;\n\t\t\tcase \"Q\": {\n\t\t\t\t// Flatten quadratic bezier\n\t\t\t\tconst last = currentContour[currentContour.length - 1];\n\t\t\t\tif (last) {\n\t\t\t\t\tconst steps = 8;\n\t\t\t\t\tfor (let i = 1; i <= steps; i++) {\n\t\t\t\t\t\tconst t = i / steps;\n\t\t\t\t\t\tconst ti = 1 - t;\n\t\t\t\t\t\tconst x = ti * ti * last.x + 2 * ti * t * cmd.x1 + t * t * cmd.x;\n\t\t\t\t\t\tconst y = ti * ti * last.y + 2 * ti * t * cmd.y1 + t * t * cmd.y;\n\t\t\t\t\t\tcurrentContour.push({ x, y });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\t// Flatten cubic bezier\n\t\t\t\tconst last = currentContour[currentContour.length - 1];\n\t\t\t\tif (last) {\n\t\t\t\t\tconst steps = 12;\n\t\t\t\t\tfor (let i = 1; i <= steps; i++) {\n\t\t\t\t\t\tconst t = i / steps;\n\t\t\t\t\t\tconst ti = 1 - t;\n\t\t\t\t\t\tconst x =\n\t\t\t\t\t\t\tti * ti * ti * last.x +\n\t\t\t\t\t\t\t3 * ti * ti * t * cmd.x1 +\n\t\t\t\t\t\t\t3 * ti * t * t * cmd.x2 +\n\t\t\t\t\t\t\tt * t * t * cmd.x;\n\t\t\t\t\t\tconst y =\n\t\t\t\t\t\t\tti * ti * ti * last.y +\n\t\t\t\t\t\t\t3 * ti * ti * t * cmd.y1 +\n\t\t\t\t\t\t\t3 * ti * t * t * cmd.y2 +\n\t\t\t\t\t\t\tt * t * t * cmd.y;\n\t\t\t\t\t\tcurrentContour.push({ x, y });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push({ points: currentContour, closed: true });\n\t\t\t\t\tcurrentContour = [];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (currentContour.length > 0) {\n\t\tcontours.push({ points: currentContour, closed: false });\n\t}\n\n\treturn contours;\n}\n\n/**\n * Stroke a glyph path, producing a new path that represents the stroked outline\n */\nexport function strokePath(\n\tpath: GlyphPath,\n\toptions: StrokerOptions,\n): GlyphPath {\n\tconst opts: Required<StrokerOptions> = {\n\t\twidth: options.width,\n\t\tlineCap: options.lineCap ?? \"butt\",\n\t\tlineJoin: options.lineJoin ?? \"miter\",\n\t\tmiterLimit: options.miterLimit ?? 4,\n\t};\n\n\tconst contours = extractContours(path);\n\tconst commands: PathCommand[] = [];\n\n\tfor (const contour of contours) {\n\t\tif (contour.points.length < 2) continue;\n\n\t\tconst contourCommands = contour.closed\n\t\t\t? strokeContour(contour.points, opts)\n\t\t\t: strokeOpenPath(contour.points, opts);\n\n\t\tcommands.push(...contourCommands);\n\t}\n\n\t// Calculate new bounds (original bounds + stroke width)\n\tlet bounds = path.bounds;\n\tif (bounds) {\n\t\tconst padding = opts.width / 2;\n\t\tbounds = {\n\t\t\txMin: bounds.xMin - padding,\n\t\t\tyMin: bounds.yMin - padding,\n\t\t\txMax: bounds.xMax + padding,\n\t\t\tyMax: bounds.yMax + padding,\n\t\t};\n\t}\n\n\treturn { commands, bounds };\n}\n",
90
92
  "/**\n * Synthetic Font Effects\n *\n * Provides transformations for creating synthetic bold, italic, and other effects\n * on glyph outlines. These are useful for fonts that don't have native bold/italic\n * variants.\n */\n\nimport type { GlyphPath, PathCommand } from \"../render/path.ts\";\n\n/**\n * Apply oblique (slant/italic) transformation to a path\n *\n * @param path - The glyph path to transform\n * @param slant - Tangent of the slant angle (0.2 = ~12 degrees, typical italic)\n * @returns New path with slant applied\n *\n * Transform: x' = x + y * slant, y' = y\n */\nexport function obliquePath(path: GlyphPath, slant: number): GlyphPath {\n\tconst commands: PathCommand[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\tx: cmd.x + cmd.y * slant,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\tx1: cmd.x1 + cmd.y1 * slant,\n\t\t\t\t\ty1: cmd.y1,\n\t\t\t\t\tx: cmd.x + cmd.y * slant,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: cmd.x1 + cmd.y1 * slant,\n\t\t\t\t\ty1: cmd.y1,\n\t\t\t\t\tx2: cmd.x2 + cmd.y2 * slant,\n\t\t\t\t\ty2: cmd.y2,\n\t\t\t\t\tx: cmd.x + cmd.y * slant,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tcommands.push({ type: \"Z\" });\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Update bounds\n\tlet bounds = path.bounds;\n\tif (bounds) {\n\t\t// After oblique transform, min/max x changes based on y values\n\t\tconst xMin = bounds.xMin + bounds.yMin * slant;\n\t\tconst xMax = bounds.xMax + bounds.yMax * slant;\n\n\t\tbounds = {\n\t\t\txMin: Math.min(xMin, bounds.xMin + bounds.yMax * slant),\n\t\t\tyMin: bounds.yMin,\n\t\t\txMax: Math.max(xMax, bounds.xMax + bounds.yMin * slant),\n\t\t\tyMax: bounds.yMax,\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Apply general 2D affine transformation to a path\n *\n * @param path - The glyph path to transform\n * @param matrix - 2D transformation matrix [a, b, c, d, e, f]\n * @returns New path with transformation applied\n *\n * Transform: x' = a*x + c*y + e, y' = b*x + d*y + f\n */\nexport function transformPath(\n\tpath: GlyphPath,\n\tmatrix: [number, number, number, number, number, number],\n): GlyphPath {\n\tconst [a, b, c, d, e, f] = matrix;\n\n\tconst transformPoint = (x: number, y: number) => ({\n\t\tx: a * x + c * y + e,\n\t\ty: b * x + d * y + f,\n\t});\n\n\tconst commands: PathCommand[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\": {\n\t\t\t\tconst p = transformPoint(cmd.x, cmd.y);\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\tx: p.x,\n\t\t\t\t\ty: p.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\tconst p1 = transformPoint(cmd.x1, cmd.y1);\n\t\t\t\tconst p = transformPoint(cmd.x, cmd.y);\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\tx1: p1.x,\n\t\t\t\t\ty1: p1.y,\n\t\t\t\t\tx: p.x,\n\t\t\t\t\ty: p.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst p1 = transformPoint(cmd.x1, cmd.y1);\n\t\t\t\tconst p2 = transformPoint(cmd.x2, cmd.y2);\n\t\t\t\tconst p = transformPoint(cmd.x, cmd.y);\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: p1.x,\n\t\t\t\t\ty1: p1.y,\n\t\t\t\t\tx2: p2.x,\n\t\t\t\t\ty2: p2.y,\n\t\t\t\t\tx: p.x,\n\t\t\t\t\ty: p.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\tcommands.push({ type: \"Z\" });\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Update bounds\n\tlet bounds = path.bounds;\n\tif (bounds) {\n\t\t// Transform all four corners and find new bounds\n\t\tconst corners = [\n\t\t\ttransformPoint(bounds.xMin, bounds.yMin),\n\t\t\ttransformPoint(bounds.xMax, bounds.yMin),\n\t\t\ttransformPoint(bounds.xMin, bounds.yMax),\n\t\t\ttransformPoint(bounds.xMax, bounds.yMax),\n\t\t];\n\n\t\tbounds = {\n\t\t\txMin: Math.min(...corners.map((p) => p.x)),\n\t\t\tyMin: Math.min(...corners.map((p) => p.y)),\n\t\t\txMax: Math.max(...corners.map((p) => p.x)),\n\t\t\tyMax: Math.max(...corners.map((p) => p.y)),\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Apply horizontal scaling (condensing/expanding) to a path\n *\n * @param path - The glyph path to transform\n * @param factor - Horizontal scale factor (< 1 = narrower, > 1 = wider)\n * @returns New path with horizontal scaling applied\n *\n * Transform: x' = x * factor, y' = y\n */\nexport function condensePath(path: GlyphPath, factor: number): GlyphPath {\n\tconst commands: PathCommand[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\tx: cmd.x * factor,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\tx1: cmd.x1 * factor,\n\t\t\t\t\ty1: cmd.y1,\n\t\t\t\t\tx: cmd.x * factor,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: cmd.x1 * factor,\n\t\t\t\t\ty1: cmd.y1,\n\t\t\t\t\tx2: cmd.x2 * factor,\n\t\t\t\t\ty2: cmd.y2,\n\t\t\t\t\tx: cmd.x * factor,\n\t\t\t\t\ty: cmd.y,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tcommands.push({ type: \"Z\" });\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Update bounds\n\tlet bounds = path.bounds;\n\tif (bounds) {\n\t\tbounds = {\n\t\t\txMin: bounds.xMin * factor,\n\t\t\tyMin: bounds.yMin,\n\t\t\txMax: bounds.xMax * factor,\n\t\t\tyMax: bounds.yMax,\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Embolden (make bolder) a path by offsetting the outline\n *\n * This implementation uses a simplified approach that offsets each contour\n * outward by moving points along the normal direction. For production use,\n * a proper stroking algorithm would be more accurate.\n *\n * @param path - The glyph path to embolden\n * @param strength - Offset strength in font units (positive = bolder, negative = thinner)\n * @returns New path with emboldening applied\n */\nexport function emboldenPath(path: GlyphPath, strength: number): GlyphPath {\n\tif (strength === 0) {\n\t\t// Just return a copy with slightly processed structure\n\t\treturn { ...path, commands: [...path.commands] };\n\t}\n\n\t// Extract contours from path\n\tconst contours = extractContours(path);\n\tconst commands: PathCommand[] = [];\n\n\tfor (const contour of contours) {\n\t\tif (contour.length < 3) continue;\n\n\t\t// Offset the contour\n\t\tconst offsetContour = offsetPolygon(contour, strength);\n\n\t\t// Convert back to commands\n\t\tif (offsetContour.length > 0) {\n\t\t\tcommands.push({\n\t\t\t\ttype: \"M\",\n\t\t\t\tx: offsetContour[0].x,\n\t\t\t\ty: offsetContour[0].y,\n\t\t\t});\n\t\t\tfor (let i = 1; i < offsetContour.length; i++) {\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"L\",\n\t\t\t\t\tx: offsetContour[i].x,\n\t\t\t\t\ty: offsetContour[i].y,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcommands.push({ type: \"Z\" });\n\t\t}\n\t}\n\n\t// Calculate new bounds\n\tlet bounds = null;\n\tif (commands.length > 0) {\n\t\tlet minX = Infinity,\n\t\t\tminY = Infinity,\n\t\t\tmaxX = -Infinity,\n\t\t\tmaxY = -Infinity;\n\n\t\tfor (const cmd of commands) {\n\t\t\tif (cmd.type === \"M\" || cmd.type === \"L\") {\n\t\t\t\tminX = Math.min(minX, cmd.x);\n\t\t\t\tminY = Math.min(minY, cmd.y);\n\t\t\t\tmaxX = Math.max(maxX, cmd.x);\n\t\t\t\tmaxY = Math.max(maxY, cmd.y);\n\t\t\t}\n\t\t}\n\n\t\tif (Number.isFinite(minX)) {\n\t\t\tbounds = { xMin: minX, yMin: minY, xMax: maxX, yMax: maxY };\n\t\t}\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Point structure for contour processing\n */\ninterface Point {\n\tx: number;\n\ty: number;\n}\n\n/**\n * Extract contours from a path as arrays of points\n */\nfunction extractContours(path: GlyphPath): Point[][] {\n\tconst contours: Point[][] = [];\n\tlet currentContour: Point[] = [];\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push(currentContour);\n\t\t\t\t}\n\t\t\t\tcurrentContour = [{ x: cmd.x, y: cmd.y }];\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tcurrentContour.push({ x: cmd.x, y: cmd.y });\n\t\t\t\tbreak;\n\t\t\tcase \"Q\": {\n\t\t\t\t// Flatten quadratic bezier\n\t\t\t\tconst last = currentContour[currentContour.length - 1];\n\t\t\t\tif (last) {\n\t\t\t\t\tconst steps = 8;\n\t\t\t\t\tfor (let i = 1; i <= steps; i++) {\n\t\t\t\t\t\tconst t = i / steps;\n\t\t\t\t\t\tconst ti = 1 - t;\n\t\t\t\t\t\tconst x = ti * ti * last.x + 2 * ti * t * cmd.x1 + t * t * cmd.x;\n\t\t\t\t\t\tconst y = ti * ti * last.y + 2 * ti * t * cmd.y1 + t * t * cmd.y;\n\t\t\t\t\t\tcurrentContour.push({ x, y });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\t// Flatten cubic bezier\n\t\t\t\tconst last = currentContour[currentContour.length - 1];\n\t\t\t\tif (last) {\n\t\t\t\t\tconst steps = 12;\n\t\t\t\t\tfor (let i = 1; i <= steps; i++) {\n\t\t\t\t\t\tconst t = i / steps;\n\t\t\t\t\t\tconst ti = 1 - t;\n\t\t\t\t\t\tconst x =\n\t\t\t\t\t\t\tti * ti * ti * last.x +\n\t\t\t\t\t\t\t3 * ti * ti * t * cmd.x1 +\n\t\t\t\t\t\t\t3 * ti * t * t * cmd.x2 +\n\t\t\t\t\t\t\tt * t * t * cmd.x;\n\t\t\t\t\t\tconst y =\n\t\t\t\t\t\t\tti * ti * ti * last.y +\n\t\t\t\t\t\t\t3 * ti * ti * t * cmd.y1 +\n\t\t\t\t\t\t\t3 * ti * t * t * cmd.y2 +\n\t\t\t\t\t\t\tt * t * t * cmd.y;\n\t\t\t\t\t\tcurrentContour.push({ x, y });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push(currentContour);\n\t\t\t\t\tcurrentContour = [];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (currentContour.length > 0) {\n\t\tcontours.push(currentContour);\n\t}\n\n\treturn contours;\n}\n\n/**\n * Offset a polygon (contour) by a given distance\n *\n * This uses a simple approach of moving each point along the average\n * normal of its adjacent edges. For better quality, a proper polygon\n * offsetting algorithm should be used (e.g., Clipper library approach).\n */\nfunction offsetPolygon(points: Point[], offset: number): Point[] {\n\tconst n = points.length;\n\tif (n < 3) return points;\n\n\t// Determine winding order (clockwise or counter-clockwise)\n\tlet area = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst j = (i + 1) % n;\n\t\tconst p1 = points[i];\n\t\tconst p2 = points[j];\n\t\tif (p1 && p2) {\n\t\t\tarea += (p2.x - p1.x) * (p2.y + p1.y);\n\t\t}\n\t}\n\n\t// For counter-clockwise (positive area), positive offset expands\n\t// For clockwise (negative area), we need to flip the offset\n\tconst sign = area < 0 ? -1 : 1;\n\tconst actualOffset = offset * sign;\n\n\tconst result: Point[] = [];\n\n\tfor (let i = 0; i < n; i++) {\n\t\tconst prev = points[(i - 1 + n) % n];\n\t\tconst curr = points[i];\n\t\tconst next = points[(i + 1) % n];\n\n\t\tif (!prev || !curr || !next) continue;\n\n\t\t// Compute edge vectors\n\t\tconst edge1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n\t\tconst edge2 = { x: next.x - curr.x, y: next.y - curr.y };\n\n\t\t// Normalize edges\n\t\tconst len1 = Math.sqrt(edge1.x * edge1.x + edge1.y * edge1.y);\n\t\tconst len2 = Math.sqrt(edge2.x * edge2.x + edge2.y * edge2.y);\n\n\t\tif (len1 === 0 || len2 === 0) {\n\t\t\tresult.push(curr);\n\t\t\tcontinue;\n\t\t}\n\n\t\tedge1.x /= len1;\n\t\tedge1.y /= len1;\n\t\tedge2.x /= len2;\n\t\tedge2.y /= len2;\n\n\t\t// Compute normals (perpendicular, pointing outward for CCW)\n\t\tconst normal1 = { x: -edge1.y, y: edge1.x };\n\t\tconst normal2 = { x: -edge2.y, y: edge2.x };\n\n\t\t// Average normal\n\t\tlet normalX = (normal1.x + normal2.x) / 2;\n\t\tlet normalY = (normal1.y + normal2.y) / 2;\n\n\t\t// Normalize the average normal\n\t\tconst normalLen = Math.sqrt(normalX * normalX + normalY * normalY);\n\t\tif (normalLen > 0.001) {\n\t\t\tnormalX /= normalLen;\n\t\t\tnormalY /= normalLen;\n\n\t\t\t// Compute the offset scaling factor based on the angle\n\t\t\t// For sharp angles, we need to extend the offset\n\t\t\tconst dot = normal1.x * normal2.x + normal1.y * normal2.y;\n\t\t\tconst scale = dot > -0.999 ? 1 / Math.sqrt((1 + dot) / 2) : 1;\n\n\t\t\t// Limit the scale to prevent extreme offsets at very sharp angles\n\t\t\tconst limitedScale = Math.min(scale, 3);\n\n\t\t\tresult.push({\n\t\t\t\tx: curr.x + normalX * actualOffset * limitedScale,\n\t\t\t\ty: curr.y + normalY * actualOffset * limitedScale,\n\t\t\t});\n\t\t} else {\n\t\t\tresult.push(curr);\n\t\t}\n\t}\n\n\treturn result;\n}\n",
91
93
  "/**\n * High-level rasterization API\n */\n\nimport type { Font } from \"../font/font.ts\";\nimport {\n\tcreateHintingEngine,\n\ttype GlyphOutline,\n\ttype HintedGlyph,\n\ttype HintingEngine,\n\thintGlyph,\n\tloadCVTProgram,\n\tloadFontProgram,\n\tsetSize,\n} from \"../hinting/programs.ts\";\nimport { type GlyphPath, getGlyphPath } from \"../render/path.ts\";\nimport type { GlyphId } from \"../types.ts\";\nimport { GrayRaster } from \"./gray-raster.ts\";\nimport { decomposePath, getPathBounds } from \"./outline-decompose.ts\";\nimport {\n\ttype Bitmap,\n\tcreateBitmap,\n\tFillRule,\n\tPixelMode,\n\ttype RasterizedGlyph,\n\ttype RasterizeOptions,\n} from \"./types.ts\";\n\n/** Cached hinting engines per font */\nconst hintingEngineCache = new WeakMap<Font, HintingEngine>();\n\n/** Get or create hinting engine for a font */\nfunction getHintingEngine(font: Font): HintingEngine | null {\n\tif (!font.isTrueType || !font.hasHinting) return null;\n\n\tlet engine = hintingEngineCache.get(font);\n\tif (engine) return engine;\n\n\tconst cvt = font.cvtTable;\n\tconst cvtValues = cvt ? new Int32Array(cvt.values) : undefined;\n\n\tconst maxp = font.maxp;\n\tengine = createHintingEngine(\n\t\tfont.unitsPerEm,\n\t\t\"maxStackElements\" in maxp ? maxp.maxStackElements : 256,\n\t\t\"maxStorage\" in maxp ? maxp.maxStorage : 64,\n\t\t\"maxFunctionDefs\" in maxp ? maxp.maxFunctionDefs : 64,\n\t\t\"maxTwilightPoints\" in maxp ? maxp.maxTwilightPoints : 16,\n\t\tcvtValues,\n\t);\n\n\tconst fpgm = font.fpgm;\n\tif (fpgm) loadFontProgram(engine, fpgm.instructions);\n\n\tconst prep = font.prep;\n\tif (prep) loadCVTProgram(engine, prep.instructions);\n\n\thintingEngineCache.set(font, engine);\n\treturn engine;\n}\n\n/** Convert TrueType glyph to outline for hinting */\nfunction glyphToOutline(font: Font, glyphId: GlyphId): GlyphOutline | null {\n\tconst glyph = font.getGlyph(glyphId);\n\tif (!glyph || glyph.type === \"empty\") return null;\n\n\tconst xCoords: number[] = [];\n\tconst yCoords: number[] = [];\n\tconst flags: number[] = [];\n\tconst contourEnds: number[] = [];\n\n\t// Get metrics for phantom points\n\tconst advanceWidth = font.advanceWidth(glyphId);\n\tconst lsb = font.leftSideBearing(glyphId);\n\n\tif (glyph.type === \"simple\") {\n\t\tlet pointIndex = 0;\n\t\tfor (const contour of glyph.contours) {\n\t\t\tfor (const point of contour) {\n\t\t\t\txCoords.push(point.x);\n\t\t\t\tyCoords.push(point.y);\n\t\t\t\tflags.push(point.onCurve ? 1 : 0);\n\t\t\t\tpointIndex++;\n\t\t\t}\n\t\t\tcontourEnds.push(pointIndex - 1);\n\t\t}\n\t\treturn {\n\t\t\txCoords,\n\t\t\tyCoords,\n\t\t\tflags: new Uint8Array(flags),\n\t\t\tcontourEnds,\n\t\t\tinstructions: glyph.instructions,\n\t\t\tlsb,\n\t\t\tadvanceWidth,\n\t\t};\n\t} else {\n\t\t// Composite - flatten components\n\t\tfor (const component of glyph.components) {\n\t\t\tconst compGlyph = font.getGlyph(component.glyphId);\n\t\t\tif (!compGlyph || compGlyph.type !== \"simple\") continue;\n\n\t\t\tconst [a, b, c, d] = component.transform;\n\t\t\tconst ox = component.arg1,\n\t\t\t\toy = component.arg2;\n\t\t\tlet pointOffset = xCoords.length;\n\n\t\t\tfor (const contour of compGlyph.contours) {\n\t\t\t\tfor (const point of contour) {\n\t\t\t\t\txCoords.push(point.x * a + point.y * c + ox);\n\t\t\t\t\tyCoords.push(point.x * b + point.y * d + oy);\n\t\t\t\t\tflags.push(point.onCurve ? 1 : 0);\n\t\t\t\t\tpointOffset++;\n\t\t\t\t}\n\t\t\t\tcontourEnds.push(pointOffset - 1);\n\t\t\t}\n\t\t}\n\t\tif (xCoords.length === 0) return null;\n\t\treturn {\n\t\t\txCoords,\n\t\t\tyCoords,\n\t\t\tflags: new Uint8Array(flags),\n\t\t\tcontourEnds,\n\t\t\tinstructions: glyph.instructions,\n\t\t\tlsb,\n\t\t\tadvanceWidth,\n\t\t};\n\t}\n}\n\n/** Decompose hinted glyph to rasterizer */\nfunction decomposeHintedGlyph(\n\traster: GrayRaster,\n\thinted: HintedGlyph,\n\toffsetX: number,\n\toffsetY: number,\n): void {\n\tconst { xCoords, yCoords, flags, contourEnds } = hinted;\n\tlet contourIdx = 0,\n\t\tcontourStart = 0;\n\n\tfor (let i = 0; i < xCoords.length; i++) {\n\t\tconst isEnd = i === contourEnds[contourIdx];\n\t\t// Convert 26.6 to rasterizer format (shift left 2 for 26.8)\n\t\tconst x = ((xCoords[i] << 2) | 0) + (offsetX << 8);\n\t\tconst y = ((-yCoords[i] << 2) | 0) + (offsetY << 8); // Flip Y\n\t\tconst onCurve = (flags[i] & 1) !== 0;\n\n\t\tif (i === contourStart) {\n\t\t\traster.moveTo(x, y);\n\t\t} else if (onCurve) {\n\t\t\traster.lineTo(x, y);\n\t\t} else {\n\t\t\tconst nextIdx = isEnd ? contourStart : i + 1;\n\t\t\tconst nx = ((xCoords[nextIdx] << 2) | 0) + (offsetX << 8);\n\t\t\tconst ny = ((-yCoords[nextIdx] << 2) | 0) + (offsetY << 8);\n\t\t\tconst nextOn = (flags[nextIdx] & 1) !== 0;\n\n\t\t\tif (nextOn) {\n\t\t\t\traster.conicTo(x, y, nx, ny);\n\t\t\t\tif (!isEnd) i++;\n\t\t\t} else {\n\t\t\t\traster.conicTo(x, y, (x + nx) >> 1, (y + ny) >> 1);\n\t\t\t}\n\t\t}\n\n\t\tif (isEnd) {\n\t\t\tconst sx = ((xCoords[contourStart] << 2) | 0) + (offsetX << 8);\n\t\t\tconst sy = ((-yCoords[contourStart] << 2) | 0) + (offsetY << 8);\n\t\t\tif (onCurve && i !== contourStart) raster.lineTo(sx, sy);\n\t\t\tcontourIdx++;\n\t\t\tcontourStart = i + 1;\n\t\t}\n\t}\n}\n\n/** Threshold for using band processing (height in pixels) */\nconst BAND_PROCESSING_THRESHOLD = 256;\n\n/**\n * Rasterize a glyph path to a bitmap\n */\nexport function rasterizePath(\n\tpath: GlyphPath,\n\toptions: RasterizeOptions,\n): Bitmap {\n\tconst {\n\t\twidth,\n\t\theight,\n\t\tscale,\n\t\toffsetX = 0,\n\t\toffsetY = 0,\n\t\tpixelMode = PixelMode.Gray,\n\t\tfillRule = FillRule.NonZero,\n\t\tflipY = true,\n\t} = options;\n\n\t// Create bitmap\n\tconst bitmap = createBitmap(width, height, pixelMode);\n\n\t// Create rasterizer\n\tconst raster = new GrayRaster();\n\traster.setClip(0, 0, width, height);\n\n\t// Use band processing for large glyphs to ensure bounded memory\n\tif (height > BAND_PROCESSING_THRESHOLD) {\n\t\tconst decomposeFn = () =>\n\t\t\tdecomposePath(raster, path, scale, offsetX, offsetY, flipY);\n\t\traster.renderWithBands(\n\t\t\tbitmap,\n\t\t\tdecomposeFn,\n\t\t\t{ minY: 0, maxY: height },\n\t\t\tfillRule,\n\t\t);\n\t} else {\n\t\t// Small glyph - render in single pass with full height band\n\t\traster.setBandBounds(0, height);\n\t\traster.reset();\n\t\tdecomposePath(raster, path, scale, offsetX, offsetY, flipY);\n\t\traster.sweep(bitmap, fillRule);\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Rasterize a glyph from a font\n */\nexport function rasterizeGlyph(\n\tfont: Font,\n\tglyphId: GlyphId,\n\tfontSize: number,\n\toptions?: {\n\t\tpixelMode?: PixelMode;\n\t\tpadding?: number;\n\t\t/** Use TrueType hinting if available */\n\t\thinting?: boolean;\n\t},\n): RasterizedGlyph | null {\n\tconst padding = options?.padding ?? 1;\n\tconst pixelMode = options?.pixelMode ?? PixelMode.Gray;\n\tconst useHinting = options?.hinting ?? false;\n\n\t// Try hinted rendering if requested\n\tif (useHinting && font.hasHinting) {\n\t\tconst result = rasterizeHintedGlyph(\n\t\t\tfont,\n\t\t\tglyphId,\n\t\t\tfontSize,\n\t\t\tpadding,\n\t\t\tpixelMode,\n\t\t);\n\t\tif (result) return result;\n\t}\n\n\t// Fall back to unhinted rendering\n\tconst path = getGlyphPath(font, glyphId);\n\tif (!path) return null;\n\n\tconst scale = fontSize / font.unitsPerEm;\n\n\t// Get bounds\n\tconst bounds = getPathBounds(path, scale, true);\n\tif (!bounds) {\n\t\treturn {\n\t\t\tbitmap: createBitmap(1, 1, pixelMode),\n\t\t\tbearingX: 0,\n\t\t\tbearingY: 0,\n\t\t};\n\t}\n\n\tconst width = bounds.maxX - bounds.minX + padding * 2;\n\tconst height = bounds.maxY - bounds.minY + padding * 2;\n\n\tif (width <= 0 || height <= 0) {\n\t\treturn {\n\t\t\tbitmap: createBitmap(1, 1, pixelMode),\n\t\t\tbearingX: 0,\n\t\t\tbearingY: 0,\n\t\t};\n\t}\n\n\tconst offsetX = -bounds.minX + padding;\n\tconst offsetY = -bounds.minY + padding;\n\n\tconst bitmap = rasterizePath(path, {\n\t\twidth,\n\t\theight,\n\t\tscale,\n\t\toffsetX,\n\t\toffsetY,\n\t\tpixelMode,\n\t\tflipY: true,\n\t});\n\n\treturn {\n\t\tbitmap,\n\t\tbearingX: bounds.minX - padding,\n\t\tbearingY: -(bounds.minY - padding),\n\t};\n}\n\n/** Rasterize a glyph with TrueType hinting */\nfunction rasterizeHintedGlyph(\n\tfont: Font,\n\tglyphId: GlyphId,\n\tfontSize: number,\n\tpadding: number,\n\tpixelMode: PixelMode,\n): RasterizedGlyph | null {\n\tconst engine = getHintingEngine(font);\n\tif (!engine) return null;\n\n\tconst outline = glyphToOutline(font, glyphId);\n\tif (!outline) return null;\n\n\tconst ppem = Math.round(fontSize);\n\tconst error = setSize(engine, ppem, ppem);\n\tif (error) return null;\n\n\tconst hinted = hintGlyph(engine, outline);\n\tif (hinted.error || hinted.xCoords.length === 0) return null;\n\n\t// Calculate bounds from hinted coordinates (26.6 fixed point)\n\tlet minX = Infinity,\n\t\tminY = Infinity,\n\t\tmaxX = -Infinity,\n\t\tmaxY = -Infinity;\n\tfor (let i = 0; i < hinted.xCoords.length; i++) {\n\t\tconst x = hinted.xCoords[i] / 64;\n\t\tconst y = hinted.yCoords[i] / 64;\n\t\tminX = Math.min(minX, x);\n\t\tminY = Math.min(minY, y);\n\t\tmaxX = Math.max(maxX, x);\n\t\tmaxY = Math.max(maxY, y);\n\t}\n\n\tif (!Number.isFinite(minX)) {\n\t\treturn { bitmap: createBitmap(1, 1, pixelMode), bearingX: 0, bearingY: 0 };\n\t}\n\n\tconst bMinX = Math.floor(minX),\n\t\tbMinY = Math.floor(minY);\n\tconst bMaxX = Math.ceil(maxX),\n\t\tbMaxY = Math.ceil(maxY);\n\tconst width = bMaxX - bMinX + padding * 2;\n\tconst height = bMaxY - bMinY + padding * 2;\n\n\tif (width <= 0 || height <= 0) {\n\t\treturn { bitmap: createBitmap(1, 1, pixelMode), bearingX: 0, bearingY: 0 };\n\t}\n\n\tconst bitmap = createBitmap(width, height, pixelMode);\n\tconst raster = new GrayRaster();\n\traster.setClip(0, 0, width, height);\n\traster.reset();\n\n\tconst offsetX = -bMinX + padding;\n\tconst offsetY = height - 1 + bMinY - padding;\n\n\tdecomposeHintedGlyph(raster, hinted, offsetX, offsetY);\n\traster.sweep(bitmap, FillRule.NonZero);\n\n\treturn {\n\t\tbitmap,\n\t\tbearingX: bMinX - padding,\n\t\tbearingY: bMaxY + padding,\n\t};\n}\n\n/**\n * Rasterize text string using shaped glyphs\n */\nexport function rasterizeText(\n\tfont: Font,\n\ttext: string,\n\tfontSize: number,\n\toptions?: {\n\t\tpixelMode?: PixelMode;\n\t\tpadding?: number;\n\t},\n): Bitmap | null {\n\t// This would integrate with the shaper\n\t// For now, simple glyph-by-glyph rendering\n\n\tconst scale = fontSize / font.unitsPerEm;\n\tconst padding = options?.padding ?? 2;\n\tconst pixelMode = options?.pixelMode ?? PixelMode.Gray;\n\n\t// Get glyphs for text\n\tconst glyphs: { glyphId: GlyphId; advance: number }[] = [];\n\tlet totalAdvance = 0;\n\tlet maxAscent = 0;\n\tlet maxDescent = 0;\n\n\tfor (const char of text) {\n\t\tconst codepoint = char.codePointAt(0);\n\t\tif (codepoint === undefined) continue;\n\n\t\tconst glyphId = font.glyphId(codepoint);\n\t\tif (glyphId === undefined) continue;\n\n\t\tconst advance = font.advanceWidth(glyphId) * scale;\n\t\tconst path = getGlyphPath(font, glyphId);\n\n\t\tif (path?.bounds) {\n\t\t\tmaxAscent = Math.max(maxAscent, -path.bounds.yMin * scale);\n\t\t\tmaxDescent = Math.max(maxDescent, path.bounds.yMax * scale);\n\t\t}\n\n\t\tglyphs.push({ glyphId, advance });\n\t\ttotalAdvance += advance;\n\t}\n\n\tif (glyphs.length === 0) return null;\n\n\t// Create bitmap\n\tconst width = Math.ceil(totalAdvance) + padding * 2;\n\tconst height = Math.ceil(maxAscent + maxDescent) + padding * 2;\n\n\tconst bitmap = createBitmap(width, height, pixelMode);\n\tconst raster = new GrayRaster();\n\traster.setClip(0, 0, width, height);\n\n\t// Render each glyph\n\tlet x = padding;\n\tconst baseline = maxDescent + padding;\n\n\tfor (const { glyphId, advance } of glyphs) {\n\t\tconst path = getGlyphPath(font, glyphId);\n\t\tif (path) {\n\t\t\traster.reset();\n\t\t\tdecomposePath(raster, path, scale, x, baseline, true);\n\t\t\traster.sweep(bitmap);\n\t\t}\n\t\tx += advance;\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Export bitmap to raw RGBA pixels (for WebGL textures, etc.)\n */\nexport function bitmapToRGBA(bitmap: Bitmap): Uint8Array {\n\t// bitmap.width is always the pixel width\n\t// For LCD mode, pitch = width * 3 (3 bytes per pixel for R, G, B subpixels)\n\tconst isLCD = bitmap.pixelMode === PixelMode.LCD;\n\tconst rgba = new Uint8Array(bitmap.width * bitmap.rows * 4);\n\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\tconst dstIdx = (y * bitmap.width + x) * 4;\n\n\t\t\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x;\n\t\t\t\tconst alpha = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\t// Black text on white background\n\t\t\t\trgba[dstIdx] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 1] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 2] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 3] = 255;\n\t\t\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tconst alpha = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1 ? 255 : 0;\n\t\t\t\trgba[dstIdx] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 1] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 2] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 3] = 255;\n\t\t\t} else if (isLCD) {\n\t\t\t\t// LCD: 3 bytes per pixel (R, G, B subpixel coverage)\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x * 3;\n\t\t\t\tconst r = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\tconst g = bitmap.buffer[srcIdx + 1] ?? 0;\n\t\t\t\tconst b = bitmap.buffer[srcIdx + 2] ?? 0;\n\t\t\t\t// Black text on white background with subpixel colors\n\t\t\t\trgba[dstIdx] = 255 - r;\n\t\t\t\trgba[dstIdx + 1] = 255 - g;\n\t\t\t\trgba[dstIdx + 2] = 255 - b;\n\t\t\t\trgba[dstIdx + 3] = 255;\n\t\t\t} else {\n\t\t\t\t// Fallback for other modes\n\t\t\t\tconst srcIdx = y * bitmap.pitch + x;\n\t\t\t\tconst alpha = bitmap.buffer[srcIdx] ?? 0;\n\t\t\t\trgba[dstIdx] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 1] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 2] = 255 - alpha;\n\t\t\t\trgba[dstIdx + 3] = 255;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn rgba;\n}\n\n/**\n * Export bitmap to grayscale array\n */\nexport function bitmapToGray(bitmap: Bitmap): Uint8Array {\n\tif (bitmap.pixelMode === PixelMode.Gray && bitmap.pitch === bitmap.width) {\n\t\treturn bitmap.buffer;\n\t}\n\n\tconst gray = new Uint8Array(bitmap.width * bitmap.rows);\n\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\tconst dstIdx = y * bitmap.width + x;\n\n\t\t\tif (bitmap.pixelMode === PixelMode.Gray) {\n\t\t\t\tgray[dstIdx] = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t\t} else if (bitmap.pixelMode === PixelMode.Mono) {\n\t\t\t\tconst byteIdx = y * bitmap.pitch + (x >> 3);\n\t\t\t\tconst bitIdx = 7 - (x & 7);\n\t\t\t\tgray[dstIdx] = ((bitmap.buffer[byteIdx] ?? 0) >> bitIdx) & 1 ? 255 : 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn gray;\n}\n\n// Re-export bbox\nexport {\n\ttype BBox,\n\tevaluateCubic,\n\tevaluateQuadratic,\n\tgetCubicExtrema,\n\tgetExactBounds,\n\tgetQuadraticExtrema,\n} from \"./bbox.ts\";\n// Re-export bitmap utilities\nexport {\n\tblendBitmap,\n\tconvertBitmap,\n\tcopyBitmap,\n\temboldenBitmap,\n\tresizeBitmap,\n} from \"./bitmap-utils.ts\";\n// Re-export blur filters\nexport {\n\tblurBitmap,\n\tboxBlur,\n\tcreateGaussianKernel,\n\tgaussianBlur,\n} from \"./blur.ts\";\n// Re-export gradient\nexport {\n\ttype ColorStop,\n\tcreateGradientBitmap,\n\ttype Gradient,\n\tinterpolateGradient,\n\ttype LinearGradient,\n\ttype RadialGradient,\n\trasterizePathWithGradient,\n} from \"./gradient.ts\";\n// Re-export SDF\nexport { renderSdf, type SdfOptions } from \"./sdf.ts\";\n// Re-export stroker\nexport {\n\ttype LineCap,\n\ttype LineJoin,\n\ttype StrokerOptions,\n\tstrokePath,\n} from \"./stroker.ts\";\n// Re-export synthetic effects\nexport {\n\tcondensePath,\n\temboldenPath,\n\tobliquePath,\n\ttransformPath,\n} from \"./synth.ts\";\n// Re-export types\nexport {\n\ttype Bitmap,\n\tclearBitmap,\n\tcreateBitmap,\n\tFillRule,\n\tPixelMode,\n\ttype RasterizedGlyph,\n\ttype RasterizeOptions,\n\ttype Span,\n} from \"./types.ts\";\n",
92
- "/**\n * Gradient fill rendering for paths\n */\n\nimport type { GlyphPath } from \"../render/path.ts\";\nimport { rasterizePath } from \"./rasterize.ts\";\nimport {\n\ttype Bitmap,\n\tcreateBitmap,\n\tPixelMode,\n\ttype RasterizeOptions,\n} from \"./types.ts\";\n\n/**\n * Color stop in a gradient (RGBA, 0-255 each)\n */\nexport interface ColorStop {\n\t/** Position along gradient, 0.0 to 1.0 */\n\toffset: number;\n\t/** RGBA color values, 0-255 each */\n\tcolor: [number, number, number, number];\n}\n\n/**\n * Linear gradient from point (x0,y0) to (x1,y1)\n */\nexport interface LinearGradient {\n\ttype: \"linear\";\n\t/** Start X coordinate */\n\tx0: number;\n\t/** Start Y coordinate */\n\ty0: number;\n\t/** End X coordinate */\n\tx1: number;\n\t/** End Y coordinate */\n\ty1: number;\n\t/** Color stops */\n\tstops: ColorStop[];\n}\n\n/**\n * Radial gradient from center point with radius\n */\nexport interface RadialGradient {\n\ttype: \"radial\";\n\t/** Center X coordinate */\n\tcx: number;\n\t/** Center Y coordinate */\n\tcy: number;\n\t/** Gradient radius */\n\tradius: number;\n\t/** Color stops */\n\tstops: ColorStop[];\n}\n\n/**\n * Gradient type union\n */\nexport type Gradient = LinearGradient | RadialGradient;\n\n/**\n * Interpolate color between two stops\n */\nfunction lerpColor(\n\tcolor1: [number, number, number, number],\n\tcolor2: [number, number, number, number],\n\tt: number,\n): [number, number, number, number] {\n\treturn [\n\t\tMath.round(color1[0] + (color2[0] - color1[0]) * t),\n\t\tMath.round(color1[1] + (color2[1] - color1[1]) * t),\n\t\tMath.round(color1[2] + (color2[2] - color1[2]) * t),\n\t\tMath.round(color1[3] + (color2[3] - color1[3]) * t),\n\t];\n}\n\n/**\n * Get color at position in gradient\n */\nexport function interpolateGradient(\n\tgradient: Gradient,\n\tx: number,\n\ty: number,\n): [number, number, number, number] {\n\tif (gradient.stops.length === 0) {\n\t\treturn [0, 0, 0, 0];\n\t}\n\n\tif (gradient.stops.length === 1) {\n\t\treturn gradient.stops[0].color;\n\t}\n\n\tlet t: number;\n\n\tif (gradient.type === \"linear\") {\n\t\tconst dx = gradient.x1 - gradient.x0;\n\t\tconst dy = gradient.y1 - gradient.y0;\n\t\tconst lengthSq = dx * dx + dy * dy;\n\n\t\tif (lengthSq === 0) {\n\t\t\treturn gradient.stops[0].color;\n\t\t}\n\n\t\tconst px = x - gradient.x0;\n\t\tconst py = y - gradient.y0;\n\t\tt = (px * dx + py * dy) / lengthSq;\n\t} else {\n\t\tconst dx = x - gradient.cx;\n\t\tconst dy = y - gradient.cy;\n\t\tconst distance = Math.sqrt(dx * dx + dy * dy);\n\t\tt = gradient.radius > 0 ? distance / gradient.radius : 0;\n\t}\n\n\tt = Math.max(0, Math.min(1, t));\n\n\tconst sortedStops = [...gradient.stops].sort((a, b) => a.offset - b.offset);\n\n\tif (t <= sortedStops[0].offset) {\n\t\treturn sortedStops[0].color;\n\t}\n\n\tif (t >= sortedStops[sortedStops.length - 1].offset) {\n\t\treturn sortedStops[sortedStops.length - 1].color;\n\t}\n\n\tfor (let i = 0; i < sortedStops.length - 1; i++) {\n\t\tconst stop1 = sortedStops[i];\n\t\tconst stop2 = sortedStops[i + 1];\n\n\t\tif (t >= stop1.offset && t <= stop2.offset) {\n\t\t\tconst range = stop2.offset - stop1.offset;\n\t\t\tif (range === 0) {\n\t\t\t\treturn stop2.color;\n\t\t\t}\n\t\t\tconst localT = (t - stop1.offset) / range;\n\t\t\treturn lerpColor(stop1.color, stop2.color, localT);\n\t\t}\n\t}\n\n\treturn sortedStops[sortedStops.length - 1].color;\n}\n\n/**\n * Create a bitmap filled with gradient (no path)\n */\nexport function createGradientBitmap(\n\twidth: number,\n\theight: number,\n\tgradient: Gradient,\n): Bitmap {\n\tconst bitmap = createBitmap(width, height, PixelMode.RGBA);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst color = interpolateGradient(gradient, x, y);\n\t\t\tconst idx = (y * width + x) * 4;\n\t\t\tbitmap.buffer[idx] = color[0];\n\t\t\tbitmap.buffer[idx + 1] = color[1];\n\t\t\tbitmap.buffer[idx + 2] = color[2];\n\t\t\tbitmap.buffer[idx + 3] = color[3];\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Rasterize path with gradient fill\n * First rasterizes path to get coverage mask, then fills with gradient\n */\nexport function rasterizePathWithGradient(\n\tpath: GlyphPath,\n\tgradient: Gradient,\n\toptions: RasterizeOptions,\n): Bitmap {\n\tconst { width, height } = options;\n\n\tconst coverageBitmap = rasterizePath(path, {\n\t\t...options,\n\t\tpixelMode: PixelMode.Gray,\n\t\tflipY: options.flipY ?? false,\n\t});\n\n\tconst resultBitmap = createBitmap(width, height, PixelMode.RGBA);\n\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst coverage = coverageBitmap.buffer[y * coverageBitmap.pitch + x] ?? 0;\n\n\t\t\tif (coverage > 0) {\n\t\t\t\tconst color = interpolateGradient(gradient, x, y);\n\t\t\t\tconst idx = (y * width + x) * 4;\n\n\t\t\t\tconst alpha = (color[3] * coverage) / 255;\n\n\t\t\t\tresultBitmap.buffer[idx] = color[0];\n\t\t\t\tresultBitmap.buffer[idx + 1] = color[1];\n\t\t\t\tresultBitmap.buffer[idx + 2] = color[2];\n\t\t\t\tresultBitmap.buffer[idx + 3] = Math.round(alpha);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn resultBitmap;\n}\n",
94
+ "/**\n * Texture atlas generator for GPU font rendering\n *\n * Packs multiple glyph bitmaps into a single texture atlas\n * using shelf/skyline bin packing algorithm.\n */\n\nimport type { Font } from \"../font/font.ts\";\nimport { rasterizeGlyph } from \"./rasterize.ts\";\nimport {\n\ttype AtlasOptions,\n\ttype Bitmap,\n\tcreateBitmap,\n\ttype GlyphAtlas,\n\ttype GlyphMetrics,\n\tPixelMode,\n} from \"./types.ts\";\n\n/**\n * Shelf packing node\n */\ninterface Shelf {\n\ty: number;\n\theight: number;\n\twidth: number;\n}\n\n/**\n * Build a texture atlas from a set of glyphs\n */\nexport function buildAtlas(\n\tfont: Font,\n\tglyphIds: number[],\n\toptions: AtlasOptions,\n): GlyphAtlas {\n\tconst {\n\t\tfontSize,\n\t\tpadding = 1,\n\t\tmaxWidth = 2048,\n\t\tmaxHeight = 2048,\n\t\tpixelMode = PixelMode.Gray,\n\t} = options;\n\n\t// First pass: rasterize all glyphs and collect sizes\n\tconst glyphData: Array<{\n\t\tglyphId: number;\n\t\tbitmap: Bitmap;\n\t\tbearingX: number;\n\t\tbearingY: number;\n\t\tadvance: number;\n\t}> = [];\n\n\tconst scale = fontSize / font.unitsPerEm;\n\n\tfor (const glyphId of glyphIds) {\n\t\tconst result = rasterizeGlyph(font, glyphId, fontSize, {\n\t\t\tpadding: 0,\n\t\t\tpixelMode,\n\t\t});\n\t\tif (!result) continue;\n\n\t\tconst advance = font.advanceWidth(glyphId) * scale;\n\n\t\tglyphData.push({\n\t\t\tglyphId,\n\t\t\tbitmap: result.bitmap,\n\t\t\tbearingX: result.bearingX,\n\t\t\tbearingY: result.bearingY,\n\t\t\tadvance,\n\t\t});\n\t}\n\n\t// Sort by height (descending) for better packing\n\tglyphData.sort((a, b) => b.bitmap.rows - a.bitmap.rows);\n\n\t// Calculate required atlas size\n\tconst {\n\t\twidth: atlasWidth,\n\t\theight: atlasHeight,\n\t\tplacements,\n\t} = packGlyphs(\n\t\tglyphData.map((g) => ({\n\t\t\twidth: g.bitmap.width + padding * 2,\n\t\t\theight: g.bitmap.rows + padding * 2,\n\t\t})),\n\t\tmaxWidth,\n\t\tmaxHeight,\n\t);\n\n\t// Create atlas bitmap\n\tconst atlas = createBitmap(atlasWidth, atlasHeight, pixelMode);\n\n\t// Copy glyphs into atlas and build metrics map\n\tconst glyphMetrics = new Map<number, GlyphMetrics>();\n\n\tfor (let i = 0; i < glyphData.length; i++) {\n\t\tconst glyph = glyphData[i];\n\t\tconst placement = placements[i];\n\n\t\tif (!placement.placed) continue;\n\n\t\t// Copy glyph bitmap into atlas\n\t\tcopyBitmap(\n\t\t\tglyph.bitmap,\n\t\t\tatlas,\n\t\t\tplacement.x + padding,\n\t\t\tplacement.y + padding,\n\t\t);\n\n\t\t// Store metrics\n\t\tglyphMetrics.set(glyph.glyphId, {\n\t\t\tglyphId: glyph.glyphId,\n\t\t\tatlasX: placement.x + padding,\n\t\t\tatlasY: placement.y + padding,\n\t\t\twidth: glyph.bitmap.width,\n\t\t\theight: glyph.bitmap.rows,\n\t\t\tbearingX: glyph.bearingX,\n\t\t\tbearingY: glyph.bearingY,\n\t\t\tadvance: glyph.advance,\n\t\t});\n\t}\n\n\treturn {\n\t\tbitmap: atlas,\n\t\tglyphs: glyphMetrics,\n\t\tfontSize,\n\t};\n}\n\n/**\n * Build atlas for ASCII printable characters (32-126)\n */\nexport function buildAsciiAtlas(font: Font, options: AtlasOptions): GlyphAtlas {\n\tconst glyphIds: number[] = [];\n\n\tfor (let codepoint = 32; codepoint <= 126; codepoint++) {\n\t\tconst glyphId = font.glyphId(codepoint);\n\t\tif (glyphId !== undefined && glyphId !== 0) {\n\t\t\tglyphIds.push(glyphId);\n\t\t}\n\t}\n\n\treturn buildAtlas(font, glyphIds, options);\n}\n\n/**\n * Build atlas for a specific string (including all unique glyphs)\n */\nexport function buildStringAtlas(\n\tfont: Font,\n\ttext: string,\n\toptions: AtlasOptions,\n): GlyphAtlas {\n\tconst glyphIdSet = new Set<number>();\n\n\tfor (const char of text) {\n\t\tconst codepoint = char.codePointAt(0);\n\t\tif (codepoint === undefined) continue;\n\n\t\tconst glyphId = font.glyphId(codepoint);\n\t\tif (glyphId !== undefined && glyphId !== 0) {\n\t\t\tglyphIdSet.add(glyphId);\n\t\t}\n\t}\n\n\treturn buildAtlas(font, Array.from(glyphIdSet), options);\n}\n\n/**\n * Placement result for a glyph\n */\ninterface Placement {\n\tx: number;\n\ty: number;\n\tplaced: boolean;\n}\n\n/**\n * Pack rectangles using shelf algorithm\n */\nfunction packGlyphs(\n\tsizes: Array<{ width: number; height: number }>,\n\tmaxWidth: number,\n\tmaxHeight: number,\n): { width: number; height: number; placements: Placement[] } {\n\tconst shelves: Shelf[] = [];\n\tconst placements: Placement[] = [];\n\n\tlet atlasWidth = 0;\n\tlet atlasHeight = 0;\n\n\tfor (const size of sizes) {\n\t\tlet placed = false;\n\t\tlet bestShelf = -1;\n\t\tlet bestY = maxHeight;\n\n\t\t// Try to find an existing shelf\n\t\tfor (let i = 0; i < shelves.length; i++) {\n\t\t\tconst shelf = shelves[i];\n\n\t\t\t// Check if glyph fits in this shelf\n\t\t\tif (shelf.width + size.width <= maxWidth && size.height <= shelf.height) {\n\t\t\t\tif (shelf.y < bestY) {\n\t\t\t\t\tbestShelf = i;\n\t\t\t\t\tbestY = shelf.y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (bestShelf >= 0) {\n\t\t\t// Place in existing shelf\n\t\t\tconst shelf = shelves[bestShelf];\n\t\t\tplacements.push({\n\t\t\t\tx: shelf.width,\n\t\t\t\ty: shelf.y,\n\t\t\t\tplaced: true,\n\t\t\t});\n\t\t\tshelf.width += size.width;\n\t\t\tatlasWidth = Math.max(atlasWidth, shelf.width);\n\t\t\tplaced = true;\n\t\t} else {\n\t\t\t// Create new shelf\n\t\t\tconst newY = atlasHeight;\n\n\t\t\tif (newY + size.height <= maxHeight && size.width <= maxWidth) {\n\t\t\t\tshelves.push({\n\t\t\t\t\ty: newY,\n\t\t\t\t\theight: size.height,\n\t\t\t\t\twidth: size.width,\n\t\t\t\t});\n\t\t\t\tplacements.push({\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: newY,\n\t\t\t\t\tplaced: true,\n\t\t\t\t});\n\t\t\t\tatlasHeight = newY + size.height;\n\t\t\t\tatlasWidth = Math.max(atlasWidth, size.width);\n\t\t\t\tplaced = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!placed) {\n\t\t\tplacements.push({ x: 0, y: 0, placed: false });\n\t\t}\n\t}\n\n\t// Round up to power of 2 for GPU compatibility\n\tconst finalWidth = nextPowerOf2(atlasWidth);\n\tconst finalHeight = nextPowerOf2(atlasHeight);\n\n\treturn {\n\t\twidth: Math.min(finalWidth, maxWidth),\n\t\theight: Math.min(finalHeight, maxHeight),\n\t\tplacements,\n\t};\n}\n\n/**\n * Copy source bitmap into destination at specified position\n */\nfunction copyBitmap(\n\tsrc: Bitmap,\n\tdst: Bitmap,\n\tdstX: number,\n\tdstY: number,\n): void {\n\tconst bytesPerPixel = src.pixelMode === PixelMode.LCD ? 3 : 1;\n\n\tfor (let y = 0; y < src.rows; y++) {\n\t\tconst srcRow = y * src.pitch;\n\t\tconst dstRow = (dstY + y) * dst.pitch + dstX * bytesPerPixel;\n\n\t\tfor (let x = 0; x < src.width * bytesPerPixel; x++) {\n\t\t\tdst.buffer[dstRow + x] = src.buffer[srcRow + x];\n\t\t}\n\t}\n}\n\n/**\n * Get next power of 2 >= n\n */\nfunction nextPowerOf2(n: number): number {\n\tif (n <= 0) return 1;\n\tn--;\n\tn |= n >> 1;\n\tn |= n >> 2;\n\tn |= n >> 4;\n\tn |= n >> 8;\n\tn |= n >> 16;\n\treturn n + 1;\n}\n\n/**\n * Export atlas to formats suitable for GPU upload\n */\nexport function atlasToRGBA(atlas: GlyphAtlas): Uint8Array {\n\tconst { bitmap } = atlas;\n\tconst rgba = new Uint8Array(bitmap.width * bitmap.rows * 4);\n\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\tconst srcIdx = y * bitmap.pitch + x;\n\t\t\tconst dstIdx = (y * bitmap.width + x) * 4;\n\n\t\t\tconst alpha = bitmap.buffer[srcIdx] ?? 0;\n\n\t\t\t// White text on transparent background\n\t\t\trgba[dstIdx] = 255;\n\t\t\trgba[dstIdx + 1] = 255;\n\t\t\trgba[dstIdx + 2] = 255;\n\t\t\trgba[dstIdx + 3] = alpha;\n\t\t}\n\t}\n\n\treturn rgba;\n}\n\n/**\n * Export atlas as single-channel alpha texture\n */\nexport function atlasToAlpha(atlas: GlyphAtlas): Uint8Array {\n\tconst { bitmap } = atlas;\n\n\tif (bitmap.pitch === bitmap.width) {\n\t\treturn bitmap.buffer;\n\t}\n\n\t// Copy without padding\n\tconst alpha = new Uint8Array(bitmap.width * bitmap.rows);\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\talpha[y * bitmap.width + x] = bitmap.buffer[y * bitmap.pitch + x];\n\t\t}\n\t}\n\n\treturn alpha;\n}\n\n/**\n * Get UV coordinates for a glyph in the atlas\n */\nexport function getGlyphUV(\n\tatlas: GlyphAtlas,\n\tglyphId: number,\n): { u0: number; v0: number; u1: number; v1: number } | null {\n\tconst metrics = atlas.glyphs.get(glyphId);\n\tif (!metrics) return null;\n\n\tconst { bitmap } = atlas;\n\n\treturn {\n\t\tu0: metrics.atlasX / bitmap.width,\n\t\tv0: metrics.atlasY / bitmap.rows,\n\t\tu1: (metrics.atlasX + metrics.width) / bitmap.width,\n\t\tv1: (metrics.atlasY + metrics.height) / bitmap.rows,\n\t};\n}\n",
95
+ "/**\n * Cascade Blur Algorithm\n *\n * High-performance Gaussian blur for large radii using pyramid scaling.\n *\n * The key insight: to blur with large radius efficiently:\n * 1. Scale down the image by factor of 2 (with smooth kernel)\n * 2. Apply blur with smaller kernel on reduced image\n * 3. Scale back up (with smooth kernel)\n *\n * The shrink/expand kernels [1, 5, 10, 10, 5, 1]/32 provide sufficient\n * smoothness to maintain 8-bit precision through multiple cascade levels.\n *\n * Performance: O(n) per pixel regardless of blur radius\n * Traditional Gaussian: O(r) per pixel where r is radius\n */\n\nimport { gaussianBlur } from \"./blur.ts\";\nimport { type Bitmap, PixelMode } from \"./types.ts\";\n\nconst PI = Math.PI;\n\n/**\n * Blur method parameters\n */\ninterface BlurMethod {\n\tlevel: number; // Number of cascade levels (shrink/expand)\n\tradius: number; // Blur kernel radius (4-8)\n\tcoeff: Float32Array; // Kernel coefficients\n}\n\n/**\n * Calculate Gaussian distribution values\n */\nfunction calcGauss(res: Float64Array, n: number, r2: number): void {\n\tconst alpha = 0.5 / r2;\n\tlet mul = Math.exp(-alpha);\n\tconst mul2 = mul * mul;\n\tlet cur = Math.sqrt(alpha / PI);\n\n\tres[0] = cur;\n\tcur *= mul;\n\tres[1] = cur;\n\tfor (let i = 2; i < n; i++) {\n\t\tmul *= mul2;\n\t\tcur *= mul;\n\t\tres[i] = cur;\n\t}\n}\n\n/**\n * Apply coefficient filter (for frequency domain calculations)\n */\nfunction coeffFilter(coeff: Float64Array, n: number, kernel: number[]): void {\n\tlet prev1 = coeff[1];\n\tlet prev2 = coeff[2];\n\tlet prev3 = coeff[3];\n\n\tfor (let i = 0; i < n; i++) {\n\t\tconst res =\n\t\t\tcoeff[i] * kernel[0] +\n\t\t\t(prev1 + coeff[i + 1]) * kernel[1] +\n\t\t\t(prev2 + coeff[i + 2]) * kernel[2] +\n\t\t\t(prev3 + coeff[i + 3]) * kernel[3];\n\t\tprev3 = prev2;\n\t\tprev2 = prev1;\n\t\tprev1 = coeff[i];\n\t\tcoeff[i] = res;\n\t}\n}\n\n/**\n * Calculate and invert matrix for least-squares solution\n */\nfunction calcMatrix(\n\tmat: Float64Array[],\n\tmatFreq: Float64Array,\n\tn: number,\n): void {\n\t// Build symmetric matrix\n\tfor (let i = 0; i < n; i++) {\n\t\tmat[i][i] = matFreq[2 * i + 2] + 3 * matFreq[0] - 4 * matFreq[i + 1];\n\t\tfor (let j = i + 1; j < n; j++) {\n\t\t\tmat[i][j] = mat[j][i] =\n\t\t\t\tmatFreq[i + j + 2] +\n\t\t\t\tmatFreq[j - i] +\n\t\t\t\t2 * (matFreq[0] - matFreq[i + 1] - matFreq[j + 1]);\n\t\t}\n\t}\n\n\t// Invert using Gauss-Jordan elimination\n\tfor (let k = 0; k < n; k++) {\n\t\tconst z = 1 / mat[k][k];\n\t\tmat[k][k] = 1;\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tif (i === k) continue;\n\t\t\tconst mul = mat[i][k] * z;\n\t\t\tmat[i][k] = 0;\n\t\t\tfor (let j = 0; j < n; j++) {\n\t\t\t\tmat[i][j] -= mat[k][j] * mul;\n\t\t\t}\n\t\t}\n\t\tfor (let j = 0; j < n; j++) {\n\t\t\tmat[k][j] *= z;\n\t\t}\n\t}\n}\n\n/**\n * Calculate optimal blur kernel coefficients\n * Uses least-squares fitting to match desired Gaussian\n */\nfunction calcCoeff(mu: Float64Array, n: number, r2: number, mul: number): void {\n\tconst w = 12096;\n\tconst kernel = [\n\t\t(((+3280 / w) * mul + 1092 / w) * mul + 2520 / w) * mul + 5204 / w,\n\t\t(((-2460 / w) * mul - 273 / w) * mul - 210 / w) * mul + 2943 / w,\n\t\t(((+984 / w) * mul - 546 / w) * mul - 924 / w) * mul + 486 / w,\n\t\t(((-164 / w) * mul + 273 / w) * mul - 126 / w) * mul + 17 / w,\n\t];\n\n\tconst matFreq = new Float64Array(17);\n\tmatFreq[0] = kernel[0];\n\tmatFreq[1] = kernel[1];\n\tmatFreq[2] = kernel[2];\n\tmatFreq[3] = kernel[3];\n\tcoeffFilter(matFreq, 7, kernel);\n\n\tconst vecFreq = new Float64Array(12);\n\tcalcGauss(vecFreq, n + 4, r2 * mul);\n\tcoeffFilter(vecFreq, n + 1, kernel);\n\n\tconst mat: Float64Array[] = [];\n\tfor (let i = 0; i < 8; i++) {\n\t\tmat.push(new Float64Array(8));\n\t}\n\tcalcMatrix(mat, matFreq, n);\n\n\tconst vec = new Float64Array(8);\n\tfor (let i = 0; i < n; i++) {\n\t\tvec[i] = matFreq[0] - matFreq[i + 1] - vecFreq[0] + vecFreq[i + 1];\n\t}\n\n\tfor (let i = 0; i < n; i++) {\n\t\tlet res = 0;\n\t\tfor (let j = 0; j < n; j++) {\n\t\t\tres += mat[i][j] * vec[j];\n\t\t}\n\t\tmu[i] = Math.max(0, res);\n\t}\n}\n\n/**\n * Find best blur method for given variance\n */\nfunction findBestMethod(r2: number): BlurMethod {\n\tconst mu = new Float64Array(8);\n\tlet level: number;\n\tlet radius: number;\n\n\tif (r2 < 0.5) {\n\t\tlevel = 0;\n\t\tradius = 4;\n\t\tmu[1] = 0.085 * r2 * r2 * r2;\n\t\tmu[0] = 0.5 * r2 - 4 * mu[1];\n\t\tmu[2] = mu[3] = 0;\n\t} else {\n\t\t// frexp equivalent: extract exponent\n\t\tconst sqrtVal = Math.sqrt(0.11569 * r2 + 0.20591047);\n\t\tlevel = Math.floor(Math.log2(sqrtVal)) + 1;\n\t\tconst frac = sqrtVal / 2 ** (level - 1) - 1; // Fractional part [0, 1)\n\n\t\tconst mul = 0.25 ** level;\n\t\tradius = 8 - Math.floor((10.1525 + 0.8335 * mul) * (1 - frac));\n\t\tradius = Math.max(radius, 4);\n\t\tradius = Math.min(radius, 8);\n\t\tcalcCoeff(mu, radius, r2, mul);\n\t}\n\n\tconst coeff = new Float32Array(8);\n\tfor (let i = 0; i < radius; i++) {\n\t\tcoeff[i] = mu[i];\n\t}\n\n\treturn { level, radius, coeff };\n}\n\n/**\n * Shrink image horizontally by factor of 2\n * Uses smooth kernel [1, 5, 10, 10, 5, 1]/32\n */\nfunction shrinkHorz(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n): void {\n\tconst newW = Math.floor((w + 5) / 2);\n\n\tfor (let y = 0; y < h; y++) {\n\t\tconst srcRow = y * srcStride;\n\t\tconst dstRow = y * dstStride;\n\n\t\tfor (let x = 0; x < newW; x++) {\n\t\t\tconst sx = x * 2;\n\n\t\t\t// Kernel: [1, 5, 10, 10, 5, 1]/32\n\t\t\tlet sum = 0;\n\t\t\tsum += (src[srcRow + Math.max(0, sx - 2)] ?? 0) * 1;\n\t\t\tsum += (src[srcRow + Math.max(0, sx - 1)] ?? 0) * 5;\n\t\t\tsum += (src[srcRow + Math.min(w - 1, sx)] ?? 0) * 10;\n\t\t\tsum += (src[srcRow + Math.min(w - 1, sx + 1)] ?? 0) * 10;\n\t\t\tsum += (src[srcRow + Math.min(w - 1, sx + 2)] ?? 0) * 5;\n\t\t\tsum += (src[srcRow + Math.min(w - 1, sx + 3)] ?? 0) * 1;\n\n\t\t\tdst[dstRow + x] = sum / 32;\n\t\t}\n\t}\n}\n\n/**\n * Shrink image vertically by factor of 2\n */\nfunction shrinkVert(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n): void {\n\tconst newH = Math.floor((h + 5) / 2);\n\n\tfor (let x = 0; x < w; x++) {\n\t\tfor (let y = 0; y < newH; y++) {\n\t\t\tconst sy = y * 2;\n\n\t\t\tlet sum = 0;\n\t\t\tsum += (src[Math.max(0, sy - 2) * srcStride + x] ?? 0) * 1;\n\t\t\tsum += (src[Math.max(0, sy - 1) * srcStride + x] ?? 0) * 5;\n\t\t\tsum += (src[Math.min(h - 1, sy) * srcStride + x] ?? 0) * 10;\n\t\t\tsum += (src[Math.min(h - 1, sy + 1) * srcStride + x] ?? 0) * 10;\n\t\t\tsum += (src[Math.min(h - 1, sy + 2) * srcStride + x] ?? 0) * 5;\n\t\t\tsum += (src[Math.min(h - 1, sy + 3) * srcStride + x] ?? 0) * 1;\n\n\t\t\tdst[y * dstStride + x] = sum / 32;\n\t\t}\n\t}\n}\n\n/**\n * Expand image horizontally by factor of 2\n */\nfunction expandHorz(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n): void {\n\tconst newW = w * 2 + 4;\n\n\tfor (let y = 0; y < h; y++) {\n\t\tconst srcRow = y * srcStride;\n\t\tconst dstRow = y * dstStride;\n\n\t\tfor (let x = 0; x < newW; x++) {\n\t\t\tconst sx = Math.floor((x - 2) / 2);\n\t\t\tconst odd = (x - 2) & 1;\n\n\t\t\tlet sum = 0;\n\t\t\tif (odd === 0) {\n\t\t\t\t// Even position: [1, 10, 5]/16 from left neighbor, [5, 10, 1]/16 from right\n\t\t\t\tsum += (src[srcRow + Math.max(0, Math.min(w - 1, sx - 1))] ?? 0) * 1;\n\t\t\t\tsum += (src[srcRow + Math.max(0, Math.min(w - 1, sx))] ?? 0) * 30;\n\t\t\t\tsum += (src[srcRow + Math.max(0, Math.min(w - 1, sx + 1))] ?? 0) * 1;\n\t\t\t} else {\n\t\t\t\t// Odd position: interpolate between neighbors\n\t\t\t\tsum += (src[srcRow + Math.max(0, Math.min(w - 1, sx))] ?? 0) * 16;\n\t\t\t\tsum += (src[srcRow + Math.max(0, Math.min(w - 1, sx + 1))] ?? 0) * 16;\n\t\t\t}\n\n\t\t\tdst[dstRow + x] = sum / 32;\n\t\t}\n\t}\n}\n\n/**\n * Expand image vertically by factor of 2\n */\nfunction expandVert(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n): void {\n\tconst newH = h * 2 + 4;\n\n\tfor (let x = 0; x < w; x++) {\n\t\tfor (let y = 0; y < newH; y++) {\n\t\t\tconst sy = Math.floor((y - 2) / 2);\n\t\t\tconst odd = (y - 2) & 1;\n\n\t\t\tlet sum = 0;\n\t\t\tif (odd === 0) {\n\t\t\t\tsum +=\n\t\t\t\t\t(src[Math.max(0, Math.min(h - 1, sy - 1)) * srcStride + x] ?? 0) * 1;\n\t\t\t\tsum +=\n\t\t\t\t\t(src[Math.max(0, Math.min(h - 1, sy)) * srcStride + x] ?? 0) * 30;\n\t\t\t\tsum +=\n\t\t\t\t\t(src[Math.max(0, Math.min(h - 1, sy + 1)) * srcStride + x] ?? 0) * 1;\n\t\t\t} else {\n\t\t\t\tsum +=\n\t\t\t\t\t(src[Math.max(0, Math.min(h - 1, sy)) * srcStride + x] ?? 0) * 16;\n\t\t\t\tsum +=\n\t\t\t\t\t(src[Math.max(0, Math.min(h - 1, sy + 1)) * srcStride + x] ?? 0) * 16;\n\t\t\t}\n\n\t\t\tdst[y * dstStride + x] = sum / 32;\n\t\t}\n\t}\n}\n\n/**\n * Apply 1D blur horizontally with computed coefficients\n */\nfunction blurHorz(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n\tradius: number,\n\tcoeff: Float32Array,\n): void {\n\tconst newW = w + 2 * radius;\n\n\tfor (let y = 0; y < h; y++) {\n\t\tconst srcRow = y * srcStride;\n\t\tconst dstRow = y * dstStride;\n\n\t\tfor (let x = 0; x < newW; x++) {\n\t\t\tconst cx = x - radius;\n\t\t\tlet sum = 0;\n\n\t\t\t// Apply symmetric kernel\n\t\t\tfor (let i = 0; i < radius; i++) {\n\t\t\t\tconst left = Math.max(0, Math.min(w - 1, cx - i - 1));\n\t\t\t\tconst right = Math.max(0, Math.min(w - 1, cx + i));\n\t\t\t\tsum +=\n\t\t\t\t\t((src[srcRow + left] ?? 0) + (src[srcRow + right] ?? 0)) * coeff[i];\n\t\t\t}\n\n\t\t\tdst[dstRow + x] = sum;\n\t\t}\n\t}\n}\n\n/**\n * Apply 1D blur vertically with computed coefficients\n */\nfunction blurVert(\n\tdst: Float32Array,\n\tsrc: Float32Array,\n\tw: number,\n\th: number,\n\tsrcStride: number,\n\tdstStride: number,\n\tradius: number,\n\tcoeff: Float32Array,\n): void {\n\tconst newH = h + 2 * radius;\n\n\tfor (let x = 0; x < w; x++) {\n\t\tfor (let y = 0; y < newH; y++) {\n\t\t\tconst cy = y - radius;\n\t\t\tlet sum = 0;\n\n\t\t\tfor (let i = 0; i < radius; i++) {\n\t\t\t\tconst top = Math.max(0, Math.min(h - 1, cy - i - 1));\n\t\t\t\tconst bottom = Math.max(0, Math.min(h - 1, cy + i));\n\t\t\t\tsum +=\n\t\t\t\t\t((src[top * srcStride + x] ?? 0) +\n\t\t\t\t\t\t(src[bottom * srcStride + x] ?? 0)) *\n\t\t\t\t\tcoeff[i];\n\t\t\t}\n\n\t\t\tdst[y * dstStride + x] = sum;\n\t\t}\n\t}\n}\n\n/**\n * Cascade blur for RGBA bitmaps - uses gaussianBlur which handles multi-channel\n * For RGBA, we fall back to the standard gaussian blur since cascade is optimized\n * for single-channel grayscale bitmaps.\n */\nfunction cascadeBlurRGBA(\n\tbitmap: Bitmap,\n\tradiusX: number,\n\tradiusY: number,\n): Bitmap {\n\t// For RGBA, use the standard gaussianBlur which handles multi-channel correctly\n\t// Use average of radiusX and radiusY since gaussianBlur only supports single radius\n\tconst avgRadius = (radiusX + radiusY) / 2;\n\treturn gaussianBlur(bitmap, avgRadius);\n}\n\n/**\n * Cascade Gaussian blur with asymmetric X/Y radii\n *\n * @param bitmap Input bitmap\n * @param radiusX Blur radius along X axis\n * @param radiusY Blur radius along Y axis (defaults to radiusX)\n * @returns New bitmap with blur applied (dimensions may change)\n */\nexport function cascadeBlur(\n\tbitmap: Bitmap,\n\tradiusX: number,\n\tradiusY: number = radiusX,\n): Bitmap {\n\tif (radiusX <= 0 && radiusY <= 0) {\n\t\treturn bitmap;\n\t}\n\n\t// Handle RGBA bitmaps - fall back to gaussianBlur which handles multi-channel\n\tif (bitmap.pixelMode === PixelMode.RGBA) {\n\t\treturn cascadeBlurRGBA(bitmap, radiusX, radiusY);\n\t}\n\n\t// Grayscale cascade blur implementation\n\tconst r2x = radiusX * radiusX;\n\tconst r2y = radiusY * radiusY;\n\n\tconst blurX = findBestMethod(r2x);\n\tconst blurY = findBestMethod(r2y);\n\n\tlet w = bitmap.width;\n\tlet h = bitmap.rows;\n\n\t// Calculate output dimensions\n\tconst offsetX = ((2 * blurX.radius + 9) << blurX.level) - 5;\n\tconst offsetY = ((2 * blurY.radius + 9) << blurY.level) - 5;\n\tconst endW = ((w + offsetX) & ~((1 << blurX.level) - 1)) - 4;\n\tconst endH = ((h + offsetY) & ~((1 << blurY.level) - 1)) - 4;\n\n\t// Allocate working buffers (use Float32 for precision during cascade)\n\tconst maxSize = Math.max(w * h, endW * endH) * 2;\n\tconst buf0 = new Float32Array(maxSize);\n\tconst buf1 = new Float32Array(maxSize);\n\n\t// Unpack bitmap to float buffer\n\tfor (let y = 0; y < h; y++) {\n\t\tfor (let x = 0; x < w; x++) {\n\t\t\tbuf0[y * w + x] = bitmap.buffer[y * bitmap.pitch + x] ?? 0;\n\t\t}\n\t}\n\n\tlet src = buf0;\n\tlet dst = buf1;\n\tlet stride = w;\n\n\t// Cascade down: shrink vertically\n\tfor (let i = 0; i < blurY.level; i++) {\n\t\tconst newH = Math.floor((h + 5) / 2);\n\t\tshrinkVert(dst, src, w, h, stride, w);\n\t\th = newH;\n\t\t[src, dst] = [dst, src];\n\t}\n\n\t// Cascade down: shrink horizontally\n\tfor (let i = 0; i < blurX.level; i++) {\n\t\tconst newW = Math.floor((w + 5) / 2);\n\t\tshrinkHorz(dst, src, w, h, stride, newW);\n\t\tw = newW;\n\t\tstride = newW;\n\t\t[src, dst] = [dst, src];\n\t}\n\n\t// Apply horizontal blur\n\tconst blurredW = w + 2 * blurX.radius;\n\tblurHorz(dst, src, w, h, stride, blurredW, blurX.radius, blurX.coeff);\n\tw = blurredW;\n\tstride = blurredW;\n\t[src, dst] = [dst, src];\n\n\t// Apply vertical blur\n\tconst blurredH = h + 2 * blurY.radius;\n\tblurVert(dst, src, w, h, stride, stride, blurY.radius, blurY.coeff);\n\th = blurredH;\n\t[src, dst] = [dst, src];\n\n\t// Cascade up: expand horizontally\n\tfor (let i = 0; i < blurX.level; i++) {\n\t\tconst newW = w * 2 + 4;\n\t\texpandHorz(dst, src, w, h, stride, newW);\n\t\tw = newW;\n\t\tstride = newW;\n\t\t[src, dst] = [dst, src];\n\t}\n\n\t// Cascade up: expand vertically\n\tfor (let i = 0; i < blurY.level; i++) {\n\t\tconst newH = h * 2 + 4;\n\t\texpandVert(dst, src, w, h, stride, stride);\n\t\th = newH;\n\t\t[src, dst] = [dst, src];\n\t}\n\n\t// Create output bitmap\n\tconst outWidth = Math.min(w, endW);\n\tconst outHeight = Math.min(h, endH);\n\tconst outBuffer = new Uint8Array(outWidth * outHeight);\n\n\t// Pack float buffer back to uint8\n\tfor (let y = 0; y < outHeight; y++) {\n\t\tfor (let x = 0; x < outWidth; x++) {\n\t\t\tconst val = src[y * stride + x] ?? 0;\n\t\t\toutBuffer[y * outWidth + x] = Math.max(0, Math.min(255, Math.round(val)));\n\t\t}\n\t}\n\n\treturn {\n\t\tbuffer: outBuffer,\n\t\twidth: outWidth,\n\t\trows: outHeight,\n\t\tpitch: outWidth,\n\t\tpixelMode: PixelMode.Gray,\n\t\tnumGrays: 256,\n\t};\n}\n\n/**\n * Fast Gaussian blur using cascade algorithm\n * This is the recommended blur function for large radii (> 3 pixels)\n *\n * @param bitmap Input bitmap\n * @param radius Blur radius in pixels\n * @returns New bitmap with blur applied (dimensions may change)\n */\nexport function fastGaussianBlur(bitmap: Bitmap, radius: number): Bitmap {\n\treturn cascadeBlur(bitmap, radius, radius);\n}\n\n/**\n * Adaptive blur that chooses the best algorithm based on radius\n * - For small radii (≤ 3): uses simple separable Gaussian (more precise)\n * - For large radii (> 3): uses cascade algorithm (faster)\n *\n * @param bitmap Input bitmap\n * @param radiusX Horizontal blur radius in pixels\n * @param radiusY Vertical blur radius in pixels (defaults to radiusX)\n */\nexport function adaptiveBlur(\n\tbitmap: Bitmap,\n\tradiusX: number,\n\tradiusY?: number,\n): Bitmap {\n\tconst ry = radiusY ?? radiusX;\n\tconst maxRadius = Math.max(radiusX, ry);\n\n\tif (maxRadius <= 3) {\n\t\t// For small radii, use simple Gaussian (more precise for small kernels)\n\t\t// gaussianBlur only supports single radius, use average\n\t\treturn gaussianBlur(bitmap, (radiusX + ry) / 2);\n\t}\n\treturn cascadeBlur(bitmap, radiusX, ry);\n}\n",
96
+ "/**\n * Multi-channel Signed Distance Field (MSDF) rasterizer\n *\n * MSDF uses three channels (RGB) to encode distance information,\n * allowing sharp corners to be preserved when scaling.\n *\n * Algorithm:\n * 1. Decompose glyph outline into edges (lines, quadratics, cubics)\n * 2. Color edges so adjacent edges at sharp corners have different colors\n * 3. For each pixel, compute signed distance to nearest edge of each color\n * 4. Store R, G, B distances in output bitmap\n * 5. Shader reconstructs using: median(r, g, b)\n *\n * Reference: https://github.com/Chlumsky/msdfgen\n */\n\nimport type { Font } from \"../font/font.ts\";\nimport type { GlyphPath } from \"../render/path.ts\";\nimport { getGlyphPath } from \"../render/path.ts\";\nimport {\n\ttype Bitmap,\n\tcreateBitmap,\n\ttype GlyphAtlas,\n\ttype GlyphMetrics,\n\ttype MsdfAtlasOptions,\n\tPixelMode,\n} from \"./types.ts\";\n\n/**\n * A 2D point\n */\nexport interface Point {\n\tx: number;\n\ty: number;\n}\n\n/**\n * Edge color channels for MSDF\n * 0 = red, 1 = green, 2 = blue\n */\nexport type EdgeColor = 0 | 1 | 2;\n\n/**\n * An edge with color assignment\n */\nexport type MsdfEdge =\n\t| { type: \"line\"; p0: Point; p1: Point; color: EdgeColor }\n\t| { type: \"quadratic\"; p0: Point; p1: Point; p2: Point; color: EdgeColor }\n\t| {\n\t\t\ttype: \"cubic\";\n\t\t\tp0: Point;\n\t\t\tp1: Point;\n\t\t\tp2: Point;\n\t\t\tp3: Point;\n\t\t\tcolor: EdgeColor;\n\t };\n\n/**\n * Signed distance result with parameter t\n */\nexport interface SignedDistanceResult {\n\tdistance: number;\n\tt: number; // Parameter on curve [0, 1] of closest point\n}\n\n/**\n * Options for MSDF rendering\n */\nexport interface MsdfOptions {\n\t/** Width in pixels */\n\twidth: number;\n\t/** Height in pixels */\n\theight: number;\n\t/** Scale factor (font units to pixels) */\n\tscale: number;\n\t/** X offset in pixels */\n\toffsetX?: number;\n\t/** Y offset in pixels */\n\toffsetY?: number;\n\t/** Flip Y axis (font coords are Y-up, bitmap is Y-down) */\n\tflipY?: boolean;\n\t/** Spread/radius - how far the distance field extends in pixels (default: 8) */\n\tspread?: number;\n}\n\n/**\n * Return the median of three numbers\n */\nexport function median(a: number, b: number, c: number): number {\n\treturn Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));\n}\n\n/**\n * Compute signed distance from point to line segment\n */\nexport function signedDistanceToLine(\n\tpx: number,\n\tpy: number,\n\tp0: Point,\n\tp1: Point,\n): SignedDistanceResult {\n\tconst dx = p1.x - p0.x;\n\tconst dy = p1.y - p0.y;\n\tconst lenSq = dx * dx + dy * dy;\n\n\tif (lenSq < 1e-10) {\n\t\t// Degenerate segment\n\t\tconst dist = Math.sqrt((px - p0.x) ** 2 + (py - p0.y) ** 2);\n\t\treturn { distance: dist, t: 0 };\n\t}\n\n\t// Project point onto line\n\tlet t = ((px - p0.x) * dx + (py - p0.y) * dy) / lenSq;\n\tt = Math.max(0, Math.min(1, t));\n\n\t// Closest point on segment\n\tconst closestX = p0.x + t * dx;\n\tconst closestY = p0.y + t * dy;\n\n\t// Unsigned distance\n\tconst dist = Math.sqrt((px - closestX) ** 2 + (py - closestY) ** 2);\n\n\t// Sign: use cross product to determine which side of line\n\t// Cross product: (p1 - p0) x (point - p0) = dx * (py - p0.y) - dy * (px - p0.x)\n\tconst cross = dx * (py - p0.y) - dy * (px - p0.x);\n\tconst sign = cross >= 0 ? 1 : -1;\n\n\treturn { distance: sign * dist, t };\n}\n\n/**\n * Compute signed distance from point to quadratic bezier curve\n * Uses Newton-Raphson iteration to find closest point\n */\nexport function signedDistanceToQuadratic(\n\tpx: number,\n\tpy: number,\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n): SignedDistanceResult {\n\t// Quadratic bezier: B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2\n\t// We need to find t that minimizes |B(t) - P|²\n\n\t// Coefficients for the quadratic bezier\n\tconst ax = p0.x - 2 * p1.x + p2.x;\n\tconst ay = p0.y - 2 * p1.y + p2.y;\n\tconst _bx = 2 * (p1.x - p0.x);\n\tconst _by = 2 * (p1.y - p0.y);\n\tconst cx = p0.x - px;\n\tconst cy = p0.y - py;\n\n\t// Find roots of the derivative of distance squared\n\t// d/dt |B(t) - P|² = 0\n\t// This gives a cubic equation in t\n\n\tlet minDist = Infinity;\n\tlet minT = 0;\n\tlet minSign = 1;\n\n\t// Check endpoints\n\tconst dist0 = Math.sqrt(cx * cx + cy * cy);\n\tif (dist0 < minDist) {\n\t\tminDist = dist0;\n\t\tminT = 0;\n\t}\n\n\tconst ex = p2.x - px;\n\tconst ey = p2.y - py;\n\tconst dist1 = Math.sqrt(ex * ex + ey * ey);\n\tif (dist1 < minDist) {\n\t\tminDist = dist1;\n\t\tminT = 1;\n\t}\n\n\t// Sample and refine with Newton-Raphson\n\tconst samples = 8;\n\tfor (let i = 1; i < samples; i++) {\n\t\tlet t = i / samples;\n\n\t\t// Newton-Raphson iterations\n\t\tfor (let iter = 0; iter < 4; iter++) {\n\t\t\tconst ti = 1 - t;\n\n\t\t\t// B(t)\n\t\t\tconst bx_t = ti * ti * p0.x + 2 * ti * t * p1.x + t * t * p2.x;\n\t\t\tconst by_t = ti * ti * p0.y + 2 * ti * t * p1.y + t * t * p2.y;\n\n\t\t\t// B'(t) = 2(1-t)(P1-P0) + 2t(P2-P1) = 2((1-t)(P1-P0) + t(P2-P1))\n\t\t\tconst dx = 2 * (ti * (p1.x - p0.x) + t * (p2.x - p1.x));\n\t\t\tconst dy = 2 * (ti * (p1.y - p0.y) + t * (p2.y - p1.y));\n\n\t\t\t// B''(t) = 2(P0 - 2P1 + P2)\n\t\t\tconst ddx = 2 * ax;\n\t\t\tconst ddy = 2 * ay;\n\n\t\t\t// f(t) = (B(t) - P) · B'(t)\n\t\t\tconst vx = bx_t - px;\n\t\t\tconst vy = by_t - py;\n\t\t\tconst f = vx * dx + vy * dy;\n\n\t\t\t// f'(t) = B'(t) · B'(t) + (B(t) - P) · B''(t)\n\t\t\tconst df = dx * dx + dy * dy + vx * ddx + vy * ddy;\n\n\t\t\tif (Math.abs(df) < 1e-10) break;\n\n\t\t\tconst dt = f / df;\n\t\t\tt = Math.max(0, Math.min(1, t - dt));\n\n\t\t\tif (Math.abs(dt) < 1e-6) break;\n\t\t}\n\n\t\t// Evaluate distance at this t\n\t\tconst ti = 1 - t;\n\t\tconst bx_t = ti * ti * p0.x + 2 * ti * t * p1.x + t * t * p2.x;\n\t\tconst by_t = ti * ti * p0.y + 2 * ti * t * p1.y + t * t * p2.y;\n\t\tconst dist = Math.sqrt((bx_t - px) ** 2 + (by_t - py) ** 2);\n\n\t\tif (dist < minDist) {\n\t\t\tminDist = dist;\n\t\t\tminT = t;\n\t\t}\n\t}\n\n\t// Compute sign using the tangent at closest point\n\tconst ti = 1 - minT;\n\tconst tangentX = 2 * (ti * (p1.x - p0.x) + minT * (p2.x - p1.x));\n\tconst tangentY = 2 * (ti * (p1.y - p0.y) + minT * (p2.y - p1.y));\n\n\tconst bx_t = ti * ti * p0.x + 2 * ti * minT * p1.x + minT * minT * p2.x;\n\tconst by_t = ti * ti * p0.y + 2 * ti * minT * p1.y + minT * minT * p2.y;\n\n\t// Cross product of tangent and (point - curve)\n\tconst cross = tangentX * (py - by_t) - tangentY * (px - bx_t);\n\tminSign = cross >= 0 ? 1 : -1;\n\n\treturn { distance: minSign * minDist, t: minT };\n}\n\n/**\n * Compute signed distance from point to cubic bezier curve\n * Uses Newton-Raphson iteration with multiple starting points\n */\nexport function signedDistanceToCubic(\n\tpx: number,\n\tpy: number,\n\tp0: Point,\n\tp1: Point,\n\tp2: Point,\n\tp3: Point,\n): SignedDistanceResult {\n\t// Cubic bezier: B(t) = (1-t)³P0 + 3(1-t)²tP1 + 3(1-t)t²P2 + t³P3\n\n\tlet minDist = Infinity;\n\tlet minT = 0;\n\tlet minSign = 1;\n\n\t// Check endpoints\n\tconst dist0 = Math.sqrt((p0.x - px) ** 2 + (p0.y - py) ** 2);\n\tif (dist0 < minDist) {\n\t\tminDist = dist0;\n\t\tminT = 0;\n\t}\n\n\tconst dist1 = Math.sqrt((p3.x - px) ** 2 + (p3.y - py) ** 2);\n\tif (dist1 < minDist) {\n\t\tminDist = dist1;\n\t\tminT = 1;\n\t}\n\n\t// Sample and refine with Newton-Raphson\n\tconst samples = 10;\n\tfor (let i = 1; i < samples; i++) {\n\t\tlet t = i / samples;\n\n\t\t// Newton-Raphson iterations\n\t\tfor (let iter = 0; iter < 5; iter++) {\n\t\t\tconst ti = 1 - t;\n\t\t\tconst ti2 = ti * ti;\n\t\t\tconst ti3 = ti2 * ti;\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\n\t\t\t// B(t)\n\t\t\tconst bx_t =\n\t\t\t\tti3 * p0.x + 3 * ti2 * t * p1.x + 3 * ti * t2 * p2.x + t3 * p3.x;\n\t\t\tconst by_t =\n\t\t\t\tti3 * p0.y + 3 * ti2 * t * p1.y + 3 * ti * t2 * p2.y + t3 * p3.y;\n\n\t\t\t// B'(t) = 3(1-t)²(P1-P0) + 6(1-t)t(P2-P1) + 3t²(P3-P2)\n\t\t\tconst dx =\n\t\t\t\t3 * ti2 * (p1.x - p0.x) +\n\t\t\t\t6 * ti * t * (p2.x - p1.x) +\n\t\t\t\t3 * t2 * (p3.x - p2.x);\n\t\t\tconst dy =\n\t\t\t\t3 * ti2 * (p1.y - p0.y) +\n\t\t\t\t6 * ti * t * (p2.y - p1.y) +\n\t\t\t\t3 * t2 * (p3.y - p2.y);\n\n\t\t\t// B''(t) = 6(1-t)(P2-2P1+P0) + 6t(P3-2P2+P1)\n\t\t\tconst ddx =\n\t\t\t\t6 * ti * (p2.x - 2 * p1.x + p0.x) + 6 * t * (p3.x - 2 * p2.x + p1.x);\n\t\t\tconst ddy =\n\t\t\t\t6 * ti * (p2.y - 2 * p1.y + p0.y) + 6 * t * (p3.y - 2 * p2.y + p1.y);\n\n\t\t\t// f(t) = (B(t) - P) · B'(t)\n\t\t\tconst vx = bx_t - px;\n\t\t\tconst vy = by_t - py;\n\t\t\tconst f = vx * dx + vy * dy;\n\n\t\t\t// f'(t) = B'(t) · B'(t) + (B(t) - P) · B''(t)\n\t\t\tconst df = dx * dx + dy * dy + vx * ddx + vy * ddy;\n\n\t\t\tif (Math.abs(df) < 1e-10) break;\n\n\t\t\tconst dt = f / df;\n\t\t\tt = Math.max(0, Math.min(1, t - dt));\n\n\t\t\tif (Math.abs(dt) < 1e-6) break;\n\t\t}\n\n\t\t// Evaluate distance at this t\n\t\tconst ti = 1 - t;\n\t\tconst ti2 = ti * ti;\n\t\tconst ti3 = ti2 * ti;\n\t\tconst t2 = t * t;\n\t\tconst t3 = t2 * t;\n\n\t\tconst bx_t =\n\t\t\tti3 * p0.x + 3 * ti2 * t * p1.x + 3 * ti * t2 * p2.x + t3 * p3.x;\n\t\tconst by_t =\n\t\t\tti3 * p0.y + 3 * ti2 * t * p1.y + 3 * ti * t2 * p2.y + t3 * p3.y;\n\t\tconst dist = Math.sqrt((bx_t - px) ** 2 + (by_t - py) ** 2);\n\n\t\tif (dist < minDist) {\n\t\t\tminDist = dist;\n\t\t\tminT = t;\n\t\t}\n\t}\n\n\t// Compute sign using the tangent at closest point\n\tconst ti = 1 - minT;\n\tconst ti2 = ti * ti;\n\tconst t2 = minT * minT;\n\n\tconst tangentX =\n\t\t3 * ti2 * (p1.x - p0.x) +\n\t\t6 * ti * minT * (p2.x - p1.x) +\n\t\t3 * t2 * (p3.x - p2.x);\n\tconst tangentY =\n\t\t3 * ti2 * (p1.y - p0.y) +\n\t\t6 * ti * minT * (p2.y - p1.y) +\n\t\t3 * t2 * (p3.y - p2.y);\n\n\tconst ti3 = ti2 * ti;\n\tconst t3 = t2 * minT;\n\tconst bx_t =\n\t\tti3 * p0.x + 3 * ti2 * minT * p1.x + 3 * ti * t2 * p2.x + t3 * p3.x;\n\tconst by_t =\n\t\tti3 * p0.y + 3 * ti2 * minT * p1.y + 3 * ti * t2 * p2.y + t3 * p3.y;\n\n\t// Cross product of tangent and (point - curve)\n\tconst cross = tangentX * (py - by_t) - tangentY * (px - bx_t);\n\tminSign = cross >= 0 ? 1 : -1;\n\n\treturn { distance: minSign * minDist, t: minT };\n}\n\n/**\n * Get the direction vector at the start of an edge\n */\nfunction getEdgeStartDirection(edge: MsdfEdge): Point {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\n\t\tcase \"quadratic\":\n\t\t\t// Tangent at t=0: 2(P1 - P0)\n\t\t\treturn { x: 2 * (edge.p1.x - edge.p0.x), y: 2 * (edge.p1.y - edge.p0.y) };\n\t\tcase \"cubic\":\n\t\t\t// Tangent at t=0: 3(P1 - P0)\n\t\t\treturn { x: 3 * (edge.p1.x - edge.p0.x), y: 3 * (edge.p1.y - edge.p0.y) };\n\t}\n}\n\n/**\n * Get the direction vector at the end of an edge\n */\nfunction getEdgeEndDirection(edge: MsdfEdge): Point {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\n\t\tcase \"quadratic\":\n\t\t\t// Tangent at t=1: 2(P2 - P1)\n\t\t\treturn { x: 2 * (edge.p2.x - edge.p1.x), y: 2 * (edge.p2.y - edge.p1.y) };\n\t\tcase \"cubic\":\n\t\t\t// Tangent at t=1: 3(P3 - P2)\n\t\t\treturn { x: 3 * (edge.p3.x - edge.p2.x), y: 3 * (edge.p3.y - edge.p2.y) };\n\t}\n}\n\n/**\n * Normalize a vector\n */\nfunction normalize(v: Point): Point {\n\tconst len = Math.sqrt(v.x * v.x + v.y * v.y);\n\tif (len < 1e-10) return { x: 0, y: 0 };\n\treturn { x: v.x / len, y: v.y / len };\n}\n\n/**\n * Dot product\n */\nfunction dot(a: Point, b: Point): number {\n\treturn a.x * b.x + a.y * b.y;\n}\n\n/**\n * Check if the angle between two vectors is sharp (< threshold)\n */\nfunction isSharpCorner(\n\tdir1: Point,\n\tdir2: Point,\n\tthreshold = Math.PI / 3,\n): boolean {\n\tconst n1 = normalize(dir1);\n\tconst n2 = normalize(dir2);\n\tconst cosAngle = dot(n1, n2);\n\t// Angle between directions\n\tconst angle = Math.acos(Math.max(-1, Math.min(1, cosAngle)));\n\t// If directions are similar (angle near 0 or PI), it's smooth\n\t// If they're different, it's sharp\n\treturn angle > threshold && angle < Math.PI - threshold;\n}\n\n/**\n * Assign colors to edges based on corner angles\n * At sharp corners, adjacent edges get different colors\n */\nexport function assignEdgeColors(contours: MsdfEdge[][]): void {\n\tconst CORNER_THRESHOLD = Math.PI / 4; // 45 degrees\n\n\tfor (const contour of contours) {\n\t\tif (contour.length === 0) continue;\n\n\t\tif (contour.length === 1) {\n\t\t\t// Single edge gets any color\n\t\t\tcontour[0].color = 0;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Start with color 0\n\t\tlet currentColor: EdgeColor = 0;\n\n\t\tfor (let i = 0; i < contour.length; i++) {\n\t\t\tconst edge = contour[i];\n\t\t\tconst prevEdge = contour[(i - 1 + contour.length) % contour.length];\n\n\t\t\tif (i === 0) {\n\t\t\t\t// First edge starts with color 0\n\t\t\t\tedge.color = currentColor;\n\t\t\t} else {\n\t\t\t\t// Check angle between previous edge's end and this edge's start\n\t\t\t\tconst prevDir = getEdgeEndDirection(prevEdge);\n\t\t\t\tconst currDir = getEdgeStartDirection(edge);\n\n\t\t\t\tif (isSharpCorner(prevDir, currDir, CORNER_THRESHOLD)) {\n\t\t\t\t\t// Sharp corner - switch to different color\n\t\t\t\t\tcurrentColor = ((currentColor + 1) % 3) as EdgeColor;\n\t\t\t\t}\n\n\t\t\t\tedge.color = currentColor;\n\t\t\t}\n\t\t}\n\n\t\t// Check if last-to-first transition needs different colors\n\t\tif (contour.length >= 2) {\n\t\t\tconst lastEdge = contour[contour.length - 1];\n\t\t\tconst firstEdge = contour[0];\n\n\t\t\tconst lastDir = getEdgeEndDirection(lastEdge);\n\t\t\tconst firstDir = getEdgeStartDirection(firstEdge);\n\n\t\t\tif (isSharpCorner(lastDir, firstDir, CORNER_THRESHOLD)) {\n\t\t\t\t// Need different colors at this corner\n\t\t\t\tif (lastEdge.color === firstEdge.color) {\n\t\t\t\t\t// Reassign colors to ensure difference\n\t\t\t\t\t// Try to find a color different from both neighbors\n\t\t\t\t\tconst prevColor = contour[contour.length - 2]?.color ?? 0;\n\t\t\t\t\tconst _nextColor = contour[1]?.color ?? 0;\n\n\t\t\t\t\t// Find a color different from prevColor for lastEdge\n\t\t\t\t\tfor (let c = 0; c < 3; c++) {\n\t\t\t\t\t\tif (c !== firstEdge.color && c !== prevColor) {\n\t\t\t\t\t\t\tlastEdge.color = c as EdgeColor;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Extract edges from path commands\n */\nfunction extractEdges(\n\tpath: GlyphPath,\n\tscale: number,\n\toffsetX: number,\n\toffsetY: number,\n\tflipY: boolean,\n): MsdfEdge[][] {\n\tconst contours: MsdfEdge[][] = [];\n\tlet currentContour: MsdfEdge[] = [];\n\tlet currentPoint: Point | null = null;\n\tlet firstPoint: Point | null = null;\n\n\tconst transform = (x: number, y: number): Point => ({\n\t\tx: x * scale + offsetX,\n\t\ty: flipY ? -(y * scale) + offsetY : y * scale + offsetY,\n\t});\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\t// Start new contour\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push(currentContour);\n\t\t\t\t\tcurrentContour = [];\n\t\t\t\t}\n\t\t\t\tcurrentPoint = transform(cmd.x, cmd.y);\n\t\t\t\tfirstPoint = currentPoint;\n\t\t\t\tbreak;\n\n\t\t\tcase \"L\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x, cmd.y);\n\t\t\t\t\t// Skip degenerate edges\n\t\t\t\t\tif (\n\t\t\t\t\t\tMath.abs(p1.x - currentPoint.x) > 1e-6 ||\n\t\t\t\t\t\tMath.abs(p1.y - currentPoint.y) > 1e-6\n\t\t\t\t\t) {\n\t\t\t\t\t\tcurrentContour.push({\n\t\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\t\tp0: currentPoint,\n\t\t\t\t\t\t\tp1,\n\t\t\t\t\t\t\tcolor: 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcurrentPoint = p1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Q\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x1, cmd.y1);\n\t\t\t\t\tconst p2 = transform(cmd.x, cmd.y);\n\t\t\t\t\tcurrentContour.push({\n\t\t\t\t\t\ttype: \"quadratic\",\n\t\t\t\t\t\tp0: currentPoint,\n\t\t\t\t\t\tp1,\n\t\t\t\t\t\tp2,\n\t\t\t\t\t\tcolor: 0,\n\t\t\t\t\t});\n\t\t\t\t\tcurrentPoint = p2;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"C\":\n\t\t\t\tif (currentPoint) {\n\t\t\t\t\tconst p1 = transform(cmd.x1, cmd.y1);\n\t\t\t\t\tconst p2 = transform(cmd.x2, cmd.y2);\n\t\t\t\t\tconst p3 = transform(cmd.x, cmd.y);\n\t\t\t\t\tcurrentContour.push({\n\t\t\t\t\t\ttype: \"cubic\",\n\t\t\t\t\t\tp0: currentPoint,\n\t\t\t\t\t\tp1,\n\t\t\t\t\t\tp2,\n\t\t\t\t\t\tp3,\n\t\t\t\t\t\tcolor: 0,\n\t\t\t\t\t});\n\t\t\t\t\tcurrentPoint = p3;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Z\":\n\t\t\t\tif (currentPoint && firstPoint) {\n\t\t\t\t\t// Close with line if needed\n\t\t\t\t\tif (\n\t\t\t\t\t\tMath.abs(currentPoint.x - firstPoint.x) > 1e-6 ||\n\t\t\t\t\t\tMath.abs(currentPoint.y - firstPoint.y) > 1e-6\n\t\t\t\t\t) {\n\t\t\t\t\t\tcurrentContour.push({\n\t\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\t\tp0: currentPoint,\n\t\t\t\t\t\t\tp1: firstPoint,\n\t\t\t\t\t\t\tcolor: 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcurrentPoint = firstPoint;\n\t\t\t\t}\n\t\t\t\tif (currentContour.length > 0) {\n\t\t\t\t\tcontours.push(currentContour);\n\t\t\t\t\tcurrentContour = [];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Push any remaining contour\n\tif (currentContour.length > 0) {\n\t\tcontours.push(currentContour);\n\t}\n\n\treturn contours;\n}\n\n/**\n * Compute signed distance from point to edge\n */\nfunction signedDistanceToEdge(\n\tpx: number,\n\tpy: number,\n\tedge: MsdfEdge,\n): SignedDistanceResult {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn signedDistanceToLine(px, py, edge.p0, edge.p1);\n\t\tcase \"quadratic\":\n\t\t\treturn signedDistanceToQuadratic(px, py, edge.p0, edge.p1, edge.p2);\n\t\tcase \"cubic\":\n\t\t\treturn signedDistanceToCubic(px, py, edge.p0, edge.p1, edge.p2, edge.p3);\n\t}\n}\n\n/**\n * Determine if a point is inside using ray casting (even-odd rule)\n */\nfunction isPointInside(\n\tpx: number,\n\tpy: number,\n\tcontours: MsdfEdge[][],\n): boolean {\n\tlet crossings = 0;\n\n\tfor (const contour of contours) {\n\t\tfor (const edge of contour) {\n\t\t\t// Flatten curves to line segments for inside test\n\t\t\tconst points = flattenEdge(edge);\n\n\t\t\tfor (let i = 0; i < points.length - 1; i++) {\n\t\t\t\tconst p0 = points[i];\n\t\t\t\tconst p1 = points[i + 1];\n\n\t\t\t\t// Ray casting: horizontal ray to the right\n\t\t\t\tif (p0.y > py !== p1.y > py) {\n\t\t\t\t\tconst slope = (p1.x - p0.x) / (p1.y - p0.y);\n\t\t\t\t\tconst x = p0.x + slope * (py - p0.y);\n\n\t\t\t\t\tif (px < x) {\n\t\t\t\t\t\tcrossings++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (crossings & 1) === 1;\n}\n\n/**\n * Flatten an edge to points for inside testing\n */\nfunction flattenEdge(edge: MsdfEdge): Point[] {\n\tswitch (edge.type) {\n\t\tcase \"line\":\n\t\t\treturn [edge.p0, edge.p1];\n\n\t\tcase \"quadratic\": {\n\t\t\tconst points: Point[] = [edge.p0];\n\t\t\tconst samples = 8;\n\t\t\tfor (let i = 1; i <= samples; i++) {\n\t\t\t\tconst t = i / samples;\n\t\t\t\tconst ti = 1 - t;\n\t\t\t\tpoints.push({\n\t\t\t\t\tx: ti * ti * edge.p0.x + 2 * ti * t * edge.p1.x + t * t * edge.p2.x,\n\t\t\t\t\ty: ti * ti * edge.p0.y + 2 * ti * t * edge.p1.y + t * t * edge.p2.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn points;\n\t\t}\n\n\t\tcase \"cubic\": {\n\t\t\tconst points: Point[] = [edge.p0];\n\t\t\tconst samples = 8;\n\t\t\tfor (let i = 1; i <= samples; i++) {\n\t\t\t\tconst t = i / samples;\n\t\t\t\tconst ti = 1 - t;\n\t\t\t\tconst ti2 = ti * ti;\n\t\t\t\tconst ti3 = ti2 * ti;\n\t\t\t\tconst t2 = t * t;\n\t\t\t\tconst t3 = t2 * t;\n\t\t\t\tpoints.push({\n\t\t\t\t\tx:\n\t\t\t\t\t\tti3 * edge.p0.x +\n\t\t\t\t\t\t3 * ti2 * t * edge.p1.x +\n\t\t\t\t\t\t3 * ti * t2 * edge.p2.x +\n\t\t\t\t\t\tt3 * edge.p3.x,\n\t\t\t\t\ty:\n\t\t\t\t\t\tti3 * edge.p0.y +\n\t\t\t\t\t\t3 * ti2 * t * edge.p1.y +\n\t\t\t\t\t\t3 * ti * t2 * edge.p2.y +\n\t\t\t\t\t\tt3 * edge.p3.y,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn points;\n\t\t}\n\t}\n}\n\n/**\n * Render a glyph path as a multi-channel signed distance field\n */\nexport function renderMsdf(path: GlyphPath, options: MsdfOptions): Bitmap {\n\tconst {\n\t\twidth,\n\t\theight,\n\t\tscale,\n\t\toffsetX = 0,\n\t\toffsetY = 0,\n\t\tflipY = false,\n\t\tspread = 8,\n\t} = options;\n\n\t// Create RGB bitmap (3 bytes per pixel)\n\tconst bitmap = createBitmap(width, height, PixelMode.LCD);\n\n\t// Extract and color edges\n\tconst contours = extractEdges(path, scale, offsetX, offsetY, flipY);\n\n\t// If no edges, fill with minimum distance\n\tif (contours.length === 0 || contours.every((c) => c.length === 0)) {\n\t\tbitmap.buffer.fill(0);\n\t\treturn bitmap;\n\t}\n\n\t// Assign colors to edges\n\tassignEdgeColors(contours);\n\n\t// Flatten all edges for quick access\n\tconst allEdges: MsdfEdge[] = contours.flat();\n\n\t// Group edges by color\n\tconst redEdges = allEdges.filter((e) => e.color === 0);\n\tconst greenEdges = allEdges.filter((e) => e.color === 1);\n\tconst blueEdges = allEdges.filter((e) => e.color === 2);\n\n\t// If any color has no edges, duplicate from another\n\tconst ensureEdges = (edges: MsdfEdge[]): MsdfEdge[] => {\n\t\tif (edges.length > 0) return edges;\n\t\treturn allEdges;\n\t};\n\n\tconst rEdges = ensureEdges(redEdges);\n\tconst gEdges = ensureEdges(greenEdges);\n\tconst bEdges = ensureEdges(blueEdges);\n\n\t// For each pixel\n\tfor (let y = 0; y < height; y++) {\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst px = x + 0.5;\n\t\t\tconst py = y + 0.5;\n\n\t\t\t// Find minimum distance to each color channel\n\t\t\tlet minR = Infinity;\n\t\t\tlet minG = Infinity;\n\t\t\tlet minB = Infinity;\n\n\t\t\tfor (const edge of rEdges) {\n\t\t\t\tconst result = signedDistanceToEdge(px, py, edge);\n\t\t\t\tif (Math.abs(result.distance) < Math.abs(minR)) {\n\t\t\t\t\tminR = result.distance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const edge of gEdges) {\n\t\t\t\tconst result = signedDistanceToEdge(px, py, edge);\n\t\t\t\tif (Math.abs(result.distance) < Math.abs(minG)) {\n\t\t\t\t\tminG = result.distance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const edge of bEdges) {\n\t\t\t\tconst result = signedDistanceToEdge(px, py, edge);\n\t\t\t\tif (Math.abs(result.distance) < Math.abs(minB)) {\n\t\t\t\t\tminB = result.distance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Determine inside/outside using median\n\t\t\tconst _medDist = median(minR, minG, minB);\n\t\t\tconst inside = isPointInside(px, py, contours);\n\n\t\t\t// Correct signs based on inside/outside\n\t\t\t// All distances should be positive inside, negative outside\n\t\t\tconst signCorrection = inside ? 1 : -1;\n\t\t\tconst rDist = Math.abs(minR) * signCorrection;\n\t\t\tconst gDist = Math.abs(minG) * signCorrection;\n\t\t\tconst bDist = Math.abs(minB) * signCorrection;\n\n\t\t\t// Encode to 0-255\n\t\t\tconst encode = (d: number): number => {\n\t\t\t\tconst normalized = 128 + (d / spread) * 127;\n\t\t\t\treturn Math.max(0, Math.min(255, Math.round(normalized)));\n\t\t\t};\n\n\t\t\tconst idx = y * bitmap.pitch + x * 3;\n\t\t\tbitmap.buffer[idx] = encode(rDist);\n\t\t\tbitmap.buffer[idx + 1] = encode(gDist);\n\t\t\tbitmap.buffer[idx + 2] = encode(bDist);\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\n/**\n * Shelf packing node for atlas building\n */\ninterface Shelf {\n\ty: number;\n\theight: number;\n\twidth: number;\n}\n\n/**\n * Placement result for a glyph\n */\ninterface Placement {\n\tx: number;\n\ty: number;\n\tplaced: boolean;\n}\n\n/**\n * Pack rectangles using shelf algorithm\n */\nfunction packGlyphs(\n\tsizes: Array<{ width: number; height: number }>,\n\tmaxWidth: number,\n\tmaxHeight: number,\n): { width: number; height: number; placements: Placement[] } {\n\tconst shelves: Shelf[] = [];\n\tconst placements: Placement[] = [];\n\n\tlet atlasWidth = 0;\n\tlet atlasHeight = 0;\n\n\tfor (const size of sizes) {\n\t\tlet placed = false;\n\t\tlet bestShelf = -1;\n\t\tlet bestY = maxHeight;\n\n\t\t// Try to find an existing shelf\n\t\tfor (let i = 0; i < shelves.length; i++) {\n\t\t\tconst shelf = shelves[i];\n\n\t\t\t// Check if glyph fits in this shelf\n\t\t\tif (shelf.width + size.width <= maxWidth && size.height <= shelf.height) {\n\t\t\t\tif (shelf.y < bestY) {\n\t\t\t\t\tbestShelf = i;\n\t\t\t\t\tbestY = shelf.y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (bestShelf >= 0) {\n\t\t\t// Place in existing shelf\n\t\t\tconst shelf = shelves[bestShelf];\n\t\t\tplacements.push({\n\t\t\t\tx: shelf.width,\n\t\t\t\ty: shelf.y,\n\t\t\t\tplaced: true,\n\t\t\t});\n\t\t\tshelf.width += size.width;\n\t\t\tatlasWidth = Math.max(atlasWidth, shelf.width);\n\t\t\tplaced = true;\n\t\t} else {\n\t\t\t// Create new shelf\n\t\t\tconst newY = atlasHeight;\n\n\t\t\tif (newY + size.height <= maxHeight && size.width <= maxWidth) {\n\t\t\t\tshelves.push({\n\t\t\t\t\ty: newY,\n\t\t\t\t\theight: size.height,\n\t\t\t\t\twidth: size.width,\n\t\t\t\t});\n\t\t\t\tplacements.push({\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: newY,\n\t\t\t\t\tplaced: true,\n\t\t\t\t});\n\t\t\t\tatlasHeight = newY + size.height;\n\t\t\t\tatlasWidth = Math.max(atlasWidth, size.width);\n\t\t\t\tplaced = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!placed) {\n\t\t\tplacements.push({ x: 0, y: 0, placed: false });\n\t\t}\n\t}\n\n\t// Round up to power of 2 for GPU compatibility\n\tconst finalWidth = nextPowerOf2(atlasWidth);\n\tconst finalHeight = nextPowerOf2(atlasHeight);\n\n\treturn {\n\t\twidth: Math.min(finalWidth, maxWidth),\n\t\theight: Math.min(finalHeight, maxHeight),\n\t\tplacements,\n\t};\n}\n\n/**\n * Get next power of 2 >= n\n */\nfunction nextPowerOf2(n: number): number {\n\tif (n <= 0) return 1;\n\tn--;\n\tn |= n >> 1;\n\tn |= n >> 2;\n\tn |= n >> 4;\n\tn |= n >> 8;\n\tn |= n >> 16;\n\treturn n + 1;\n}\n\n/**\n * Copy source bitmap into destination at specified position\n */\nfunction copyBitmapRgb(\n\tsrc: Bitmap,\n\tdst: Bitmap,\n\tdstX: number,\n\tdstY: number,\n): void {\n\tfor (let y = 0; y < src.rows; y++) {\n\t\tconst srcRow = y * src.pitch;\n\t\tconst dstRow = (dstY + y) * dst.pitch + dstX * 3;\n\n\t\tfor (let x = 0; x < src.width * 3; x++) {\n\t\t\tdst.buffer[dstRow + x] = src.buffer[srcRow + x];\n\t\t}\n\t}\n}\n\n/**\n * Build an MSDF texture atlas from a set of glyphs\n */\nexport function buildMsdfAtlas(\n\tfont: Font,\n\tglyphIds: number[],\n\toptions: MsdfAtlasOptions,\n): GlyphAtlas {\n\tconst {\n\t\tfontSize,\n\t\tpadding = 2,\n\t\tmaxWidth = 2048,\n\t\tmaxHeight = 2048,\n\t\tspread = 4,\n\t} = options;\n\n\tconst scale = fontSize / font.unitsPerEm;\n\n\t// First pass: render all MSDF glyphs and collect sizes\n\tconst glyphData: Array<{\n\t\tglyphId: number;\n\t\tbitmap: Bitmap;\n\t\tbearingX: number;\n\t\tbearingY: number;\n\t\tadvance: number;\n\t}> = [];\n\n\tfor (const glyphId of glyphIds) {\n\t\tconst path = getGlyphPath(font, glyphId);\n\t\tif (!path || !path.bounds) continue;\n\n\t\tconst bounds = path.bounds;\n\n\t\t// Calculate bitmap size with spread padding\n\t\tconst glyphWidth =\n\t\t\tMath.ceil((bounds.xMax - bounds.xMin) * scale) + spread * 2;\n\t\tconst glyphHeight =\n\t\t\tMath.ceil((bounds.yMax - bounds.yMin) * scale) + spread * 2;\n\n\t\tif (glyphWidth <= 0 || glyphHeight <= 0) continue;\n\n\t\t// Render MSDF\n\t\tconst bitmap = renderMsdf(path, {\n\t\t\twidth: glyphWidth,\n\t\t\theight: glyphHeight,\n\t\t\tscale,\n\t\t\toffsetX: -bounds.xMin * scale + spread,\n\t\t\toffsetY: bounds.yMax * scale + spread,\n\t\t\tflipY: true,\n\t\t\tspread,\n\t\t});\n\n\t\tconst advance = font.advanceWidth(glyphId) * scale;\n\t\tconst bearingX = bounds.xMin * scale - spread;\n\t\tconst bearingY = bounds.yMax * scale + spread;\n\n\t\tglyphData.push({\n\t\t\tglyphId,\n\t\t\tbitmap,\n\t\t\tbearingX,\n\t\t\tbearingY,\n\t\t\tadvance,\n\t\t});\n\t}\n\n\t// Sort by height (descending) for better packing\n\tglyphData.sort((a, b) => b.bitmap.rows - a.bitmap.rows);\n\n\t// Calculate required atlas size\n\tconst {\n\t\twidth: atlasWidth,\n\t\theight: atlasHeight,\n\t\tplacements,\n\t} = packGlyphs(\n\t\tglyphData.map((g) => ({\n\t\t\twidth: g.bitmap.width + padding * 2,\n\t\t\theight: g.bitmap.rows + padding * 2,\n\t\t})),\n\t\tmaxWidth,\n\t\tmaxHeight,\n\t);\n\n\t// Create atlas bitmap (RGB for MSDF)\n\tconst atlas = createBitmap(atlasWidth, atlasHeight, PixelMode.LCD);\n\n\t// Copy glyphs into atlas and build metrics map\n\tconst glyphMetrics = new Map<number, GlyphMetrics>();\n\n\tfor (let i = 0; i < glyphData.length; i++) {\n\t\tconst glyph = glyphData[i];\n\t\tconst placement = placements[i];\n\n\t\tif (!placement.placed) continue;\n\n\t\t// Copy glyph bitmap into atlas\n\t\tcopyBitmapRgb(\n\t\t\tglyph.bitmap,\n\t\t\tatlas,\n\t\t\tplacement.x + padding,\n\t\t\tplacement.y + padding,\n\t\t);\n\n\t\t// Store metrics\n\t\tglyphMetrics.set(glyph.glyphId, {\n\t\t\tglyphId: glyph.glyphId,\n\t\t\tatlasX: placement.x + padding,\n\t\t\tatlasY: placement.y + padding,\n\t\t\twidth: glyph.bitmap.width,\n\t\t\theight: glyph.bitmap.rows,\n\t\t\tbearingX: glyph.bearingX,\n\t\t\tbearingY: glyph.bearingY,\n\t\t\tadvance: glyph.advance,\n\t\t});\n\t}\n\n\treturn {\n\t\tbitmap: atlas,\n\t\tglyphs: glyphMetrics,\n\t\tfontSize,\n\t};\n}\n\n/**\n * Build MSDF atlas for ASCII printable characters (32-126)\n */\nexport function buildMsdfAsciiAtlas(\n\tfont: Font,\n\toptions: MsdfAtlasOptions,\n): GlyphAtlas {\n\tconst glyphIds: number[] = [];\n\n\tfor (let codepoint = 32; codepoint <= 126; codepoint++) {\n\t\tconst glyphId = font.glyphId(codepoint);\n\t\tif (glyphId !== undefined && glyphId !== 0) {\n\t\t\tglyphIds.push(glyphId);\n\t\t}\n\t}\n\n\treturn buildMsdfAtlas(font, glyphIds, options);\n}\n\n/**\n * Build MSDF atlas for a specific string (including all unique glyphs)\n */\nexport function buildMsdfStringAtlas(\n\tfont: Font,\n\ttext: string,\n\toptions: MsdfAtlasOptions,\n): GlyphAtlas {\n\tconst glyphIdSet = new Set<number>();\n\n\tfor (const char of text) {\n\t\tconst codepoint = char.codePointAt(0);\n\t\tif (codepoint === undefined) continue;\n\n\t\tconst glyphId = font.glyphId(codepoint);\n\t\tif (glyphId !== undefined && glyphId !== 0) {\n\t\t\tglyphIdSet.add(glyphId);\n\t\t}\n\t}\n\n\treturn buildMsdfAtlas(font, Array.from(glyphIdSet), options);\n}\n\n/**\n * Export MSDF atlas as RGB texture data\n */\nexport function msdfAtlasToRGB(atlas: GlyphAtlas): Uint8Array {\n\tconst { bitmap } = atlas;\n\n\tif (bitmap.pitch === bitmap.width * 3) {\n\t\treturn bitmap.buffer;\n\t}\n\n\t// Copy without row padding\n\tconst rgb = new Uint8Array(bitmap.width * bitmap.rows * 3);\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width * 3; x++) {\n\t\t\trgb[y * bitmap.width * 3 + x] = bitmap.buffer[y * bitmap.pitch + x];\n\t\t}\n\t}\n\n\treturn rgb;\n}\n\n/**\n * Export MSDF atlas as RGBA texture data\n */\nexport function msdfAtlasToRGBA(atlas: GlyphAtlas): Uint8Array {\n\tconst { bitmap } = atlas;\n\tconst rgba = new Uint8Array(bitmap.width * bitmap.rows * 4);\n\n\tfor (let y = 0; y < bitmap.rows; y++) {\n\t\tfor (let x = 0; x < bitmap.width; x++) {\n\t\t\tconst srcIdx = y * bitmap.pitch + x * 3;\n\t\t\tconst dstIdx = (y * bitmap.width + x) * 4;\n\n\t\t\trgba[dstIdx] = bitmap.buffer[srcIdx];\n\t\t\trgba[dstIdx + 1] = bitmap.buffer[srcIdx + 1];\n\t\t\trgba[dstIdx + 2] = bitmap.buffer[srcIdx + 2];\n\t\t\trgba[dstIdx + 3] = 255; // Full alpha\n\t\t}\n\t}\n\n\treturn rgba;\n}\n",
97
+ "/**\n * Outline Transform Operations\n *\n * Provides geometric transformations for glyph outlines:\n * - 90° rotation\n * - Power-of-2 scaling\n * - 2D affine transforms (translate, rotate, scale, shear)\n * - 3D perspective transforms\n * - Bounding box computation\n */\n\nimport type { GlyphPath, PathCommand } from \"./path.ts\";\n\n/**\n * 2D affine transformation matrix [a, b, c, d, tx, ty]\n * Transforms point (x, y) to:\n * x' = a*x + c*y + tx\n * y' = b*x + d*y + ty\n */\nexport type Matrix2D = [number, number, number, number, number, number];\n\n/**\n * 3x3 transformation matrix for 2D homogeneous coordinates\n * | m00 m01 m02 | | x | | x' |\n * | m10 m11 m12 | × | y | = | y' |\n * | m20 m21 m22 | | 1 | | w |\n *\n * Final coordinates: (x'/w, y'/w)\n */\nexport type Matrix3x3 = [\n\t[number, number, number],\n\t[number, number, number],\n\t[number, number, number],\n];\n\n/**\n * Axis-aligned bounding box\n */\nexport interface BoundingBox {\n\txMin: number;\n\tyMin: number;\n\txMax: number;\n\tyMax: number;\n}\n\n/**\n * Control box (bounding box of control points, not tight bounds)\n */\nexport interface ControlBox extends BoundingBox {}\n\n/**\n * Create identity 2D matrix\n */\nexport function identity2D(): Matrix2D {\n\treturn [1, 0, 0, 1, 0, 0];\n}\n\n/**\n * Create identity 3x3 matrix\n */\nexport function identity3x3(): Matrix3x3 {\n\treturn [\n\t\t[1, 0, 0],\n\t\t[0, 1, 0],\n\t\t[0, 0, 1],\n\t];\n}\n\n/**\n * Create translation matrix\n */\nexport function translate2D(tx: number, ty: number): Matrix2D {\n\treturn [1, 0, 0, 1, tx, ty];\n}\n\n/**\n * Create scale matrix\n */\nexport function scale2D(sx: number, sy: number): Matrix2D {\n\treturn [sx, 0, 0, sy, 0, 0];\n}\n\n/**\n * Create rotation matrix (angle in radians)\n */\nexport function rotate2D(angle: number): Matrix2D {\n\tconst cos = Math.cos(angle);\n\tconst sin = Math.sin(angle);\n\treturn [cos, sin, -sin, cos, 0, 0];\n}\n\n/**\n * Create shear/skew matrix\n */\nexport function shear2D(shearX: number, shearY: number): Matrix2D {\n\treturn [1, shearY, shearX, 1, 0, 0];\n}\n\n/**\n * Multiply two 2D matrices: result = a × b\n */\nexport function multiply2D(a: Matrix2D, b: Matrix2D): Matrix2D {\n\treturn [\n\t\ta[0] * b[0] + a[2] * b[1],\n\t\ta[1] * b[0] + a[3] * b[1],\n\t\ta[0] * b[2] + a[2] * b[3],\n\t\ta[1] * b[2] + a[3] * b[3],\n\t\ta[0] * b[4] + a[2] * b[5] + a[4],\n\t\ta[1] * b[4] + a[3] * b[5] + a[5],\n\t];\n}\n\n/**\n * Multiply two 3x3 matrices: result = a × b\n */\nexport function multiply3x3(a: Matrix3x3, b: Matrix3x3): Matrix3x3 {\n\tconst result: Matrix3x3 = [\n\t\t[0, 0, 0],\n\t\t[0, 0, 0],\n\t\t[0, 0, 0],\n\t];\n\tfor (let i = 0; i < 3; i++) {\n\t\tfor (let j = 0; j < 3; j++) {\n\t\t\tresult[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j];\n\t\t}\n\t}\n\treturn result;\n}\n\n/**\n * Transform a point using 2D matrix\n */\nexport function transformPoint2D(\n\tx: number,\n\ty: number,\n\tm: Matrix2D,\n): { x: number; y: number } {\n\treturn {\n\t\tx: m[0] * x + m[2] * y + m[4],\n\t\ty: m[1] * x + m[3] * y + m[5],\n\t};\n}\n\n/**\n * Transform a point using 3x3 matrix (with perspective division)\n */\nexport function transformPoint3x3(\n\tx: number,\n\ty: number,\n\tm: Matrix3x3,\n): { x: number; y: number } {\n\tconst w = m[2][0] * x + m[2][1] * y + m[2][2];\n\tif (Math.abs(w) < 1e-10) {\n\t\t// Point at infinity\n\t\treturn { x: 0, y: 0 };\n\t}\n\treturn {\n\t\tx: (m[0][0] * x + m[0][1] * y + m[0][2]) / w,\n\t\ty: (m[1][0] * x + m[1][1] * y + m[1][2]) / w,\n\t};\n}\n\n/**\n * Rotate outline by 90 degrees counter-clockwise around origin\n * Optionally apply offset after rotation\n */\nexport function rotateOutline90(\n\tpath: GlyphPath,\n\toffsetX: number = 0,\n\toffsetY: number = 0,\n): GlyphPath {\n\t// 90° CCW rotation: (x, y) -> (-y, x)\n\tconst commands = path.commands.map((cmd): PathCommand => {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\tx: -cmd.y + offsetX,\n\t\t\t\t\ty: cmd.x + offsetY,\n\t\t\t\t};\n\t\t\tcase \"Q\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\tx1: -cmd.y1 + offsetX,\n\t\t\t\t\ty1: cmd.x1 + offsetY,\n\t\t\t\t\tx: -cmd.y + offsetX,\n\t\t\t\t\ty: cmd.x + offsetY,\n\t\t\t\t};\n\t\t\tcase \"C\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: -cmd.y1 + offsetX,\n\t\t\t\t\ty1: cmd.x1 + offsetY,\n\t\t\t\t\tx2: -cmd.y2 + offsetX,\n\t\t\t\t\ty2: cmd.x2 + offsetY,\n\t\t\t\t\tx: -cmd.y + offsetX,\n\t\t\t\t\ty: cmd.x + offsetY,\n\t\t\t\t};\n\t\t\tcase \"Z\":\n\t\t\t\treturn { type: \"Z\" };\n\t\t\tdefault:\n\t\t\t\treturn cmd;\n\t\t}\n\t});\n\n\t// Rotate bounds\n\tlet bounds: BoundingBox | null = null;\n\tif (path.bounds) {\n\t\tconst b = path.bounds;\n\t\tbounds = {\n\t\t\txMin: -b.yMax + offsetX,\n\t\t\tyMin: b.xMin + offsetY,\n\t\t\txMax: -b.yMin + offsetX,\n\t\t\tyMax: b.xMax + offsetY,\n\t\t};\n\t\t// Normalize (ensure min < max)\n\t\tif (bounds.xMin > bounds.xMax) {\n\t\t\t[bounds.xMin, bounds.xMax] = [bounds.xMax, bounds.xMin];\n\t\t}\n\t\tif (bounds.yMin > bounds.yMax) {\n\t\t\t[bounds.yMin, bounds.yMax] = [bounds.yMax, bounds.yMin];\n\t\t}\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Scale outline by power of 2\n * scaleOrdX/Y: shift amount (positive = enlarge, negative = shrink)\n * e.g., scaleOrdX=1 means multiply x by 2, scaleOrdX=-1 means divide by 2\n */\nexport function scaleOutlinePow2(\n\tpath: GlyphPath,\n\tscaleOrdX: number,\n\tscaleOrdY: number,\n): GlyphPath {\n\tconst scaleX = scaleOrdX >= 0 ? 1 << scaleOrdX : 1 / (1 << -scaleOrdX);\n\tconst scaleY = scaleOrdY >= 0 ? 1 << scaleOrdY : 1 / (1 << -scaleOrdY);\n\n\tconst commands = path.commands.map((cmd): PathCommand => {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: cmd.type,\n\t\t\t\t\tx: cmd.x * scaleX,\n\t\t\t\t\ty: cmd.y * scaleY,\n\t\t\t\t};\n\t\t\tcase \"Q\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"Q\",\n\t\t\t\t\tx1: cmd.x1 * scaleX,\n\t\t\t\t\ty1: cmd.y1 * scaleY,\n\t\t\t\t\tx: cmd.x * scaleX,\n\t\t\t\t\ty: cmd.y * scaleY,\n\t\t\t\t};\n\t\t\tcase \"C\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: cmd.x1 * scaleX,\n\t\t\t\t\ty1: cmd.y1 * scaleY,\n\t\t\t\t\tx2: cmd.x2 * scaleX,\n\t\t\t\t\ty2: cmd.y2 * scaleY,\n\t\t\t\t\tx: cmd.x * scaleX,\n\t\t\t\t\ty: cmd.y * scaleY,\n\t\t\t\t};\n\t\t\tcase \"Z\":\n\t\t\t\treturn { type: \"Z\" };\n\t\t\tdefault:\n\t\t\t\treturn cmd;\n\t\t}\n\t});\n\n\tlet bounds: BoundingBox | null = null;\n\tif (path.bounds) {\n\t\tbounds = {\n\t\t\txMin: path.bounds.xMin * scaleX,\n\t\t\tyMin: path.bounds.yMin * scaleY,\n\t\t\txMax: path.bounds.xMax * scaleX,\n\t\t\tyMax: path.bounds.yMax * scaleY,\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Apply 2D affine transformation to outline\n */\nexport function transformOutline2D(path: GlyphPath, m: Matrix2D): GlyphPath {\n\tconst commands = path.commands.map((cmd): PathCommand => {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\": {\n\t\t\t\tconst p = transformPoint2D(cmd.x, cmd.y, m);\n\t\t\t\treturn { type: cmd.type, x: p.x, y: p.y };\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\tconst p1 = transformPoint2D(cmd.x1, cmd.y1, m);\n\t\t\t\tconst p = transformPoint2D(cmd.x, cmd.y, m);\n\t\t\t\treturn { type: \"Q\", x1: p1.x, y1: p1.y, x: p.x, y: p.y };\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst cp1 = transformPoint2D(cmd.x1, cmd.y1, m);\n\t\t\t\tconst cp2 = transformPoint2D(cmd.x2, cmd.y2, m);\n\t\t\t\tconst p = transformPoint2D(cmd.x, cmd.y, m);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: cp1.x,\n\t\t\t\t\ty1: cp1.y,\n\t\t\t\t\tx2: cp2.x,\n\t\t\t\t\ty2: cp2.y,\n\t\t\t\t\tx: p.x,\n\t\t\t\t\ty: p.y,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\treturn { type: \"Z\" };\n\t\t\tdefault:\n\t\t\t\treturn cmd;\n\t\t}\n\t});\n\n\t// Compute new bounds by transforming corners\n\tlet bounds: BoundingBox | null = null;\n\tif (path.bounds) {\n\t\tconst b = path.bounds;\n\t\tconst corners = [\n\t\t\ttransformPoint2D(b.xMin, b.yMin, m),\n\t\t\ttransformPoint2D(b.xMax, b.yMin, m),\n\t\t\ttransformPoint2D(b.xMin, b.yMax, m),\n\t\t\ttransformPoint2D(b.xMax, b.yMax, m),\n\t\t];\n\t\tbounds = {\n\t\t\txMin: Math.min(...corners.map((c) => c.x)),\n\t\t\tyMin: Math.min(...corners.map((c) => c.y)),\n\t\t\txMax: Math.max(...corners.map((c) => c.x)),\n\t\t\tyMax: Math.max(...corners.map((c) => c.y)),\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Apply 3D perspective transformation to outline\n * Uses homogeneous coordinates for perspective projection\n */\nexport function transformOutline3D(path: GlyphPath, m: Matrix3x3): GlyphPath {\n\tconst commands = path.commands.map((cmd): PathCommand => {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\": {\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\treturn { type: cmd.type, x: p.x, y: p.y };\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\t// For perspective transforms, we need to subdivide curves\n\t\t\t\t// because Bézier curves don't preserve under perspective\n\t\t\t\t// For now, transform control points (approximation)\n\t\t\t\tconst p1 = transformPoint3x3(cmd.x1, cmd.y1, m);\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\treturn { type: \"Q\", x1: p1.x, y1: p1.y, x: p.x, y: p.y };\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst p1 = transformPoint3x3(cmd.x1, cmd.y1, m);\n\t\t\t\tconst p2 = transformPoint3x3(cmd.x2, cmd.y2, m);\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"C\",\n\t\t\t\t\tx1: p1.x,\n\t\t\t\t\ty1: p1.y,\n\t\t\t\t\tx2: p2.x,\n\t\t\t\t\ty2: p2.y,\n\t\t\t\t\tx: p.x,\n\t\t\t\t\ty: p.y,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\treturn { type: \"Z\" };\n\t\t\tdefault:\n\t\t\t\treturn cmd;\n\t\t}\n\t});\n\n\t// Compute new bounds\n\tlet bounds: BoundingBox | null = null;\n\tif (path.bounds) {\n\t\tconst b = path.bounds;\n\t\tconst corners = [\n\t\t\ttransformPoint3x3(b.xMin, b.yMin, m),\n\t\t\ttransformPoint3x3(b.xMax, b.yMin, m),\n\t\t\ttransformPoint3x3(b.xMin, b.yMax, m),\n\t\t\ttransformPoint3x3(b.xMax, b.yMax, m),\n\t\t];\n\t\tbounds = {\n\t\t\txMin: Math.min(...corners.map((c) => c.x)),\n\t\t\tyMin: Math.min(...corners.map((c) => c.y)),\n\t\t\txMax: Math.max(...corners.map((c) => c.x)),\n\t\t\tyMax: Math.max(...corners.map((c) => c.y)),\n\t\t};\n\t}\n\n\treturn { commands, bounds, flags: path.flags };\n}\n\n/**\n * Compute control box (bounding box of all control points)\n * This is faster than computing tight bounds but may be larger\n */\nexport function computeControlBox(path: GlyphPath): ControlBox {\n\tlet xMin = Infinity;\n\tlet yMin = Infinity;\n\tlet xMax = -Infinity;\n\tlet yMax = -Infinity;\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\txMin = Math.min(xMin, cmd.x);\n\t\t\t\tyMin = Math.min(yMin, cmd.y);\n\t\t\t\txMax = Math.max(xMax, cmd.x);\n\t\t\t\tyMax = Math.max(yMax, cmd.y);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\txMin = Math.min(xMin, cmd.x1, cmd.x);\n\t\t\t\tyMin = Math.min(yMin, cmd.y1, cmd.y);\n\t\t\t\txMax = Math.max(xMax, cmd.x1, cmd.x);\n\t\t\t\tyMax = Math.max(yMax, cmd.y1, cmd.y);\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\txMin = Math.min(xMin, cmd.x1, cmd.x2, cmd.x);\n\t\t\t\tyMin = Math.min(yMin, cmd.y1, cmd.y2, cmd.y);\n\t\t\t\txMax = Math.max(xMax, cmd.x1, cmd.x2, cmd.x);\n\t\t\t\tyMax = Math.max(yMax, cmd.y1, cmd.y2, cmd.y);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!Number.isFinite(xMin)) {\n\t\treturn { xMin: 0, yMin: 0, xMax: 0, yMax: 0 };\n\t}\n\n\treturn { xMin, yMin, xMax, yMax };\n}\n\n/**\n * Find extrema of a quadratic Bézier curve\n * Returns t values in [0, 1] where extrema occur\n */\nfunction quadraticExtrema(p0: number, p1: number, p2: number): number[] {\n\t// Derivative: 2(1-t)(p1-p0) + 2t(p2-p1) = 0\n\t// => t = (p0-p1) / (p0 - 2p1 + p2)\n\tconst denom = p0 - 2 * p1 + p2;\n\tif (Math.abs(denom) < 1e-10) return [];\n\tconst t = (p0 - p1) / denom;\n\tif (t > 0 && t < 1) return [t];\n\treturn [];\n}\n\n/**\n * Find extrema of a cubic Bézier curve\n * Returns t values in [0, 1] where extrema occur\n */\nfunction cubicExtrema(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n): number[] {\n\t// Derivative coefficients\n\tconst a = -p0 + 3 * p1 - 3 * p2 + p3;\n\tconst b = 2 * (p0 - 2 * p1 + p2);\n\tconst c = -p0 + p1;\n\n\tconst result: number[] = [];\n\n\tif (Math.abs(a) < 1e-10) {\n\t\t// Linear: b*t + c = 0\n\t\tif (Math.abs(b) > 1e-10) {\n\t\t\tconst t = -c / b;\n\t\t\tif (t > 0 && t < 1) result.push(t);\n\t\t}\n\t} else {\n\t\t// Quadratic: a*t² + b*t + c = 0\n\t\tconst disc = b * b - 4 * a * c;\n\t\tif (disc >= 0) {\n\t\t\tconst sqrtDisc = Math.sqrt(disc);\n\t\t\tconst t1 = (-b + sqrtDisc) / (2 * a);\n\t\t\tconst t2 = (-b - sqrtDisc) / (2 * a);\n\t\t\tif (t1 > 0 && t1 < 1) result.push(t1);\n\t\t\tif (t2 > 0 && t2 < 1) result.push(t2);\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Evaluate quadratic Bézier at t\n */\nfunction evalQuadratic(p0: number, p1: number, p2: number, t: number): number {\n\tconst ti = 1 - t;\n\treturn ti * ti * p0 + 2 * ti * t * p1 + t * t * p2;\n}\n\n/**\n * Evaluate cubic Bézier at t\n */\nfunction evalCubic(\n\tp0: number,\n\tp1: number,\n\tp2: number,\n\tp3: number,\n\tt: number,\n): number {\n\tconst ti = 1 - t;\n\treturn (\n\t\tti * ti * ti * p0 +\n\t\t3 * ti * ti * t * p1 +\n\t\t3 * ti * t * t * p2 +\n\t\tt * t * t * p3\n\t);\n}\n\n/**\n * Compute tight bounding box (exact bounds considering curve extrema)\n */\nexport function computeTightBounds(path: GlyphPath): BoundingBox {\n\tlet xMin = Infinity;\n\tlet yMin = Infinity;\n\tlet xMax = -Infinity;\n\tlet yMax = -Infinity;\n\n\tlet curX = 0;\n\tlet curY = 0;\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\t\tcurX = cmd.x;\n\t\t\t\tcurY = cmd.y;\n\t\t\t\txMin = Math.min(xMin, curX);\n\t\t\t\tyMin = Math.min(yMin, curY);\n\t\t\t\txMax = Math.max(xMax, curX);\n\t\t\t\tyMax = Math.max(yMax, curY);\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tcurX = cmd.x;\n\t\t\t\tcurY = cmd.y;\n\t\t\t\txMin = Math.min(xMin, curX);\n\t\t\t\tyMin = Math.min(yMin, curY);\n\t\t\t\txMax = Math.max(xMax, curX);\n\t\t\t\tyMax = Math.max(yMax, curY);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\": {\n\t\t\t\t// Endpoints\n\t\t\t\txMin = Math.min(xMin, cmd.x);\n\t\t\t\tyMin = Math.min(yMin, cmd.y);\n\t\t\t\txMax = Math.max(xMax, cmd.x);\n\t\t\t\tyMax = Math.max(yMax, cmd.y);\n\t\t\t\t// Extrema\n\t\t\t\tfor (const t of quadraticExtrema(curX, cmd.x1, cmd.x)) {\n\t\t\t\t\tconst x = evalQuadratic(curX, cmd.x1, cmd.x, t);\n\t\t\t\t\txMin = Math.min(xMin, x);\n\t\t\t\t\txMax = Math.max(xMax, x);\n\t\t\t\t}\n\t\t\t\tfor (const t of quadraticExtrema(curY, cmd.y1, cmd.y)) {\n\t\t\t\t\tconst y = evalQuadratic(curY, cmd.y1, cmd.y, t);\n\t\t\t\t\tyMin = Math.min(yMin, y);\n\t\t\t\t\tyMax = Math.max(yMax, y);\n\t\t\t\t}\n\t\t\t\tcurX = cmd.x;\n\t\t\t\tcurY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\t// Endpoints\n\t\t\t\txMin = Math.min(xMin, cmd.x);\n\t\t\t\tyMin = Math.min(yMin, cmd.y);\n\t\t\t\txMax = Math.max(xMax, cmd.x);\n\t\t\t\tyMax = Math.max(yMax, cmd.y);\n\t\t\t\t// Extrema\n\t\t\t\tfor (const t of cubicExtrema(curX, cmd.x1, cmd.x2, cmd.x)) {\n\t\t\t\t\tconst x = evalCubic(curX, cmd.x1, cmd.x2, cmd.x, t);\n\t\t\t\t\txMin = Math.min(xMin, x);\n\t\t\t\t\txMax = Math.max(xMax, x);\n\t\t\t\t}\n\t\t\t\tfor (const t of cubicExtrema(curY, cmd.y1, cmd.y2, cmd.y)) {\n\t\t\t\t\tconst y = evalCubic(curY, cmd.y1, cmd.y2, cmd.y, t);\n\t\t\t\t\tyMin = Math.min(yMin, y);\n\t\t\t\t\tyMax = Math.max(yMax, y);\n\t\t\t\t}\n\t\t\t\tcurX = cmd.x;\n\t\t\t\tcurY = cmd.y;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!Number.isFinite(xMin)) {\n\t\treturn { xMin: 0, yMin: 0, xMax: 0, yMax: 0 };\n\t}\n\n\treturn { xMin, yMin, xMax, yMax };\n}\n\n/**\n * Update control box with transformed outline\n * Used for finding minimum X after 3D transform (like libass)\n */\nexport function updateMinTransformedX(\n\tpath: GlyphPath,\n\tm: Matrix3x3,\n\tcurrentMinX: number,\n): number {\n\tlet minX = currentMinX;\n\n\tfor (const cmd of path.commands) {\n\t\tswitch (cmd.type) {\n\t\t\tcase \"M\":\n\t\t\tcase \"L\": {\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\tminX = Math.min(minX, p.x);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\tconst p1 = transformPoint3x3(cmd.x1, cmd.y1, m);\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\tminX = Math.min(minX, p1.x, p.x);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst p1 = transformPoint3x3(cmd.x1, cmd.y1, m);\n\t\t\t\tconst p2 = transformPoint3x3(cmd.x2, cmd.y2, m);\n\t\t\t\tconst p = transformPoint3x3(cmd.x, cmd.y, m);\n\t\t\t\tminX = Math.min(minX, p1.x, p2.x, p.x);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn minX;\n}\n\n/**\n * Translate outline by offset\n */\nexport function translateOutline(\n\tpath: GlyphPath,\n\tdx: number,\n\tdy: number,\n): GlyphPath {\n\treturn transformOutline2D(path, translate2D(dx, dy));\n}\n\n/**\n * Scale outline uniformly\n */\nexport function scaleOutline(\n\tpath: GlyphPath,\n\tsx: number,\n\tsy: number = sx,\n): GlyphPath {\n\treturn transformOutline2D(path, scale2D(sx, sy));\n}\n\n/**\n * Rotate outline by angle (in radians) around origin\n */\nexport function rotateOutline(path: GlyphPath, angle: number): GlyphPath {\n\treturn transformOutline2D(path, rotate2D(angle));\n}\n\n/**\n * Apply italic/oblique shear to outline\n * @param angle Italic angle in degrees (typically 12-15 for italic)\n */\nexport function italicizeOutline(path: GlyphPath, angle: number): GlyphPath {\n\tconst shearX = Math.tan((angle * Math.PI) / 180);\n\treturn transformOutline2D(path, shear2D(shearX, 0));\n}\n\n/**\n * Create 3x3 perspective matrix\n * @param vanishingPointX X coordinate of vanishing point\n * @param vanishingPointY Y coordinate of vanishing point\n * @param strength Perspective strength (0 = none, larger = more perspective)\n */\nexport function perspectiveMatrix(\n\tvanishingPointX: number,\n\tvanishingPointY: number,\n\tstrength: number,\n): Matrix3x3 {\n\treturn [\n\t\t[1, 0, -vanishingPointX * strength],\n\t\t[0, 1, -vanishingPointY * strength],\n\t\t[0, 0, 1],\n\t];\n}\n\n/**\n * Combine multiple paths into one\n */\nexport function combinePaths(paths: GlyphPath[]): GlyphPath {\n\tconst commands: PathCommand[] = [];\n\tlet xMin = Infinity;\n\tlet yMin = Infinity;\n\tlet xMax = -Infinity;\n\tlet yMax = -Infinity;\n\n\tfor (const path of paths) {\n\t\tcommands.push(...path.commands);\n\t\tif (path.bounds) {\n\t\t\txMin = Math.min(xMin, path.bounds.xMin);\n\t\t\tyMin = Math.min(yMin, path.bounds.yMin);\n\t\t\txMax = Math.max(xMax, path.bounds.xMax);\n\t\t\tyMax = Math.max(yMax, path.bounds.yMax);\n\t\t}\n\t}\n\n\tconst bounds = Number.isFinite(xMin) ? { xMin, yMin, xMax, yMax } : null;\n\treturn { commands, bounds };\n}\n\n/**\n * Clone a path\n */\nexport function clonePath(path: GlyphPath): GlyphPath {\n\treturn {\n\t\tcommands: path.commands.map((cmd) => ({ ...cmd })),\n\t\tbounds: path.bounds ? { ...path.bounds } : null,\n\t\tflags: path.flags,\n\t};\n}\n",
93
98
  "import type { GlyphInfo } from \"../types.ts\";\n\n/**\n * Normalization mode for shaping\n */\nexport enum NormalizationMode {\n\t/** No normalization */\n\tNone = 0,\n\t/** Decompose (NFD-like) */\n\tDecompose = 1,\n\t/** Compose (NFC-like) */\n\tCompose = 2,\n\t/** Auto-detect based on script */\n\tAuto = 3,\n}\n\n/**\n * Canonical Combining Class (ccc) for combining marks\n * Based on Unicode 15.0\n */\nexport function getCombiningClass(cp: number): number {\n\t// Common combining classes\n\t// 0 = Not_Reordered (base characters, most characters)\n\t// 1 = Overlay\n\t// 7 = Nukta\n\t// 8 = Kana_Voicing\n\t// 9 = Virama\n\t// 200-240 = Various marks\n\n\t// Hebrew combining marks (0591-05BD, 05BF, 05C1-05C2, 05C4-05C5, 05C7)\n\tif (cp >= 0x0591 && cp <= 0x05bd) return getHebrewCcc(cp);\n\tif (cp === 0x05bf) return 23;\n\tif (cp === 0x05c1) return 24;\n\tif (cp === 0x05c2) return 25;\n\tif (cp === 0x05c4) return 230;\n\tif (cp === 0x05c5) return 220;\n\tif (cp === 0x05c7) return 18;\n\n\t// Arabic combining marks (064B-065F, 0670)\n\tif (cp >= 0x064b && cp <= 0x065f) return getArabicCcc(cp);\n\tif (cp === 0x0670) return 35;\n\t// Extended Arabic marks\n\tif (cp >= 0x0610 && cp <= 0x061a) return 230;\n\tif (cp >= 0x06d6 && cp <= 0x06dc) return 230;\n\tif (cp >= 0x06df && cp <= 0x06e4) return 230;\n\tif (cp >= 0x06e7 && cp <= 0x06e8) return 230;\n\tif (cp >= 0x06ea && cp <= 0x06ed) return 220;\n\tif (cp === 0x08d4) return 230;\n\tif (cp >= 0x08e3 && cp <= 0x08ff) return 220;\n\n\t// Devanagari nukta and signs\n\tif (cp === 0x093c) return 7; // Nukta\n\tif (cp === 0x094d) return 9; // Virama\n\tif (cp >= 0x0951 && cp <= 0x0954) return 230; // Accent marks\n\tif (cp === 0x0955) return 0;\n\tif (cp >= 0x0956 && cp <= 0x0957) return 0;\n\n\t// Bengali nukta and virama\n\tif (cp === 0x09bc) return 7;\n\tif (cp === 0x09cd) return 9;\n\tif (cp === 0x09fe) return 230;\n\n\t// Gurmukhi\n\tif (cp === 0x0a3c) return 7; // Nukta\n\tif (cp === 0x0a4d) return 9; // Virama\n\n\t// Gujarati\n\tif (cp === 0x0abc) return 7; // Nukta\n\tif (cp === 0x0acd) return 9; // Virama\n\n\t// Oriya\n\tif (cp === 0x0b3c) return 7; // Nukta\n\tif (cp === 0x0b4d) return 9; // Virama\n\n\t// Tamil\n\tif (cp === 0x0bcd) return 9; // Virama\n\n\t// Telugu\n\tif (cp === 0x0c4d) return 9; // Virama\n\tif (cp === 0x0c55) return 84;\n\tif (cp === 0x0c56) return 91;\n\n\t// Kannada\n\tif (cp === 0x0cbc) return 7; // Nukta\n\tif (cp === 0x0ccd) return 9; // Virama\n\n\t// Malayalam\n\tif (cp === 0x0d4d) return 9; // Virama\n\n\t// Sinhala\n\tif (cp === 0x0dca) return 9; // Virama\n\n\t// Thai/Lao vowels and tone marks\n\tif (cp >= 0x0e31 && cp <= 0x0e3a) return 0; // Positioned, not reordered\n\tif (cp >= 0x0e47 && cp <= 0x0e4e) return getThaiCcc(cp);\n\tif (cp >= 0x0eb1 && cp <= 0x0ebc) return 0;\n\tif (cp >= 0x0ec8 && cp <= 0x0ecd) return getThaiCcc(cp);\n\n\t// Tibetan\n\tif (cp >= 0x0f18 && cp <= 0x0f19) return 220;\n\tif (cp === 0x0f35) return 220;\n\tif (cp === 0x0f37) return 220;\n\tif (cp === 0x0f39) return 216;\n\tif (cp >= 0x0f71 && cp <= 0x0f7e) return getTibetanCcc(cp);\n\tif (cp >= 0x0f80 && cp <= 0x0f84) return getTibetanCcc(cp);\n\tif (cp >= 0x0f86 && cp <= 0x0f87) return 230;\n\n\t// Myanmar\n\tif (cp === 0x1037) return 7; // Nukta\n\tif (cp === 0x1039) return 9; // Virama\n\tif (cp === 0x103a) return 9;\n\n\t// Hangul Jamo (combining)\n\tif (cp >= 0x302a && cp <= 0x302f) return getHangulCcc(cp);\n\tif (cp >= 0x3099 && cp <= 0x309a) return 8; // Kana voicing\n\n\t// General combining marks (0300-036F)\n\tif (cp >= 0x0300 && cp <= 0x036f) return getLatinCcc(cp);\n\n\t// Combining Diacritical Marks Extended (1AB0-1AFF)\n\tif (cp >= 0x1ab0 && cp <= 0x1aff) return getCdmeClass(cp);\n\n\t// Combining Diacritical Marks Supplement (1DC0-1DFF)\n\tif (cp >= 0x1dc0 && cp <= 0x1dff) return getCdmsClass(cp);\n\n\t// Combining Half Marks (FE20-FE2F)\n\tif (cp >= 0xfe20 && cp <= 0xfe2f) return 230;\n\n\treturn 0;\n}\n\nfunction getThaiCcc(cp: number): number {\n\t// Thai tone marks and vowel signs above\n\tif (cp >= 0x0e48 && cp <= 0x0e4b) return 107; // Tone marks\n\tif (cp === 0x0e4c) return 0; // Thanthakhat\n\tif (cp === 0x0e4d) return 0; // Nikhahit\n\tif (cp === 0x0e4e) return 0; // Yamakkan\n\t// Lao tone marks\n\tif (cp >= 0x0ec8 && cp <= 0x0ecb) return 122;\n\treturn 0;\n}\n\nfunction getTibetanCcc(cp: number): number {\n\tif (cp === 0x0f71) return 129;\n\tif (cp === 0x0f72) return 130;\n\tif (cp === 0x0f73) return 0; // Composed\n\tif (cp === 0x0f74) return 132;\n\tif (cp === 0x0f75) return 0; // Composed\n\tif (cp === 0x0f76) return 0; // Composed\n\tif (cp === 0x0f77) return 0; // Composed\n\tif (cp === 0x0f78) return 0; // Composed\n\tif (cp === 0x0f79) return 0; // Composed\n\tif (cp === 0x0f7a) return 130;\n\tif (cp === 0x0f7b) return 130;\n\tif (cp === 0x0f7c) return 130;\n\tif (cp === 0x0f7d) return 130;\n\tif (cp === 0x0f7e) return 0;\n\tif (cp === 0x0f80) return 130;\n\tif (cp === 0x0f81) return 0; // Composed\n\tif (cp === 0x0f82) return 230;\n\tif (cp === 0x0f83) return 230;\n\tif (cp === 0x0f84) return 9;\n\treturn 0;\n}\n\nfunction getHangulCcc(cp: number): number {\n\tif (cp === 0x302a) return 218;\n\tif (cp === 0x302b) return 228;\n\tif (cp === 0x302c) return 232;\n\tif (cp === 0x302d) return 222;\n\tif (cp === 0x302e) return 224;\n\tif (cp === 0x302f) return 224;\n\treturn 0;\n}\n\nfunction getCdmeClass(cp: number): number {\n\t// Combining Diacritical Marks Extended\n\tif (cp >= 0x1ab0 && cp <= 0x1abe) return 230;\n\tif (cp === 0x1abf) return 220;\n\tif (cp === 0x1ac0) return 220;\n\treturn 230;\n}\n\nfunction getCdmsClass(cp: number): number {\n\t// Combining Diacritical Marks Supplement\n\tif (cp >= 0x1dc0 && cp <= 0x1dc1) return 230;\n\tif (cp === 0x1dc2) return 220;\n\tif (cp >= 0x1dc3 && cp <= 0x1dca) return 230;\n\tif (cp === 0x1dcb) return 230;\n\tif (cp === 0x1dcc) return 230;\n\tif (cp === 0x1dcd) return 234;\n\tif (cp === 0x1dce) return 214;\n\tif (cp === 0x1dcf) return 220;\n\tif (cp === 0x1dd0) return 202;\n\tif (cp >= 0x1dd1 && cp <= 0x1df5) return 230;\n\tif (cp >= 0x1df6 && cp <= 0x1df8) return 232;\n\tif (cp === 0x1df9) return 220;\n\tif (cp === 0x1dfa) return 218;\n\tif (cp >= 0x1dfb && cp <= 0x1dff) return 230;\n\treturn 230;\n}\n\nfunction getHebrewCcc(cp: number): number {\n\t// Hebrew accents and marks have specific combining classes\n\tif (cp >= 0x0591 && cp <= 0x05a1) return 220; // Below marks\n\tif (cp >= 0x05a2 && cp <= 0x05af) return 230; // Above marks\n\tif (cp >= 0x05b0 && cp <= 0x05b9) {\n\t\t// Vowel points\n\t\tif (cp === 0x05b0) return 10; // Sheva\n\t\tif (cp === 0x05b1) return 11; // Hataf Segol\n\t\tif (cp === 0x05b2) return 12; // Hataf Patah\n\t\tif (cp === 0x05b3) return 13; // Hataf Qamats\n\t\tif (cp === 0x05b4) return 14; // Hiriq\n\t\tif (cp === 0x05b5) return 15; // Tsere\n\t\tif (cp === 0x05b6) return 16; // Segol\n\t\tif (cp === 0x05b7) return 17; // Patah\n\t\tif (cp === 0x05b8) return 18; // Qamats\n\t\tif (cp === 0x05b9) return 19; // Holam\n\t}\n\tif (cp === 0x05ba) return 19; // Holam Haser\n\tif (cp === 0x05bb) return 20; // Qubuts\n\tif (cp === 0x05bc) return 21; // Dagesh\n\tif (cp === 0x05bd) return 22; // Meteg\n\treturn 0;\n}\n\nfunction getArabicCcc(cp: number): number {\n\tif (cp === 0x064b) return 27; // Fathatan\n\tif (cp === 0x064c) return 28; // Dammatan\n\tif (cp === 0x064d) return 29; // Kasratan\n\tif (cp === 0x064e) return 30; // Fatha\n\tif (cp === 0x064f) return 31; // Damma\n\tif (cp === 0x0650) return 32; // Kasra\n\tif (cp === 0x0651) return 33; // Shadda\n\tif (cp === 0x0652) return 34; // Sukun\n\tif (cp >= 0x0653 && cp <= 0x0655) return 230; // Maddah, Hamza above\n\tif (cp === 0x0656) return 220; // Subscript Alef\n\tif (cp === 0x0657) return 230; // Inverted Damma\n\tif (cp === 0x0658) return 230; // Mark Noon Ghunna\n\tif (cp >= 0x0659 && cp <= 0x065f) return 230;\n\treturn 0;\n}\n\nfunction getLatinCcc(cp: number): number {\n\t// Combining diacritical marks\n\tif (cp >= 0x0300 && cp <= 0x0314) return 230; // Above marks\n\tif (cp >= 0x0315 && cp <= 0x0315) return 232; // Above right\n\tif (cp >= 0x0316 && cp <= 0x0319) return 220; // Below marks\n\tif (cp >= 0x031a && cp <= 0x031a) return 232; // Above right\n\tif (cp >= 0x031b && cp <= 0x031b) return 216; // Attached above right\n\tif (cp >= 0x031c && cp <= 0x0320) return 220; // Below\n\tif (cp >= 0x0321 && cp <= 0x0322) return 202; // Attached below\n\tif (cp >= 0x0323 && cp <= 0x0326) return 220; // Below\n\tif (cp >= 0x0327 && cp <= 0x0328) return 202; // Attached below\n\tif (cp >= 0x0329 && cp <= 0x0333) return 220; // Below\n\tif (cp >= 0x0334 && cp <= 0x0338) return 1; // Overlay\n\tif (cp >= 0x0339 && cp <= 0x033c) return 220; // Below\n\tif (cp >= 0x033d && cp <= 0x0344) return 230; // Above\n\tif (cp === 0x0345) return 240; // Iota subscript\n\tif (cp >= 0x0346 && cp <= 0x034e) return 230; // Above\n\tif (cp === 0x034f) return 0; // CGJ\n\tif (cp >= 0x0350 && cp <= 0x0352) return 230; // Above\n\tif (cp >= 0x0353 && cp <= 0x0356) return 220; // Below\n\tif (cp >= 0x0357 && cp <= 0x0358) return 230; // Above\n\tif (cp >= 0x0359 && cp <= 0x035a) return 220; // Below\n\tif (cp >= 0x035b && cp <= 0x035b) return 230; // Above\n\tif (cp >= 0x035c && cp <= 0x035c) return 233; // Double below\n\tif (cp >= 0x035d && cp <= 0x035e) return 234; // Double above\n\tif (cp >= 0x035f && cp <= 0x035f) return 233; // Double below\n\tif (cp >= 0x0360 && cp <= 0x0361) return 234; // Double above\n\tif (cp >= 0x0362 && cp <= 0x0362) return 233; // Double below\n\tif (cp >= 0x0363 && cp <= 0x036f) return 230; // Above\n\treturn 0;\n}\n\n/**\n * Reorder combining marks according to canonical combining class\n */\nexport function reorderMarks(infos: GlyphInfo[]): void {\n\t// Simple bubble sort for stability (marks with same ccc keep order)\n\tconst n = infos.length;\n\tlet i = 1;\n\n\twhile (i < n) {\n\t\tconst info = infos[i];\n\t\tif (!info) {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ccc = getCombiningClass(info.codepoint);\n\t\tif (ccc === 0) {\n\t\t\t// Non-combining, advance\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Look backward for marks to reorder with\n\t\tlet j = i;\n\t\twhile (j > 0) {\n\t\t\tconst prevInfo = infos[j - 1];\n\t\t\tif (!prevInfo) break;\n\n\t\t\tconst prevCcc = getCombiningClass(prevInfo.codepoint);\n\t\t\tif (prevCcc === 0) break; // Hit a base character\n\t\t\tif (prevCcc <= ccc) break; // Already in order\n\n\t\t\t// Swap\n\t\t\tinfos[j] = prevInfo;\n\t\t\tinfos[j - 1] = info;\n\t\t\tj--;\n\t\t}\n\n\t\ti++;\n\t}\n}\n\n/**\n * Common decomposition mappings (subset of Unicode decomposition)\n */\nconst DECOMPOSITIONS: Map<number, number[]> = new Map([\n\t// Latin precomposed characters (Latin-1 Supplement)\n\t[0x00c0, [0x0041, 0x0300]], // À = A + grave\n\t[0x00c1, [0x0041, 0x0301]], // Á = A + acute\n\t[0x00c2, [0x0041, 0x0302]], // Â = A + circumflex\n\t[0x00c3, [0x0041, 0x0303]], // Ã = A + tilde\n\t[0x00c4, [0x0041, 0x0308]], // Ä = A + diaeresis\n\t[0x00c5, [0x0041, 0x030a]], // Å = A + ring\n\t[0x00c7, [0x0043, 0x0327]], // Ç = C + cedilla\n\t[0x00c8, [0x0045, 0x0300]], // È = E + grave\n\t[0x00c9, [0x0045, 0x0301]], // É = E + acute\n\t[0x00ca, [0x0045, 0x0302]], // Ê = E + circumflex\n\t[0x00cb, [0x0045, 0x0308]], // Ë = E + diaeresis\n\t[0x00cc, [0x0049, 0x0300]], // Ì = I + grave\n\t[0x00cd, [0x0049, 0x0301]], // Í = I + acute\n\t[0x00ce, [0x0049, 0x0302]], // Î = I + circumflex\n\t[0x00cf, [0x0049, 0x0308]], // Ï = I + diaeresis\n\t[0x00d1, [0x004e, 0x0303]], // Ñ = N + tilde\n\t[0x00d2, [0x004f, 0x0300]], // Ò = O + grave\n\t[0x00d3, [0x004f, 0x0301]], // Ó = O + acute\n\t[0x00d4, [0x004f, 0x0302]], // Ô = O + circumflex\n\t[0x00d5, [0x004f, 0x0303]], // Õ = O + tilde\n\t[0x00d6, [0x004f, 0x0308]], // Ö = O + diaeresis\n\t[0x00d9, [0x0055, 0x0300]], // Ù = U + grave\n\t[0x00da, [0x0055, 0x0301]], // Ú = U + acute\n\t[0x00db, [0x0055, 0x0302]], // Û = U + circumflex\n\t[0x00dc, [0x0055, 0x0308]], // Ü = U + diaeresis\n\t[0x00dd, [0x0059, 0x0301]], // Ý = Y + acute\n\t// Lowercase Latin-1\n\t[0x00e0, [0x0061, 0x0300]], // à = a + grave\n\t[0x00e1, [0x0061, 0x0301]], // á = a + acute\n\t[0x00e2, [0x0061, 0x0302]], // â = a + circumflex\n\t[0x00e3, [0x0061, 0x0303]], // ã = a + tilde\n\t[0x00e4, [0x0061, 0x0308]], // ä = a + diaeresis\n\t[0x00e5, [0x0061, 0x030a]], // å = a + ring\n\t[0x00e7, [0x0063, 0x0327]], // ç = c + cedilla\n\t[0x00e8, [0x0065, 0x0300]], // è = e + grave\n\t[0x00e9, [0x0065, 0x0301]], // é = e + acute\n\t[0x00ea, [0x0065, 0x0302]], // ê = e + circumflex\n\t[0x00eb, [0x0065, 0x0308]], // ë = e + diaeresis\n\t[0x00ec, [0x0069, 0x0300]], // ì = i + grave\n\t[0x00ed, [0x0069, 0x0301]], // í = i + acute\n\t[0x00ee, [0x0069, 0x0302]], // î = i + circumflex\n\t[0x00ef, [0x0069, 0x0308]], // ï = i + diaeresis\n\t[0x00f1, [0x006e, 0x0303]], // ñ = n + tilde\n\t[0x00f2, [0x006f, 0x0300]], // ò = o + grave\n\t[0x00f3, [0x006f, 0x0301]], // ó = o + acute\n\t[0x00f4, [0x006f, 0x0302]], // ô = o + circumflex\n\t[0x00f5, [0x006f, 0x0303]], // õ = o + tilde\n\t[0x00f6, [0x006f, 0x0308]], // ö = o + diaeresis\n\t[0x00f9, [0x0075, 0x0300]], // ù = u + grave\n\t[0x00fa, [0x0075, 0x0301]], // ú = u + acute\n\t[0x00fb, [0x0075, 0x0302]], // û = u + circumflex\n\t[0x00fc, [0x0075, 0x0308]], // ü = u + diaeresis\n\t[0x00fd, [0x0079, 0x0301]], // ý = y + acute\n\t[0x00ff, [0x0079, 0x0308]], // ÿ = y + diaeresis\n\t// Latin Extended-A\n\t[0x0100, [0x0041, 0x0304]], // Ā = A + macron\n\t[0x0101, [0x0061, 0x0304]], // ā = a + macron\n\t[0x0102, [0x0041, 0x0306]], // Ă = A + breve\n\t[0x0103, [0x0061, 0x0306]], // ă = a + breve\n\t[0x0104, [0x0041, 0x0328]], // Ą = A + ogonek\n\t[0x0105, [0x0061, 0x0328]], // ą = a + ogonek\n\t[0x0106, [0x0043, 0x0301]], // Ć = C + acute\n\t[0x0107, [0x0063, 0x0301]], // ć = c + acute\n\t[0x0108, [0x0043, 0x0302]], // Ĉ = C + circumflex\n\t[0x0109, [0x0063, 0x0302]], // ĉ = c + circumflex\n\t[0x010a, [0x0043, 0x0307]], // Ċ = C + dot above\n\t[0x010b, [0x0063, 0x0307]], // ċ = c + dot above\n\t[0x010c, [0x0043, 0x030c]], // Č = C + caron\n\t[0x010d, [0x0063, 0x030c]], // č = c + caron\n\t[0x010e, [0x0044, 0x030c]], // Ď = D + caron\n\t[0x010f, [0x0064, 0x030c]], // ď = d + caron\n\t[0x0112, [0x0045, 0x0304]], // Ē = E + macron\n\t[0x0113, [0x0065, 0x0304]], // ē = e + macron\n\t[0x0114, [0x0045, 0x0306]], // Ĕ = E + breve\n\t[0x0115, [0x0065, 0x0306]], // ĕ = e + breve\n\t[0x0116, [0x0045, 0x0307]], // Ė = E + dot above\n\t[0x0117, [0x0065, 0x0307]], // ė = e + dot above\n\t[0x0118, [0x0045, 0x0328]], // Ę = E + ogonek\n\t[0x0119, [0x0065, 0x0328]], // ę = e + ogonek\n\t[0x011a, [0x0045, 0x030c]], // Ě = E + caron\n\t[0x011b, [0x0065, 0x030c]], // ě = e + caron\n\t[0x011c, [0x0047, 0x0302]], // Ĝ = G + circumflex\n\t[0x011d, [0x0067, 0x0302]], // ĝ = g + circumflex\n\t[0x011e, [0x0047, 0x0306]], // Ğ = G + breve\n\t[0x011f, [0x0067, 0x0306]], // ğ = g + breve\n\t[0x0120, [0x0047, 0x0307]], // Ġ = G + dot above\n\t[0x0121, [0x0067, 0x0307]], // ġ = g + dot above\n\t[0x0122, [0x0047, 0x0327]], // Ģ = G + cedilla\n\t[0x0123, [0x0067, 0x0327]], // ģ = g + cedilla\n\t[0x0124, [0x0048, 0x0302]], // Ĥ = H + circumflex\n\t[0x0125, [0x0068, 0x0302]], // ĥ = h + circumflex\n\t[0x0128, [0x0049, 0x0303]], // Ĩ = I + tilde\n\t[0x0129, [0x0069, 0x0303]], // ĩ = i + tilde\n\t[0x012a, [0x0049, 0x0304]], // Ī = I + macron\n\t[0x012b, [0x0069, 0x0304]], // ī = i + macron\n\t[0x012c, [0x0049, 0x0306]], // Ĭ = I + breve\n\t[0x012d, [0x0069, 0x0306]], // ĭ = i + breve\n\t[0x012e, [0x0049, 0x0328]], // Į = I + ogonek\n\t[0x012f, [0x0069, 0x0328]], // į = i + ogonek\n\t[0x0130, [0x0049, 0x0307]], // İ = I + dot above\n\t[0x0134, [0x004a, 0x0302]], // Ĵ = J + circumflex\n\t[0x0135, [0x006a, 0x0302]], // ĵ = j + circumflex\n\t[0x0136, [0x004b, 0x0327]], // Ķ = K + cedilla\n\t[0x0137, [0x006b, 0x0327]], // ķ = k + cedilla\n\t[0x0139, [0x004c, 0x0301]], // Ĺ = L + acute\n\t[0x013a, [0x006c, 0x0301]], // ĺ = l + acute\n\t[0x013b, [0x004c, 0x0327]], // Ļ = L + cedilla\n\t[0x013c, [0x006c, 0x0327]], // ļ = l + cedilla\n\t[0x013d, [0x004c, 0x030c]], // Ľ = L + caron\n\t[0x013e, [0x006c, 0x030c]], // ľ = l + caron\n\t[0x0143, [0x004e, 0x0301]], // Ń = N + acute\n\t[0x0144, [0x006e, 0x0301]], // ń = n + acute\n\t[0x0145, [0x004e, 0x0327]], // Ņ = N + cedilla\n\t[0x0146, [0x006e, 0x0327]], // ņ = n + cedilla\n\t[0x0147, [0x004e, 0x030c]], // Ň = N + caron\n\t[0x0148, [0x006e, 0x030c]], // ň = n + caron\n\t[0x014c, [0x004f, 0x0304]], // Ō = O + macron\n\t[0x014d, [0x006f, 0x0304]], // ō = o + macron\n\t[0x014e, [0x004f, 0x0306]], // Ŏ = O + breve\n\t[0x014f, [0x006f, 0x0306]], // ŏ = o + breve\n\t[0x0150, [0x004f, 0x030b]], // Ő = O + double acute\n\t[0x0151, [0x006f, 0x030b]], // ő = o + double acute\n\t[0x0154, [0x0052, 0x0301]], // Ŕ = R + acute\n\t[0x0155, [0x0072, 0x0301]], // ŕ = r + acute\n\t[0x0156, [0x0052, 0x0327]], // Ŗ = R + cedilla\n\t[0x0157, [0x0072, 0x0327]], // ŗ = r + cedilla\n\t[0x0158, [0x0052, 0x030c]], // Ř = R + caron\n\t[0x0159, [0x0072, 0x030c]], // ř = r + caron\n\t[0x015a, [0x0053, 0x0301]], // Ś = S + acute\n\t[0x015b, [0x0073, 0x0301]], // ś = s + acute\n\t[0x015c, [0x0053, 0x0302]], // Ŝ = S + circumflex\n\t[0x015d, [0x0073, 0x0302]], // ŝ = s + circumflex\n\t[0x015e, [0x0053, 0x0327]], // Ş = S + cedilla\n\t[0x015f, [0x0073, 0x0327]], // ş = s + cedilla\n\t[0x0160, [0x0053, 0x030c]], // Š = S + caron\n\t[0x0161, [0x0073, 0x030c]], // š = s + caron\n\t[0x0162, [0x0054, 0x0327]], // Ţ = T + cedilla\n\t[0x0163, [0x0074, 0x0327]], // ţ = t + cedilla\n\t[0x0164, [0x0054, 0x030c]], // Ť = T + caron\n\t[0x0165, [0x0074, 0x030c]], // ť = t + caron\n\t[0x0168, [0x0055, 0x0303]], // Ũ = U + tilde\n\t[0x0169, [0x0075, 0x0303]], // ũ = u + tilde\n\t[0x016a, [0x0055, 0x0304]], // Ū = U + macron\n\t[0x016b, [0x0075, 0x0304]], // ū = u + macron\n\t[0x016c, [0x0055, 0x0306]], // Ŭ = U + breve\n\t[0x016d, [0x0075, 0x0306]], // ŭ = u + breve\n\t[0x016e, [0x0055, 0x030a]], // Ů = U + ring\n\t[0x016f, [0x0075, 0x030a]], // ů = u + ring\n\t[0x0170, [0x0055, 0x030b]], // Ű = U + double acute\n\t[0x0171, [0x0075, 0x030b]], // ű = u + double acute\n\t[0x0172, [0x0055, 0x0328]], // Ų = U + ogonek\n\t[0x0173, [0x0075, 0x0328]], // ų = u + ogonek\n\t[0x0174, [0x0057, 0x0302]], // Ŵ = W + circumflex\n\t[0x0175, [0x0077, 0x0302]], // ŵ = w + circumflex\n\t[0x0176, [0x0059, 0x0302]], // Ŷ = Y + circumflex\n\t[0x0177, [0x0079, 0x0302]], // ŷ = y + circumflex\n\t[0x0178, [0x0059, 0x0308]], // Ÿ = Y + diaeresis\n\t[0x0179, [0x005a, 0x0301]], // Ź = Z + acute\n\t[0x017a, [0x007a, 0x0301]], // ź = z + acute\n\t[0x017b, [0x005a, 0x0307]], // Ż = Z + dot above\n\t[0x017c, [0x007a, 0x0307]], // ż = z + dot above\n\t[0x017d, [0x005a, 0x030c]], // Ž = Z + caron\n\t[0x017e, [0x007a, 0x030c]], // ž = z + caron\n\t// Vietnamese characters (Latin Extended Additional)\n\t[0x1ea0, [0x0041, 0x0323]], // Ạ = A + dot below\n\t[0x1ea1, [0x0061, 0x0323]], // ạ = a + dot below\n\t[0x1ea2, [0x0041, 0x0309]], // Ả = A + hook above\n\t[0x1ea3, [0x0061, 0x0309]], // ả = a + hook above\n\t[0x1eb8, [0x0045, 0x0323]], // Ẹ = E + dot below\n\t[0x1eb9, [0x0065, 0x0323]], // ẹ = e + dot below\n\t[0x1eba, [0x0045, 0x0309]], // Ẻ = E + hook above\n\t[0x1ebb, [0x0065, 0x0309]], // ẻ = e + hook above\n\t[0x1ebc, [0x0045, 0x0303]], // Ẽ = E + tilde\n\t[0x1ebd, [0x0065, 0x0303]], // ẽ = e + tilde\n\t[0x1ec8, [0x0049, 0x0309]], // Ỉ = I + hook above\n\t[0x1ec9, [0x0069, 0x0309]], // ỉ = i + hook above\n\t[0x1eca, [0x0049, 0x0323]], // Ị = I + dot below\n\t[0x1ecb, [0x0069, 0x0323]], // ị = i + dot below\n\t[0x1ecc, [0x004f, 0x0323]], // Ọ = O + dot below\n\t[0x1ecd, [0x006f, 0x0323]], // ọ = o + dot below\n\t[0x1ece, [0x004f, 0x0309]], // Ỏ = O + hook above\n\t[0x1ecf, [0x006f, 0x0309]], // ỏ = o + hook above\n\t[0x1ee4, [0x0055, 0x0323]], // Ụ = U + dot below\n\t[0x1ee5, [0x0075, 0x0323]], // ụ = u + dot below\n\t[0x1ee6, [0x0055, 0x0309]], // Ủ = U + hook above\n\t[0x1ee7, [0x0075, 0x0309]], // ủ = u + hook above\n\t[0x1ef2, [0x0059, 0x0300]], // Ỳ = Y + grave\n\t[0x1ef3, [0x0079, 0x0300]], // ỳ = y + grave\n\t[0x1ef4, [0x0059, 0x0323]], // Ỵ = Y + dot below\n\t[0x1ef5, [0x0079, 0x0323]], // ỵ = y + dot below\n\t[0x1ef6, [0x0059, 0x0309]], // Ỷ = Y + hook above\n\t[0x1ef7, [0x0079, 0x0309]], // ỷ = y + hook above\n\t[0x1ef8, [0x0059, 0x0303]], // Ỹ = Y + tilde\n\t[0x1ef9, [0x0079, 0x0303]], // ỹ = y + tilde\n\t// Greek Extended\n\t[0x1f00, [0x03b1, 0x0313]], // ἀ = α + psili\n\t[0x1f01, [0x03b1, 0x0314]], // ἁ = α + dasia\n\t[0x1f08, [0x0391, 0x0313]], // Ἀ = Α + psili\n\t[0x1f09, [0x0391, 0x0314]], // Ἁ = Α + dasia\n\t// Cyrillic (common)\n\t[0x0439, [0x0438, 0x0306]], // й = и + breve\n\t[0x0419, [0x0418, 0x0306]], // Й = И + breve\n\t[0x0451, [0x0435, 0x0308]], // ё = е + diaeresis\n\t[0x0401, [0x0415, 0x0308]], // Ё = Е + diaeresis\n]);\n\n/**\n * Decompose a codepoint if it has a canonical decomposition\n */\nexport function decompose(cp: number): number[] | null {\n\treturn DECOMPOSITIONS.get(cp) ?? null;\n}\n\n/**\n * Common composition mappings (subset of Unicode canonical composition)\n * Maps (base, combining) pairs to composed character\n */\nconst COMPOSITIONS: Map<number, Map<number, number>> = new Map([\n\t// Latin A compositions\n\t[\n\t\t0x0041,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00c0], // A + grave = À\n\t\t\t[0x0301, 0x00c1], // A + acute = Á\n\t\t\t[0x0302, 0x00c2], // A + circumflex = Â\n\t\t\t[0x0303, 0x00c3], // A + tilde = Ã\n\t\t\t[0x0308, 0x00c4], // A + diaeresis = Ä\n\t\t\t[0x030a, 0x00c5], // A + ring = Å\n\t\t\t[0x0328, 0x0104], // A + ogonek = Ą\n\t\t\t[0x030c, 0x01cd], // A + caron = Ǎ\n\t\t\t[0x0304, 0x0100], // A + macron = Ā\n\t\t\t[0x0306, 0x0102], // A + breve = Ă\n\t\t]),\n\t],\n\t// Latin C compositions\n\t[\n\t\t0x0043,\n\t\tnew Map([\n\t\t\t[0x0327, 0x00c7], // C + cedilla = Ç\n\t\t\t[0x0301, 0x0106], // C + acute = Ć\n\t\t\t[0x0302, 0x0108], // C + circumflex = Ĉ\n\t\t\t[0x030c, 0x010c], // C + caron = Č\n\t\t\t[0x0307, 0x010a], // C + dot above = Ċ\n\t\t]),\n\t],\n\t// Latin E compositions\n\t[\n\t\t0x0045,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00c8], // E + grave = È\n\t\t\t[0x0301, 0x00c9], // E + acute = É\n\t\t\t[0x0302, 0x00ca], // E + circumflex = Ê\n\t\t\t[0x0308, 0x00cb], // E + diaeresis = Ë\n\t\t\t[0x0328, 0x0118], // E + ogonek = Ę\n\t\t\t[0x030c, 0x011a], // E + caron = Ě\n\t\t\t[0x0304, 0x0112], // E + macron = Ē\n\t\t\t[0x0306, 0x0114], // E + breve = Ĕ\n\t\t\t[0x0307, 0x0116], // E + dot above = Ė\n\t\t]),\n\t],\n\t// Latin I compositions\n\t[\n\t\t0x0049,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00cc], // I + grave = Ì\n\t\t\t[0x0301, 0x00cd], // I + acute = Í\n\t\t\t[0x0302, 0x00ce], // I + circumflex = Î\n\t\t\t[0x0308, 0x00cf], // I + diaeresis = Ï\n\t\t\t[0x0303, 0x0128], // I + tilde = Ĩ\n\t\t\t[0x0304, 0x012a], // I + macron = Ī\n\t\t\t[0x0306, 0x012c], // I + breve = Ĭ\n\t\t\t[0x0328, 0x012e], // I + ogonek = Į\n\t\t\t[0x0307, 0x0130], // I + dot above = İ\n\t\t]),\n\t],\n\t// Latin N compositions\n\t[\n\t\t0x004e,\n\t\tnew Map([\n\t\t\t[0x0303, 0x00d1], // N + tilde = Ñ\n\t\t\t[0x0301, 0x0143], // N + acute = Ń\n\t\t\t[0x0327, 0x0145], // N + cedilla = Ņ\n\t\t\t[0x030c, 0x0147], // N + caron = Ň\n\t\t]),\n\t],\n\t// Latin O compositions\n\t[\n\t\t0x004f,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00d2], // O + grave = Ò\n\t\t\t[0x0301, 0x00d3], // O + acute = Ó\n\t\t\t[0x0302, 0x00d4], // O + circumflex = Ô\n\t\t\t[0x0303, 0x00d5], // O + tilde = Õ\n\t\t\t[0x0308, 0x00d6], // O + diaeresis = Ö\n\t\t\t[0x0304, 0x014c], // O + macron = Ō\n\t\t\t[0x0306, 0x014e], // O + breve = Ŏ\n\t\t\t[0x030b, 0x0150], // O + double acute = Ő\n\t\t\t[0x0328, 0x01ea], // O + ogonek = Ǫ\n\t\t]),\n\t],\n\t// Latin U compositions\n\t[\n\t\t0x0055,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00d9], // U + grave = Ù\n\t\t\t[0x0301, 0x00da], // U + acute = Ú\n\t\t\t[0x0302, 0x00db], // U + circumflex = Û\n\t\t\t[0x0308, 0x00dc], // U + diaeresis = Ü\n\t\t\t[0x0303, 0x0168], // U + tilde = Ũ\n\t\t\t[0x0304, 0x016a], // U + macron = Ū\n\t\t\t[0x0306, 0x016c], // U + breve = Ŭ\n\t\t\t[0x030a, 0x016e], // U + ring = Ů\n\t\t\t[0x030b, 0x0170], // U + double acute = Ű\n\t\t\t[0x0328, 0x0172], // U + ogonek = Ų\n\t\t\t[0x030c, 0x01d3], // U + caron = Ǔ\n\t\t]),\n\t],\n\t// Latin Y compositions\n\t[\n\t\t0x0059,\n\t\tnew Map([\n\t\t\t[0x0301, 0x00dd], // Y + acute = Ý\n\t\t\t[0x0302, 0x0176], // Y + circumflex = Ŷ\n\t\t\t[0x0308, 0x0178], // Y + diaeresis = Ÿ\n\t\t]),\n\t],\n\t// Lowercase a compositions\n\t[\n\t\t0x0061,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00e0], // a + grave = à\n\t\t\t[0x0301, 0x00e1], // a + acute = á\n\t\t\t[0x0302, 0x00e2], // a + circumflex = â\n\t\t\t[0x0303, 0x00e3], // a + tilde = ã\n\t\t\t[0x0308, 0x00e4], // a + diaeresis = ä\n\t\t\t[0x030a, 0x00e5], // a + ring = å\n\t\t\t[0x0328, 0x0105], // a + ogonek = ą\n\t\t\t[0x030c, 0x01ce], // a + caron = ǎ\n\t\t\t[0x0304, 0x0101], // a + macron = ā\n\t\t\t[0x0306, 0x0103], // a + breve = ă\n\t\t]),\n\t],\n\t// Lowercase c compositions\n\t[\n\t\t0x0063,\n\t\tnew Map([\n\t\t\t[0x0327, 0x00e7], // c + cedilla = ç\n\t\t\t[0x0301, 0x0107], // c + acute = ć\n\t\t\t[0x0302, 0x0109], // c + circumflex = ĉ\n\t\t\t[0x030c, 0x010d], // c + caron = č\n\t\t\t[0x0307, 0x010b], // c + dot above = ċ\n\t\t]),\n\t],\n\t// Lowercase e compositions\n\t[\n\t\t0x0065,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00e8], // e + grave = è\n\t\t\t[0x0301, 0x00e9], // e + acute = é\n\t\t\t[0x0302, 0x00ea], // e + circumflex = ê\n\t\t\t[0x0308, 0x00eb], // e + diaeresis = ë\n\t\t\t[0x0328, 0x0119], // e + ogonek = ę\n\t\t\t[0x030c, 0x011b], // e + caron = ě\n\t\t\t[0x0304, 0x0113], // e + macron = ē\n\t\t\t[0x0306, 0x0115], // e + breve = ĕ\n\t\t\t[0x0307, 0x0117], // e + dot above = ė\n\t\t]),\n\t],\n\t// Lowercase i compositions\n\t[\n\t\t0x0069,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00ec], // i + grave = ì\n\t\t\t[0x0301, 0x00ed], // i + acute = í\n\t\t\t[0x0302, 0x00ee], // i + circumflex = î\n\t\t\t[0x0308, 0x00ef], // i + diaeresis = ï\n\t\t\t[0x0303, 0x0129], // i + tilde = ĩ\n\t\t\t[0x0304, 0x012b], // i + macron = ī\n\t\t\t[0x0306, 0x012d], // i + breve = ĭ\n\t\t\t[0x0328, 0x012f], // i + ogonek = į\n\t\t]),\n\t],\n\t// Lowercase n compositions\n\t[\n\t\t0x006e,\n\t\tnew Map([\n\t\t\t[0x0303, 0x00f1], // n + tilde = ñ\n\t\t\t[0x0301, 0x0144], // n + acute = ń\n\t\t\t[0x0327, 0x0146], // n + cedilla = ņ\n\t\t\t[0x030c, 0x0148], // n + caron = ň\n\t\t]),\n\t],\n\t// Lowercase o compositions\n\t[\n\t\t0x006f,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00f2], // o + grave = ò\n\t\t\t[0x0301, 0x00f3], // o + acute = ó\n\t\t\t[0x0302, 0x00f4], // o + circumflex = ô\n\t\t\t[0x0303, 0x00f5], // o + tilde = õ\n\t\t\t[0x0308, 0x00f6], // o + diaeresis = ö\n\t\t\t[0x0304, 0x014d], // o + macron = ō\n\t\t\t[0x0306, 0x014f], // o + breve = ŏ\n\t\t\t[0x030b, 0x0151], // o + double acute = ő\n\t\t\t[0x0328, 0x01eb], // o + ogonek = ǫ\n\t\t]),\n\t],\n\t// Lowercase u compositions\n\t[\n\t\t0x0075,\n\t\tnew Map([\n\t\t\t[0x0300, 0x00f9], // u + grave = ù\n\t\t\t[0x0301, 0x00fa], // u + acute = ú\n\t\t\t[0x0302, 0x00fb], // u + circumflex = û\n\t\t\t[0x0308, 0x00fc], // u + diaeresis = ü\n\t\t\t[0x0303, 0x0169], // u + tilde = ũ\n\t\t\t[0x0304, 0x016b], // u + macron = ū\n\t\t\t[0x0306, 0x016d], // u + breve = ŭ\n\t\t\t[0x030a, 0x016f], // u + ring = ů\n\t\t\t[0x030b, 0x0171], // u + double acute = ű\n\t\t\t[0x0328, 0x0173], // u + ogonek = ų\n\t\t\t[0x030c, 0x01d4], // u + caron = ǔ\n\t\t]),\n\t],\n\t// Lowercase y compositions\n\t[\n\t\t0x0079,\n\t\tnew Map([\n\t\t\t[0x0301, 0x00fd], // y + acute = ý\n\t\t\t[0x0308, 0x00ff], // y + diaeresis = ÿ\n\t\t\t[0x0302, 0x0177], // y + circumflex = ŷ\n\t\t]),\n\t],\n\t// Other common compositions\n\t[\n\t\t0x0053,\n\t\tnew Map([\n\t\t\t// S\n\t\t\t[0x0301, 0x015a], // S + acute = Ś\n\t\t\t[0x0302, 0x015c], // S + circumflex = Ŝ\n\t\t\t[0x0327, 0x015e], // S + cedilla = Ş\n\t\t\t[0x030c, 0x0160], // S + caron = Š\n\t\t]),\n\t],\n\t[\n\t\t0x0073,\n\t\tnew Map([\n\t\t\t// s\n\t\t\t[0x0301, 0x015b], // s + acute = ś\n\t\t\t[0x0302, 0x015d], // s + circumflex = ŝ\n\t\t\t[0x0327, 0x015f], // s + cedilla = ş\n\t\t\t[0x030c, 0x0161], // s + caron = š\n\t\t]),\n\t],\n\t[\n\t\t0x005a,\n\t\tnew Map([\n\t\t\t// Z\n\t\t\t[0x0301, 0x0179], // Z + acute = Ź\n\t\t\t[0x0307, 0x017b], // Z + dot above = Ż\n\t\t\t[0x030c, 0x017d], // Z + caron = Ž\n\t\t]),\n\t],\n\t[\n\t\t0x007a,\n\t\tnew Map([\n\t\t\t// z\n\t\t\t[0x0301, 0x017a], // z + acute = ź\n\t\t\t[0x0307, 0x017c], // z + dot above = ż\n\t\t\t[0x030c, 0x017e], // z + caron = ž\n\t\t]),\n\t],\n]);\n\n/**\n * Try to compose a base character with a combining mark\n * Returns the composed character or null if no composition exists\n */\nexport function tryCompose(base: number, combining: number): number | null {\n\tconst baseCompositions = COMPOSITIONS.get(base);\n\tif (!baseCompositions) return null;\n\treturn baseCompositions.get(combining) ?? null;\n}\n\n/**\n * Compose combining marks with their bases where possible (NFC-like)\n */\nfunction composeMarks(infos: GlyphInfo[]): GlyphInfo[] {\n\tif (infos.length === 0) return infos;\n\n\tconst result: GlyphInfo[] = [];\n\tlet i = 0;\n\n\twhile (i < infos.length) {\n\t\tconst current = infos[i];\n\t\tif (!current) {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst currentCcc = getCombiningClass(current.codepoint);\n\n\t\t// If this is a base character (ccc = 0), try to compose with following marks\n\t\tif (currentCcc === 0) {\n\t\t\tlet composedCp = current.codepoint;\n\t\t\tlet lastCcc = 0;\n\t\t\tlet j = i + 1;\n\n\t\t\t// Look for combining marks that can be composed\n\t\t\twhile (j < infos.length) {\n\t\t\t\tconst mark = infos[j];\n\t\t\t\tif (!mark) break;\n\n\t\t\t\tconst markCcc = getCombiningClass(mark.codepoint);\n\n\t\t\t\t// Stop at next base character\n\t\t\t\tif (markCcc === 0) break;\n\n\t\t\t\t// Can only compose if:\n\t\t\t\t// 1. Mark has higher ccc than last composed mark (or last was base)\n\t\t\t\t// 2. Composition exists for the pair\n\t\t\t\tif (markCcc > lastCcc || lastCcc === 0) {\n\t\t\t\t\tconst composed = tryCompose(composedCp, mark.codepoint);\n\t\t\t\t\tif (composed !== null) {\n\t\t\t\t\t\tcomposedCp = composed;\n\t\t\t\t\t\t// Mark this position as consumed (will skip)\n\t\t\t\t\t\tj++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Mark wasn't composed, stop looking for compositions\n\t\t\t\t// but continue with remaining marks\n\t\t\t\tlastCcc = markCcc;\n\t\t\t\tj++;\n\t\t\t}\n\n\t\t\t// Output the (possibly composed) base\n\t\t\tresult.push({\n\t\t\t\tglyphId: current.glyphId,\n\t\t\t\tcluster: current.cluster,\n\t\t\t\tmask: current.mask,\n\t\t\t\tcodepoint: composedCp,\n\t\t\t});\n\n\t\t\t// Output any marks that weren't composed\n\t\t\tfor (let k = i + 1; k < j; k++) {\n\t\t\t\tconst mark = infos[k];\n\t\t\t\tif (!mark) continue;\n\n\t\t\t\tconst markCcc = getCombiningClass(mark.codepoint);\n\t\t\t\t// Only output marks that weren't composed (check if they're still combining marks)\n\t\t\t\t// We need to re-check if a composition exists to determine what to output\n\t\t\t\tconst compositionExists =\n\t\t\t\t\ttryCompose(composedCp, mark.codepoint) !== null;\n\t\t\t\tif (!compositionExists && markCcc !== 0) {\n\t\t\t\t\tresult.push(mark);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = j;\n\t\t} else {\n\t\t\t// Standalone combining mark (no base), just copy it\n\t\t\tresult.push(current);\n\t\t\ti++;\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Apply normalization to glyph infos\n */\nexport function normalize(\n\tinfos: GlyphInfo[],\n\tmode: NormalizationMode,\n): GlyphInfo[] {\n\tif (mode === NormalizationMode.None) {\n\t\treturn infos;\n\t}\n\n\tif (mode === NormalizationMode.Decompose) {\n\t\t// Decompose precomposed characters (NFD-like)\n\t\tconst result: GlyphInfo[] = [];\n\n\t\tfor (const info of infos) {\n\t\t\tconst decomposed = decompose(info.codepoint);\n\t\t\tif (decomposed) {\n\t\t\t\t// Replace with decomposed sequence\n\t\t\t\tfor (const cp of decomposed) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tglyphId: info.glyphId, // Will be remapped later\n\t\t\t\t\t\tcluster: info.cluster,\n\t\t\t\t\t\tmask: info.mask,\n\t\t\t\t\t\tcodepoint: cp,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.push(info);\n\t\t\t}\n\t\t}\n\n\t\t// Reorder combining marks\n\t\treorderMarks(result);\n\n\t\treturn result;\n\t}\n\n\tif (mode === NormalizationMode.Compose) {\n\t\t// First decompose, reorder, then compose (NFC-like)\n\t\t// Step 1: Decompose\n\t\tconst decomposed: GlyphInfo[] = [];\n\t\tfor (const info of infos) {\n\t\t\tconst dec = decompose(info.codepoint);\n\t\t\tif (dec) {\n\t\t\t\tfor (const cp of dec) {\n\t\t\t\t\tdecomposed.push({\n\t\t\t\t\t\tglyphId: info.glyphId,\n\t\t\t\t\t\tcluster: info.cluster,\n\t\t\t\t\t\tmask: info.mask,\n\t\t\t\t\t\tcodepoint: cp,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdecomposed.push(info);\n\t\t\t}\n\t\t}\n\n\t\t// Step 2: Reorder combining marks\n\t\treorderMarks(decomposed);\n\n\t\t// Step 3: Compose\n\t\treturn composeMarks(decomposed);\n\t}\n\n\tif (mode === NormalizationMode.Auto) {\n\t\t// Auto mode: use decomposition by default (better for shaping)\n\t\tconst result: GlyphInfo[] = [];\n\n\t\tfor (const info of infos) {\n\t\t\tconst decomposed = decompose(info.codepoint);\n\t\t\tif (decomposed) {\n\t\t\t\tfor (const cp of decomposed) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tglyphId: info.glyphId,\n\t\t\t\t\t\tcluster: info.cluster,\n\t\t\t\t\t\tmask: info.mask,\n\t\t\t\t\t\tcodepoint: cp,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.push(info);\n\t\t\t}\n\t\t}\n\n\t\treorderMarks(result);\n\t\treturn result;\n\t}\n\n\treturn infos;\n}\n",
94
99
  "import type { Font } from \"../font/font.ts\";\nimport { getGlyphClass } from \"../font/tables/gdef.ts\";\nimport { getKernValue } from \"../font/tables/kern.ts\";\nimport type { GlyphId, GlyphInfo, GlyphPosition } from \"../types.ts\";\nimport { GlyphClass } from \"../types.ts\";\nimport { getCombiningClass } from \"../unicode/normalize.ts\";\n\n/**\n * Fallback mark positioning when GPOS is not available\n * Uses combining class information to position marks\n */\nexport function applyFallbackMarkPositioning(\n\tfont: Font,\n\tinfos: GlyphInfo[],\n\tpositions: GlyphPosition[],\n): void {\n\tfor (let i = 0; i < infos.length; i++) {\n\t\tconst info = infos[i];\n\t\tconst pos = positions[i];\n\t\tif (!info || !pos) continue;\n\n\t\tconst glyphClass = font.gdef ? getGlyphClass(font.gdef, info.glyphId) : 0;\n\t\tconst ccc = getCombiningClass(info.codepoint);\n\n\t\t// Skip if not a mark\n\t\tif (glyphClass !== GlyphClass.Mark && ccc === 0) continue;\n\n\t\t// Find the base glyph\n\t\tlet baseIndex = -1;\n\t\tfor (let j = i - 1; j >= 0; j--) {\n\t\t\tconst prevInfo = infos[j];\n\t\t\tif (!prevInfo) continue;\n\n\t\t\tconst prevClass = font.gdef\n\t\t\t\t? getGlyphClass(font.gdef, prevInfo.glyphId)\n\t\t\t\t: 0;\n\t\t\tconst prevCcc = getCombiningClass(prevInfo.codepoint);\n\n\t\t\tif (prevClass === GlyphClass.Base || (prevClass === 0 && prevCcc === 0)) {\n\t\t\t\tbaseIndex = j;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (baseIndex < 0) continue;\n\n\t\tconst baseInfo = infos[baseIndex];\n\t\tconst basePos = positions[baseIndex];\n\t\tif (!baseInfo || !basePos) continue;\n\n\t\t// Get base glyph metrics\n\t\tconst baseAdvance = font.advanceWidth(baseInfo.glyphId);\n\n\t\t// Position mark relative to base based on combining class\n\t\t// This is a simplified heuristic - real mark positioning uses anchors\n\t\tpositionMarkFallback(font, info, pos, baseInfo, basePos, baseAdvance, ccc);\n\n\t\t// Mark has zero advance (already accounted for in base)\n\t\tpos.xAdvance = 0;\n\t\tpos.yAdvance = 0;\n\t}\n}\n\nfunction positionMarkFallback(\n\tfont: Font,\n\tmarkInfo: GlyphInfo,\n\tmarkPos: GlyphPosition,\n\t_baseInfo: GlyphInfo,\n\tbasePos: GlyphPosition,\n\tbaseAdvance: number,\n\tccc: number,\n): void {\n\tconst markAdvance = font.advanceWidth(markInfo.glyphId);\n\tconst unitsPerEm = font.unitsPerEm;\n\n\t// Default: center mark over base\n\tlet xOffset = (baseAdvance - markAdvance) / 2;\n\tlet yOffset = 0;\n\n\t// Position based on combining class\n\tif (ccc >= 200 && ccc <= 240) {\n\t\t// Above marks (ccc 230 is common for above)\n\t\tyOffset = unitsPerEm * 0.7; // 70% of em height\n\t\txOffset = (baseAdvance - markAdvance) / 2;\n\t} else if (ccc >= 202 && ccc <= 220) {\n\t\t// Below marks (ccc 220 is common for below)\n\t\tyOffset = -unitsPerEm * 0.15;\n\t\txOffset = (baseAdvance - markAdvance) / 2;\n\t} else if (ccc === 1) {\n\t\t// Overlay marks\n\t\txOffset = (baseAdvance - markAdvance) / 2;\n\t\tyOffset = unitsPerEm * 0.3;\n\t} else if (ccc >= 7 && ccc <= 9) {\n\t\t// Nukta, virama (below consonant)\n\t\tyOffset = -unitsPerEm * 0.1;\n\t\txOffset = (baseAdvance - markAdvance) / 2;\n\t} else if (ccc >= 10 && ccc <= 35) {\n\t\t// Hebrew/Arabic vowels - specific positioning\n\t\tif (ccc <= 22) {\n\t\t\t// Hebrew below vowels\n\t\t\tyOffset = -unitsPerEm * 0.2;\n\t\t} else {\n\t\t\t// Arabic marks\n\t\t\tyOffset = ccc < 30 ? -unitsPerEm * 0.15 : unitsPerEm * 0.6;\n\t\t}\n\t\txOffset = (baseAdvance - markAdvance) / 2;\n\t}\n\n\t// Apply offset relative to base position\n\tmarkPos.xOffset = basePos.xOffset + xOffset - baseAdvance;\n\tmarkPos.yOffset = basePos.yOffset + yOffset;\n}\n\n/**\n * Apply fallback kerning using kern table\n */\nexport function applyFallbackKerning(\n\tfont: Font,\n\tinfos: GlyphInfo[],\n\tpositions: GlyphPosition[],\n): void {\n\tconst kern = font.kern;\n\tif (!kern) return;\n\n\tfor (let i = 0; i < infos.length - 1; i++) {\n\t\tconst info1 = infos[i];\n\t\tconst info2 = infos[i + 1];\n\t\tif (!info1 || !info2) continue;\n\n\t\tconst pos1 = positions[i];\n\t\tif (!pos1) continue;\n\n\t\t// Skip marks\n\t\tconst class1 = font.gdef ? getGlyphClass(font.gdef, info1.glyphId) : 0;\n\t\tconst class2 = font.gdef ? getGlyphClass(font.gdef, info2.glyphId) : 0;\n\t\tif (class1 === GlyphClass.Mark || class2 === GlyphClass.Mark) continue;\n\n\t\t// Get kerning from kern table\n\t\tconst kernValue = getKernValueFromTable(font, info1.glyphId, info2.glyphId);\n\t\tif (kernValue !== 0) {\n\t\t\tpos1.xAdvance += kernValue;\n\t\t}\n\t}\n}\n\nfunction getKernValueFromTable(\n\tfont: Font,\n\tleft: GlyphId,\n\tright: GlyphId,\n): number {\n\tconst kern = font.kern;\n\tif (!kern) return 0;\n\n\treturn getKernValue(kern, left, right);\n}\n\n/**\n * Recategorize combining marks for proper processing\n * Some scripts need marks to be processed in specific order\n */\nexport function recategorizeCombiningMarks(\n\t_font: Font,\n\tinfos: GlyphInfo[],\n): void {\n\t// For Hebrew, Arabic, and other scripts, ensure marks are in canonical order\n\t// This is typically handled by normalization, but we do a final check here\n\n\tlet i = 0;\n\twhile (i < infos.length) {\n\t\tconst info = infos[i];\n\t\tif (!info) {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst ccc = getCombiningClass(info.codepoint);\n\t\tif (ccc === 0) {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Find extent of combining sequence\n\t\tlet j = i + 1;\n\t\twhile (j < infos.length) {\n\t\t\tconst nextInfo = infos[j];\n\t\t\tif (!nextInfo) break;\n\t\t\tconst nextCcc = getCombiningClass(nextInfo.codepoint);\n\t\t\tif (nextCcc === 0) break;\n\t\t\tj++;\n\t\t}\n\n\t\t// Sort combining marks by CCC (stable sort)\n\t\tif (j - i > 1) {\n\t\t\tconst marks = infos.slice(i, j);\n\t\t\tmarks.sort((a, b) => {\n\t\t\t\tconst cccA = getCombiningClass(a.codepoint);\n\t\t\t\tconst cccB = getCombiningClass(b.codepoint);\n\t\t\t\treturn cccA - cccB;\n\t\t\t});\n\t\t\tfor (const [k, mark] of marks.entries()) {\n\t\t\t\tinfos[i + k] = mark;\n\t\t\t}\n\t\t}\n\n\t\ti = j;\n\t}\n}\n",
95
100
  "import { tag } from \"../types.ts\";\nimport type { ShapeFeature } from \"./shape-plan.ts\";\n\n/**\n * Feature helper utilities\n * Provides convenient APIs for enabling OpenType features\n */\n\n/**\n * Create a ShapeFeature for a stylistic set (ss01-ss20)\n */\nexport function stylisticSet(\n\tsetNumber: number,\n\tenabled: boolean = true,\n): ShapeFeature {\n\tif (setNumber < 1 || setNumber > 20) {\n\t\tthrow new Error(`Stylistic set number must be 1-20, got ${setNumber}`);\n\t}\n\tconst tagStr = `ss${setNumber.toString().padStart(2, \"0\")}`;\n\treturn { tag: tag(tagStr), enabled };\n}\n\n/**\n * Create ShapeFeatures for multiple stylistic sets\n */\nexport function stylisticSets(\n\tsetNumbers: number[],\n\tenabled: boolean = true,\n): ShapeFeature[] {\n\treturn setNumbers.map((n) => stylisticSet(n, enabled));\n}\n\n/**\n * Create a ShapeFeature for a character variant (cv01-cv99)\n */\nexport function characterVariant(\n\tvariantNumber: number,\n\tenabled: boolean = true,\n): ShapeFeature {\n\tif (variantNumber < 1 || variantNumber > 99) {\n\t\tthrow new Error(\n\t\t\t`Character variant number must be 1-99, got ${variantNumber}`,\n\t\t);\n\t}\n\tconst tagStr = `cv${variantNumber.toString().padStart(2, \"0\")}`;\n\treturn { tag: tag(tagStr), enabled };\n}\n\n/**\n * Create ShapeFeatures for multiple character variants\n */\nexport function characterVariants(\n\tvariantNumbers: number[],\n\tenabled: boolean = true,\n): ShapeFeature[] {\n\treturn variantNumbers.map((n) => characterVariant(n, enabled));\n}\n\n/**\n * Standard ligatures (liga)\n */\nexport function standardLigatures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"liga\"), enabled };\n}\n\n/**\n * Discretionary ligatures (dlig)\n */\nexport function discretionaryLigatures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"dlig\"), enabled };\n}\n\n/**\n * Historical ligatures (hlig)\n */\nexport function historicalLigatures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"hlig\"), enabled };\n}\n\n/**\n * Contextual alternates (calt)\n */\nexport function contextualAlternates(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"calt\"), enabled };\n}\n\n/**\n * Stylistic alternates (salt)\n */\nexport function stylisticAlternates(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"salt\"), enabled };\n}\n\n/**\n * Swash (swsh)\n */\nexport function swash(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"swsh\"), enabled };\n}\n\n/**\n * Small capitals (smcp)\n */\nexport function smallCaps(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"smcp\"), enabled };\n}\n\n/**\n * Capitals to small capitals (c2sc)\n */\nexport function capsToSmallCaps(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"c2sc\"), enabled };\n}\n\n/**\n * Petite capitals (pcap)\n */\nexport function petiteCaps(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"pcap\"), enabled };\n}\n\n/**\n * All small capitals (both smcp and c2sc)\n */\nexport function allSmallCaps(enabled: boolean = true): ShapeFeature[] {\n\treturn [smallCaps(enabled), capsToSmallCaps(enabled)];\n}\n\n/**\n * Oldstyle figures (onum)\n */\nexport function oldstyleFigures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"onum\"), enabled };\n}\n\n/**\n * Lining figures (lnum)\n */\nexport function liningFigures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"lnum\"), enabled };\n}\n\n/**\n * Proportional figures (pnum)\n */\nexport function proportionalFigures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"pnum\"), enabled };\n}\n\n/**\n * Tabular figures (tnum)\n */\nexport function tabularFigures(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"tnum\"), enabled };\n}\n\n/**\n * Fractions (frac)\n */\nexport function fractions(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"frac\"), enabled };\n}\n\n/**\n * Ordinals (ordn)\n */\nexport function ordinals(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"ordn\"), enabled };\n}\n\n/**\n * Slashed zero (zero)\n */\nexport function slashedZero(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"zero\"), enabled };\n}\n\n/**\n * Superscript (sups)\n */\nexport function superscript(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"sups\"), enabled };\n}\n\n/**\n * Subscript (subs)\n */\nexport function subscript(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"subs\"), enabled };\n}\n\n/**\n * Scientific inferiors (sinf)\n */\nexport function scientificInferiors(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"sinf\"), enabled };\n}\n\n/**\n * Case-sensitive forms (case)\n */\nexport function caseSensitiveForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"case\"), enabled };\n}\n\n/**\n * Capital spacing (cpsp)\n */\nexport function capitalSpacing(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"cpsp\"), enabled };\n}\n\n/**\n * Kerning (kern)\n */\nexport function kerning(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"kern\"), enabled };\n}\n\n/**\n * Vertical forms (vert) - for vertical text layout\n */\nexport function verticalForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"vert\"), enabled };\n}\n\n/**\n * Vertical alternates and rotation (vrt2) - for vertical text layout\n */\nexport function verticalAlternatesRotation(\n\tenabled: boolean = true,\n): ShapeFeature {\n\treturn { tag: tag(\"vrt2\"), enabled };\n}\n\n/**\n * Vertical Kana alternates (vkna) - for Japanese vertical text\n */\nexport function verticalKanaAlternates(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"vkna\"), enabled };\n}\n\n/**\n * All vertical layout features\n */\nexport function verticalLayoutFeatures(\n\tenabled: boolean = true,\n): ShapeFeature[] {\n\treturn [\n\t\tverticalForms(enabled),\n\t\tverticalAlternatesRotation(enabled),\n\t\tverticalKanaAlternates(enabled),\n\t];\n}\n\n/**\n * Ruby notation forms (ruby)\n */\nexport function ruby(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"ruby\"), enabled };\n}\n\n/**\n * Half-width forms (hwid)\n */\nexport function halfWidthForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"hwid\"), enabled };\n}\n\n/**\n * Full-width forms (fwid)\n */\nexport function fullWidthForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"fwid\"), enabled };\n}\n\n/**\n * Proportional-width forms (pwid)\n */\nexport function proportionalWidthForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"pwid\"), enabled };\n}\n\n/**\n * Quarter-width forms (qwid)\n */\nexport function quarterWidthForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"qwid\"), enabled };\n}\n\n/**\n * Third-width forms (twid)\n */\nexport function thirdWidthForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"twid\"), enabled };\n}\n\n/**\n * JIS78 forms (jp78) - Japanese\n */\nexport function jis78Forms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"jp78\"), enabled };\n}\n\n/**\n * JIS83 forms (jp83) - Japanese\n */\nexport function jis83Forms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"jp83\"), enabled };\n}\n\n/**\n * JIS90 forms (jp90) - Japanese\n */\nexport function jis90Forms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"jp90\"), enabled };\n}\n\n/**\n * JIS2004 forms (jp04) - Japanese\n */\nexport function jis2004Forms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"jp04\"), enabled };\n}\n\n/**\n * Simplified forms (smpl) - Chinese\n */\nexport function simplifiedForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"smpl\"), enabled };\n}\n\n/**\n * Traditional forms (trad) - Chinese\n */\nexport function traditionalForms(enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(\"trad\"), enabled };\n}\n\n/**\n * Create a feature from a 4-character tag string\n */\nexport function feature(tagStr: string, enabled: boolean = true): ShapeFeature {\n\treturn { tag: tag(tagStr), enabled };\n}\n\n/**\n * Create multiple features from tag strings\n */\nexport function features(\n\ttagStrs: string[],\n\tenabled: boolean = true,\n): ShapeFeature[] {\n\treturn tagStrs.map((t) => feature(t, enabled));\n}\n\n/**\n * Combine multiple feature sets\n */\nexport function combineFeatures(\n\t...featureSets: (ShapeFeature | ShapeFeature[])[]\n): ShapeFeature[] {\n\tconst result: ShapeFeature[] = [];\n\tfor (const set of featureSets) {\n\t\tif (Array.isArray(set)) {\n\t\t\tresult.push(...set);\n\t\t} else {\n\t\t\tresult.push(set);\n\t\t}\n\t}\n\treturn result;\n}\n",
@@ -117,7 +122,7 @@
117
122
  "/**\n * Unicode Script Detection\n * Detects the script of text based on codepoints\n */\n\n/**\n * Unicode script values (ISO 15924)\n */\nexport enum Script {\n\tCommon = \"Zyyy\",\n\tInherited = \"Zinh\",\n\tUnknown = \"Zzzz\",\n\n\t// Major scripts\n\tLatin = \"Latn\",\n\tGreek = \"Grek\",\n\tCyrillic = \"Cyrl\",\n\tArmenian = \"Armn\",\n\tHebrew = \"Hebr\",\n\tArabic = \"Arab\",\n\tSyriac = \"Syrc\",\n\tThaana = \"Thaa\",\n\tDevanagari = \"Deva\",\n\tBengali = \"Beng\",\n\tGurmukhi = \"Guru\",\n\tGujarati = \"Gujr\",\n\tOriya = \"Orya\",\n\tTamil = \"Taml\",\n\tTelugu = \"Telu\",\n\tKannada = \"Knda\",\n\tMalayalam = \"Mlym\",\n\tSinhala = \"Sinh\",\n\tThai = \"Thai\",\n\tLao = \"Laoo\",\n\tTibetan = \"Tibt\",\n\tMyanmar = \"Mymr\",\n\tGeorgian = \"Geor\",\n\tHangul = \"Hang\",\n\tEthiopic = \"Ethi\",\n\tCherokee = \"Cher\",\n\tCanadianAboriginal = \"Cans\",\n\tOgham = \"Ogam\",\n\tRunic = \"Runr\",\n\tKhmer = \"Khmr\",\n\tMongolian = \"Mong\",\n\tHiragana = \"Hira\",\n\tKatakana = \"Kana\",\n\tBopomofo = \"Bopo\",\n\tHan = \"Hani\",\n\tYi = \"Yiii\",\n\tOldItalic = \"Ital\",\n\tGothic = \"Goth\",\n\tDeseret = \"Dsrt\",\n\tTagalog = \"Tglg\",\n\tHanunoo = \"Hano\",\n\tBuhid = \"Buhd\",\n\tTagbanwa = \"Tagb\",\n\tLimbu = \"Limb\",\n\tTaiLe = \"Tale\",\n\tLinearB = \"Linb\",\n\tUgaritic = \"Ugar\",\n\tShavian = \"Shaw\",\n\tOsmanya = \"Osma\",\n\tCypriot = \"Cprt\",\n\tBraille = \"Brai\",\n\tBuginese = \"Bugi\",\n\tCoptic = \"Copt\",\n\tNewTaiLue = \"Talu\",\n\tGlagolitic = \"Glag\",\n\tTifinagh = \"Tfng\",\n\tSylotiNagri = \"Sylo\",\n\tOldPersian = \"Xpeo\",\n\tKharoshthi = \"Khar\",\n\tBalinese = \"Bali\",\n\tCuneiform = \"Xsux\",\n\tPhoenician = \"Phnx\",\n\tPhagsPa = \"Phag\",\n\tNko = \"Nkoo\",\n\tSundanese = \"Sund\",\n\tLepcha = \"Lepc\",\n\tOlChiki = \"Olck\",\n\tVai = \"Vaii\",\n\tSaurashtra = \"Saur\",\n\tKayahLi = \"Kali\",\n\tRejang = \"Rjng\",\n\tLycian = \"Lyci\",\n\tCarian = \"Cari\",\n\tLydian = \"Lydi\",\n\tCham = \"Cham\",\n\tTaiTham = \"Lana\",\n\tTaiViet = \"Tavt\",\n\tAvestan = \"Avst\",\n\tEgyptianHieroglyphs = \"Egyp\",\n\tSamaritan = \"Samr\",\n\tLisu = \"Lisu\",\n\tBamum = \"Bamu\",\n\tJavanese = \"Java\",\n\tMeeteiMayek = \"Mtei\",\n\tImperialAramaic = \"Armi\",\n\tOldSouthArabian = \"Sarb\",\n\tInscriptionalParthian = \"Prti\",\n\tInscriptionalPahlavi = \"Phli\",\n\tOldTurkic = \"Orkh\",\n\tKaithi = \"Kthi\",\n\tBatak = \"Batk\",\n\tBrahmi = \"Brah\",\n\tMandaic = \"Mand\",\n\tChakma = \"Cakm\",\n\tMeroiticCursive = \"Merc\",\n\tMeroiticHieroglyphs = \"Mero\",\n\tMiao = \"Plrd\",\n\tSharada = \"Shrd\",\n\tSoraSompeng = \"Sora\",\n\tTakri = \"Takr\",\n\tCaucasianAlbanian = \"Aghb\",\n\tBassaVah = \"Bass\",\n\tDuployan = \"Dupl\",\n\tElbasan = \"Elba\",\n\tGrantha = \"Gran\",\n\tPahawhHmong = \"Hmng\",\n\tKhojki = \"Khoj\",\n\tLinearA = \"Lina\",\n\tMahajani = \"Mahj\",\n\tManichaean = \"Mani\",\n\tMendeKikakui = \"Mend\",\n\tModi = \"Modi\",\n\tMro = \"Mroo\",\n\tOldNorthArabian = \"Narb\",\n\tNabataean = \"Nbat\",\n\tPalmyrene = \"Palm\",\n\tPauCinHau = \"Pauc\",\n\tOldPermic = \"Perm\",\n\tPsalterPahlavi = \"Phlp\",\n\tSiddham = \"Sidd\",\n\tKhudawadi = \"Sind\",\n\tTirhuta = \"Tirh\",\n\tWarangCiti = \"Wara\",\n\tAhom = \"Ahom\",\n\tAnatolianHieroglyphs = \"Hluw\",\n\tHatran = \"Hatr\",\n\tMultani = \"Mult\",\n\tOldHungarian = \"Hung\",\n\tSignWriting = \"Sgnw\",\n\tAdlam = \"Adlm\",\n\tBhaiksuki = \"Bhks\",\n\tMarchen = \"Marc\",\n\tNewa = \"Newa\",\n\tOsage = \"Osge\",\n\tTangut = \"Tang\",\n\tMasaramGondi = \"Gonm\",\n\tNushu = \"Nshu\",\n\tSoyombo = \"Soyo\",\n\tZanabazarSquare = \"Zanb\",\n\tDogra = \"Dogr\",\n\tGunjalaGondi = \"Gong\",\n\tMakasar = \"Maka\",\n\tMedefaidrin = \"Medf\",\n\tHanifiRohingya = \"Rohg\",\n\tSogdian = \"Sogd\",\n\tOldSogdian = \"Sogo\",\n\tElymaic = \"Elym\",\n\tNandinagari = \"Nand\",\n\tNyiakengPuachueHmong = \"Hmnp\",\n\tWancho = \"Wcho\",\n\tYezidi = \"Yezi\",\n\tChorasmian = \"Chrs\",\n\tDivesAkuru = \"Diak\",\n\tKhitanSmallScript = \"Kits\",\n\tVithkuqi = \"Vith\",\n\tOldUyghur = \"Ougr\",\n\tCypro_Minoan = \"Cpmn\",\n\tTangsa = \"Tnsa\",\n\tToto = \"Toto\",\n\tKawi = \"Kawi\",\n\tNagMundari = \"Nagm\",\n}\n\n/**\n * Script range entry\n */\ninterface ScriptRange {\n\tstart: number;\n\tend: number;\n\tscript: Script;\n}\n\n/**\n * Script ranges (sorted by start codepoint)\n */\nconst SCRIPT_RANGES: ScriptRange[] = [\n\t// Basic Latin\n\t{ start: 0x0000, end: 0x007f, script: Script.Common },\n\t// Latin-1 Supplement\n\t{ start: 0x0080, end: 0x00ff, script: Script.Latin },\n\t// Latin Extended-A\n\t{ start: 0x0100, end: 0x017f, script: Script.Latin },\n\t// Latin Extended-B\n\t{ start: 0x0180, end: 0x024f, script: Script.Latin },\n\t// IPA Extensions\n\t{ start: 0x0250, end: 0x02af, script: Script.Latin },\n\t// Spacing Modifier Letters\n\t{ start: 0x02b0, end: 0x02ff, script: Script.Common },\n\t// Combining Diacritical Marks\n\t{ start: 0x0300, end: 0x036f, script: Script.Inherited },\n\t// Greek and Coptic\n\t{ start: 0x0370, end: 0x03ff, script: Script.Greek },\n\t// Cyrillic\n\t{ start: 0x0400, end: 0x04ff, script: Script.Cyrillic },\n\t// Cyrillic Supplement\n\t{ start: 0x0500, end: 0x052f, script: Script.Cyrillic },\n\t// Armenian\n\t{ start: 0x0530, end: 0x058f, script: Script.Armenian },\n\t// Hebrew\n\t{ start: 0x0590, end: 0x05ff, script: Script.Hebrew },\n\t// Arabic\n\t{ start: 0x0600, end: 0x06ff, script: Script.Arabic },\n\t// Syriac\n\t{ start: 0x0700, end: 0x074f, script: Script.Syriac },\n\t// Arabic Supplement\n\t{ start: 0x0750, end: 0x077f, script: Script.Arabic },\n\t// Thaana\n\t{ start: 0x0780, end: 0x07bf, script: Script.Thaana },\n\t// NKo\n\t{ start: 0x07c0, end: 0x07ff, script: Script.Nko },\n\t// Samaritan\n\t{ start: 0x0800, end: 0x083f, script: Script.Samaritan },\n\t// Mandaic\n\t{ start: 0x0840, end: 0x085f, script: Script.Mandaic },\n\t// Syriac Supplement\n\t{ start: 0x0860, end: 0x086f, script: Script.Syriac },\n\t// Arabic Extended-B\n\t{ start: 0x0870, end: 0x089f, script: Script.Arabic },\n\t// Arabic Extended-A\n\t{ start: 0x08a0, end: 0x08ff, script: Script.Arabic },\n\t// Devanagari\n\t{ start: 0x0900, end: 0x097f, script: Script.Devanagari },\n\t// Bengali\n\t{ start: 0x0980, end: 0x09ff, script: Script.Bengali },\n\t// Gurmukhi\n\t{ start: 0x0a00, end: 0x0a7f, script: Script.Gurmukhi },\n\t// Gujarati\n\t{ start: 0x0a80, end: 0x0aff, script: Script.Gujarati },\n\t// Oriya\n\t{ start: 0x0b00, end: 0x0b7f, script: Script.Oriya },\n\t// Tamil\n\t{ start: 0x0b80, end: 0x0bff, script: Script.Tamil },\n\t// Telugu\n\t{ start: 0x0c00, end: 0x0c7f, script: Script.Telugu },\n\t// Kannada\n\t{ start: 0x0c80, end: 0x0cff, script: Script.Kannada },\n\t// Malayalam\n\t{ start: 0x0d00, end: 0x0d7f, script: Script.Malayalam },\n\t// Sinhala\n\t{ start: 0x0d80, end: 0x0dff, script: Script.Sinhala },\n\t// Thai\n\t{ start: 0x0e00, end: 0x0e7f, script: Script.Thai },\n\t// Lao\n\t{ start: 0x0e80, end: 0x0eff, script: Script.Lao },\n\t// Tibetan\n\t{ start: 0x0f00, end: 0x0fff, script: Script.Tibetan },\n\t// Myanmar\n\t{ start: 0x1000, end: 0x109f, script: Script.Myanmar },\n\t// Georgian\n\t{ start: 0x10a0, end: 0x10ff, script: Script.Georgian },\n\t// Hangul Jamo\n\t{ start: 0x1100, end: 0x11ff, script: Script.Hangul },\n\t// Ethiopic\n\t{ start: 0x1200, end: 0x137f, script: Script.Ethiopic },\n\t// Ethiopic Supplement\n\t{ start: 0x1380, end: 0x139f, script: Script.Ethiopic },\n\t// Cherokee\n\t{ start: 0x13a0, end: 0x13ff, script: Script.Cherokee },\n\t// Unified Canadian Aboriginal Syllabics\n\t{ start: 0x1400, end: 0x167f, script: Script.CanadianAboriginal },\n\t// Ogham\n\t{ start: 0x1680, end: 0x169f, script: Script.Ogham },\n\t// Runic\n\t{ start: 0x16a0, end: 0x16ff, script: Script.Runic },\n\t// Tagalog\n\t{ start: 0x1700, end: 0x171f, script: Script.Tagalog },\n\t// Hanunoo\n\t{ start: 0x1720, end: 0x173f, script: Script.Hanunoo },\n\t// Buhid\n\t{ start: 0x1740, end: 0x175f, script: Script.Buhid },\n\t// Tagbanwa\n\t{ start: 0x1760, end: 0x177f, script: Script.Tagbanwa },\n\t// Khmer\n\t{ start: 0x1780, end: 0x17ff, script: Script.Khmer },\n\t// Mongolian\n\t{ start: 0x1800, end: 0x18af, script: Script.Mongolian },\n\t// Unified Canadian Aboriginal Syllabics Extended\n\t{ start: 0x18b0, end: 0x18ff, script: Script.CanadianAboriginal },\n\t// Limbu\n\t{ start: 0x1900, end: 0x194f, script: Script.Limbu },\n\t// Tai Le\n\t{ start: 0x1950, end: 0x197f, script: Script.TaiLe },\n\t// New Tai Lue\n\t{ start: 0x1980, end: 0x19df, script: Script.NewTaiLue },\n\t// Khmer Symbols\n\t{ start: 0x19e0, end: 0x19ff, script: Script.Khmer },\n\t// Buginese\n\t{ start: 0x1a00, end: 0x1a1f, script: Script.Buginese },\n\t// Tai Tham\n\t{ start: 0x1a20, end: 0x1aaf, script: Script.TaiTham },\n\t// Combining Diacritical Marks Extended\n\t{ start: 0x1ab0, end: 0x1aff, script: Script.Inherited },\n\t// Balinese\n\t{ start: 0x1b00, end: 0x1b7f, script: Script.Balinese },\n\t// Sundanese\n\t{ start: 0x1b80, end: 0x1bbf, script: Script.Sundanese },\n\t// Batak\n\t{ start: 0x1bc0, end: 0x1bff, script: Script.Batak },\n\t// Lepcha\n\t{ start: 0x1c00, end: 0x1c4f, script: Script.Lepcha },\n\t// Ol Chiki\n\t{ start: 0x1c50, end: 0x1c7f, script: Script.OlChiki },\n\t// Cyrillic Extended-C\n\t{ start: 0x1c80, end: 0x1c8f, script: Script.Cyrillic },\n\t// Georgian Extended\n\t{ start: 0x1c90, end: 0x1cbf, script: Script.Georgian },\n\t// Sundanese Supplement\n\t{ start: 0x1cc0, end: 0x1ccf, script: Script.Sundanese },\n\t// Vedic Extensions\n\t{ start: 0x1cd0, end: 0x1cff, script: Script.Inherited },\n\t// Phonetic Extensions\n\t{ start: 0x1d00, end: 0x1d7f, script: Script.Latin },\n\t// Phonetic Extensions Supplement\n\t{ start: 0x1d80, end: 0x1dbf, script: Script.Latin },\n\t// Combining Diacritical Marks Supplement\n\t{ start: 0x1dc0, end: 0x1dff, script: Script.Inherited },\n\t// Latin Extended Additional\n\t{ start: 0x1e00, end: 0x1eff, script: Script.Latin },\n\t// Greek Extended\n\t{ start: 0x1f00, end: 0x1fff, script: Script.Greek },\n\t// General Punctuation\n\t{ start: 0x2000, end: 0x206f, script: Script.Common },\n\t// Superscripts and Subscripts\n\t{ start: 0x2070, end: 0x209f, script: Script.Common },\n\t// Currency Symbols\n\t{ start: 0x20a0, end: 0x20cf, script: Script.Common },\n\t// Combining Diacritical Marks for Symbols\n\t{ start: 0x20d0, end: 0x20ff, script: Script.Inherited },\n\t// Letterlike Symbols\n\t{ start: 0x2100, end: 0x214f, script: Script.Common },\n\t// Number Forms\n\t{ start: 0x2150, end: 0x218f, script: Script.Common },\n\t// Arrows\n\t{ start: 0x2190, end: 0x21ff, script: Script.Common },\n\t// Mathematical Operators\n\t{ start: 0x2200, end: 0x22ff, script: Script.Common },\n\t// Miscellaneous Technical\n\t{ start: 0x2300, end: 0x23ff, script: Script.Common },\n\t// Control Pictures\n\t{ start: 0x2400, end: 0x243f, script: Script.Common },\n\t// OCR\n\t{ start: 0x2440, end: 0x245f, script: Script.Common },\n\t// Enclosed Alphanumerics\n\t{ start: 0x2460, end: 0x24ff, script: Script.Common },\n\t// Box Drawing\n\t{ start: 0x2500, end: 0x257f, script: Script.Common },\n\t// Block Elements\n\t{ start: 0x2580, end: 0x259f, script: Script.Common },\n\t// Geometric Shapes\n\t{ start: 0x25a0, end: 0x25ff, script: Script.Common },\n\t// Miscellaneous Symbols\n\t{ start: 0x2600, end: 0x26ff, script: Script.Common },\n\t// Dingbats\n\t{ start: 0x2700, end: 0x27bf, script: Script.Common },\n\t// Miscellaneous Mathematical Symbols-A\n\t{ start: 0x27c0, end: 0x27ef, script: Script.Common },\n\t// Supplemental Arrows-A\n\t{ start: 0x27f0, end: 0x27ff, script: Script.Common },\n\t// Braille Patterns\n\t{ start: 0x2800, end: 0x28ff, script: Script.Braille },\n\t// Supplemental Arrows-B\n\t{ start: 0x2900, end: 0x297f, script: Script.Common },\n\t// Miscellaneous Mathematical Symbols-B\n\t{ start: 0x2980, end: 0x29ff, script: Script.Common },\n\t// Supplemental Mathematical Operators\n\t{ start: 0x2a00, end: 0x2aff, script: Script.Common },\n\t// Miscellaneous Symbols and Arrows\n\t{ start: 0x2b00, end: 0x2bff, script: Script.Common },\n\t// Glagolitic\n\t{ start: 0x2c00, end: 0x2c5f, script: Script.Glagolitic },\n\t// Latin Extended-C\n\t{ start: 0x2c60, end: 0x2c7f, script: Script.Latin },\n\t// Coptic\n\t{ start: 0x2c80, end: 0x2cff, script: Script.Coptic },\n\t// Georgian Supplement\n\t{ start: 0x2d00, end: 0x2d2f, script: Script.Georgian },\n\t// Tifinagh\n\t{ start: 0x2d30, end: 0x2d7f, script: Script.Tifinagh },\n\t// Ethiopic Extended\n\t{ start: 0x2d80, end: 0x2ddf, script: Script.Ethiopic },\n\t// Cyrillic Extended-A\n\t{ start: 0x2de0, end: 0x2dff, script: Script.Cyrillic },\n\t// Supplemental Punctuation\n\t{ start: 0x2e00, end: 0x2e7f, script: Script.Common },\n\t// CJK Radicals Supplement\n\t{ start: 0x2e80, end: 0x2eff, script: Script.Han },\n\t// Kangxi Radicals\n\t{ start: 0x2f00, end: 0x2fdf, script: Script.Han },\n\t// Ideographic Description Characters\n\t{ start: 0x2ff0, end: 0x2fff, script: Script.Common },\n\t// CJK Symbols and Punctuation\n\t{ start: 0x3000, end: 0x303f, script: Script.Common },\n\t// Hiragana\n\t{ start: 0x3040, end: 0x309f, script: Script.Hiragana },\n\t// Katakana\n\t{ start: 0x30a0, end: 0x30ff, script: Script.Katakana },\n\t// Bopomofo\n\t{ start: 0x3100, end: 0x312f, script: Script.Bopomofo },\n\t// Hangul Compatibility Jamo\n\t{ start: 0x3130, end: 0x318f, script: Script.Hangul },\n\t// Kanbun\n\t{ start: 0x3190, end: 0x319f, script: Script.Common },\n\t// Bopomofo Extended\n\t{ start: 0x31a0, end: 0x31bf, script: Script.Bopomofo },\n\t// CJK Strokes\n\t{ start: 0x31c0, end: 0x31ef, script: Script.Common },\n\t// Katakana Phonetic Extensions\n\t{ start: 0x31f0, end: 0x31ff, script: Script.Katakana },\n\t// Enclosed CJK Letters and Months\n\t{ start: 0x3200, end: 0x32ff, script: Script.Common },\n\t// CJK Compatibility\n\t{ start: 0x3300, end: 0x33ff, script: Script.Common },\n\t// CJK Unified Ideographs Extension A\n\t{ start: 0x3400, end: 0x4dbf, script: Script.Han },\n\t// Yijing Hexagram Symbols\n\t{ start: 0x4dc0, end: 0x4dff, script: Script.Common },\n\t// CJK Unified Ideographs\n\t{ start: 0x4e00, end: 0x9fff, script: Script.Han },\n\t// Yi Syllables\n\t{ start: 0xa000, end: 0xa48f, script: Script.Yi },\n\t// Yi Radicals\n\t{ start: 0xa490, end: 0xa4cf, script: Script.Yi },\n\t// Lisu\n\t{ start: 0xa4d0, end: 0xa4ff, script: Script.Lisu },\n\t// Vai\n\t{ start: 0xa500, end: 0xa63f, script: Script.Vai },\n\t// Cyrillic Extended-B\n\t{ start: 0xa640, end: 0xa69f, script: Script.Cyrillic },\n\t// Bamum\n\t{ start: 0xa6a0, end: 0xa6ff, script: Script.Bamum },\n\t// Modifier Tone Letters\n\t{ start: 0xa700, end: 0xa71f, script: Script.Common },\n\t// Latin Extended-D\n\t{ start: 0xa720, end: 0xa7ff, script: Script.Latin },\n\t// Syloti Nagri\n\t{ start: 0xa800, end: 0xa82f, script: Script.SylotiNagri },\n\t// Common Indic Number Forms\n\t{ start: 0xa830, end: 0xa83f, script: Script.Common },\n\t// Phags-pa\n\t{ start: 0xa840, end: 0xa87f, script: Script.PhagsPa },\n\t// Saurashtra\n\t{ start: 0xa880, end: 0xa8df, script: Script.Saurashtra },\n\t// Devanagari Extended\n\t{ start: 0xa8e0, end: 0xa8ff, script: Script.Devanagari },\n\t// Kayah Li\n\t{ start: 0xa900, end: 0xa92f, script: Script.KayahLi },\n\t// Rejang\n\t{ start: 0xa930, end: 0xa95f, script: Script.Rejang },\n\t// Hangul Jamo Extended-A\n\t{ start: 0xa960, end: 0xa97f, script: Script.Hangul },\n\t// Javanese\n\t{ start: 0xa980, end: 0xa9df, script: Script.Javanese },\n\t// Myanmar Extended-B\n\t{ start: 0xa9e0, end: 0xa9ff, script: Script.Myanmar },\n\t// Cham\n\t{ start: 0xaa00, end: 0xaa5f, script: Script.Cham },\n\t// Myanmar Extended-A\n\t{ start: 0xaa60, end: 0xaa7f, script: Script.Myanmar },\n\t// Tai Viet\n\t{ start: 0xaa80, end: 0xaadf, script: Script.TaiViet },\n\t// Meetei Mayek Extensions\n\t{ start: 0xaae0, end: 0xaaff, script: Script.MeeteiMayek },\n\t// Ethiopic Extended-A\n\t{ start: 0xab00, end: 0xab2f, script: Script.Ethiopic },\n\t// Latin Extended-E\n\t{ start: 0xab30, end: 0xab6f, script: Script.Latin },\n\t// Cherokee Supplement\n\t{ start: 0xab70, end: 0xabbf, script: Script.Cherokee },\n\t// Meetei Mayek\n\t{ start: 0xabc0, end: 0xabff, script: Script.MeeteiMayek },\n\t// Hangul Syllables\n\t{ start: 0xac00, end: 0xd7af, script: Script.Hangul },\n\t// Hangul Jamo Extended-B\n\t{ start: 0xd7b0, end: 0xd7ff, script: Script.Hangul },\n\t// High Surrogates, Low Surrogates\n\t{ start: 0xd800, end: 0xdfff, script: Script.Unknown },\n\t// Private Use Area\n\t{ start: 0xe000, end: 0xf8ff, script: Script.Unknown },\n\t// CJK Compatibility Ideographs\n\t{ start: 0xf900, end: 0xfaff, script: Script.Han },\n\t// Alphabetic Presentation Forms\n\t{ start: 0xfb00, end: 0xfb4f, script: Script.Latin },\n\t// Arabic Presentation Forms-A\n\t{ start: 0xfb50, end: 0xfdff, script: Script.Arabic },\n\t// Variation Selectors\n\t{ start: 0xfe00, end: 0xfe0f, script: Script.Inherited },\n\t// Vertical Forms\n\t{ start: 0xfe10, end: 0xfe1f, script: Script.Common },\n\t// Combining Half Marks\n\t{ start: 0xfe20, end: 0xfe2f, script: Script.Inherited },\n\t// CJK Compatibility Forms\n\t{ start: 0xfe30, end: 0xfe4f, script: Script.Common },\n\t// Small Form Variants\n\t{ start: 0xfe50, end: 0xfe6f, script: Script.Common },\n\t// Arabic Presentation Forms-B\n\t{ start: 0xfe70, end: 0xfeff, script: Script.Arabic },\n\t// Halfwidth and Fullwidth Forms\n\t{ start: 0xff00, end: 0xffef, script: Script.Common },\n\t// Specials\n\t{ start: 0xfff0, end: 0xffff, script: Script.Common },\n\t// Linear B Syllabary\n\t{ start: 0x10000, end: 0x1007f, script: Script.LinearB },\n\t// Linear B Ideograms\n\t{ start: 0x10080, end: 0x100ff, script: Script.LinearB },\n\t// Aegean Numbers\n\t{ start: 0x10100, end: 0x1013f, script: Script.Common },\n\t// Ancient Greek Numbers\n\t{ start: 0x10140, end: 0x1018f, script: Script.Greek },\n\t// Ancient Symbols\n\t{ start: 0x10190, end: 0x101cf, script: Script.Common },\n\t// Phaistos Disc\n\t{ start: 0x101d0, end: 0x101ff, script: Script.Common },\n\t// Lycian\n\t{ start: 0x10280, end: 0x1029f, script: Script.Lycian },\n\t// Carian\n\t{ start: 0x102a0, end: 0x102df, script: Script.Carian },\n\t// Coptic Epact Numbers\n\t{ start: 0x102e0, end: 0x102ff, script: Script.Inherited },\n\t// Old Italic\n\t{ start: 0x10300, end: 0x1032f, script: Script.OldItalic },\n\t// Gothic\n\t{ start: 0x10330, end: 0x1034f, script: Script.Gothic },\n\t// Old Permic\n\t{ start: 0x10350, end: 0x1037f, script: Script.OldPermic },\n\t// Ugaritic\n\t{ start: 0x10380, end: 0x1039f, script: Script.Ugaritic },\n\t// Old Persian\n\t{ start: 0x103a0, end: 0x103df, script: Script.OldPersian },\n\t// Deseret\n\t{ start: 0x10400, end: 0x1044f, script: Script.Deseret },\n\t// Shavian\n\t{ start: 0x10450, end: 0x1047f, script: Script.Shavian },\n\t// Osmanya\n\t{ start: 0x10480, end: 0x104af, script: Script.Osmanya },\n\t// Osage\n\t{ start: 0x104b0, end: 0x104ff, script: Script.Osage },\n\t// Elbasan\n\t{ start: 0x10500, end: 0x1052f, script: Script.Elbasan },\n\t// Caucasian Albanian\n\t{ start: 0x10530, end: 0x1056f, script: Script.CaucasianAlbanian },\n\t// Vithkuqi\n\t{ start: 0x10570, end: 0x105bf, script: Script.Vithkuqi },\n\t// Linear A\n\t{ start: 0x10600, end: 0x1077f, script: Script.LinearA },\n\t// Latin Extended-F\n\t{ start: 0x10780, end: 0x107bf, script: Script.Latin },\n\t// Cypriot Syllabary\n\t{ start: 0x10800, end: 0x1083f, script: Script.Cypriot },\n\t// Imperial Aramaic\n\t{ start: 0x10840, end: 0x1085f, script: Script.ImperialAramaic },\n\t// Palmyrene\n\t{ start: 0x10860, end: 0x1087f, script: Script.Palmyrene },\n\t// Nabataean\n\t{ start: 0x10880, end: 0x108af, script: Script.Nabataean },\n\t// Hatran\n\t{ start: 0x108e0, end: 0x108ff, script: Script.Hatran },\n\t// Phoenician\n\t{ start: 0x10900, end: 0x1091f, script: Script.Phoenician },\n\t// Lydian\n\t{ start: 0x10920, end: 0x1093f, script: Script.Lydian },\n\t// Meroitic Hieroglyphs\n\t{ start: 0x10980, end: 0x1099f, script: Script.MeroiticHieroglyphs },\n\t// Meroitic Cursive\n\t{ start: 0x109a0, end: 0x109ff, script: Script.MeroiticCursive },\n\t// Kharoshthi\n\t{ start: 0x10a00, end: 0x10a5f, script: Script.Kharoshthi },\n\t// Old South Arabian\n\t{ start: 0x10a60, end: 0x10a7f, script: Script.OldSouthArabian },\n\t// Old North Arabian\n\t{ start: 0x10a80, end: 0x10a9f, script: Script.OldNorthArabian },\n\t// Manichaean\n\t{ start: 0x10ac0, end: 0x10aff, script: Script.Manichaean },\n\t// Avestan\n\t{ start: 0x10b00, end: 0x10b3f, script: Script.Avestan },\n\t// Inscriptional Parthian\n\t{ start: 0x10b40, end: 0x10b5f, script: Script.InscriptionalParthian },\n\t// Inscriptional Pahlavi\n\t{ start: 0x10b60, end: 0x10b7f, script: Script.InscriptionalPahlavi },\n\t// Psalter Pahlavi\n\t{ start: 0x10b80, end: 0x10baf, script: Script.PsalterPahlavi },\n\t// Old Turkic\n\t{ start: 0x10c00, end: 0x10c4f, script: Script.OldTurkic },\n\t// Old Hungarian\n\t{ start: 0x10c80, end: 0x10cff, script: Script.OldHungarian },\n\t// Hanifi Rohingya\n\t{ start: 0x10d00, end: 0x10d3f, script: Script.HanifiRohingya },\n\t// Yezidi\n\t{ start: 0x10e80, end: 0x10ebf, script: Script.Yezidi },\n\t// Old Sogdian\n\t{ start: 0x10f00, end: 0x10f2f, script: Script.OldSogdian },\n\t// Sogdian\n\t{ start: 0x10f30, end: 0x10f6f, script: Script.Sogdian },\n\t// Old Uyghur\n\t{ start: 0x10f70, end: 0x10faf, script: Script.OldUyghur },\n\t// Chorasmian\n\t{ start: 0x10fb0, end: 0x10fdf, script: Script.Chorasmian },\n\t// Elymaic\n\t{ start: 0x10fe0, end: 0x10fff, script: Script.Elymaic },\n\t// Brahmi\n\t{ start: 0x11000, end: 0x1107f, script: Script.Brahmi },\n\t// Kaithi\n\t{ start: 0x11080, end: 0x110cf, script: Script.Kaithi },\n\t// Sora Sompeng\n\t{ start: 0x110d0, end: 0x110ff, script: Script.SoraSompeng },\n\t// Chakma\n\t{ start: 0x11100, end: 0x1114f, script: Script.Chakma },\n\t// Mahajani\n\t{ start: 0x11150, end: 0x1117f, script: Script.Mahajani },\n\t// Sharada\n\t{ start: 0x11180, end: 0x111df, script: Script.Sharada },\n\t// Sinhala Archaic Numbers\n\t{ start: 0x111e0, end: 0x111ff, script: Script.Sinhala },\n\t// Khojki\n\t{ start: 0x11200, end: 0x1124f, script: Script.Khojki },\n\t// Multani\n\t{ start: 0x11280, end: 0x112af, script: Script.Multani },\n\t// Khudawadi\n\t{ start: 0x112b0, end: 0x112ff, script: Script.Khudawadi },\n\t// Grantha\n\t{ start: 0x11300, end: 0x1137f, script: Script.Grantha },\n\t// Newa\n\t{ start: 0x11400, end: 0x1147f, script: Script.Newa },\n\t// Tirhuta\n\t{ start: 0x11480, end: 0x114df, script: Script.Tirhuta },\n\t// Siddham\n\t{ start: 0x11580, end: 0x115ff, script: Script.Siddham },\n\t// Modi\n\t{ start: 0x11600, end: 0x1165f, script: Script.Modi },\n\t// Mongolian Supplement\n\t{ start: 0x11660, end: 0x1167f, script: Script.Mongolian },\n\t// Takri\n\t{ start: 0x11680, end: 0x116cf, script: Script.Takri },\n\t// Ahom\n\t{ start: 0x11700, end: 0x1174f, script: Script.Ahom },\n\t// Dogra\n\t{ start: 0x11800, end: 0x1184f, script: Script.Dogra },\n\t// Warang Citi\n\t{ start: 0x118a0, end: 0x118ff, script: Script.WarangCiti },\n\t// Dives Akuru\n\t{ start: 0x11900, end: 0x1195f, script: Script.DivesAkuru },\n\t// Nandinagari\n\t{ start: 0x119a0, end: 0x119ff, script: Script.Nandinagari },\n\t// Zanabazar Square\n\t{ start: 0x11a00, end: 0x11a4f, script: Script.ZanabazarSquare },\n\t// Soyombo\n\t{ start: 0x11a50, end: 0x11aaf, script: Script.Soyombo },\n\t// UCAS Extended-A\n\t{ start: 0x11ab0, end: 0x11abf, script: Script.CanadianAboriginal },\n\t// Pau Cin Hau\n\t{ start: 0x11ac0, end: 0x11aff, script: Script.PauCinHau },\n\t// Bhaiksuki\n\t{ start: 0x11c00, end: 0x11c6f, script: Script.Bhaiksuki },\n\t// Marchen\n\t{ start: 0x11c70, end: 0x11cbf, script: Script.Marchen },\n\t// Masaram Gondi\n\t{ start: 0x11d00, end: 0x11d5f, script: Script.MasaramGondi },\n\t// Gunjala Gondi\n\t{ start: 0x11d60, end: 0x11daf, script: Script.GunjalaGondi },\n\t// Makasar\n\t{ start: 0x11ee0, end: 0x11eff, script: Script.Makasar },\n\t// Kawi\n\t{ start: 0x11f00, end: 0x11f5f, script: Script.Kawi },\n\t// Cuneiform\n\t{ start: 0x12000, end: 0x123ff, script: Script.Cuneiform },\n\t// Cuneiform Numbers and Punctuation\n\t{ start: 0x12400, end: 0x1247f, script: Script.Cuneiform },\n\t// Early Dynastic Cuneiform\n\t{ start: 0x12480, end: 0x1254f, script: Script.Cuneiform },\n\t// Cypro-Minoan\n\t{ start: 0x12f90, end: 0x12fff, script: Script.Cypro_Minoan },\n\t// Egyptian Hieroglyphs\n\t{ start: 0x13000, end: 0x1342f, script: Script.EgyptianHieroglyphs },\n\t// Egyptian Hieroglyph Format Controls\n\t{ start: 0x13430, end: 0x1345f, script: Script.EgyptianHieroglyphs },\n\t// Anatolian Hieroglyphs\n\t{ start: 0x14400, end: 0x1467f, script: Script.AnatolianHieroglyphs },\n\t// Bamum Supplement\n\t{ start: 0x16800, end: 0x16a3f, script: Script.Bamum },\n\t// Mro\n\t{ start: 0x16a40, end: 0x16a6f, script: Script.Mro },\n\t// Tangsa\n\t{ start: 0x16a70, end: 0x16acf, script: Script.Tangsa },\n\t// Bassa Vah\n\t{ start: 0x16ad0, end: 0x16aff, script: Script.BassaVah },\n\t// Pahawh Hmong\n\t{ start: 0x16b00, end: 0x16b8f, script: Script.PahawhHmong },\n\t// Medefaidrin\n\t{ start: 0x16e40, end: 0x16e9f, script: Script.Medefaidrin },\n\t// Miao\n\t{ start: 0x16f00, end: 0x16f9f, script: Script.Miao },\n\t// Ideographic Symbols and Punctuation\n\t{ start: 0x16fe0, end: 0x16fff, script: Script.Common },\n\t// Tangut\n\t{ start: 0x17000, end: 0x187ff, script: Script.Tangut },\n\t// Tangut Components\n\t{ start: 0x18800, end: 0x18aff, script: Script.Tangut },\n\t// Khitan Small Script\n\t{ start: 0x18b00, end: 0x18cff, script: Script.KhitanSmallScript },\n\t// Tangut Supplement\n\t{ start: 0x18d00, end: 0x18d7f, script: Script.Tangut },\n\t// Kana Extended-B\n\t{ start: 0x1aff0, end: 0x1afff, script: Script.Katakana },\n\t// Kana Supplement\n\t{ start: 0x1b000, end: 0x1b0ff, script: Script.Hiragana },\n\t// Kana Extended-A\n\t{ start: 0x1b100, end: 0x1b12f, script: Script.Hiragana },\n\t// Small Kana Extension\n\t{ start: 0x1b130, end: 0x1b16f, script: Script.Katakana },\n\t// Nushu\n\t{ start: 0x1b170, end: 0x1b2ff, script: Script.Nushu },\n\t// Duployan\n\t{ start: 0x1bc00, end: 0x1bc9f, script: Script.Duployan },\n\t// Shorthand Format Controls\n\t{ start: 0x1bca0, end: 0x1bcaf, script: Script.Common },\n\t// Znamenny Musical Notation\n\t{ start: 0x1cf00, end: 0x1cfcf, script: Script.Common },\n\t// Byzantine Musical Symbols\n\t{ start: 0x1d000, end: 0x1d0ff, script: Script.Common },\n\t// Musical Symbols\n\t{ start: 0x1d100, end: 0x1d1ff, script: Script.Common },\n\t// Ancient Greek Musical Notation\n\t{ start: 0x1d200, end: 0x1d24f, script: Script.Greek },\n\t// Kaktovik Numerals\n\t{ start: 0x1d2c0, end: 0x1d2df, script: Script.Common },\n\t// Mayan Numerals\n\t{ start: 0x1d2e0, end: 0x1d2ff, script: Script.Common },\n\t// Tai Xuan Jing Symbols\n\t{ start: 0x1d300, end: 0x1d35f, script: Script.Common },\n\t// Counting Rod Numerals\n\t{ start: 0x1d360, end: 0x1d37f, script: Script.Common },\n\t// Mathematical Alphanumeric Symbols\n\t{ start: 0x1d400, end: 0x1d7ff, script: Script.Common },\n\t// Sutton SignWriting\n\t{ start: 0x1d800, end: 0x1daaf, script: Script.SignWriting },\n\t// Latin Extended-G\n\t{ start: 0x1df00, end: 0x1dfff, script: Script.Latin },\n\t// Glagolitic Supplement\n\t{ start: 0x1e000, end: 0x1e02f, script: Script.Glagolitic },\n\t// Cyrillic Extended-D\n\t{ start: 0x1e030, end: 0x1e08f, script: Script.Cyrillic },\n\t// Nyiakeng Puachue Hmong\n\t{ start: 0x1e100, end: 0x1e14f, script: Script.NyiakengPuachueHmong },\n\t// Toto\n\t{ start: 0x1e290, end: 0x1e2bf, script: Script.Toto },\n\t// Wancho\n\t{ start: 0x1e2c0, end: 0x1e2ff, script: Script.Wancho },\n\t// Nag Mundari\n\t{ start: 0x1e4d0, end: 0x1e4ff, script: Script.NagMundari },\n\t// Ethiopic Extended-B\n\t{ start: 0x1e7e0, end: 0x1e7ff, script: Script.Ethiopic },\n\t// Mende Kikakui\n\t{ start: 0x1e800, end: 0x1e8df, script: Script.MendeKikakui },\n\t// Adlam\n\t{ start: 0x1e900, end: 0x1e95f, script: Script.Adlam },\n\t// Indic Siyaq Numbers\n\t{ start: 0x1ec70, end: 0x1ecbf, script: Script.Common },\n\t// Ottoman Siyaq Numbers\n\t{ start: 0x1ed00, end: 0x1ed4f, script: Script.Common },\n\t// Arabic Mathematical Alphabetic Symbols\n\t{ start: 0x1ee00, end: 0x1eeff, script: Script.Arabic },\n\t// Mahjong Tiles\n\t{ start: 0x1f000, end: 0x1f02f, script: Script.Common },\n\t// Domino Tiles\n\t{ start: 0x1f030, end: 0x1f09f, script: Script.Common },\n\t// Playing Cards\n\t{ start: 0x1f0a0, end: 0x1f0ff, script: Script.Common },\n\t// Enclosed Alphanumeric Supplement\n\t{ start: 0x1f100, end: 0x1f1ff, script: Script.Common },\n\t// Enclosed Ideographic Supplement\n\t{ start: 0x1f200, end: 0x1f2ff, script: Script.Common },\n\t// Miscellaneous Symbols and Pictographs\n\t{ start: 0x1f300, end: 0x1f5ff, script: Script.Common },\n\t// Emoticons\n\t{ start: 0x1f600, end: 0x1f64f, script: Script.Common },\n\t// Ornamental Dingbats\n\t{ start: 0x1f650, end: 0x1f67f, script: Script.Common },\n\t// Transport and Map Symbols\n\t{ start: 0x1f680, end: 0x1f6ff, script: Script.Common },\n\t// Alchemical Symbols\n\t{ start: 0x1f700, end: 0x1f77f, script: Script.Common },\n\t// Geometric Shapes Extended\n\t{ start: 0x1f780, end: 0x1f7ff, script: Script.Common },\n\t// Supplemental Arrows-C\n\t{ start: 0x1f800, end: 0x1f8ff, script: Script.Common },\n\t// Supplemental Symbols and Pictographs\n\t{ start: 0x1f900, end: 0x1f9ff, script: Script.Common },\n\t// Chess Symbols\n\t{ start: 0x1fa00, end: 0x1fa6f, script: Script.Common },\n\t// Symbols and Pictographs Extended-A\n\t{ start: 0x1fa70, end: 0x1faff, script: Script.Common },\n\t// Symbols for Legacy Computing\n\t{ start: 0x1fb00, end: 0x1fbff, script: Script.Common },\n\t// CJK Unified Ideographs Extension B\n\t{ start: 0x20000, end: 0x2a6df, script: Script.Han },\n\t// CJK Unified Ideographs Extension C\n\t{ start: 0x2a700, end: 0x2b73f, script: Script.Han },\n\t// CJK Unified Ideographs Extension D\n\t{ start: 0x2b740, end: 0x2b81f, script: Script.Han },\n\t// CJK Unified Ideographs Extension E\n\t{ start: 0x2b820, end: 0x2ceaf, script: Script.Han },\n\t// CJK Unified Ideographs Extension F\n\t{ start: 0x2ceb0, end: 0x2ebef, script: Script.Han },\n\t// CJK Compatibility Ideographs Supplement\n\t{ start: 0x2f800, end: 0x2fa1f, script: Script.Han },\n\t// CJK Unified Ideographs Extension G\n\t{ start: 0x30000, end: 0x3134f, script: Script.Han },\n\t// CJK Unified Ideographs Extension H\n\t{ start: 0x31350, end: 0x323af, script: Script.Han },\n\t// Tags\n\t{ start: 0xe0000, end: 0xe007f, script: Script.Common },\n\t// Variation Selectors Supplement\n\t{ start: 0xe0100, end: 0xe01ef, script: Script.Inherited },\n\t// Supplementary Private Use Area-A\n\t{ start: 0xf0000, end: 0xfffff, script: Script.Unknown },\n\t// Supplementary Private Use Area-B\n\t{ start: 0x100000, end: 0x10ffff, script: Script.Unknown },\n];\n\n/**\n * Get script for a codepoint using binary search\n */\nexport function getScript(cp: number): Script {\n\tlet left = 0;\n\tlet right = SCRIPT_RANGES.length - 1;\n\n\twhile (left <= right) {\n\t\tconst mid = (left + right) >>> 1;\n\t\tconst range = SCRIPT_RANGES[mid];\n\n\t\tif (cp < range.start) {\n\t\t\tright = mid - 1;\n\t\t} else if (cp > range.end) {\n\t\t\tleft = mid + 1;\n\t\t} else {\n\t\t\treturn range.script;\n\t\t}\n\t}\n\n\treturn Script.Unknown;\n}\n\n/**\n * Get script for a string (returns the dominant non-Common/Inherited script)\n */\nexport function detectScript(text: string): Script {\n\tconst counts = new Map<Script, number>();\n\n\tfor (const char of text) {\n\t\tconst cp = char.codePointAt(0) ?? 0;\n\t\tconst script = getScript(cp);\n\n\t\t// Skip Common and Inherited scripts\n\t\tif (script === Script.Common || script === Script.Inherited) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcounts.set(script, (counts.get(script) ?? 0) + 1);\n\t}\n\n\tif (counts.size === 0) {\n\t\treturn Script.Common;\n\t}\n\n\t// Return the most frequent script\n\tlet maxScript = Script.Common;\n\tlet maxCount = 0;\n\n\tfor (const [script, count] of counts) {\n\t\tif (count > maxCount) {\n\t\t\tmaxCount = count;\n\t\t\tmaxScript = script;\n\t\t}\n\t}\n\n\treturn maxScript;\n}\n\n/**\n * Get all scripts present in text\n */\nexport function getScripts(text: string): Script[] {\n\tconst scripts = new Set<Script>();\n\n\tfor (const char of text) {\n\t\tconst cp = char.codePointAt(0) ?? 0;\n\t\tconst script = getScript(cp);\n\t\tscripts.add(script);\n\t}\n\n\treturn Array.from(scripts);\n}\n\n/**\n * Check if text contains only characters from a specific script\n * (Common and Inherited are allowed)\n */\nexport function isScript(text: string, script: Script): boolean {\n\tfor (const char of text) {\n\t\tconst cp = char.codePointAt(0) ?? 0;\n\t\tconst charScript = getScript(cp);\n\n\t\tif (\n\t\t\tcharScript !== script &&\n\t\t\tcharScript !== Script.Common &&\n\t\t\tcharScript !== Script.Inherited\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Script run - a contiguous sequence of characters with the same script\n */\nexport interface ScriptRun {\n\tscript: Script;\n\tstart: number;\n\tend: number;\n\ttext: string;\n}\n\n/**\n * Split text into script runs\n */\nexport function getScriptRuns(text: string): ScriptRun[] {\n\tconst runs: ScriptRun[] = [];\n\tif (text.length === 0) return runs;\n\n\tlet currentScript: Script | null = null;\n\tlet runStart = 0;\n\tconst _charIndex = 0;\n\n\tconst chars: string[] = [];\n\tfor (const char of text) {\n\t\tchars.push(char);\n\t}\n\n\tfor (let i = 0; i < chars.length; i++) {\n\t\tconst char = chars[i];\n\t\tconst cp = char.codePointAt(0) ?? 0;\n\t\tlet script = getScript(cp);\n\n\t\t// Treat Common and Inherited as part of the current run\n\t\tif (script === Script.Common || script === Script.Inherited) {\n\t\t\tif (currentScript !== null) {\n\t\t\t\tscript = currentScript;\n\t\t\t}\n\t\t}\n\n\t\tif (currentScript === null) {\n\t\t\tcurrentScript = script;\n\t\t\trunStart = i;\n\t\t} else if (\n\t\t\tscript !== currentScript &&\n\t\t\tscript !== Script.Common &&\n\t\t\tscript !== Script.Inherited\n\t\t) {\n\t\t\t// End current run\n\t\t\truns.push({\n\t\t\t\tscript: currentScript,\n\t\t\t\tstart: runStart,\n\t\t\t\tend: i,\n\t\t\t\ttext: chars.slice(runStart, i).join(\"\"),\n\t\t\t});\n\t\t\tcurrentScript = script;\n\t\t\trunStart = i;\n\t\t}\n\t}\n\n\t// Add final run\n\tif (currentScript !== null) {\n\t\truns.push({\n\t\t\tscript: currentScript,\n\t\t\tstart: runStart,\n\t\t\tend: chars.length,\n\t\t\ttext: chars.slice(runStart).join(\"\"),\n\t\t});\n\t}\n\n\treturn runs;\n}\n\n/**\n * Get OpenType script tag for a Unicode script\n */\nexport function getScriptTag(script: Script): string {\n\t// Map Script enum to OpenType script tags\n\tconst tagMap: Record<Script, string> = {\n\t\t[Script.Common]: \"DFLT\",\n\t\t[Script.Inherited]: \"DFLT\",\n\t\t[Script.Unknown]: \"DFLT\",\n\t\t[Script.Latin]: \"latn\",\n\t\t[Script.Greek]: \"grek\",\n\t\t[Script.Cyrillic]: \"cyrl\",\n\t\t[Script.Armenian]: \"armn\",\n\t\t[Script.Hebrew]: \"hebr\",\n\t\t[Script.Arabic]: \"arab\",\n\t\t[Script.Syriac]: \"syrc\",\n\t\t[Script.Thaana]: \"thaa\",\n\t\t[Script.Devanagari]: \"deva\",\n\t\t[Script.Bengali]: \"beng\",\n\t\t[Script.Gurmukhi]: \"guru\",\n\t\t[Script.Gujarati]: \"gujr\",\n\t\t[Script.Oriya]: \"orya\",\n\t\t[Script.Tamil]: \"taml\",\n\t\t[Script.Telugu]: \"telu\",\n\t\t[Script.Kannada]: \"knda\",\n\t\t[Script.Malayalam]: \"mlym\",\n\t\t[Script.Sinhala]: \"sinh\",\n\t\t[Script.Thai]: \"thai\",\n\t\t[Script.Lao]: \"lao \",\n\t\t[Script.Tibetan]: \"tibt\",\n\t\t[Script.Myanmar]: \"mymr\",\n\t\t[Script.Georgian]: \"geor\",\n\t\t[Script.Hangul]: \"hang\",\n\t\t[Script.Ethiopic]: \"ethi\",\n\t\t[Script.Cherokee]: \"cher\",\n\t\t[Script.CanadianAboriginal]: \"cans\",\n\t\t[Script.Ogham]: \"ogam\",\n\t\t[Script.Runic]: \"runr\",\n\t\t[Script.Khmer]: \"khmr\",\n\t\t[Script.Mongolian]: \"mong\",\n\t\t[Script.Hiragana]: \"kana\",\n\t\t[Script.Katakana]: \"kana\",\n\t\t[Script.Bopomofo]: \"bopo\",\n\t\t[Script.Han]: \"hani\",\n\t\t[Script.Yi]: \"yi \",\n\t\t[Script.OldItalic]: \"ital\",\n\t\t[Script.Gothic]: \"goth\",\n\t\t[Script.Deseret]: \"dsrt\",\n\t\t[Script.Tagalog]: \"tglg\",\n\t\t[Script.Hanunoo]: \"hano\",\n\t\t[Script.Buhid]: \"buhd\",\n\t\t[Script.Tagbanwa]: \"tagb\",\n\t\t[Script.Limbu]: \"limb\",\n\t\t[Script.TaiLe]: \"tale\",\n\t\t[Script.LinearB]: \"linb\",\n\t\t[Script.Ugaritic]: \"ugar\",\n\t\t[Script.Shavian]: \"shaw\",\n\t\t[Script.Osmanya]: \"osma\",\n\t\t[Script.Cypriot]: \"cprt\",\n\t\t[Script.Braille]: \"brai\",\n\t\t[Script.Buginese]: \"bugi\",\n\t\t[Script.Coptic]: \"copt\",\n\t\t[Script.NewTaiLue]: \"talu\",\n\t\t[Script.Glagolitic]: \"glag\",\n\t\t[Script.Tifinagh]: \"tfng\",\n\t\t[Script.SylotiNagri]: \"sylo\",\n\t\t[Script.OldPersian]: \"xpeo\",\n\t\t[Script.Kharoshthi]: \"khar\",\n\t\t[Script.Balinese]: \"bali\",\n\t\t[Script.Cuneiform]: \"xsux\",\n\t\t[Script.Phoenician]: \"phnx\",\n\t\t[Script.PhagsPa]: \"phag\",\n\t\t[Script.Nko]: \"nko \",\n\t\t[Script.Sundanese]: \"sund\",\n\t\t[Script.Lepcha]: \"lepc\",\n\t\t[Script.OlChiki]: \"olck\",\n\t\t[Script.Vai]: \"vai \",\n\t\t[Script.Saurashtra]: \"saur\",\n\t\t[Script.KayahLi]: \"kali\",\n\t\t[Script.Rejang]: \"rjng\",\n\t\t[Script.Lycian]: \"lyci\",\n\t\t[Script.Carian]: \"cari\",\n\t\t[Script.Lydian]: \"lydi\",\n\t\t[Script.Cham]: \"cham\",\n\t\t[Script.TaiTham]: \"lana\",\n\t\t[Script.TaiViet]: \"tavt\",\n\t\t[Script.Avestan]: \"avst\",\n\t\t[Script.EgyptianHieroglyphs]: \"egyp\",\n\t\t[Script.Samaritan]: \"samr\",\n\t\t[Script.Lisu]: \"lisu\",\n\t\t[Script.Bamum]: \"bamu\",\n\t\t[Script.Javanese]: \"java\",\n\t\t[Script.MeeteiMayek]: \"mtei\",\n\t\t[Script.ImperialAramaic]: \"armi\",\n\t\t[Script.OldSouthArabian]: \"sarb\",\n\t\t[Script.InscriptionalParthian]: \"prti\",\n\t\t[Script.InscriptionalPahlavi]: \"phli\",\n\t\t[Script.OldTurkic]: \"orkh\",\n\t\t[Script.Kaithi]: \"kthi\",\n\t\t[Script.Batak]: \"batk\",\n\t\t[Script.Brahmi]: \"brah\",\n\t\t[Script.Mandaic]: \"mand\",\n\t\t[Script.Chakma]: \"cakm\",\n\t\t[Script.MeroiticCursive]: \"merc\",\n\t\t[Script.MeroiticHieroglyphs]: \"mero\",\n\t\t[Script.Miao]: \"plrd\",\n\t\t[Script.Sharada]: \"shrd\",\n\t\t[Script.SoraSompeng]: \"sora\",\n\t\t[Script.Takri]: \"takr\",\n\t\t[Script.CaucasianAlbanian]: \"aghb\",\n\t\t[Script.BassaVah]: \"bass\",\n\t\t[Script.Duployan]: \"dupl\",\n\t\t[Script.Elbasan]: \"elba\",\n\t\t[Script.Grantha]: \"gran\",\n\t\t[Script.PahawhHmong]: \"hmng\",\n\t\t[Script.Khojki]: \"khoj\",\n\t\t[Script.LinearA]: \"lina\",\n\t\t[Script.Mahajani]: \"mahj\",\n\t\t[Script.Manichaean]: \"mani\",\n\t\t[Script.MendeKikakui]: \"mend\",\n\t\t[Script.Modi]: \"modi\",\n\t\t[Script.Mro]: \"mroo\",\n\t\t[Script.OldNorthArabian]: \"narb\",\n\t\t[Script.Nabataean]: \"nbat\",\n\t\t[Script.Palmyrene]: \"palm\",\n\t\t[Script.PauCinHau]: \"pauc\",\n\t\t[Script.OldPermic]: \"perm\",\n\t\t[Script.PsalterPahlavi]: \"phlp\",\n\t\t[Script.Siddham]: \"sidd\",\n\t\t[Script.Khudawadi]: \"sind\",\n\t\t[Script.Tirhuta]: \"tirh\",\n\t\t[Script.WarangCiti]: \"wara\",\n\t\t[Script.Ahom]: \"ahom\",\n\t\t[Script.AnatolianHieroglyphs]: \"hluw\",\n\t\t[Script.Hatran]: \"hatr\",\n\t\t[Script.Multani]: \"mult\",\n\t\t[Script.OldHungarian]: \"hung\",\n\t\t[Script.SignWriting]: \"sgnw\",\n\t\t[Script.Adlam]: \"adlm\",\n\t\t[Script.Bhaiksuki]: \"bhks\",\n\t\t[Script.Marchen]: \"marc\",\n\t\t[Script.Newa]: \"newa\",\n\t\t[Script.Osage]: \"osge\",\n\t\t[Script.Tangut]: \"tang\",\n\t\t[Script.MasaramGondi]: \"gonm\",\n\t\t[Script.Nushu]: \"nshu\",\n\t\t[Script.Soyombo]: \"soyo\",\n\t\t[Script.ZanabazarSquare]: \"zanb\",\n\t\t[Script.Dogra]: \"dogr\",\n\t\t[Script.GunjalaGondi]: \"gong\",\n\t\t[Script.Makasar]: \"maka\",\n\t\t[Script.Medefaidrin]: \"medf\",\n\t\t[Script.HanifiRohingya]: \"rohg\",\n\t\t[Script.Sogdian]: \"sogd\",\n\t\t[Script.OldSogdian]: \"sogo\",\n\t\t[Script.Elymaic]: \"elym\",\n\t\t[Script.Nandinagari]: \"nand\",\n\t\t[Script.NyiakengPuachueHmong]: \"hmnp\",\n\t\t[Script.Wancho]: \"wcho\",\n\t\t[Script.Yezidi]: \"yezi\",\n\t\t[Script.Chorasmian]: \"chrs\",\n\t\t[Script.DivesAkuru]: \"diak\",\n\t\t[Script.KhitanSmallScript]: \"kits\",\n\t\t[Script.Vithkuqi]: \"vith\",\n\t\t[Script.OldUyghur]: \"ougr\",\n\t\t[Script.Cypro_Minoan]: \"cpmn\",\n\t\t[Script.Tangsa]: \"tnsa\",\n\t\t[Script.Toto]: \"toto\",\n\t\t[Script.Kawi]: \"kawi\",\n\t\t[Script.NagMundari]: \"nagm\",\n\t};\n\n\treturn tagMap[script] ?? \"DFLT\";\n}\n\n/**\n * Check if a script requires complex shaping\n */\nexport function isComplexScript(script: Script): boolean {\n\tconst complexScripts = new Set([\n\t\tScript.Arabic,\n\t\tScript.Syriac,\n\t\tScript.Hebrew,\n\t\tScript.Thaana,\n\t\tScript.Nko,\n\t\tScript.Devanagari,\n\t\tScript.Bengali,\n\t\tScript.Gurmukhi,\n\t\tScript.Gujarati,\n\t\tScript.Oriya,\n\t\tScript.Tamil,\n\t\tScript.Telugu,\n\t\tScript.Kannada,\n\t\tScript.Malayalam,\n\t\tScript.Sinhala,\n\t\tScript.Thai,\n\t\tScript.Lao,\n\t\tScript.Tibetan,\n\t\tScript.Myanmar,\n\t\tScript.Khmer,\n\t\tScript.Mongolian,\n\t\tScript.Hangul,\n\t]);\n\n\treturn complexScripts.has(script);\n}\n\n/**\n * Get script direction (LTR or RTL)\n */\nexport function getScriptDirection(script: Script): \"ltr\" | \"rtl\" {\n\tconst rtlScripts = new Set([\n\t\tScript.Arabic,\n\t\tScript.Hebrew,\n\t\tScript.Syriac,\n\t\tScript.Thaana,\n\t\tScript.Nko,\n\t\tScript.Samaritan,\n\t\tScript.Mandaic,\n\t\tScript.ImperialAramaic,\n\t\tScript.Phoenician,\n\t\tScript.OldSouthArabian,\n\t\tScript.OldNorthArabian,\n\t\tScript.Avestan,\n\t\tScript.InscriptionalParthian,\n\t\tScript.InscriptionalPahlavi,\n\t\tScript.PsalterPahlavi,\n\t\tScript.Hatran,\n\t\tScript.Lydian,\n\t\tScript.Nabataean,\n\t\tScript.Palmyrene,\n\t\tScript.Manichaean,\n\t\tScript.MendeKikakui,\n\t\tScript.HanifiRohingya,\n\t\tScript.Yezidi,\n\t\tScript.OldSogdian,\n\t\tScript.Sogdian,\n\t\tScript.Elymaic,\n\t\tScript.Chorasmian,\n\t\tScript.OldUyghur,\n\t\tScript.Adlam,\n\t]);\n\n\treturn rtlScripts.has(script) ? \"rtl\" : \"ltr\";\n}\n",
118
123
  "/**\n * Unicode Text Segmentation (UAX #29)\n * Grapheme cluster and word boundaries\n */\n\nimport type { GlyphInfo } from \"../types.ts\";\n\n/**\n * Grapheme cluster break property\n */\nexport enum GraphemeBreakProperty {\n\tOther = 0,\n\tCR = 1,\n\tLF = 2,\n\tControl = 3,\n\tExtend = 4,\n\tZWJ = 5,\n\tRegional_Indicator = 6,\n\tPrepend = 7,\n\tSpacingMark = 8,\n\tL = 9, // Hangul L\n\tV = 10, // Hangul V\n\tT = 11, // Hangul T\n\tLV = 12, // Hangul LV\n\tLVT = 13, // Hangul LVT\n\tExtended_Pictographic = 14,\n}\n\n/**\n * Word break property\n */\nexport enum WordBreakProperty {\n\tOther = 0,\n\tCR = 1,\n\tLF = 2,\n\tNewline = 3,\n\tExtend = 4,\n\tZWJ = 5,\n\tRegional_Indicator = 6,\n\tFormat = 7,\n\tKatakana = 8,\n\tHebrew_Letter = 9,\n\tALetter = 10,\n\tSingle_Quote = 11,\n\tDouble_Quote = 12,\n\tMidNumLet = 13,\n\tMidLetter = 14,\n\tMidNum = 15,\n\tNumeric = 16,\n\tExtendNumLet = 17,\n\tWSegSpace = 18,\n\tExtended_Pictographic = 19,\n}\n\n/**\n * Get grapheme break property for codepoint\n */\nexport function getGraphemeBreakProperty(cp: number): GraphemeBreakProperty {\n\t// CR, LF\n\tif (cp === 0x000d) return GraphemeBreakProperty.CR;\n\tif (cp === 0x000a) return GraphemeBreakProperty.LF;\n\n\t// Control characters\n\tif (cp >= 0x0000 && cp <= 0x001f && cp !== 0x000a && cp !== 0x000d)\n\t\treturn GraphemeBreakProperty.Control;\n\tif (cp >= 0x007f && cp <= 0x009f) return GraphemeBreakProperty.Control;\n\tif (cp === 0x00ad) return GraphemeBreakProperty.Control; // Soft hyphen\n\tif (cp === 0x061c) return GraphemeBreakProperty.Control; // ALM\n\tif (cp === 0x180e) return GraphemeBreakProperty.Control;\n\tif (cp === 0x200b) return GraphemeBreakProperty.Control; // ZWSP\n\tif (cp >= 0x200e && cp <= 0x200f) return GraphemeBreakProperty.Control; // LRM, RLM\n\tif (cp >= 0x2028 && cp <= 0x202e) return GraphemeBreakProperty.Control;\n\tif (cp >= 0x2060 && cp <= 0x206f) return GraphemeBreakProperty.Control;\n\tif (cp === 0xfeff) return GraphemeBreakProperty.Control; // BOM\n\tif (cp >= 0xfff0 && cp <= 0xfffb) return GraphemeBreakProperty.Control;\n\n\t// ZWJ\n\tif (cp === 0x200d) return GraphemeBreakProperty.ZWJ;\n\n\t// Regional Indicator\n\tif (cp >= 0x1f1e0 && cp <= 0x1f1ff)\n\t\treturn GraphemeBreakProperty.Regional_Indicator;\n\n\t// Prepend\n\tif (\n\t\tcp === 0x0600 ||\n\t\tcp === 0x0601 ||\n\t\tcp === 0x0602 ||\n\t\tcp === 0x0603 ||\n\t\tcp === 0x0604 ||\n\t\tcp === 0x0605 ||\n\t\tcp === 0x06dd ||\n\t\tcp === 0x070f ||\n\t\tcp === 0x0890 ||\n\t\tcp === 0x0891 ||\n\t\tcp === 0x08e2 ||\n\t\tcp === 0x110bd ||\n\t\tcp === 0x110cd\n\t)\n\t\treturn GraphemeBreakProperty.Prepend;\n\n\t// Hangul L (Leading consonants)\n\tif (cp >= 0x1100 && cp <= 0x115f) return GraphemeBreakProperty.L;\n\tif (cp >= 0xa960 && cp <= 0xa97c) return GraphemeBreakProperty.L;\n\n\t// Hangul V (Vowels)\n\tif (cp >= 0x1160 && cp <= 0x11a7) return GraphemeBreakProperty.V;\n\tif (cp >= 0xd7b0 && cp <= 0xd7c6) return GraphemeBreakProperty.V;\n\n\t// Hangul T (Trailing consonants)\n\tif (cp >= 0x11a8 && cp <= 0x11ff) return GraphemeBreakProperty.T;\n\tif (cp >= 0xd7cb && cp <= 0xd7fb) return GraphemeBreakProperty.T;\n\n\t// Hangul syllables\n\tif (cp >= 0xac00 && cp <= 0xd7a3) {\n\t\tconst sIndex = cp - 0xac00;\n\t\tif (sIndex % 28 === 0) return GraphemeBreakProperty.LV;\n\t\treturn GraphemeBreakProperty.LVT;\n\t}\n\n\t// Extended Pictographic (Emoji)\n\tif (cp >= 0x1f300 && cp <= 0x1f9ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1fa00 && cp <= 0x1faff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x2600 && cp <= 0x26ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x2700 && cp <= 0x27bf)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp === 0x00a9 || cp === 0x00ae)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x2300 && cp <= 0x23ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1f000 && cp <= 0x1f02f)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1f0a0 && cp <= 0x1f0ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1f100 && cp <= 0x1f1ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1f200 && cp <= 0x1f2ff)\n\t\treturn GraphemeBreakProperty.Extended_Pictographic;\n\n\t// Spacing Mark\n\tif (cp >= 0x0903 && cp <= 0x0903) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x093b && cp <= 0x093b) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x093e && cp <= 0x0940) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0949 && cp <= 0x094c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x094e && cp <= 0x094f) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0982 && cp <= 0x0983) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x09be && cp <= 0x09c0) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x09c7 && cp <= 0x09cc) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x09d7) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0a03 && cp <= 0x0a03) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0a3e && cp <= 0x0a40) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0a83 && cp <= 0x0a83) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0abe && cp <= 0x0ac0) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0ac9) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0acb && cp <= 0x0acc) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0b02 && cp <= 0x0b03) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0b3e) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0b40) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0b47 && cp <= 0x0b4c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0b57) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0bbe && cp <= 0x0bbf) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0bc1 && cp <= 0x0bcc) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0bd7) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0c01 && cp <= 0x0c03) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0c41 && cp <= 0x0c44) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0c82 && cp <= 0x0c83) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0cbe) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0cc0 && cp <= 0x0cc4) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0cc7 && cp <= 0x0ccb) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0cd5 && cp <= 0x0cd6) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0d02 && cp <= 0x0d03) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0d3e && cp <= 0x0d40) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0d46 && cp <= 0x0d4c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0d57) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0d82 && cp <= 0x0d83) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0dcf && cp <= 0x0dd1) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0dd8 && cp <= 0x0ddf) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x0df2 && cp <= 0x0df3) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0f3e || cp === 0x0f3f) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x0f7f) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x102b && cp <= 0x102c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x1031) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x1038) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x103b && cp <= 0x103c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1056 && cp <= 0x1057) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x1062) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1067 && cp <= 0x1068) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1083 && cp <= 0x1084) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1087 && cp <= 0x108c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp === 0x108f) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x109a && cp <= 0x109c) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x17b6 && cp <= 0x17b6) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x17be && cp <= 0x17c5) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x17c7 && cp <= 0x17c8) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1923 && cp <= 0x1926) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1929 && cp <= 0x192b) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1930 && cp <= 0x1931) return GraphemeBreakProperty.SpacingMark;\n\tif (cp >= 0x1933 && cp <= 0x1938) return GraphemeBreakProperty.SpacingMark;\n\n\t// Extend (combining marks, etc.)\n\tif (cp >= 0x0300 && cp <= 0x036f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0483 && cp <= 0x0489) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0591 && cp <= 0x05bd) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x05bf) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x05c1 && cp <= 0x05c2) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x05c4 && cp <= 0x05c5) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x05c7) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0610 && cp <= 0x061a) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x064b && cp <= 0x065f) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0670) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x06d6 && cp <= 0x06dc) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x06df && cp <= 0x06e4) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x06e7 && cp <= 0x06e8) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x06ea && cp <= 0x06ed) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0711) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0730 && cp <= 0x074a) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x07a6 && cp <= 0x07b0) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x07eb && cp <= 0x07f3) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x07fd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0816 && cp <= 0x0819) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x081b && cp <= 0x0823) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0825 && cp <= 0x0827) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0829 && cp <= 0x082d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0859 && cp <= 0x085b) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x08d3 && cp <= 0x08e1) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x08e3 && cp <= 0x0902) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x093a) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x093c) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0941 && cp <= 0x0948) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x094d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0951 && cp <= 0x0957) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0962 && cp <= 0x0963) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0981) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x09bc) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x09c1 && cp <= 0x09c4) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x09cd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x09e2 && cp <= 0x09e3) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x09fe) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a01 && cp <= 0x0a02) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0a3c) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a41 && cp <= 0x0a42) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a47 && cp <= 0x0a48) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a4b && cp <= 0x0a4d) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0a51) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a70 && cp <= 0x0a71) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0a75) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0a81 && cp <= 0x0a82) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0abc) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ac1 && cp <= 0x0ac5) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ac7 && cp <= 0x0ac8) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0acd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ae2 && cp <= 0x0ae3) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0afa && cp <= 0x0aff) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0b01) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0b3c) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0b3f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0b41 && cp <= 0x0b44) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0b4d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0b55 && cp <= 0x0b56) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0b62 && cp <= 0x0b63) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0b82) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0bc0) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0bcd) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0c00) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0c04) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0c3e && cp <= 0x0c40) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0c46 && cp <= 0x0c48) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0c4a && cp <= 0x0c4d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0c55 && cp <= 0x0c56) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0c62 && cp <= 0x0c63) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0c81) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0cbc) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0cbf) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0cc6) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ccc && cp <= 0x0ccd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ce2 && cp <= 0x0ce3) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0d00 && cp <= 0x0d01) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0d3b && cp <= 0x0d3c) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0d41 && cp <= 0x0d44) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0d4d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0d62 && cp <= 0x0d63) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0d81) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0dca) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0dd2 && cp <= 0x0dd4) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0dd6) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0e31) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0e34 && cp <= 0x0e3a) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0e47 && cp <= 0x0e4e) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0eb1) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0eb4 && cp <= 0x0ebc) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0ec8 && cp <= 0x0ecd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f18 && cp <= 0x0f19) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0f35) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0f37) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0f39) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f71 && cp <= 0x0f7e) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f80 && cp <= 0x0f84) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f86 && cp <= 0x0f87) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f8d && cp <= 0x0f97) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x0f99 && cp <= 0x0fbc) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x0fc6) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x102d && cp <= 0x1030) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1032 && cp <= 0x1037) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1039 && cp <= 0x103a) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x103d && cp <= 0x103e) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1058 && cp <= 0x1059) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x105e && cp <= 0x1060) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1071 && cp <= 0x1074) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1082) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1085 && cp <= 0x1086) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x108d) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x109d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x135d && cp <= 0x135f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1712 && cp <= 0x1714) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1732 && cp <= 0x1734) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1752 && cp <= 0x1753) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1772 && cp <= 0x1773) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x17b4 && cp <= 0x17b5) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x17b7 && cp <= 0x17bd) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x17c6) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x17c9 && cp <= 0x17d3) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x17dd) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x180b && cp <= 0x180d) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x180f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1885 && cp <= 0x1886) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x18a9) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1920 && cp <= 0x1922) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1927 && cp <= 0x1928) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1932) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1939 && cp <= 0x193b) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1a17 && cp <= 0x1a18) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1a1b) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1a56) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1a58 && cp <= 0x1a5e) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1a60) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1a62) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1a65 && cp <= 0x1a6c) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1a73 && cp <= 0x1a7c) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1a7f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1ab0 && cp <= 0x1ace) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1b00 && cp <= 0x1b03) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1b34) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1b36 && cp <= 0x1b3a) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1b3c) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1b42) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1b6b && cp <= 0x1b73) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1b80 && cp <= 0x1b81) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1ba2 && cp <= 0x1ba5) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1ba8 && cp <= 0x1ba9) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1bab && cp <= 0x1bad) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1be6) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1be8 && cp <= 0x1be9) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1bed) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1bef && cp <= 0x1bf1) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1c2c && cp <= 0x1c33) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1c36 && cp <= 0x1c37) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1cd0 && cp <= 0x1cd2) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1cd4 && cp <= 0x1ce0) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1ce2 && cp <= 0x1ce8) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1ced) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x1cf4) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1cf8 && cp <= 0x1cf9) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1dc0 && cp <= 0x1dff) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x20d0 && cp <= 0x20f0) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x2cef && cp <= 0x2cf1) return GraphemeBreakProperty.Extend;\n\tif (cp === 0x2d7f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x2de0 && cp <= 0x2dff) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x302a && cp <= 0x302f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x3099 && cp <= 0x309a) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa66f && cp <= 0xa672) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa674 && cp <= 0xa67d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa69e && cp <= 0xa69f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa6f0 && cp <= 0xa6f1) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa802) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa806) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa80b) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa825 && cp <= 0xa826) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa82c) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa8c4 && cp <= 0xa8c5) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa8e0 && cp <= 0xa8f1) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa8ff) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa926 && cp <= 0xa92d) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa947 && cp <= 0xa951) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa980 && cp <= 0xa982) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa9b3) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa9b6 && cp <= 0xa9b9) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xa9bc && cp <= 0xa9bd) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xa9e5) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaa29 && cp <= 0xaa2e) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaa31 && cp <= 0xaa32) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaa35 && cp <= 0xaa36) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaa43) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaa4c) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaa7c) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaab0) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaab2 && cp <= 0xaab4) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaab7 && cp <= 0xaab8) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaabe && cp <= 0xaabf) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaac1) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xaaec && cp <= 0xaaed) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xaaf6) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xabe5) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xabe8) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xabed) return GraphemeBreakProperty.Extend;\n\tif (cp === 0xfb1e) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xfe00 && cp <= 0xfe0f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0xfe20 && cp <= 0xfe2f) return GraphemeBreakProperty.Extend;\n\tif (cp >= 0x1f3fb && cp <= 0x1f3ff) return GraphemeBreakProperty.Extend; // Emoji modifiers\n\tif (cp >= 0xe0100 && cp <= 0xe01ef) return GraphemeBreakProperty.Extend; // Variation selectors\n\n\treturn GraphemeBreakProperty.Other;\n}\n\n/**\n * Get word break property for codepoint\n */\nexport function getWordBreakProperty(cp: number): WordBreakProperty {\n\t// CR, LF, Newline\n\tif (cp === 0x000d) return WordBreakProperty.CR;\n\tif (cp === 0x000a) return WordBreakProperty.LF;\n\tif (\n\t\tcp === 0x000b ||\n\t\tcp === 0x000c ||\n\t\tcp === 0x0085 ||\n\t\tcp === 0x2028 ||\n\t\tcp === 0x2029\n\t)\n\t\treturn WordBreakProperty.Newline;\n\n\t// ZWJ\n\tif (cp === 0x200d) return WordBreakProperty.ZWJ;\n\n\t// Format characters\n\tif (cp === 0x00ad) return WordBreakProperty.Format;\n\tif (cp === 0x061c) return WordBreakProperty.Format;\n\tif (cp === 0x200b) return WordBreakProperty.Format;\n\tif (cp >= 0x200e && cp <= 0x200f) return WordBreakProperty.Format;\n\tif (cp >= 0x2060 && cp <= 0x206f) return WordBreakProperty.Format;\n\tif (cp === 0xfeff) return WordBreakProperty.Format;\n\n\t// Regional Indicator\n\tif (cp >= 0x1f1e0 && cp <= 0x1f1ff)\n\t\treturn WordBreakProperty.Regional_Indicator;\n\n\t// Extended Pictographic\n\tif (cp >= 0x1f300 && cp <= 0x1f9ff)\n\t\treturn WordBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x1fa00 && cp <= 0x1faff)\n\t\treturn WordBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x2600 && cp <= 0x26ff)\n\t\treturn WordBreakProperty.Extended_Pictographic;\n\tif (cp >= 0x2700 && cp <= 0x27bf)\n\t\treturn WordBreakProperty.Extended_Pictographic;\n\n\t// Hebrew Letter\n\tif (cp >= 0x05d0 && cp <= 0x05ea) return WordBreakProperty.Hebrew_Letter;\n\tif (cp >= 0xfb1d && cp <= 0xfb4f) return WordBreakProperty.Hebrew_Letter;\n\n\t// Katakana\n\tif (cp >= 0x30a0 && cp <= 0x30ff) return WordBreakProperty.Katakana;\n\tif (\n\t\tcp === 0x3031 ||\n\t\tcp === 0x3032 ||\n\t\tcp === 0x3033 ||\n\t\tcp === 0x3034 ||\n\t\tcp === 0x3035\n\t)\n\t\treturn WordBreakProperty.Katakana;\n\tif (cp === 0x309b || cp === 0x309c) return WordBreakProperty.Katakana;\n\tif (cp >= 0x31f0 && cp <= 0x31ff) return WordBreakProperty.Katakana;\n\tif (cp >= 0x32d0 && cp <= 0x32fe) return WordBreakProperty.Katakana;\n\tif (cp >= 0x3300 && cp <= 0x3357) return WordBreakProperty.Katakana;\n\tif (cp >= 0xff66 && cp <= 0xff9d) return WordBreakProperty.Katakana;\n\n\t// Single Quote\n\tif (cp === 0x0027) return WordBreakProperty.Single_Quote;\n\n\t// Double Quote\n\tif (cp === 0x0022) return WordBreakProperty.Double_Quote;\n\n\t// MidNumLet\n\tif (cp === 0x002e) return WordBreakProperty.MidNumLet; // .\n\tif (cp === 0x2018 || cp === 0x2019) return WordBreakProperty.MidNumLet;\n\tif (cp === 0x2024) return WordBreakProperty.MidNumLet;\n\tif (cp === 0xfe52) return WordBreakProperty.MidNumLet;\n\tif (cp === 0xff07) return WordBreakProperty.MidNumLet;\n\tif (cp === 0xff0e) return WordBreakProperty.MidNumLet;\n\n\t// MidLetter\n\tif (cp === 0x003a) return WordBreakProperty.MidLetter; // :\n\tif (cp === 0x00b7) return WordBreakProperty.MidLetter;\n\tif (cp === 0x0387) return WordBreakProperty.MidLetter;\n\tif (cp === 0x05f4) return WordBreakProperty.MidLetter;\n\tif (cp === 0x2027) return WordBreakProperty.MidLetter;\n\tif (cp === 0xfe13) return WordBreakProperty.MidLetter;\n\tif (cp === 0xfe55) return WordBreakProperty.MidLetter;\n\tif (cp === 0xff1a) return WordBreakProperty.MidLetter;\n\n\t// MidNum\n\tif (cp === 0x002c) return WordBreakProperty.MidNum; // ,\n\tif (cp === 0x003b) return WordBreakProperty.MidNum; // ;\n\tif (cp === 0x037e) return WordBreakProperty.MidNum;\n\tif (cp === 0x0589) return WordBreakProperty.MidNum;\n\tif (cp === 0x060c || cp === 0x060d) return WordBreakProperty.MidNum;\n\tif (cp === 0x066c) return WordBreakProperty.MidNum;\n\tif (cp === 0x07f8) return WordBreakProperty.MidNum;\n\tif (cp === 0x2044) return WordBreakProperty.MidNum;\n\tif (cp === 0xfe10) return WordBreakProperty.MidNum;\n\tif (cp === 0xfe14) return WordBreakProperty.MidNum;\n\tif (cp === 0xfe50) return WordBreakProperty.MidNum;\n\tif (cp === 0xfe54) return WordBreakProperty.MidNum;\n\tif (cp === 0xff0c) return WordBreakProperty.MidNum;\n\tif (cp === 0xff1b) return WordBreakProperty.MidNum;\n\n\t// Numeric\n\tif (cp >= 0x0030 && cp <= 0x0039) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0660 && cp <= 0x0669) return WordBreakProperty.Numeric;\n\tif (cp >= 0x06f0 && cp <= 0x06f9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x07c0 && cp <= 0x07c9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0966 && cp <= 0x096f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x09e6 && cp <= 0x09ef) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0a66 && cp <= 0x0a6f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0ae6 && cp <= 0x0aef) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0b66 && cp <= 0x0b6f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0be6 && cp <= 0x0bef) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0c66 && cp <= 0x0c6f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0ce6 && cp <= 0x0cef) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0d66 && cp <= 0x0d6f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0de6 && cp <= 0x0def) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0e50 && cp <= 0x0e59) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0ed0 && cp <= 0x0ed9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x0f20 && cp <= 0x0f29) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1040 && cp <= 0x1049) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1090 && cp <= 0x1099) return WordBreakProperty.Numeric;\n\tif (cp >= 0x17e0 && cp <= 0x17e9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1810 && cp <= 0x1819) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1946 && cp <= 0x194f) return WordBreakProperty.Numeric;\n\tif (cp >= 0x19d0 && cp <= 0x19d9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1a80 && cp <= 0x1a89) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1a90 && cp <= 0x1a99) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1b50 && cp <= 0x1b59) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1bb0 && cp <= 0x1bb9) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1c40 && cp <= 0x1c49) return WordBreakProperty.Numeric;\n\tif (cp >= 0x1c50 && cp <= 0x1c59) return WordBreakProperty.Numeric;\n\tif (cp >= 0xa620 && cp <= 0xa629) return WordBreakProperty.Numeric;\n\tif (cp >= 0xa8d0 && cp <= 0xa8d9) return WordBreakProperty.Numeric;\n\tif (cp >= 0xa900 && cp <= 0xa909) return WordBreakProperty.Numeric;\n\tif (cp >= 0xa9d0 && cp <= 0xa9d9) return WordBreakProperty.Numeric;\n\tif (cp >= 0xa9f0 && cp <= 0xa9f9) return WordBreakProperty.Numeric;\n\tif (cp >= 0xaa50 && cp <= 0xaa59) return WordBreakProperty.Numeric;\n\tif (cp >= 0xabf0 && cp <= 0xabf9) return WordBreakProperty.Numeric;\n\tif (cp >= 0xff10 && cp <= 0xff19) return WordBreakProperty.Numeric;\n\n\t// ExtendNumLet\n\tif (cp === 0x005f) return WordBreakProperty.ExtendNumLet; // _\n\tif (cp === 0x202f) return WordBreakProperty.ExtendNumLet;\n\tif (cp === 0x2040) return WordBreakProperty.ExtendNumLet;\n\tif (cp === 0x2054) return WordBreakProperty.ExtendNumLet;\n\tif (cp === 0xfe33 || cp === 0xfe34) return WordBreakProperty.ExtendNumLet;\n\tif (cp >= 0xfe4d && cp <= 0xfe4f) return WordBreakProperty.ExtendNumLet;\n\tif (cp === 0xff3f) return WordBreakProperty.ExtendNumLet;\n\n\t// WSegSpace\n\tif (cp === 0x0020) return WordBreakProperty.WSegSpace;\n\tif (cp === 0x1680) return WordBreakProperty.WSegSpace;\n\tif (cp >= 0x2000 && cp <= 0x200a && cp !== 0x2007)\n\t\treturn WordBreakProperty.WSegSpace;\n\tif (cp === 0x205f) return WordBreakProperty.WSegSpace;\n\tif (cp === 0x3000) return WordBreakProperty.WSegSpace;\n\n\t// Extend (same as grapheme extend)\n\tconst gbp = getGraphemeBreakProperty(cp);\n\tif (gbp === GraphemeBreakProperty.Extend) return WordBreakProperty.Extend;\n\n\t// ALetter (alphabetic)\n\tif (cp >= 0x0041 && cp <= 0x005a) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0061 && cp <= 0x007a) return WordBreakProperty.ALetter;\n\tif (cp >= 0x00c0 && cp <= 0x00d6) return WordBreakProperty.ALetter;\n\tif (cp >= 0x00d8 && cp <= 0x00f6) return WordBreakProperty.ALetter;\n\tif (cp >= 0x00f8 && cp <= 0x024f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0250 && cp <= 0x02af) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0370 && cp <= 0x03ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0400 && cp <= 0x04ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0500 && cp <= 0x052f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0531 && cp <= 0x0556) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0560 && cp <= 0x0588) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0600 && cp <= 0x06ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0900 && cp <= 0x097f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0980 && cp <= 0x09ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0a00 && cp <= 0x0a7f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0a80 && cp <= 0x0aff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0b00 && cp <= 0x0b7f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0b80 && cp <= 0x0bff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0c00 && cp <= 0x0c7f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0c80 && cp <= 0x0cff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0d00 && cp <= 0x0d7f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0e00 && cp <= 0x0e7f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x0e80 && cp <= 0x0eff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x1000 && cp <= 0x109f) return WordBreakProperty.ALetter;\n\tif (cp >= 0x10a0 && cp <= 0x10ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x1100 && cp <= 0x11ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x1780 && cp <= 0x17ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x3040 && cp <= 0x309f) return WordBreakProperty.ALetter; // Hiragana\n\tif (cp >= 0x1f00 && cp <= 0x1fff) return WordBreakProperty.ALetter;\n\tif (cp >= 0x2c00 && cp <= 0x2c5f) return WordBreakProperty.ALetter;\n\tif (cp >= 0xa000 && cp <= 0xa48f) return WordBreakProperty.ALetter;\n\tif (cp >= 0xa4d0 && cp <= 0xa4ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0xa500 && cp <= 0xa63f) return WordBreakProperty.ALetter;\n\tif (cp >= 0xa640 && cp <= 0xa69f) return WordBreakProperty.ALetter;\n\tif (cp >= 0xa720 && cp <= 0xa7ff) return WordBreakProperty.ALetter;\n\tif (cp >= 0xab00 && cp <= 0xab6f) return WordBreakProperty.ALetter;\n\tif (cp >= 0xac00 && cp <= 0xd7af) return WordBreakProperty.ALetter; // Hangul\n\tif (cp >= 0xfb00 && cp <= 0xfb06) return WordBreakProperty.ALetter;\n\tif (cp >= 0xff21 && cp <= 0xff3a) return WordBreakProperty.ALetter;\n\tif (cp >= 0xff41 && cp <= 0xff5a) return WordBreakProperty.ALetter;\n\n\treturn WordBreakProperty.Other;\n}\n\n/**\n * Grapheme cluster boundary result\n */\nexport interface GraphemeBoundaries {\n\t/** Boundary positions (indices where clusters end) */\n\tboundaries: number[];\n\t/** Grapheme break properties */\n\tproperties: GraphemeBreakProperty[];\n}\n\n/**\n * Find grapheme cluster boundaries in codepoints\n */\nexport function findGraphemeBoundaries(\n\tcodepoints: number[],\n): GraphemeBoundaries {\n\tconst len = codepoints.length;\n\tconst properties: GraphemeBreakProperty[] = [];\n\tconst boundaries: number[] = [];\n\n\tfor (const cp of codepoints) {\n\t\tproperties.push(getGraphemeBreakProperty(cp));\n\t}\n\n\tif (len === 0) return { boundaries, properties };\n\n\t// GB1: Break at the start of text\n\t// (implicitly handled)\n\n\t// Track state for RI pairs\n\tlet riCount = 0;\n\tlet inExtendedPictographicSequence = false;\n\n\tfor (let i = 1; i < len; i++) {\n\t\tconst prev = properties[i - 1];\n\t\tconst curr = properties[i];\n\n\t\tlet shouldBreak = true;\n\n\t\t// GB3: Do not break between a CR and LF\n\t\tif (\n\t\t\tprev === GraphemeBreakProperty.CR &&\n\t\t\tcurr === GraphemeBreakProperty.LF\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB4: Break after controls\n\t\telse if (\n\t\t\tprev === GraphemeBreakProperty.Control ||\n\t\t\tprev === GraphemeBreakProperty.CR ||\n\t\t\tprev === GraphemeBreakProperty.LF\n\t\t) {\n\t\t\tshouldBreak = true;\n\t\t}\n\t\t// GB5: Break before controls\n\t\telse if (\n\t\t\tcurr === GraphemeBreakProperty.Control ||\n\t\t\tcurr === GraphemeBreakProperty.CR ||\n\t\t\tcurr === GraphemeBreakProperty.LF\n\t\t) {\n\t\t\tshouldBreak = true;\n\t\t}\n\t\t// GB6: Do not break Hangul syllable sequences\n\t\telse if (\n\t\t\tprev === GraphemeBreakProperty.L &&\n\t\t\t(curr === GraphemeBreakProperty.L ||\n\t\t\t\tcurr === GraphemeBreakProperty.V ||\n\t\t\t\tcurr === GraphemeBreakProperty.LV ||\n\t\t\t\tcurr === GraphemeBreakProperty.LVT)\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB7\n\t\telse if (\n\t\t\t(prev === GraphemeBreakProperty.LV || prev === GraphemeBreakProperty.V) &&\n\t\t\t(curr === GraphemeBreakProperty.V || curr === GraphemeBreakProperty.T)\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB8\n\t\telse if (\n\t\t\t(prev === GraphemeBreakProperty.LVT ||\n\t\t\t\tprev === GraphemeBreakProperty.T) &&\n\t\t\tcurr === GraphemeBreakProperty.T\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB9: Do not break before extending characters or ZWJ\n\t\telse if (\n\t\t\tcurr === GraphemeBreakProperty.Extend ||\n\t\t\tcurr === GraphemeBreakProperty.ZWJ\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB9a: Do not break before SpacingMarks\n\t\telse if (curr === GraphemeBreakProperty.SpacingMark) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB9b: Do not break after Prepend characters\n\t\telse if (prev === GraphemeBreakProperty.Prepend) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB11: Do not break within emoji modifier sequences or emoji ZWJ sequences\n\t\telse if (\n\t\t\tinExtendedPictographicSequence &&\n\t\t\tprev === GraphemeBreakProperty.ZWJ &&\n\t\t\tcurr === GraphemeBreakProperty.Extended_Pictographic\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// GB12-13: Do not break within emoji flag sequences\n\t\telse if (\n\t\t\tprev === GraphemeBreakProperty.Regional_Indicator &&\n\t\t\tcurr === GraphemeBreakProperty.Regional_Indicator\n\t\t) {\n\t\t\t// Only break after even number of RIs\n\t\t\tif (riCount % 2 === 1) {\n\t\t\t\tshouldBreak = false;\n\t\t\t}\n\t\t}\n\n\t\t// Track extended pictographic state\n\t\tif (curr === GraphemeBreakProperty.Extended_Pictographic) {\n\t\t\tinExtendedPictographicSequence = true;\n\t\t} else if (\n\t\t\tcurr !== GraphemeBreakProperty.Extend &&\n\t\t\tcurr !== GraphemeBreakProperty.ZWJ\n\t\t) {\n\t\t\tinExtendedPictographicSequence = false;\n\t\t}\n\n\t\t// Track RI count\n\t\tif (curr === GraphemeBreakProperty.Regional_Indicator) {\n\t\t\triCount++;\n\t\t} else {\n\t\t\triCount = 0;\n\t\t}\n\n\t\tif (shouldBreak) {\n\t\t\tboundaries.push(i);\n\t\t}\n\t}\n\n\t// GB2: Break at the end of text\n\tboundaries.push(len);\n\n\treturn { boundaries, properties };\n}\n\n/**\n * Word boundary result\n */\nexport interface WordBoundaries {\n\t/** Boundary positions */\n\tboundaries: number[];\n\t/** Word break properties */\n\tproperties: WordBreakProperty[];\n}\n\n/**\n * Find word boundaries in codepoints\n */\nexport function findWordBoundaries(codepoints: number[]): WordBoundaries {\n\tconst len = codepoints.length;\n\tconst properties: WordBreakProperty[] = [];\n\tconst boundaries: number[] = [];\n\n\tfor (const cp of codepoints) {\n\t\tproperties.push(getWordBreakProperty(cp));\n\t}\n\n\tif (len === 0) return { boundaries, properties };\n\n\t// WB1: Break at the start\n\tboundaries.push(0);\n\n\tlet riCount = 0;\n\n\tfor (let i = 1; i < len; i++) {\n\t\tconst prev = properties[i - 1];\n\t\tconst curr = properties[i];\n\n\t\tlet shouldBreak = true;\n\n\t\t// WB3: Do not break within CRLF\n\t\tif (prev === WordBreakProperty.CR && curr === WordBreakProperty.LF) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB3a-b: Break before and after Newlines\n\t\telse if (\n\t\t\tprev === WordBreakProperty.Newline ||\n\t\t\tprev === WordBreakProperty.CR ||\n\t\t\tprev === WordBreakProperty.LF\n\t\t) {\n\t\t\tshouldBreak = true;\n\t\t} else if (\n\t\t\tcurr === WordBreakProperty.Newline ||\n\t\t\tcurr === WordBreakProperty.CR ||\n\t\t\tcurr === WordBreakProperty.LF\n\t\t) {\n\t\t\tshouldBreak = true;\n\t\t}\n\t\t// WB3c: Do not break within emoji ZWJ sequences\n\t\telse if (\n\t\t\tprev === WordBreakProperty.ZWJ &&\n\t\t\tcurr === WordBreakProperty.Extended_Pictographic\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB3d: Keep horizontal whitespace together\n\t\telse if (\n\t\t\tprev === WordBreakProperty.WSegSpace &&\n\t\t\tcurr === WordBreakProperty.WSegSpace\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB4: Ignore Format and Extend characters\n\t\telse if (\n\t\t\tcurr === WordBreakProperty.Format ||\n\t\t\tcurr === WordBreakProperty.Extend ||\n\t\t\tcurr === WordBreakProperty.ZWJ\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB5: Do not break between most letters\n\t\telse if (\n\t\t\t(prev === WordBreakProperty.ALetter ||\n\t\t\t\tprev === WordBreakProperty.Hebrew_Letter) &&\n\t\t\t(curr === WordBreakProperty.ALetter ||\n\t\t\t\tcurr === WordBreakProperty.Hebrew_Letter)\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB6-7: Do not break letters across certain punctuation\n\t\telse if (\n\t\t\t(prev === WordBreakProperty.ALetter ||\n\t\t\t\tprev === WordBreakProperty.Hebrew_Letter) &&\n\t\t\t(curr === WordBreakProperty.MidLetter ||\n\t\t\t\tcurr === WordBreakProperty.MidNumLet ||\n\t\t\t\tcurr === WordBreakProperty.Single_Quote)\n\t\t) {\n\t\t\t// Look ahead\n\t\t\tif (i + 1 < len) {\n\t\t\t\tconst next = properties[i + 1];\n\t\t\t\tif (\n\t\t\t\t\tnext === WordBreakProperty.ALetter ||\n\t\t\t\t\tnext === WordBreakProperty.Hebrew_Letter\n\t\t\t\t) {\n\t\t\t\t\tshouldBreak = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// WB8-10: Do not break within sequences of digits\n\t\telse if (\n\t\t\tprev === WordBreakProperty.Numeric &&\n\t\t\tcurr === WordBreakProperty.Numeric\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t} else if (\n\t\t\t(prev === WordBreakProperty.ALetter ||\n\t\t\t\tprev === WordBreakProperty.Hebrew_Letter) &&\n\t\t\tcurr === WordBreakProperty.Numeric\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t} else if (\n\t\t\tprev === WordBreakProperty.Numeric &&\n\t\t\t(curr === WordBreakProperty.ALetter ||\n\t\t\t\tcurr === WordBreakProperty.Hebrew_Letter)\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB11-12: Do not break within sequences with numeric separators\n\t\telse if (\n\t\t\tprev === WordBreakProperty.Numeric &&\n\t\t\t(curr === WordBreakProperty.MidNum ||\n\t\t\t\tcurr === WordBreakProperty.MidNumLet ||\n\t\t\t\tcurr === WordBreakProperty.Single_Quote)\n\t\t) {\n\t\t\tif (i + 1 < len && properties[i + 1] === WordBreakProperty.Numeric) {\n\t\t\t\tshouldBreak = false;\n\t\t\t}\n\t\t}\n\t\t// WB13: Do not break between Katakana\n\t\telse if (\n\t\t\tprev === WordBreakProperty.Katakana &&\n\t\t\tcurr === WordBreakProperty.Katakana\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB13a-b: ExtendNumLet binding\n\t\telse if (\n\t\t\t(prev === WordBreakProperty.ALetter ||\n\t\t\t\tprev === WordBreakProperty.Hebrew_Letter ||\n\t\t\t\tprev === WordBreakProperty.Numeric ||\n\t\t\t\tprev === WordBreakProperty.Katakana ||\n\t\t\t\tprev === WordBreakProperty.ExtendNumLet) &&\n\t\t\tcurr === WordBreakProperty.ExtendNumLet\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t} else if (\n\t\t\tprev === WordBreakProperty.ExtendNumLet &&\n\t\t\t(curr === WordBreakProperty.ALetter ||\n\t\t\t\tcurr === WordBreakProperty.Hebrew_Letter ||\n\t\t\t\tcurr === WordBreakProperty.Numeric ||\n\t\t\t\tcurr === WordBreakProperty.Katakana)\n\t\t) {\n\t\t\tshouldBreak = false;\n\t\t}\n\t\t// WB15-16: Do not break within emoji flag sequences\n\t\telse if (\n\t\t\tprev === WordBreakProperty.Regional_Indicator &&\n\t\t\tcurr === WordBreakProperty.Regional_Indicator\n\t\t) {\n\t\t\tif (riCount % 2 === 1) {\n\t\t\t\tshouldBreak = false;\n\t\t\t}\n\t\t}\n\n\t\t// Track RI count\n\t\tif (curr === WordBreakProperty.Regional_Indicator) {\n\t\t\triCount++;\n\t\t} else {\n\t\t\triCount = 0;\n\t\t}\n\n\t\tif (shouldBreak) {\n\t\t\tboundaries.push(i);\n\t\t}\n\t}\n\n\t// WB2: Break at the end\n\tboundaries.push(len);\n\n\treturn { boundaries, properties };\n}\n\n/**\n * Split text into grapheme clusters\n */\nexport function splitGraphemes(text: string): string[] {\n\tconst codepoints: number[] = [];\n\tconst chars: string[] = [];\n\n\tfor (const char of text) {\n\t\tcodepoints.push(char.codePointAt(0) ?? 0);\n\t\tchars.push(char);\n\t}\n\n\tconst { boundaries } = findGraphemeBoundaries(codepoints);\n\tconst graphemes: string[] = [];\n\n\tlet start = 0;\n\tfor (const end of boundaries) {\n\t\tif (end > start) {\n\t\t\tgraphemes.push(chars.slice(start, end).join(\"\"));\n\t\t}\n\t\tstart = end;\n\t}\n\n\treturn graphemes;\n}\n\n/**\n * Split text into words\n */\nexport function splitWords(text: string): string[] {\n\tconst codepoints: number[] = [];\n\tconst chars: string[] = [];\n\n\tfor (const char of text) {\n\t\tcodepoints.push(char.codePointAt(0) ?? 0);\n\t\tchars.push(char);\n\t}\n\n\tconst { boundaries, properties } = findWordBoundaries(codepoints);\n\tconst words: string[] = [];\n\n\tfor (let i = 0; i < boundaries.length - 1; i++) {\n\t\tconst start = boundaries[i];\n\t\tconst end = boundaries[i + 1];\n\n\t\t// Skip whitespace-only segments\n\t\tlet hasContent = false;\n\t\tfor (let j = start; j < end; j++) {\n\t\t\tconst prop = properties[j];\n\t\t\tif (\n\t\t\t\tprop !== WordBreakProperty.WSegSpace &&\n\t\t\t\tprop !== WordBreakProperty.CR &&\n\t\t\t\tprop !== WordBreakProperty.LF &&\n\t\t\t\tprop !== WordBreakProperty.Newline\n\t\t\t) {\n\t\t\t\thasContent = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (hasContent) {\n\t\t\twords.push(chars.slice(start, end).join(\"\"));\n\t\t}\n\t}\n\n\treturn words;\n}\n\n/**\n * Count grapheme clusters in text\n */\nexport function countGraphemes(text: string): number {\n\tconst codepoints: number[] = [];\n\tfor (const char of text) {\n\t\tcodepoints.push(char.codePointAt(0) ?? 0);\n\t}\n\tconst { boundaries } = findGraphemeBoundaries(codepoints);\n\treturn boundaries.length;\n}\n\n/**\n * Analyze grapheme boundaries for glyph infos\n */\nexport function analyzeGraphemesForGlyphs(\n\tinfos: GlyphInfo[],\n): GraphemeBoundaries {\n\tconst codepoints = infos.map((info) => info.codepoint);\n\treturn findGraphemeBoundaries(codepoints);\n}\n\n/**\n * Analyze word boundaries for glyph infos\n */\nexport function analyzeWordsForGlyphs(infos: GlyphInfo[]): WordBoundaries {\n\tconst codepoints = infos.map((info) => info.codepoint);\n\treturn findWordBoundaries(codepoints);\n}\n"
119
124
  ],
120
- "mappings": "yKAMa,GAqGA,kBArGA,GAAiB,IAAI,WAAW,CAG5C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,EAEhB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAEjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAGjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAErE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAEH,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE/D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE/D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAEhB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEhE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,iBACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,SACA,UACA,QACA,UACD,EAkEO,SAAS,EAAQ,CAAC,EAA0B,CAClD,IAAM,EAAc,EAAO,OAGrB,EAAQ,EAAO,MAAM,EACrB,EAAQ,EAAO,MAAM,EACrB,EAAU,EAAO,MAAM,EACvB,EAAW,EAAO,MAAM,EAE9B,EAAO,KAAK,EAAc,CAAO,EAGjC,IAAM,EAAQ,GAAW,CAAM,EAAE,IAAI,CAAC,IACrC,IAAI,YAAY,EAAE,OAAO,CAAI,CAC9B,EAGM,EAAc,GAAW,CAAM,EAC/B,EAAsB,CAAC,EAIvB,EADa,GAAW,CAAM,EACT,IAAI,CAAC,IAAS,IAAI,YAAY,EAAE,OAAO,CAAI,CAAC,EAGjE,EAAc,GAAW,CAAM,EAGrC,QAAW,KAAQ,EAClB,EAAS,KACR,GACC,IAAI,GACH,EAAK,OACL,EAAK,WACL,EAAK,UACN,EACA,CACD,CACD,EAID,IAAM,EAA8B,CAAC,EAC/B,EAA6B,CAAC,EAC9B,EAAuB,CAAC,EACxB,EAAwB,CAAC,EAE/B,QAAW,KAAW,EAAU,CAE/B,GAAI,EAAQ,cAAgB,OAC3B,EAAO,KAAK,EAAc,EAAQ,WAAW,EAC7C,EAAY,KAAK,GAAW,CAAM,CAAC,E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AAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EAEzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EAEzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EAEzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ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AU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU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MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,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C,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI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GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,IACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,IACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,IACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,IACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,IACzC,GAAI,GAAM,OA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",
121
- "debugId": "087113C8599BDEF364756E2164756E21",
125
+ "mappings": "yKAMa,GAqGA,kBArGA,GAAiB,IAAI,WAAW,CAG5C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,EAEhB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAEjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAGjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAErE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAEH,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE/D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE/D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAEhB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEhE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,iBACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,SACA,UACA,QACA,UACD,EAkEO,SAAS,EAAQ,CAAC,EAA0B,CAClD,IAAM,EAAc,EAAO,OAGrB,EAAQ,EAAO,MAAM,EACrB,EAAQ,EAAO,MAAM,EACrB,EAAU,EAAO,MAAM,EACvB,EAAW,EAAO,MAAM,EAE9B,EAAO,KAAK,EAAc,CAAO,EAGjC,IAAM,EAAQ,GAAW,CAAM,EAAE,IAAI,CAAC,IACrC,IAAI,YAAY,EAAE,OAAO,CAAI,CAC9B,EAGM,EAAc,GAAW,CAAM,EAC/B,EAAsB,CAAC,EAIvB,EADa,GAAW,CAAM,EACT,IAAI,CAAC,IAAS,IAAI,YAAY,EAAE,OAAO,CAAI,CAAC,EAGjE,EAAc,GAAW,CAAM,EAGrC,QAAW,KAAQ,EAClB,EAAS,KACR,GACC,IAAI,GACH,EAAK,OACL,EAAK,WACL,EAAK,UACN,EACA,CACD,CACD,EAID,IAAM,EAA8B,CAAC,EAC/B,EAA6B,CAAC,EAC9B,EAAuB,CAAC,EACxB,EAAwB,CAAC,EAE/B,QAAW,KAAW,EAAU,CAE/B,GAAI,EAAQ,cAAgB,OAC3B,EAAO,KAAK,EAAc,EAAQ,WAAW,EAC7C,EAAY,KAAK,GAAW,CAAM,CAAC,EAEnC,OAAY,KAAK,CAAC,CAAC,EAIpB,GAAI,EAAQ,QAAS,CACpB,IAAO,EAAa,GAAiB,EAAQ,QACvC,EAAc,GACnB,EAAO,MAAM,EAAe,CAAW,EACvC,CACD,EAEA,GAAI,EAAY,QAAU,OACzB,EAAO,KAAK,EAAc,EAAgB,EAAY,KAAK,EAC3D,EAAW,KAAK,GAAW,CAAM,CAAC,EAElC,OAAW,KAAK,CAAC,CAAC,EAGnB,OAAW,KAAK,CAAC,CAAC,EAInB,GAAI,EAAQ,UAAY,OAAW,CAClC,EAAO,KAAK,EAAc,EAAQ,OAAO,EACzC,IAAM,EAAS,GAAW,CAAM,EAC1B,EAAgB,CAAC,EACvB,QAAW,KAAQ,EAAQ,CAC1B,IAAM,EAAS,GACd,IAAI,GACH,EAAK,OACL,EAAK,WACL,EAAK,UACN,EACA,CACD,EAGA,GAAI,EAAO,QAAS,CACnB,IAAO,EAAe,GAAmB,EAAO,QAC1C,EAAgB,GACrB,EAAO,MAAM,EAAc,EAAiB,CAAa,EACzD,CACD,EAKA,GAHA,OAAO,OAAO,EAAQ,CAAa,EAG/B,EAAc,QAAU,OAC3B,EAAO,KAAK,EAAc,EAAkB,EAAc,KAAK,EAC/D,EAAO,WAAa,GAAW,CAAM,EAIvC,EAAI,KAAK,CAAM,EAEhB,EAAS,KAAK,CAAG,EAEjB,OAAS,KAAK,CAAC,CAAC,EAIjB,GAAI,EAAQ,WAAa,OAAW,CACnC,EAAO,KAAK,EAAc,EAAQ,QAAQ,EAC1C,IAAM,EAAkB,EAAY,EAAY,OAAS,GACzD,EAAU,KAAK,GAAc,EAAQ,GAAiB,QAAU,CAAC,CAAC,EAElE,OAAU,KAAK,CAAE,OAAQ,EAAG,OAAQ,IAAM,CAAE,CAAC,EAI/C,MAAO,CACN,QAAS,CAAE,QAAO,OAAM,EACxB,QACA,WACA,UACA,cACA,cACA,aACA,WACA,WACD,EAMD,SAAS,EAAU,CAAC,EAA8B,CACjD,IAAM,EAAQ,EAAO,OAAO,EAC5B,GAAI,IAAU,EAAG,MAAO,CAAC,EAEzB,IAAM,EAAU,EAAO,MAAM,EACvB,EAAoB,CAAC,EAE3B,QAAS,EAAI,EAAG,GAAK,EAAO,IAC3B,EAAQ,KAAK,GAAW,EAAQ,CAAO,CAAC,EAGzC,IAAM,EAAuB,CAAC,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAQ,EAAQ,GAChB,EAAM,EAAQ,EAAI,GACxB,GAAI,IAAU,QAAa,IAAQ,OAAW,SAC9C,IAAM,EAAS,EAAM,EACrB,EAAO,KAAK,EAAO,MAAM,CAAM,CAAC,EAGjC,OAAO,EAMR,SAAS,EAAU,CAAC,EAAgB,EAAyB,CAC5D,OAAQ,OACF,GACJ,OAAO,EAAO,MAAM,MAChB,GACJ,OAAO,EAAO,OAAO,MACjB,GACJ,OAAO,EAAO,OAAO,MACjB,GACJ,OAAO,EAAO,OAAO,UAErB,MAAU,MAAM,wBAAwB,GAAS,GAOpD,SAAS,EAAS,CAAC,EAAuC,CACzD,IAAM,EAAS,IAAI,IACb,EAAqB,CAAC,EAE5B,MAAO,EAAO,UAAY,EAAG,CAC5B,IAAM,EAAK,EAAO,MAAM,EAExB,GAAI,GAAM,GAAI,CAEb,IAAI,EAAK,EACT,GAAI,IAAO,GACV,EAAK,KAAS,EAAO,MAAM,EAE5B,EAAO,IAAI,EAAI,CAAC,GAAG,CAAQ,CAAC,EAC5B,EAAS,OAAS,EACZ,QAAI,IAAO,GAEjB,EAAS,KAAK,EAAO,MAAM,CAAC,EACtB,QAAI,IAAO,GAEjB,EAAS,KAAK,EAAO,MAAM,CAAC,EACtB,QAAI,IAAO,GAEjB,EAAS,KAAK,GAAU,CAAM,CAAC,EACzB,QAAI,GAAM,IAAM,GAAM,IAC5B,EAAS,KAAK,EAAK,GAAG,EAChB,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,EAAS,MAAM,EAAK,KAAO,IAAM,EAAK,GAAG,EACnC,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,EAAS,KAAK,EAAE,EAAK,KAAO,IAAM,EAAK,GAAG,GAI5C,OAAO,EAMR,SAAS,EAAS,CAAC,EAAwB,CAC1C,IAAI,EAAM,GACJ,EAAc,kBAChB,EAAO,GAEX,MAAO,CAAC,EAAM,CACb,IAAM,EAAO,EAAO,MAAM,EAC1B,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAS,IAAM,EAAI,GAAQ,EAAI,EAAO,GAC5C,GAAI,IAAW,GAAM,CACpB,EAAO,GACP,MAED,GAAI,IAAW,GACd,GAAO,KAEP,QAAO,EAAY,IAKtB,OAAO,WAAW,CAAG,EAMtB,SAAS,EAAY,CAAC,EAAgB,EAA4B,CACjE,IAAM,EAAO,GAAU,CAAM,EACvB,EAAkB,CAAC,EAEnB,EAAY,CAAC,IAAwB,CAC1C,GAAI,EAAM,GAAiB,OAE1B,OADY,GAAiB,IACf,GAEf,OAAO,EAAQ,EAAM,GAAiB,SAAW,IAGlD,QAAY,EAAI,KAAa,EAAM,CAClC,IAAM,EAAM,EAAS,GACf,EAAM,EAAS,GACf,EAAM,EAAS,GAErB,OAAQ,OACF,GACJ,GAAI,IAAQ,OAAW,EAAO,QAAU,EAAU,CAAG,EACrD,UACI,GACJ,GAAI,IAAQ,OAAW,EAAO,OAAS,EAAU,CAAG,EACpD,UACI,MACJ,GAAI,IAAQ,OAAW,EAAO,UAAY,EAAU,CAAG,EACvD,UACI,GACJ,GAAI,IAAQ,OAAW,EAAO,SAAW,EAAU,CAAG,EACtD,UACI,GACJ,GAAI,IAAQ,OAAW,EAAO,WAAa,EAAU,CAAG,EACxD,UACI,GACJ,GAAI,IAAQ,OAAW,EAAO,OAAS,EAAU,CAAG,EACpD,UACI,MACJ,EAAO,aAAe,IAAQ,EAC9B,UACI,MACJ,EAAO,YAAc,EACrB,UACI,MACJ,EAAO,kBAAoB,EAC3B,UACI,MACJ,EAAO,mBAAqB,EAC5B,UACI,MACJ,EAAO,UAAY,EACnB,UACI,MACJ,EAAO,eAAiB,EACxB,UACI,MACJ,EAAO,WAAa,EACpB,UACI,IACJ,EAAO,SAAW,EAClB,UACI,GACJ,EAAO,SAAW,EAClB,UACI,MACJ,EAAO,YAAc,EACrB,UACI,IACJ,EAAO,QAAU,EACjB,UACI,IACJ,EAAO,SAAW,EAClB,UACI,IACJ,EAAO,YAAc,EACrB,UACI,IACJ,GAAI,IAAQ,QAAa,IAAQ,OAChC,EAAO,QAAU,CAAC,EAAK,CAAG,EAE3B,UACI,MACJ,EAAO,cAAgB,EACvB,UACI,MACJ,GAAI,IAAQ,OAAW,EAAO,WAAa,EAAU,CAAG,EACxD,UACI,MACJ,GAAI,IAAQ,OAAW,EAAO,aAAe,EAAU,CAAG,EAC1D,UACI,MACJ,EAAO,cAAgB,EACvB,UACI,MACJ,GAAI,IAAQ,QAAa,IAAQ,QAAa,IAAQ,OACrD,EAAO,IAAM,CACZ,SAAU,EAAU,CAAG,EACvB,SAAU,EAAU,CAAG,EACvB,WAAY,CACb,EAED,UACI,MACJ,EAAO,eAAiB,EACxB,UACI,MACJ,EAAO,gBAAkB,EACzB,UACI,MACJ,EAAO,YAAc,EACrB,UACI,MACJ,EAAO,SAAW,EAClB,UACI,MACJ,EAAO,QAAU,EACjB,UACI,MACJ,EAAO,QAAU,EACjB,UACI,MACJ,EAAO,SAAW,EAClB,UACI,MACJ,GAAI,IAAQ,OAAW,EAAO,SAAW,EAAU,CAAG,EACtD,OAIH,OAAO,EAMR,SAAS,EAAgB,CAAC,EAAgB,EAAiC,CAC1E,IAAM,EAAO,GAAU,CAAM,EACvB,EAAsB,CAAC,EAE7B,QAAY,EAAI,KAAa,EAAM,CAClC,IAAM,EAAM,EAAS,GAErB,OAAQ,OACF,GACJ,EAAO,WAAa,GAAgB,CAAQ,EAC5C,UACI,GACJ,EAAO,WAAa,GAAgB,CAAQ,EAC5C,UACI,GACJ,EAAO,YAAc,GAAgB,CAAQ,EAC7C,UACI,GACJ,EAAO,iBAAmB,GAAgB,CAAQ,EAClD,UACI,MACJ,EAAO,UAAY,EACnB,UACI,MACJ,EAAO,UAAY,EACnB,UACI,MACJ,EAAO,SAAW,EAClB,UACI,IACJ,EAAO,MAAQ,EACf,UACI,IACJ,EAAO,MAAQ,EACf,UACI,MACJ,EAAO,UAAY,GAAgB,CAAQ,EAC3C,UACI,MACJ,EAAO,UAAY,GAAgB,CAAQ,EAC3C,UACI,MACJ,EAAO,UAAY,IAAQ,EAC3B,UACI,MACJ,EAAO,cAAgB,EACvB,UACI,MACJ,EAAO,gBAAkB,EACzB,UACI,MACJ,EAAO,kBAAoB,EAC3B,UACI,IACJ,EAAO,MAAQ,EACf,UACI,IACJ,EAAO,cAAgB,EACvB,UACI,IACJ,EAAO,cAAgB,EACvB,OAIH,OAAO,EAMR,SAAS,EAAe,CAAC,EAA4B,CACpD,IAAM,EAAmB,CAAC,EACtB,EAAQ,EACZ,QAAW,KAAS,EACnB,GAAS,EACT,EAAO,KAAK,CAAK,EAElB,OAAO,EAMR,SAAS,EAAa,CAAC,EAAgB,EAA6B,CACnE,IAAM,EAAS,EAAO,MAAM,EAE5B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAM,EAAO,WAAW,CAAS,EACvC,MAAO,CACN,SACA,OAAQ,CAAC,IAAoB,EAAI,IAAY,CAC9C,EACM,QAAI,IAAW,EAAG,CACxB,IAAM,EAAU,EAAO,OAAO,EACxB,EAA+C,CAAC,EAEtD,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,EAAO,KAAK,CACX,MAAO,EAAO,OAAO,EACrB,GAAI,EAAO,MAAM,CAClB,CAAC,EAEF,IAAM,EAAY,EAAO,OAAO,EAEhC,MAAO,CACN,SACA,OAAQ,CAAC,IAAoB,CAE5B,IAAI,EAAK,EACL,EAAK,EAAO,OAAS,EACzB,MAAO,EAAK,EAAI,CACf,IAAM,EAAM,KAAK,MAAM,EAAK,GAAM,CAAC,EAC7B,EAAQ,EAAO,GACrB,GAAI,GAAS,EAAM,OAAS,EAC3B,EAAK,EAEL,OAAK,EAAM,EAIb,OADmB,EAAO,IACP,IAAM,EAE3B,EAGD,MAAO,CAAE,SAAQ,OAAQ,IAAM,CAAE,EC18B3B,SAAS,EAAoB,CACnC,EACA,EACA,EAAoB,EACD,CACnB,IAAM,EAAc,EAAI,YAAY,GACpC,GAAI,CAAC,GAAe,GAAW,EAAY,OAAQ,OAAO,KAE1D,IAAM,EAAa,EAAY,GAC/B,GAAI,CAAC,EAAY,OAAO,KAExB,IAAM,EAAc,EAAI,YAIlB,EADU,EAAI,SAAS,IACN,MAAQ,OAC3B,EAA2B,CAAC,EAEhC,GAAI,GAAS,EAAI,UAAU,IAAc,EAAI,SAAS,GAAY,CACjE,IAAM,EAAU,EAAI,UAAU,IAAY,OAAO,CAAO,GAAK,EAI7D,EAHgB,EAAI,SAAS,KACR,IAEJ,YAAc,EAAI,WAAW,IAAc,CAAC,EAE7D,OAAa,EAAI,WAAW,IAAc,CAAC,EAG5C,IAAM,EAAyB,CAC9B,EAAG,EACH,EAAG,EACH,MAAO,CAAC,EACR,OAAQ,EACR,UAAW,GACX,MAAO,EACP,SAAU,CAAC,EACX,eAAgB,CAAC,EACjB,eAAoB,MAAM,EAAE,EAAE,KAAK,CAAC,EACpC,UAAW,CAAC,EACZ,QAAS,EACT,WAAY,KACZ,OAAQ,IACT,EAKA,GAHA,GAAkB,EAAO,EAAY,EAAa,CAAU,EAGxD,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EAGzC,OAAO,EAAM,SAMP,SAAS,EAAqB,CACpC,EACA,EACA,EAA8B,KACX,CACnB,GAAI,GAAW,EAAK,YAAY,OAAQ,OAAO,KAE/C,IAAM,EAAa,EAAK,YAAY,GACpC,GAAI,CAAC,EAAY,OAAO,KAExB,IAAM,EAAc,EAAK,YAGnB,EAAU,EAAK,UAAU,OAAO,CAAO,GAAK,EAC5C,EAAK,EAAK,QAAQ,GAClB,EAAa,GAAI,YAAc,CAAC,EAEhC,EAAyB,CAC9B,EAAG,EACH,EAAG,EACH,MAAO,CAAC,EACR,OAAQ,EACR,UAAW,GACX,MAAO,EACP,SAAU,CAAC,EACX,eAAgB,CAAC,EACjB,eAAoB,MAAM,EAAE,EAAE,KAAK,CAAC,EACpC,UAAW,CAAC,EACZ,QAAS,GAAI,SAAS,SAAW,EACjC,aACA,OAAQ,EAAK,MACd,EAKA,GAHA,GAAkB,EAAO,EAAY,EAAa,CAAU,EAGxD,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EAGzC,OAAO,EAAM,SAGd,SAAS,EAAiB,CACzB,EACA,EACA,EACA,EACO,CACP,IAAI,EAAM,EAEV,MAAO,EAAM,EAAK,OAAQ,CACzB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OAEtB,GAAI,IAAO,GAAI,CAEd,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,EAAM,MAAM,MAAQ,GAAM,EAAK,IAAO,IAAO,EAAE,EACzC,QAAI,IAAO,IAAK,CAEtB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,GAAQ,GAAM,GAAO,GAAM,GAAO,GAAM,EAAK,IAAO,EAC1D,EAAM,MAAM,KAAK,EAAM,KAAK,EACtB,QAAI,GAAM,IAAM,GAAM,IAC5B,EAAM,MAAM,KAAK,EAAK,GAAG,EACnB,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,EAAM,MAAM,MAAM,EAAK,KAAO,IAAM,EAAK,GAAG,EACtC,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,EAAM,MAAM,KAAK,EAAE,EAAK,KAAO,IAAM,EAAK,GAAG,EACvC,QAAI,IAAO,GAAI,CAErB,IAAM,EAAK,EAAK,KAChB,GAAI,IAAO,OAAW,OACtB,IAAM,EAAK,KAAS,EACpB,GAAgB,EAAO,EAAI,EAAa,CAAU,EAC5C,QAAI,IAAO,IAAe,IAAO,GAAa,CAEpD,IAAM,EAAQ,EAAM,MAEpB,GADiB,EAAM,OAAS,IAAM,GACtB,CAAC,EAAM,UAAW,CACjC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OACb,EAAM,MAAQ,EACd,EAAM,UAAY,GAGpB,EAAM,QAAU,EAAM,OAAS,EAC/B,EAAM,OAAS,EAEf,IAAM,EAAY,KAAK,KAAK,EAAM,OAAS,CAAC,EAC5C,GAAO,EAGP,QAAgB,EAAO,EAAI,EAAa,CAAU,EAInD,GAAI,EAAM,UAAU,OAAS,EAAG,CAC/B,IAAM,EAAQ,EAAM,UAAU,EAAM,UAAU,OAAS,GACvD,GAAI,GAAS,EAAM,KAAO,EAAM,KAAK,OACpC,EAAM,UAAU,IAAI,IAMxB,SAAS,EAAe,CACvB,EACA,EACA,EACA,EACO,CACP,IAAM,EAAQ,EAAM,MAEpB,OAAQ,OACF,OACA,OACA,QACA,IAAY,CAGhB,GADiB,EAAM,OAAS,IAAM,GACtB,CAAC,EAAM,UAAW,CACjC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OAAW,MACzB,EAAM,MAAQ,EACd,EAAM,UAAY,GAEnB,EAAM,QAAU,EAAM,OAAS,EAC/B,EAAM,OAAS,EACf,KACD,KAEK,QACA,IAEJ,UAEI,IAAY,CAChB,GAAI,EAAM,OAAS,GAAK,CAAC,EAAM,UAAW,CACzC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OAAW,MACzB,EAAM,MAAQ,EACd,EAAM,UAAY,GAGnB,GAAI,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EACxC,EAAM,eAAiB,CAAC,EAEzB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EACnE,EAAM,OAAS,EACf,KACD,KAEK,IAAY,CAChB,GAAI,EAAM,OAAS,GAAK,CAAC,EAAM,UAAW,CACzC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OAAW,MACzB,EAAM,MAAQ,EACd,EAAM,UAAY,GAEnB,GAAI,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EACxC,EAAM,eAAiB,CAAC,EAEzB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EACnE,EAAM,OAAS,EACf,KACD,KAEK,GAAY,CAChB,GAAI,EAAM,OAAS,GAAK,CAAC,EAAM,UAAW,CACzC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OAAW,MACzB,EAAM,MAAQ,EACd,EAAM,UAAY,GAEnB,GAAI,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EACxC,EAAM,eAAiB,CAAC,EAEzB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EACnE,EAAM,OAAS,EACf,KACD,KAEK,GAAY,CAChB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EAEpE,KACD,KAEK,GAAY,CAChB,IAAI,EAAe,GACnB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAI,EACH,EAAM,GAAK,EAEX,OAAM,GAAK,EAEZ,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EACnE,EAAe,CAAC,EAEjB,KACD,KAEK,GAAY,CAChB,IAAI,EAAa,GACjB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAI,EACH,EAAM,GAAK,EAEX,OAAM,GAAK,EAEZ,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EACnE,EAAa,CAAC,EAEf,KACD,KAEK,GAAc,CAClB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAEnD,KACD,KAEK,IAAc,CAClB,IAAI,EAAM,EACV,GAAI,EAAM,OAAS,IAAM,EAAG,CAC3B,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,EAAM,EAEP,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAC,EAChD,EAAM,EAEP,KACD,KAEK,IAAc,CAClB,IAAI,EAAM,EACV,GAAI,EAAM,OAAS,IAAM,EAAG,CAC3B,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,EAAM,EAEP,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAG,CAAG,EAChD,EAAM,EAEP,KACD,KAEK,IAAc,CAElB,IAAI,EAAe,GACnB,MAAO,EAAM,QAAU,EAAG,CACzB,GAAI,EAAc,CACjB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,SAAW,EAAK,EAAM,MAAM,GAAK,EAAK,EACxD,GAAe,EAAO,EAAK,EAAG,EAAK,EAAK,EAAK,CAAG,EAC1C,KACN,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,SAAW,EAAK,EAAM,MAAM,GAAK,EAAK,EACxD,GAAe,EAAO,EAAG,EAAK,EAAK,EAAK,EAAK,CAAG,EAEjD,EAAe,CAAC,EAEjB,KACD,KAEK,IAAc,CAElB,IAAI,EAAa,GACjB,MAAO,EAAM,QAAU,EAAG,CACzB,GAAI,EAAY,CACf,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,SAAW,EAAK,EAAM,MAAM,GAAK,EAAK,EACxD,GAAe,EAAO,EAAG,EAAK,EAAK,EAAK,EAAK,CAAG,EAC1C,KACN,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,SAAW,EAAK,EAAM,MAAM,GAAK,EAAK,EACxD,GAAe,EAAO,EAAK,EAAG,EAAK,EAAK,EAAK,CAAG,EAEjD,EAAa,CAAC,EAEf,KACD,KAEK,IAAe,CACnB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAGnD,GAAI,EAAM,QAAU,EAAG,CACtB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EAEpE,KACD,KAEK,IAAe,CACnB,MAAO,EAAM,QAAU,EAAG,CACzB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MACtB,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,eAAe,KAAK,CAAE,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,QAAS,EAAK,CAAC,EAGpE,GAAI,EAAM,QAAU,EAAG,CACtB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAEnD,KACD,KAEK,IAAa,CACjB,IAAM,EAAQ,EAAM,IAAI,EACxB,GAAI,IAAU,OAAW,MACzB,IAAM,EAAc,EAAQ,GAAY,EAAW,MAAM,EACnD,EAAO,EAAW,GACxB,GAAI,EACH,GAAkB,EAAO,EAAM,EAAa,CAAU,EAEvD,KACD,KAEK,IAAc,CAClB,IAAM,EAAQ,EAAM,IAAI,EACxB,GAAI,IAAU,OAAW,MACzB,IAAM,EAAc,EAAQ,GAAY,EAAY,MAAM,EACpD,EAAO,EAAY,GACzB,GAAI,EACH,GAAkB,EAAO,EAAM,EAAa,CAAU,EAEvD,KACD,KAEK,IAEJ,UAEI,IAAY,CAChB,GAAI,EAAM,OAAS,GAAK,CAAC,EAAM,UAAW,CACzC,IAAM,EAAQ,EAAM,MAAM,EAC1B,GAAI,IAAU,OAAW,MACzB,EAAM,MAAQ,EACd,EAAM,UAAY,GAGnB,GAAI,EAAM,eAAe,OAAS,EACjC,EAAM,SAAS,KAAK,EAAM,cAAc,EACxC,EAAM,eAAiB,CAAC,EAEzB,EAAM,OAAS,EACf,KACD,KAGK,MAAS,CAEb,GAAI,EAAM,QAAU,GAAI,CACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,EAAM,MAAM,EACZ,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAClD,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAEnD,KACD,KAEK,MAAU,CAEd,GAAI,EAAM,QAAU,EAAG,CACtB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAG,EAAK,EAAK,EAAK,CAAC,EAC9C,GAAe,EAAO,EAAK,EAAG,EAAK,CAAC,EAAK,EAAK,CAAC,EAEhD,KACD,KAEK,MAAW,CAEf,GAAI,EAAM,QAAU,EAAG,CACtB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAC,EAChD,GAAe,EAAO,EAAK,EAAG,EAAK,EAAK,EAAK,EAAE,EAAM,EAAM,EAAI,EAEhE,KACD,KAEK,MAAU,CAEd,GAAI,EAAM,QAAU,GAAI,CACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAM,EAAM,MAAM,EACxB,GAAI,IAAQ,OAAW,MACvB,IAAM,EAAK,EAAM,MAAM,EACvB,GAAI,IAAO,OAAW,MAEtB,IAAM,EAAK,EAAM,EAAM,EAAM,EAAM,EAC7B,EAAK,EAAM,EAAM,EAAM,EAAM,EAE/B,EAAa,EACjB,GAAI,KAAK,IAAI,CAAE,EAAI,KAAK,IAAI,CAAE,EAC7B,EAAM,EACN,EAAM,CAAC,EAEP,OAAM,CAAC,EACP,EAAM,EAGP,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAClD,GAAe,EAAO,EAAK,EAAK,EAAK,EAAK,EAAK,CAAG,EAEnD,KACD,KAGK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,GAAK,EAAI,EAAI,CAAC,EACzB,KACD,KAEK,MAAQ,CACZ,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,GAAK,EAAI,EAAI,CAAC,EACzB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAI,EAAI,CAAC,EACpB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,KAAK,IAAI,CAAC,CAAC,EACtB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAI,CAAC,EAChB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAI,CAAC,EAChB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAI,CAAC,EAChB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,CAAC,CAAC,EACb,KACD,KAEK,MAAQ,CACZ,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,IAAM,EAAI,EAAI,CAAC,EAC1B,KACD,KAEK,MAAU,CACd,EAAM,IAAI,EACV,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAM,EAAM,IAAI,EACtB,GAAI,IAAQ,OAAW,MACvB,EAAM,eAAe,GAAK,EAC1B,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAM,eAAe,IAAM,CAAC,EACvC,KACD,KAEK,MAAY,CAChB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,IAAM,EAAK,EAAM,IAAI,EACrB,GAAI,IAAO,OAAW,MACtB,EAAM,KAAK,GAAM,EAAK,EAAK,CAAE,EAC7B,KACD,KAEK,MAAY,CAChB,EAAM,KAAK,KAAK,OAAO,CAAC,EACxB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAI,CAAC,EAChB,KACD,KAEK,MAAU,CACd,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,KAAK,KAAK,CAAC,CAAC,EACvB,KACD,KAEK,MAAS,CACb,IAAM,EAAI,EAAM,EAAM,OAAS,GAC/B,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,CAAC,EACZ,KACD,KAEK,MAAU,CACd,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,EAAM,KAAK,EAAG,CAAC,EACf,KACD,KAEK,MAAW,CACf,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAM,EAAM,OAAS,EAAI,EAC/B,EAAM,KAAK,EAAM,IAAQ,CAAC,EAC1B,KACD,KAEK,MAAU,CACd,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,GAAI,EAAI,EAAG,CACV,IAAM,EAAQ,EAAM,OAAO,CAAC,CAAC,EACvB,GAAU,EAAI,EAAK,GAAK,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAO,EAAO,GAAI,GAAS,GACjC,GAAI,IAAS,OACZ,EAAM,KAAK,CAAI,GAIlB,KACD,KAGK,IAAU,CACd,GAAI,CAAC,EAAM,YAAc,CAAC,EAAM,OAAQ,MAExC,IAAM,EAAI,EAAM,IAAI,EACpB,GAAI,IAAM,OAAW,MACrB,IAAM,EACL,EAAM,OAAO,kBAAkB,EAAM,UAAU,kBAAoB,EAG9D,EAAkB,EAAI,EACtB,EAAS,EAAM,OAAO,CAAC,CAAe,EACtC,EAAW,EAAM,OAAO,CAAC,CAAC,EAEhC,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAa,EAAS,GAC5B,GAAI,IAAe,OAAW,SAC9B,IAAI,EAAQ,EACZ,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAQ,EAAO,EAAI,EAAc,GACvC,GAAI,IAAU,OAAW,SACzB,IAAM,EAAS,GACd,EAAM,OACN,EAAM,QACN,EACA,EAAM,UACP,EACA,GAAS,EAAQ,EAElB,EAAM,KAAK,CAAK,EAEjB,KACD,KAEK,IAAY,CAChB,IAAM,EAAU,EAAM,IAAI,EAC1B,GAAI,IAAY,OAAW,MAC3B,EAAM,QAAU,EAChB,KACD,KAEK,MAEJ,OAIH,SAAS,EAAc,CACtB,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CAKP,IAAiB,EAAX,EACW,EAAX,GAAK,EACL,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EAIhB,EAAM,eAAe,KAAK,CACzB,EAAG,EACH,EAAG,EACH,QAAS,GACT,MAAO,EACR,CAAe,EACf,EAAM,eAAe,KAAK,CACzB,EAAG,EACH,EAAG,EACH,QAAS,GACT,MAAO,EACR,CAAe,EACf,EAAM,eAAe,KAAK,CAAE,EAAG,EAAI,EAAG,EAAI,QAAS,EAAK,CAAC,EAEzD,EAAM,EAAI,EACV,EAAM,EAAI,EA0FX,SAAS,EAAW,CAAC,EAAuB,CAC3C,GAAI,EAAQ,KAAM,MAAO,KACzB,GAAI,EAAQ,MAAO,MAAO,MAC1B,MAAO,OAGR,SAAS,EAAmB,CAC3B,EACA,EACA,EACA,EACS,CACT,IAAM,EAAO,EAAO,kBAAkB,GACtC,GAAI,CAAC,EAAM,MAAO,GAElB,IAAM,EAAoB,EAAK,cAAc,GAC7C,GAAI,IAAsB,OAAW,MAAO,GAE5C,IAAM,EAAS,EAAO,oBAAoB,QAAQ,GAClD,GAAI,CAAC,EAAQ,MAAO,GAEpB,IAAI,EAAS,EACb,QAAS,EAAI,EAAG,EAAI,EAAO,KAAK,QAAU,EAAI,EAAW,OAAQ,IAAK,CACrE,IAAM,EAAS,EAAO,KAAK,GAC3B,GAAI,CAAC,EAAQ,SACb,IAAM,EAAQ,EAAW,GACzB,GAAI,IAAU,OAAW,SAEzB,GAAI,EAAQ,EAAO,YAAc,EAAQ,EAAO,SAC/C,MAAO,GAGR,GAAI,IAAU,EAAO,UACpB,SAGD,GAAI,EAAQ,EAAO,UAClB,IACE,EAAQ,EAAO,aAAe,EAAO,UAAY,EAAO,YAE1D,SACE,EAAO,SAAW,IAAU,EAAO,SAAW,EAAO,WAIzD,OAAO,EAMD,SAAS,EAAgB,CAC/B,EACA,EACA,EAAoB,EACX,CAGT,IAAM,EAAW,EAAI,SAAS,GAC9B,MAAO,GC3hCD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAc,EAAO,OAGrB,EAAQ,EAAO,MAAM,EACrB,EAAQ,EAAO,MAAM,EACrB,EAAa,EAAO,MAAM,EAC1B,EAAgB,EAAO,OAAO,EAGpC,EAAO,KAAK,EAAc,CAAU,EAGpC,IAAM,EAAgB,EAAO,MAC5B,EAAO,OAAS,EAChB,CACD,EACA,EAAO,KAAK,CAAa,EACzB,IAAM,EAAU,GAAiB,CAAa,EAGxC,EAAc,GAAW,CAAM,EAGjC,EAA4B,CAAC,EACjC,GAAI,EAAQ,cAAgB,OAC3B,EAAO,KAAK,EAAc,EAAQ,WAAW,EAC7C,EAAc,GAAW,CAAM,EAIhC,IAAM,EAAwB,CAAC,EAC/B,GAAI,EAAQ,UAAY,OAAW,CAClC,EAAO,KAAK,EAAc,EAAQ,OAAO,EACzC,IAAM,EAAa,GAAW,CAAM,EAEpC,QAAW,KAAQ,EAAY,CAC9B,IAAM,EAAK,GACV,IAAI,GACH,EAAK,OACL,EAAK,WACL,EAAK,UACN,CACD,EAGA,GAAI,EAAG,gBAAkB,QAAa,EAAG,cAAgB,OAAW,CACnE,EAAO,KAAK,EAAc,EAAG,aAAa,EAC1C,IAAM,EAAgB,EAAO,MAAM,EAAG,EAAG,WAAW,EAGpD,GAFA,EAAG,QAAU,GAAqB,CAAa,EAE3C,EAAG,QAAQ,QAAU,OACxB,EAAO,KAAK,EAAc,EAAG,cAAgB,EAAG,QAAQ,KAAK,EAC7D,EAAG,WAAa,GAAW,CAAM,EAInC,EAAQ,KAAK,CAAE,GAKjB,IAAI,EAAgC,KACpC,GAAI,EAAQ,WAAa,OACxB,EAAO,KAAK,EAAc,EAAQ,QAAQ,EAC1C,EAAW,GAAc,EAAQ,EAAY,MAAM,EAIpD,IAAI,EAAoC,KACxC,GAAI,EAAQ,SAAW,OACtB,EAAO,KAAK,EAAc,EAAQ,MAAM,EACxC,EAAS,GAAwB,CAAM,EAGxC,MAAO,CACN,QAAS,CAAE,QAAO,OAAM,EACxB,UACA,cACA,cACA,UACA,WACA,QACD,EAMD,SAAS,EAAU,CAAC,EAA8B,CACjD,IAAM,EAAQ,EAAO,OAAO,EAC5B,GAAI,IAAU,EAAG,MAAO,CAAC,EAEzB,IAAM,EAAU,EAAO,MAAM,EACvB,EAAoB,CAAC,EAE3B,QAAS,EAAI,EAAG,GAAK,EAAO,IAC3B,EAAQ,KAAK,GAAW,EAAQ,CAAO,CAAC,EAGzC,IAAM,EAAuB,CAAC,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAQ,EAAQ,GAChB,EAAM,EAAQ,EAAI,GACxB,GAAI,IAAU,QAAa,IAAQ,OAAW,SAC9C,IAAM,EAAS,EAAM,EACrB,EAAO,KAAK,EAAO,MAAM,CAAM,CAAC,EAGjC,OAAO,EAMR,SAAS,EAAU,CAAC,EAAgB,EAAyB,CAC5D,OAAQ,OACF,GACJ,OAAO,EAAO,MAAM,MAChB,GACJ,OAAO,EAAO,OAAO,MACjB,GACJ,OAAO,EAAO,OAAO,MACjB,GACJ,OAAO,EAAO,OAAO,UAErB,MAAU,MAAM,wBAAwB,GAAS,GAOpD,SAAS,EAAS,CAAC,EAAuC,CACzD,IAAM,EAAS,IAAI,IACb,EAAqB,CAAC,EAE5B,MAAO,EAAO,UAAY,EAAG,CAC5B,IAAM,EAAK,EAAO,MAAM,EAExB,GAAI,GAAM,GAAI,CAEb,IAAI,EAAK,EACT,GAAI,IAAO,GACV,EAAK,KAAS,EAAO,MAAM,EAE5B,EAAO,IAAI,EAAI,CAAC,GAAG,CAAQ,CAAC,EAC5B,EAAS,OAAS,EACZ,QAAI,IAAO,GAEjB,EAAO,IAAI,GAAI,CAAC,GAAG,CAAQ,CAAC,EAC5B,EAAS,OAAS,EACZ,QAAI,IAAO,GAEjB,EAAO,IAAI,GAAI,CAAC,GAAG,CAAQ,CAAC,EAC5B,EAAS,OAAS,EACZ,QAAI,IAAO,GAEjB,EAAO,IAAI,GAAI,CAAC,GAAG,CAAQ,CAAC,EAC5B,EAAS,OAAS,EACZ,QAAI,IAAO,GAEjB,EAAS,KAAK,EAAO,MAAM,CAAC,EACtB,QAAI,IAAO,GAEjB,EAAS,KAAK,EAAO,MAAM,CAAC,EACtB,QAAI,IAAO,GAEjB,EAAS,KAAK,GAAU,CAAM,CAAC,EACzB,QAAI,GAAM,IAAM,GAAM,IAC5B,EAAS,KAAK,EAAK,GAAG,EAChB,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,EAAS,MAAM,EAAK,KAAO,IAAM,EAAK,GAAG,EACnC,QAAI,GAAM,KAAO,GAAM,IAAK,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,EAAS,KAAK,EAAE,EAAK,KAAO,IAAM,EAAK,GAAG,GAI5C,OAAO,EAMR,SAAS,EAAS,CAAC,EAAwB,CAC1C,IAAI,EAAM,GACJ,EAAc,kBAChB,EAAO,GAEX,MAAO,CAAC,EAAM,CACb,IAAM,EAAO,EAAO,MAAM,EAC1B,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAS,IAAM,EAAI,GAAQ,EAAI,EAAO,GAC5C,GAAI,IAAW,GAAM,CACpB,EAAO,GACP,MAED,GAAI,IAAW,GACd,GAAO,KACD,KACN,IAAM,EAAO,EAAY,GACzB,GAAI,IAAS,OAAW,GAAO,IAKlC,OAAO,WAAW,CAAG,EAMtB,SAAS,EAAgB,CAAC,EAA6B,CACtD,IAAM,EAAO,GAAU,CAAM,EACvB,EAAsB,CAAC,EAE7B,QAAY,EAAI,KAAa,EAC5B,OAAQ,OACF,MACJ,EAAO,WAAa,EACpB,UACI,IACJ,EAAO,YAAc,EAAS,GAC9B,UACI,MACJ,EAAO,QAAU,EAAS,GAC1B,UACI,MACJ,EAAO,SAAW,EAAS,GAC3B,UACI,IACJ,EAAO,OAAS,EAAS,GACzB,MAIH,OAAO,EAMR,SAAS,EAAe,CAAC,EAA4B,CACpD,IAAM,EAAO,GAAU,CAAM,EACvB,EAAqB,CAAC,EAGtB,EAAY,EAAK,IAAI,EAAE,EAC7B,GAAI,GAAa,EAAU,QAAU,EACpC,EAAO,YAAc,EAAU,GAC/B,EAAO,cAAgB,EAAU,GAGlC,OAAO,EAMR,SAAS,EAAoB,CAAC,EAAiC,CAC9D,IAAM,EAAO,GAAU,CAAM,EACvB,EAA0B,CAAC,EAEjC,QAAY,EAAI,KAAa,EAAM,CAClC,IAAM,EAAM,EAAS,GAErB,OAAQ,OACF,GACJ,EAAO,WAAa,GAAgB,CAAQ,EAC5C,UACI,GACJ,EAAO,WAAa,GAAgB,CAAQ,EAC5C,UACI,GACJ,EAAO,YAAc,GAAgB,CAAQ,EAC7C,UACI,GACJ,EAAO,iBAAmB,GAAgB,CAAQ,EAClD,UACI,MACJ,EAAO,UAAY,EACnB,UACI,MACJ,EAAO,UAAY,EACnB,UACI,MACJ,EAAO,SAAW,EAClB,UACI,IACJ,EAAO,MAAQ,EACf,UACI,IACJ,EAAO,MAAQ,EACf,UACI,MACJ,EAAO,UAAY,GAAgB,CAAQ,EAC3C,UACI,MACJ,EAAO,UAAY,GAAgB,CAAQ,EAC3C,UACI,MACJ,EAAO,cAAgB,EACvB,UACI,MACJ,EAAO,gBAAkB,EACzB,UACI,IACJ,EAAO,MAAQ,EACf,UACI,IACJ,EAAO,QAAU,EACjB,UACI,IACJ,EAAO,MAAQ,EACf,OAIH,OAAO,EAMR,SAAS,EAAe,CAAC,EAA4B,CACpD,IAAM,EAAmB,CAAC,EACtB,EAAQ,EACZ,QAAW,KAAS,EACnB,GAAS,EACT,EAAO,KAAK,CAAK,EAElB,OAAO,EAMR,SAAS,EAAa,CAAC,EAAgB,EAAiC,CACvE,IAAM,EAAS,EAAO,MAAM,EAE5B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAM,EAAO,WAAW,CAAS,EACvC,MAAO,CACN,SACA,OAAQ,CAAC,IAAoB,EAAI,IAAY,CAC9C,EACM,QAAI,IAAW,EAAG,CACxB,IAAM,EAAU,EAAO,OAAO,EACxB,EAA+C,CAAC,EAEtD,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,EAAO,KAAK,CACX,MAAO,EAAO,OAAO,EACrB,GAAI,EAAO,MAAM,CAClB,CAAC,EAIF,OAFA,EAAO,OAAO,EAEP,CACN,SACA,OAAQ,CAAC,IAAoB,CAC5B,IAAI,EAAK,EACL,EAAK,EAAO,OAAS,EACzB,MAAO,EAAK,EAAI,CACf,IAAM,EAAM,KAAK,MAAM,EAAK,GAAM,CAAC,EAC7B,EAAQ,EAAO,GACrB,GAAI,GAAS,EAAM,OAAS,EAC3B,EAAK,EAEL,OAAK,EAAM,EAIb,OADmB,EAAO,IACP,IAAM,EAE3B,EACM,QAAI,IAAW,EAAG,CAExB,IAAM,EAAU,EAAO,OAAO,EACxB,EAA+C,CAAC,EAEtD,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,EAAO,KAAK,CACX,MAAO,EAAO,OAAO,EACrB,GAAI,EAAO,OAAO,CACnB,CAAC,EAIF,OAFA,EAAO,OAAO,EAEP,CACN,SACA,OAAQ,CAAC,IAAoB,CAC5B,IAAI,EAAK,EACL,EAAK,EAAO,OAAS,EACzB,MAAO,EAAK,EAAI,CACf,IAAM,EAAM,KAAK,MAAM,EAAK,GAAM,CAAC,EAC7B,EAAQ,EAAO,GACrB,GAAI,GAAS,EAAM,OAAS,EAC3B,EAAK,EAEL,OAAK,EAAM,EAIb,OADmB,EAAO,IACP,IAAM,EAE3B,EAGD,MAAO,CAAE,SAAQ,OAAQ,IAAM,CAAE,EAMlC,SAAS,EAAuB,CAAC,EAAoC,CACpE,IAAM,EAAc,EAAO,OAErB,EAAU,EAAO,OAAO,EACxB,EAAS,EAAO,OAAO,EACvB,EAA4B,EAAO,OAAO,EAC1C,EAAyB,EAAO,OAAO,EACvC,EAAqC,CAAC,EAE5C,QAAS,EAAI,EAAG,EAAI,EAAwB,IAC3C,EAAyB,KAAK,EAAO,OAAO,CAAC,EAI9C,EAAO,KAAK,EAAc,CAAyB,EACnD,IAAM,EAAsB,GAAyB,CAAM,EAGrD,EAAyC,CAAC,EAChD,QAAW,KAAU,EACpB,EAAO,KAAK,EAAc,CAAM,EAChC,EAAkB,KAAK,GAAuB,CAAM,CAAC,EAGtD,MAAO,CACN,SACA,sBACA,mBACD,EAMD,SAAS,EAAwB,CAAC,EAAqC,CACtE,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAc,EAAO,OAAO,EAC5B,EAA6B,CAAC,EAEpC,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAgC,CAAC,EACvC,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAK,KAAK,CACT,WAAY,EAAO,QAAQ,EAC3B,UAAW,EAAO,QAAQ,EAC1B,SAAU,EAAO,QAAQ,CAC1B,CAAC,EAEF,EAAQ,KAAK,CAAE,MAAK,CAAC,EAGtB,MAAO,CAAE,YAAW,cAAa,SAAQ,EAM1C,SAAS,EAAsB,CAAC,EAAmC,CAClE,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAiB,EAAO,OAAO,EAC/B,EAAmB,EAAiB,MACpC,GAAa,EAAiB,SAAY,EAE1C,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAc,KAAK,EAAO,OAAO,CAAC,EAGnC,IAAM,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAmB,CAAC,EAC1B,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,GAAI,EACH,EAAO,KAAK,EAAO,MAAM,CAAC,EAE1B,OAAO,KAAK,EAAO,MAAM,CAAC,EAG5B,EAAU,KAAK,CAAM,EAGtB,MAAO,CACN,YACA,mBACA,gBACA,WACD,ECrhBM,SAAS,EAAS,CAAC,EAAgB,EAAgC,CACzE,IAAM,EAAc,EAAO,OACrB,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAE1B,EAAoC,CAAC,EAC3C,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAgB,KAAK,CACpB,WAAY,EAAO,OAAO,EAC1B,WAAY,EAAO,OAAO,EAC1B,OAAQ,EAAO,OAAO,CACvB,CAAC,EAIF,IAAM,EAAY,IAAI,IAChB,EAAgB,IAAI,IAE1B,QAAW,KAAU,EAAiB,CAErC,GAAI,EAAc,IAAI,EAAO,MAAM,EAAG,CACrC,IAAM,EAAM,GAAG,EAAO,cAAc,EAAO,aAE3C,QAAY,EAAa,KAAa,EAAW,CAEhD,IAAM,EADQ,EAAY,MAAM,GAAG,EACN,GAC7B,GACC,GACA,OAAO,SAAS,EAAgB,EAAE,IAAM,EAAO,OAC9C,CACD,EAAU,IAAI,EAAK,CAAQ,EAC3B,OAGF,SAED,EAAc,IAAI,EAAO,MAAM,EAE/B,IAAM,EAAiB,EAAO,MAC7B,EAAO,OACP,EAAc,EAAO,MACtB,EACM,EAAW,GAAkB,CAAc,EAEjD,GAAI,EAAU,CACb,IAAM,EAAM,GAAG,EAAO,cAAc,EAAO,aAC3C,EAAU,IAAI,EAAK,CAAQ,GAM7B,IAAM,EAAgB,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,KAAK,EAC5D,EAAoC,KAExC,QAAW,KAAO,EAAe,CAChC,IAAM,EAAW,EAAU,IAAI,CAAG,EAClC,GAAI,GAAY,EAAS,SAAW,GAAI,CACvC,EAAe,EACf,OAKF,GAAI,CAAC,GACJ,QAAW,KAAY,EAAU,OAAO,EACvC,GAAI,EAAS,SAAW,GAAI,CAC3B,EAAe,EACf,OAKH,MAAO,CACN,UACA,YACA,kBACA,YACA,cACD,EAGD,SAAS,EAAiB,CAAC,EAAqC,CAG/D,OAFe,EAAO,OAAO,OAGvB,GACJ,OAAO,GAAiB,CAAM,MAC1B,GACJ,OAAO,GAAiB,CAAM,MAC1B,IACJ,OAAO,GAAkB,CAAM,MAC3B,IACJ,OAAO,GAAkB,CAAM,UAG/B,OAAO,MAIV,SAAS,EAAgB,CAAC,EAA6B,CACtD,IAAM,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAC1B,EAAe,EAAO,WAAW,GAAG,EAE1C,MAAO,CACN,OAAQ,EACR,eACA,MAAM,CAAC,EAAwC,CAC9C,GAAI,GAAa,GAAK,EAAY,IACjC,OAAO,EAAa,GAErB,OAEF,EAGD,SAAS,EAAgB,CAAC,EAA6B,CACtD,IAAM,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAE1B,EADa,EAAO,OAAO,EACH,EAE9B,EAAO,KAAK,CAAC,EAEb,IAAM,EAAW,EAAO,YAAY,CAAQ,EAC5C,EAAO,KAAK,CAAC,EACb,IAAM,EAAa,EAAO,YAAY,CAAQ,EACxC,EAAW,EAAO,WAAW,CAAQ,EAGrC,EAAoB,EAAO,OAC3B,EAAiB,EAAO,YAAY,CAAQ,EAI5C,EADiB,EAAO,UACQ,EAChC,EAAe,EAAO,YAAY,CAAY,EAEpD,MAAO,CACN,OAAQ,EACR,WACA,WACA,aACA,WACA,iBACA,eACA,MAAM,CAAC,EAAwC,CAC9C,GAAI,EAAY,MAAQ,OAGxB,IAAI,EAAM,EACN,EAAO,EAAW,EAEtB,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAU,EAAS,GACzB,GAAI,IAAY,OAAW,MAE3B,GAAI,EAAY,EACf,EAAM,EAAM,EACN,KACN,IAAM,EAAY,EAAW,GAC7B,GAAI,IAAc,OAAW,MAC7B,GAAI,EAAY,EACf,EAAO,EAAM,EACP,KAEN,IAAM,EAAgB,EAAe,GAC/B,EAAU,EAAS,GACzB,GAAI,IAAkB,QAAa,IAAY,OAAW,MAE1D,GAAI,IAAkB,EACrB,OAAQ,EAAY,EAAW,MAKhC,IAAM,EACL,EAAgB,GAAK,EAAW,IAAQ,EAAY,GAE/C,EAAU,EAAa,GAC7B,GAAI,IAAY,QAAa,IAAY,EACxC,MAAO,GAER,OAAQ,EAAU,EAAW,QAKhC,OAEF,EAGD,SAAS,EAAiB,CAAC,EAA8B,CACxD,EAAO,KAAK,CAAC,EACb,IAAM,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAC1B,EAAY,EAAO,OAAO,EAE1B,EAAqC,MAAM,CAAS,EAC1D,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAO,GAAK,CACX,cAAe,EAAO,OAAO,EAC7B,YAAa,EAAO,OAAO,EAC3B,aAAc,EAAO,OAAO,CAC7B,EAGD,MAAO,CACN,OAAQ,GACR,SACA,MAAM,CAAC,EAAwC,CAE9C,IAAI,EAAM,EACN,EAAO,EAAO,OAAS,EAE3B,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAQ,EAAO,GACrB,GAAI,CAAC,EAAO,MAEZ,GAAI,EAAY,EAAM,YACrB,EAAM,EAAM,EACN,QAAI,EAAY,EAAM,cAC5B,EAAO,EAAM,EAGb,YAAO,EAAM,cAAgB,EAAY,EAAM,eAIjD,OAEF,EAGD,SAAS,EAAiB,CAAC,EAA8B,CACxD,IAAM,EAAgB,EAAO,OAAS,EAChC,EAAU,EAAO,OAAO,EACxB,EAAwB,EAAO,OAAO,EAGtC,EAID,CAAC,EAEN,QAAS,EAAI,EAAG,EAAI,EAAuB,IAC1C,EAAW,KAAK,CACf,YAAa,EAAO,OAAO,EAC3B,iBAAkB,EAAO,OAAO,EAChC,oBAAqB,EAAO,OAAO,CACpC,CAAC,EAIF,IAAM,EAAgD,CAAC,EAEvD,QAAW,KAAO,EAAY,CAC7B,IAAI,EAAoD,KACpD,EAA0D,KAG9D,GAAI,EAAI,mBAAqB,EAAG,CAC/B,IAAM,EAAY,EAAO,UAAU,EAAgB,EAAI,gBAAgB,EACjE,EAAwB,EAAU,OAAO,EAC/C,EAAa,CAAC,EAEd,QAAS,EAAI,EAAG,EAAI,EAAuB,IAC1C,EAAW,KAAK,CACf,kBAAmB,EAAU,OAAO,EACpC,gBAAiB,EAAU,MAAM,CAClC,CAAC,EAKH,GAAI,EAAI,sBAAwB,EAAG,CAClC,IAAM,EAAY,EAAO,UACxB,EAAgB,EAAI,mBACrB,EACM,EAAiB,EAAU,OAAO,EACxC,EAAgB,CAAC,EAEjB,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAc,KAAK,CAClB,aAAc,EAAU,OAAO,EAC/B,QAAS,EAAU,OAAO,CAC3B,CAAC,EAIH,EAAmB,KAAK,CACvB,YAAa,EAAI,YACjB,aACA,eACD,CAAC,EAGF,MAAO,CACN,OAAQ,GACR,qBACA,MAAM,CAAC,EAAyC,CAE/C,QAED,eAAe,CACd,EACA,EACkC,CAElC,IAAI,EAAM,EACN,EAAO,EAAmB,OAAS,EACnC,EAAyC,KAE7C,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAM,EAAmB,GAC/B,GAAI,CAAC,EAAK,MAEV,GAAI,EAAoB,EAAI,YAC3B,EAAM,EAAM,EACN,QAAI,EAAoB,EAAI,YAClC,EAAO,EAAM,EACP,KACN,EAAS,EACT,OAIF,GAAI,CAAC,EACJ,OAID,GAAI,EAAO,cAAe,CACzB,IAAI,EAAK,EACL,EAAK,EAAO,cAAc,OAAS,EAEvC,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,IAAQ,EACpB,EAAU,EAAO,cAAc,GACrC,GAAI,CAAC,EAAS,MAEd,GAAI,EAAY,EAAQ,aACvB,EAAK,EAAM,EACL,QAAI,EAAY,EAAQ,aAC9B,EAAK,EAAM,EAEX,YAAO,EAAQ,SAMlB,GAAI,EAAO,WACV,QAAW,KAAS,EAAO,WAAY,CACtC,IAAM,EAAM,EAAM,kBAAoB,EAAM,gBAC5C,GAAI,GAAa,EAAM,mBAAqB,GAAa,EACxD,MAAO,UAKV,OAEF,EAIM,SAAS,EAAU,CAAC,EAAiB,EAA4B,CACvE,OAAO,EAAK,cAAc,OAAO,CAAS,GAAK,ECtazC,IAAK,IAAL,CAAK,IAAL,CACN,eAAa,GAAb,aACA,UAAQ,GAAR,QACA,aAAW,GAAX,WACA,mBAAiB,GAAjB,iBACA,sBAAoB,GAApB,oBACA,mBAAiB,GAAjB,iBACA,sBAAoB,GAApB,oBACA,kBAAgB,GAAhB,gBACA,qBAAmB,GAAnB,mBACA,UAAQ,IAAR,QACA,cAAY,IAAZ,YACA,cAAY,IAAZ,YACA,iBAAe,IAAf,eACA,cAAY,IAAZ,YACA,iBAAe,IAAf,eACA,UAAQ,IAAR,QACA,aAAW,IAAX,WACA,sBAAoB,IAApB,oBACA,yBAAuB,IAAvB,uBACA,iBAAe,IAAf,eACA,oBAAkB,IAAlB,kBACA,6BAA2B,IAA3B,2BACA,gCAA8B,IAA9B,8BACA,WAAS,IAAT,SACA,cAAY,IAAZ,YACA,uBAAqB,IAArB,qBACA,0BAAwB,IAAxB,wBACA,SAAO,IAAP,OACA,YAAU,IAAV,UACA,qBAAmB,IAAnB,mBACA,wBAAsB,IAAtB,sBACA,cAAY,IAAZ,cAhCW,SAkLL,IAAK,IAAL,CAAK,IAAL,CACN,QAAM,GAAN,MACA,WAAS,GAAT,SACA,YAAU,GAAV,YAHW,SAML,IAAK,IAAL,CAAK,IAAL,CACN,UAAQ,GAAR,QACA,QAAM,GAAN,MACA,SAAO,GAAP,OACA,YAAU,GAAV,UACA,aAAW,GAAX,WACA,UAAQ,GAAR,QACA,WAAS,GAAT,SACA,WAAS,GAAT,SACA,YAAU,GAAV,UACA,YAAU,GAAV,UACA,aAAW,IAAX,WACA,QAAM,IAAN,MACA,SAAO,IAAP,OACA,WAAS,IAAT,SACA,YAAU,IAAV,UACA,WAAS,IAAT,SACA,YAAU,IAAV,UACA,eAAa,IAAb,aACA,cAAY,IAAZ,YACA,cAAY,IAAZ,YACA,cAAY,IAAZ,YACA,eAAa,IAAb,aACA,cAAY,IAAZ,YACA,aAAW,IAAX,WACA,QAAM,IAAN,MACA,eAAa,IAAb,aACA,UAAQ,IAAR,QACA,eAAa,IAAb,eA5BW,SA6FL,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAc,EAAO,OAErB,EAAU,EAAO,OAAO,EACxB,EAAsB,EAAO,OAAO,EACpC,EAAyB,EAAO,OAAO,EACvC,EAAqB,EAAO,OAAO,EACnC,EAAkB,EAAO,OAAO,EAGhC,EAAsC,CAAC,EAC7C,GAAI,IAA2B,GAAK,EAAsB,EAAG,CAC5D,EAAO,KAAK,EAAc,CAAsB,EAChD,QAAS,EAAI,EAAG,EAAI,EAAqB,IACxC,EAAiB,KAAK,CACrB,QAAS,EAAO,OAAO,EACvB,gBAAiB,EAAO,OAAO,EAC/B,UAAW,EAAO,OAAO,CAC1B,CAAC,EAKH,IAAM,EAA8B,CAAC,EACrC,GAAI,IAAuB,GAAK,EAAkB,EAAG,CACpD,EAAO,KAAK,EAAc,CAAkB,EAC5C,QAAS,EAAI,EAAG,EAAI,EAAiB,IACpC,EAAa,KAAK,CACjB,QAAS,EAAO,OAAO,EACvB,aAAc,EAAO,OAAO,CAC7B,CAAC,EAIH,IAAM,EAAoB,CACzB,UACA,mBACA,cACD,EAGA,GAAI,GAAW,EAAG,CACjB,EAAO,KAAK,EAAc,EAAE,EAE5B,IAAM,EAAsB,EAAO,OAAO,EACpC,EAAkB,EAAO,OAAO,EAChC,EAAiB,EAAO,OAAO,EAC/B,EAAkB,EAAO,OAAO,EAChC,EAA2B,EAAO,OAAO,EAG/C,GAAI,IAAwB,EAAG,CAC9B,EAAO,KAAK,EAAc,CAAmB,EAC7C,IAAM,EAAa,EAAO,OAAO,EACjC,EAAO,sBAAwB,CAAC,EAEhC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAU,EAAO,OAAO,EACxB,EAAc,EAAO,OAAO,EAG5B,EAAW,EAAO,OACxB,EAAO,KACN,EAAc,EAAsB,EAAI,EAAI,EAAI,EAAI,EAAc,CACnE,EACA,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAC5C,EAAO,KAAK,CAAQ,EAEpB,EAAO,sBAAsB,KAAK,CAAE,UAAS,OAAM,CAAC,GAKtD,GAAI,IAAoB,EAAG,CAC1B,EAAO,KAAK,EAAc,CAAe,EACzC,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAyB,CAAC,EAEhC,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAa,KAAK,EAAO,OAAO,CAAC,EAGlC,EAAO,UAAY,CAAC,EACpB,QAAW,KAAU,EACpB,EAAO,KAAK,EAAc,EAAkB,CAAM,EAClD,EAAO,UAAU,KAAK,GAAW,EAAQ,CAAW,CAAC,EAKvD,GAAI,IAAmB,EACtB,EAAO,KAAK,EAAc,CAAc,EACxC,EAAO,SAAW,GAAc,EAAQ,CAAW,EAIpD,GAAI,IAAoB,EACvB,EAAO,KAAK,EAAc,CAAe,EACzC,EAAO,UAAY,GAAsB,CAAM,EAIhD,GAAI,IAA6B,EAChC,EAAO,KAAK,EAAc,CAAwB,EAClD,EAAO,mBAAqB,GAAwB,CAAM,EAI5D,OAAO,EAMR,SAAS,EAAU,CAAC,EAAgB,EAA4B,CAC/D,IAAM,EAAS,EAAO,MAAM,EAE5B,OAAQ,OACF,GACJ,MAAO,CACN,SACA,UAAW,EAAO,MAAM,EACxB,gBAAiB,EAAO,OAAO,CAChC,MAEI,GACJ,MAAO,CACN,SACA,aAAc,EAAO,OAAO,EAC5B,MAAO,EAAO,QAAQ,CACvB,MAEI,GACJ,MAAO,CACN,SACA,aAAc,EAAO,OAAO,EAC5B,MAAO,EAAO,QAAQ,EACtB,aAAc,EAAO,OAAO,CAC7B,MAEI,OACA,GAA+B,CACnC,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAElB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,GAAK,CAAe,EAChD,IAAM,EAAY,GAAe,CAAM,EAGvC,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,YAAW,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CACpD,KAEK,OACA,GAA+B,CACnC,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAU,EAAO,OAAO,EACxB,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAClB,EAAU,EAAO,OAAO,EAExB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,GAAK,CAAe,EAChD,IAAM,EAAY,GAAe,CAAM,EAGvC,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,YAAW,KAAI,KAAI,UAAS,KAAI,KAAI,SAAQ,CAC9D,KAEK,OACA,GAA8B,CAClC,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAU,EAAO,MAAM,EACvB,EAAU,EAAO,MAAM,EACvB,EAAa,EAAO,QAAQ,EAC5B,EAAW,EAAO,QAAQ,EAE1B,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,GAAK,CAAe,EAChD,IAAM,EAAY,GAAe,CAAM,EAGvC,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,YAAW,UAAS,UAAS,aAAY,UAAS,CACpE,KAEK,IAAmB,CACvB,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAU,EAAO,OAAO,EAExB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,SAAQ,CACjC,KAEK,IACJ,MAAO,CACN,SACA,QAAS,EAAO,OAAO,CACxB,MAEI,QACA,IAA0B,CAC9B,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAkB,EAAO,OAAO,EAEhC,EAAW,EAAO,OAAS,EAAI,EAC/B,EAAe,EAAO,OAAS,EAAI,EAEzC,EAAO,KAAK,CAAY,EACxB,IAAM,EAAuB,CAC5B,GAAI,EAAO,MAAM,EACjB,GAAI,EAAO,MAAM,EACjB,GAAI,EAAO,MAAM,EACjB,GAAI,EAAO,MAAM,EACjB,GAAI,EAAO,MAAM,EACjB,GAAI,EAAO,MAAM,CAClB,EAEA,EAAO,KAAK,CAAQ,EACpB,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAE5C,MAAO,CAAE,SAAQ,QAAO,WAAU,CACnC,KAEK,QACA,IAA0B,CAC9B,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAK,EAAO,MAAM,EAClB,EAAK,EAAO,MAAM,EAElB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,KAAI,IAAG,CAChC,KAEK,QACA,IAAsB,CAC1B,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAS,EAAO,QAAQ,EACxB,EAAS,EAAO,QAAQ,EAExB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,SAAQ,QAAO,CACxC,KAEK,QACA,IAAkC,CACtC,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAS,EAAO,QAAQ,EACxB,EAAS,EAAO,QAAQ,EACxB,EAAU,EAAO,MAAM,EACvB,EAAU,EAAO,MAAM,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,GAAK,CAAW,EAC5C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,SAAQ,SAAQ,UAAS,SAAQ,CAC1D,KAEK,QACA,IAA6B,CACjC,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAQ,EAAO,QAAQ,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,OAAQ,EAAO,OAAQ,CAAM,CACtD,KAEK,QACA,IAAyC,CAC7C,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAQ,EAAO,QAAQ,EACvB,EAAU,EAAO,MAAM,EACvB,EAAU,EAAO,MAAM,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,OAAQ,EAAO,OAAQ,EAAO,UAAS,SAAQ,CACxE,KAEK,QACA,IAAuB,CAC3B,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAQ,EAAO,QAAQ,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,OAAM,CAC/B,KAEK,QACA,IAAmC,CACvC,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAQ,EAAO,QAAQ,EACvB,EAAU,EAAO,MAAM,EACvB,EAAU,EAAO,MAAM,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,QAAO,UAAS,SAAQ,CACjD,KAEK,QACA,IAAqB,CACzB,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAa,EAAO,QAAQ,EAC5B,EAAa,EAAO,QAAQ,EAE5B,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAW,EAC3C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,aAAY,YAAW,CAChD,KAEK,QACA,IAAiC,CACrC,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAa,EAAO,QAAQ,EAC5B,EAAa,EAAO,QAAQ,EAC5B,EAAU,EAAO,MAAM,EACvB,EAAU,EAAO,MAAM,EAEvB,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,GAAK,CAAW,EAC5C,IAAM,EAAQ,GAAW,EAAQ,CAAW,EAG5C,OAFA,EAAO,KAAK,CAAQ,EAEb,CAAE,SAAQ,QAAO,aAAY,aAAY,UAAS,SAAQ,CAClE,KAEK,IAAuB,CAC3B,IAAM,EAAoB,EAAO,OAAO,EAClC,EAAgB,EAAO,MAAM,EAC7B,EAAsB,EAAO,OAAO,EAEpC,EAAY,EAAO,OAAS,EAAI,EAChC,EAAc,EAAO,OAAS,EAAI,EAExC,EAAO,KAAK,CAAS,EACrB,IAAM,EAAc,GAAW,EAAQ,CAAW,EAElD,EAAO,KAAK,CAAW,EACvB,IAAM,EAAgB,GAAW,EAAQ,CAAW,EAEpD,MAAO,CAAE,SAAQ,cAAa,gBAAe,eAAc,CAC5D,SAGC,MAAU,MAAM,yBAAyB,GAAQ,GAOpD,SAAS,EAAc,CAAC,EAA2B,CAClD,IAAM,EAAS,EAAO,MAAM,EACtB,EAAW,EAAO,OAAO,EACzB,EAA0B,CAAC,EAEjC,QAAS,EAAI,EAAG,EAAI,EAAU,IAC7B,EAAW,KAAK,CACf,WAAY,EAAO,QAAQ,EAC3B,aAAc,EAAO,OAAO,EAC5B,MAAO,EAAO,QAAQ,CACvB,CAAC,EAGF,MAAO,CAAE,SAAQ,YAAW,EAM7B,SAAS,EAAa,CAAC,EAAgB,EAAoC,CAC1E,IAAM,EAAU,EAAO,MAAM,EACvB,EAAW,EAAO,OAAO,EACzB,EAAwB,CAAC,EAE/B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAa,EAAO,OAAO,EAC3B,EAAgB,EAAO,OAAO,EAE9B,EAAW,EAAO,OACxB,EAAO,KAAK,EAAO,OAAS,EAAI,CAAa,EAE7C,IAAM,EAAY,EAAO,MAAM,EACzB,EAAmB,CACxB,OAAQ,EACR,KAAM,EAAO,MAAM,EACnB,KAAM,EAAO,MAAM,EACnB,KAAM,EAAO,MAAM,EACnB,KAAM,EAAO,MAAM,CACpB,EAEA,GAAI,IAAc,EACjB,EAAQ,aAAe,EAAO,OAAO,EAGtC,EAAO,KAAK,CAAQ,EAEpB,EAAQ,KAAK,CAAE,eAAc,aAAY,SAAQ,CAAC,EAGnD,OAAO,EAMD,SAAS,EAAc,CAC7B,EACA,EACuB,CAEvB,IAAM,EAAU,EAAK,iBACjB,EAAK,EACL,EAAK,EAAQ,OAAS,EAE1B,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,IAAQ,EACpB,EAAS,EAAQ,GACvB,GAAI,CAAC,EAAQ,MAEb,GAAI,EAAO,UAAY,EAAS,CAC/B,IAAM,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAO,UAAW,IAAK,CAC1C,IAAM,EAAQ,EAAK,aAAa,EAAO,gBAAkB,GACzD,GAAI,EAAO,EAAO,KAAK,CAAK,EAE7B,OAAO,EACD,QAAI,EAAO,QAAU,EAC3B,EAAK,EAAM,EAEX,OAAK,EAAM,EAIb,OAAO,KAMD,SAAS,EAAa,CAAC,EAAiB,EAAgC,CAC9E,GAAI,CAAC,EAAK,sBAAuB,OAAO,KAGxC,IAAM,EAAU,EAAK,sBACjB,EAAK,EACL,EAAK,EAAQ,OAAS,EAE1B,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,IAAQ,EACpB,EAAS,EAAQ,GACvB,GAAI,CAAC,EAAQ,MAEb,GAAI,EAAO,UAAY,EACtB,OAAO,EAAO,MACR,QAAI,EAAO,QAAU,EAC3B,EAAK,EAAM,EAEX,OAAK,EAAM,EAIb,OAAO,KAMD,SAAS,EAAa,CAAC,EAAiB,EAA2B,CACzE,OACC,GAAe,EAAM,CAAO,IAAM,MAClC,GAAc,EAAM,CAAO,IAAM,KAOnC,SAAS,EAAqB,CAAC,EAA0B,CACxD,IAAM,EAAS,EAAO,MAAM,EACtB,EAAc,EAAO,MAAM,EAC3B,EAAW,IAAW,EAAI,EAAO,OAAO,EAAI,EAAO,OAAO,EAE1D,GAAa,EAAc,IAAQ,EACnC,GAAc,GAAe,EAAK,IAAQ,EAC1C,EAAY,KAAK,MAAM,EAAY,GAAa,CAAC,EAEjD,EAAmB,CAAC,EAC1B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAI,EAAQ,EACZ,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAS,GAAS,EAAK,EAAO,MAAM,EAIrC,IAAM,GAAa,GAAK,GAAa,EAC/B,EAAQ,EAAQ,EAChB,EAAQ,GAAS,EACvB,EAAO,KAAM,GAAS,GAAM,CAAK,EAGlC,OAAO,EAMR,SAAS,EAAuB,CAAC,EAAoC,CACpE,IAAM,EAAc,EAAO,OACrB,EAAS,EAAO,OAAO,EACvB,EAA4B,EAAO,OAAO,EAC1C,EAAyB,EAAO,OAAO,EAEvC,EAAqC,CAAC,EAC5C,QAAS,EAAI,EAAG,EAAI,EAAwB,IAC3C,EAAyB,KAAK,EAAO,OAAO,CAAC,EAI9C,EAAO,KAAK,EAAc,CAAyB,EACnD,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAc,EAAO,OAAO,EAE5B,EAAsC,CAAC,EAC7C,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAsC,CAAC,EAC7C,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAW,KAAK,CACf,WAAY,EAAO,QAAQ,EAC3B,UAAW,EAAO,QAAQ,EAC1B,SAAU,EAAO,QAAQ,CAC1B,CAAC,EAEF,EAAiB,KAAK,CAAE,YAAW,CAAC,EAIrC,IAAM,EAAyC,CAAC,EAChD,QAAW,KAAU,EAA0B,CAC9C,EAAO,KAAK,EAAc,CAAM,EAChC,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAiB,EAAO,OAAO,EAC/B,EAAmB,EAAO,OAAO,EAEjC,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAc,KAAK,EAAO,OAAO,CAAC,EAInC,IAAM,GAAa,EAAiB,SAAY,EAC1C,EAAY,EAAiB,MAE7B,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAmB,CAAC,EAC1B,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,GAAI,EAAI,EACP,EAAO,KAAK,EAAY,EAAO,MAAM,EAAI,EAAO,MAAM,CAAC,EAEvD,OAAO,KAAK,EAAY,EAAO,MAAM,EAAI,EAAO,KAAK,CAAC,EAGxD,EAAU,KAAK,CAAM,EAGtB,EAAkB,KAAK,CACtB,YACA,iBACA,mBACA,gBACA,WACD,CAAC,EAGF,MAAO,CACN,SACA,4BACA,yBACA,2BACA,mBACA,mBACD,EAMM,SAAS,EAAU,CAAC,EAAiB,EAAkC,CAC7E,GAAI,CAAC,EAAK,SAAU,OAAO,KAE3B,QAAW,KAAU,EAAK,SACzB,GAAI,GAAW,EAAO,cAAgB,GAAW,EAAO,WACvD,OAAO,EAAO,QAIhB,OAAO,KAMD,SAAS,EAAsB,CACrC,EACA,EACA,EACS,CACT,GAAI,CAAC,EAAK,oBAAsB,CAAC,EAAK,UAAW,MAAO,GAGxD,IAAM,EAAc,EAAK,UAAU,GACnC,GAAI,IAAgB,OAAW,MAAO,GAEtC,IAAM,EAAQ,GAAe,GACvB,EAAQ,EAAc,MAEtB,EAAQ,EAAK,mBACb,EAAO,EAAM,kBAAkB,GACrC,GAAI,CAAC,EAAM,MAAO,GAElB,IAAM,EAAS,EAAK,UAAU,GAC9B,GAAI,CAAC,EAAQ,MAAO,GAGpB,IAAI,EAAS,EACb,QAAS,EAAI,EAAG,EAAI,EAAK,iBAAkB,IAAK,CAC/C,IAAM,EAAc,EAAK,cAAc,GACvC,GAAI,IAAgB,OAAW,SAC/B,IAAM,EAAS,EAAM,iBAAiB,GACtC,GAAI,CAAC,EAAQ,SAGb,IAAI,EAAS,EACb,QAAS,EAAI,EAAG,EAAI,EAAO,WAAW,QAAU,EAAI,EAAO,OAAQ,IAAK,CACvE,IAAM,EAAO,EAAO,WAAW,GACzB,EAAQ,EAAO,GACrB,GAAI,IAAS,QAAa,IAAU,OAAW,SAO/C,GANA,GAAU,GACT,EACA,EAAK,WACL,EAAK,UACL,EAAK,QACN,EACI,IAAW,EAAG,MAGnB,IAAM,EAAQ,EAAO,GACrB,GAAI,IAAU,OACb,GAAU,EAAQ,EAIpB,OAAO,EAMR,SAAS,EAAmB,CAC3B,EACA,EACA,EACA,EACS,CAET,GAAI,IAAS,EAAG,MAAO,GAGvB,GAAI,IAAU,EAAM,MAAO,GAG3B,GAAI,EAAQ,GAAS,EAAQ,EAAK,MAAO,GAGzC,GAAI,EAAQ,EAAM,CACjB,GAAI,IAAU,EAAM,MAAO,GAC3B,OAAQ,EAAQ,IAAU,EAAO,GAC3B,KACN,GAAI,IAAS,EAAK,MAAO,GACzB,OAAQ,EAAM,IAAU,EAAM,IAOzB,SAAS,EAAQ,CAAC,EAA0B,CAClD,OAAO,EAAK,SAAW,GAAK,EAAK,wBAA0B,OAMrD,SAAS,EAAa,CAAC,EAAiB,EAA6B,CAC3E,OAAO,EAAK,YAAY,IAAU,KC5/B5B,IAAK,IAAL,CAAK,IAAL,CACN,8BAA4B,GAA5B,4BACA,6BAA2B,GAA3B,6BAFW,SAQL,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAc,EAAO,OAErB,EAAU,EAAO,OAAO,EACxB,EAAoB,EAAO,OAAO,EAClC,EAAc,EAAO,OAAO,EAC5B,EAAkB,EAAO,OAAO,EAChC,EAA0B,EAAO,OAAO,EAGxC,EAA+B,CAAC,EACtC,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAmB,KAAK,EAAO,OAAO,CAAC,EAIxC,EAAO,KAAK,EAAc,CAAuB,EACjD,IAAM,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAiB,IACpC,EAAa,KAAK,CACjB,KAAM,EAAO,MAAM,EACnB,MAAO,EAAO,MAAM,EACpB,IAAK,EAAO,MAAM,EAClB,MAAO,EAAO,MAAM,CACrB,CAAC,EAIF,IAAM,EAA2B,CAAC,EAClC,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAa,EAAmB,GACtC,GAAI,IAAe,OAAW,SAC9B,IAAM,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAmB,IAAK,CAC3C,IAAM,EAAQ,EAAa,EAAa,GACxC,GAAI,EAAO,EAAO,KAAK,CAAK,EAE7B,EAAS,KAAK,CAAE,QAAO,CAAC,EAIzB,IAAI,EACA,EACA,EAEJ,GAAI,GAAW,EAAG,CAEjB,EAAO,KAAK,EAAc,GAAK,EAAc,CAAC,EAE9C,IAAM,EAA0B,EAAO,OAAO,EACxC,EAA2B,EAAO,OAAO,EACzC,EAAgC,EAAO,OAAO,EAEpD,GAAI,IAA4B,EAAG,CAClC,EAAO,KAAK,EAAc,CAAuB,EACjD,EAAe,CAAC,EAChB,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAa,KAAK,EAAO,OAAO,CAAC,EAInC,GAAI,IAA6B,EAAG,CACnC,EAAO,KAAK,EAAc,CAAwB,EAClD,EAAgB,CAAC,EACjB,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAc,KAAK,EAAO,OAAO,CAAC,EAIpC,GAAI,IAAkC,EAAG,CACxC,EAAO,KAAK,EAAc,CAA6B,EACvD,EAAqB,CAAC,EACtB,QAAS,EAAI,EAAG,EAAI,EAAmB,IACtC,EAAmB,KAAK,EAAO,OAAO,CAAC,GAK1C,MAAO,CACN,UACA,cACA,oBACA,WACA,eACA,gBACA,oBACD,EAMM,SAAS,EAAQ,CACvB,EACA,EACA,EACe,CACf,IAAM,EAAU,EAAK,SAAS,GAC9B,GAAI,CAAC,EAAS,OAAO,KACrB,OAAO,EAAQ,OAAO,IAAe,KAM/B,SAAS,EAAW,CAAC,EAAsB,CACjD,MAAO,QAAQ,EAAM,QAAQ,EAAM,UAAU,EAAM,UAAU,EAAM,MAAQ,KAAK,QAAQ,CAAC,KAMnF,SAAS,EAAU,CAAC,EAAsB,CAChD,IAAM,EAAI,EAAM,IAAI,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EAC1C,EAAI,EAAM,MAAM,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EAC5C,EAAI,EAAM,KAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EACjD,GAAI,EAAM,QAAU,IACnB,MAAO,IAAI,IAAI,IAAI,IAEpB,IAAM,EAAI,EAAM,MAAM,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EAClD,MAAO,IAAI,IAAI,IAAI,IAAI,IC/GjB,IAAK,IAAL,CAAK,IAAL,CAEN,2BAAyB,GAAzB,yBAEA,cAAY,GAAZ,YAEA,sBAAoB,GAApB,oBAEA,eAAa,GAAb,aAEA,yBAAuB,GAAvB,uBAEA,4BAA0B,GAA1B,0BAEA,kBAAgB,GAAhB,gBAEA,iBAAe,GAAf,eAEA,eAAa,GAAb,aAEA,qBAAmB,IAAnB,mBAEA,cAAY,IAAZ,YAEA,0BAAwB,IAAxB,wBAEA,sBAAoB,IAApB,oBAEA,uBAAqB,IAArB,qBAEA,iBAAe,IAAf,eAEA,0BAAwB,IAAxB,wBAEA,qBAAmB,IAAnB,mBAEA,iBAAe,IAAf,eAEA,mBAAiB,IAAjB,iBAEA,eAAa,IAAb,aAEA,gBAAc,IAAd,cAEA,oBAAkB,IAAlB,kBAEA,eAAa,IAAb,aAEA,gBAAc,IAAd,cAEA,uBAAqB,IAArB,qBAEA,yBAAuB,IAAvB,uBAEA,aAAW,IAAX,WAEA,0BAAwB,IAAxB,wBAEA,4BAA0B,IAA1B,0BAEA,8BAA4B,IAA5B,4BAEA,mBAAiB,IAAjB,iBAEA,wBAAsB,IAAtB,sBAEA,kBAAgB,IAAhB,gBAEA,0BAAwB,IAAxB,wBAEA,2BAAyB,IAAzB,yBAEA,cAAY,IAAZ,YAEA,cAAY,IAAZ,YAEA,gBAAc,IAAd,cAEA,oBAAkB,KAAlB,oBA9EW,SAoFL,IAAK,IAAL,CAAK,IAAL,CACN,wBAAsB,GAAtB,sBACA,yBAAuB,GAAvB,uBACA,sBAAoB,GAApB,oBACA,uBAAqB,GAArB,qBACA,oBAAkB,GAAlB,kBACA,qBAAmB,GAAnB,mBACA,YAAU,GAAV,UACA,aAAW,GAAX,WACA,oBAAkB,GAAlB,kBACA,qBAAmB,GAAnB,mBACA,yBAAuB,IAAvB,uBACA,0BAAwB,IAAxB,wBACA,uBAAqB,IAArB,qBACA,wBAAsB,IAAtB,sBACA,6BAA2B,IAA3B,2BACA,8BAA4B,IAA5B,4BACA,sBAAoB,IAApB,oBACA,uBAAqB,IAArB,qBACA,0BAAwB,IAAxB,wBACA,2BAAyB,IAAzB,yBACA,0BAAwB,IAAxB,wBACA,2BAAyB,IAAzB,2BAtBW,SA4BL,IAAK,IAAL,CAAK,IAAL,CACN,mBAAiB,GAAjB,iBACA,cAAY,GAAZ,YACA,cAAY,GAAZ,YACA,aAAW,GAAX,WACA,wBAAsB,GAAtB,wBALW,SAWL,IAAK,IAAL,CAAK,IAAL,CACN,qBAAmB,GAAnB,mBACA,qBAAmB,GAAnB,qBAFW,SAQL,IAAK,IAAL,CAAK,IAAL,CACN,sBAAoB,GAApB,oBACA,wBAAsB,GAAtB,sBACA,sBAAoB,GAApB,oBACA,wBAAsB,GAAtB,wBAJW,SAUL,IAAK,IAAL,CAAK,IAAL,CACN,gBAAc,GAAd,cACA,sBAAoB,GAApB,oBACA,sBAAoB,GAApB,sBAHW,SASL,IAAK,IAAL,CAAK,IAAL,CACN,0BAAwB,GAAxB,wBACA,2BAAyB,GAAzB,yBACA,2BAAyB,GAAzB,yBACA,4BAA0B,GAA1B,4BAJW,SAUL,IAAK,IAAL,CAAK,IAAL,CACN,0BAAwB,GAAxB,wBACA,sBAAoB,GAApB,oBACA,uBAAqB,GAArB,qBACA,sBAAoB,GAApB,oBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,sBACA,yBAAuB,GAAvB,uBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,sBACA,uBAAqB,IAArB,qBACA,wBAAsB,IAAtB,sBACA,sBAAoB,IAApB,oBACA,uBAAqB,IAArB,qBACA,wBAAsB,IAAtB,sBACA,yBAAuB,IAAvB,uBACA,wBAAsB,IAAtB,sBACA,yBAAuB,IAAvB,uBACA,uBAAqB,IAArB,qBACA,wBAAsB,IAAtB,sBACA,sBAAoB,IAApB,oBACA,uBAAqB,IAArB,qBACA,yBAAuB,IAAvB,uBACA,0BAAwB,IAAxB,wBACA,yBAAuB,IAAvB,uBACA,0BAAwB,IAAxB,wBACA,2BAAyB,IAAzB,yBACA,4BAA0B,IAA1B,0BACA,2BAAyB,IAAzB,yBACA,4BAA0B,IAA1B,0BACA,0BAAwB,IAAxB,wBACA,2BAAyB,IAAzB,yBACA,0BAAwB,IAAxB,wBACA,2BAAyB,IAAzB,yBACA,4BAA0B,IAA1B,0BACA,6BAA2B,IAA3B,2BACA,2BAAyB,IAAzB,yBACA,4BAA0B,IAA1B,0BACA,2BAAyB,IAAzB,yBACA,4BAA0B,IAA1B,0BACA,yBAAuB,IAAvB,uBACA,0BAAwB,IAAxB,0BAzCW,SA+CL,IAAK,IAAL,CAAK,IAAL,CACN,2BAAyB,GAAzB,yBACA,4BAA0B,GAA1B,0BACA,sBAAoB,GAApB,oBACA,uBAAqB,GAArB,qBACA,gCAA8B,GAA9B,8BACA,iCAA+B,GAA/B,iCANW,SAYL,IAAK,IAAL,CAAK,IAAL,CACN,qBAAmB,GAAnB,mBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,wBAHW,SASL,IAAK,IAAL,CAAK,IAAL,CACN,qBAAmB,GAAnB,mBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,wBAHW,SASL,IAAK,IAAL,CAAK,IAAL,CACN,yBAAuB,GAAvB,uBACA,0BAAwB,GAAxB,wBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,sBACA,yBAAuB,GAAvB,uBACA,0BAAwB,GAAxB,wBACA,uBAAqB,GAArB,qBACA,wBAAsB,GAAtB,sBACA,sBAAoB,GAApB,oBACA,uBAAqB,GAArB,uBAVW,SAgBL,IAAK,IAAL,CAAK,IAAL,CACN,mBAAiB,GAAjB,iBACA,mBAAiB,GAAjB,iBACA,wBAAsB,GAAtB,wBAHW,SASL,IAAK,IAAL,CAAK,IAAL,CACN,0BAAwB,GAAxB,wBACA,yBAAuB,GAAvB,uBACA,sBAAoB,GAApB,oBACA,sBAAoB,GAApB,oBACA,sBAAoB,GAApB,oBACA,sBAAoB,GAApB,oBACA,sBAAoB,GAApB,oBACA,wBAAsB,GAAtB,sBACA,uBAAqB,GAArB,qBACA,uBAAqB,GAArB,qBACA,qBAAmB,IAAnB,mBACA,kBAAgB,IAAhB,gBACA,sBAAoB,IAApB,oBACA,mBAAiB,IAAjB,mBAdW,SAoBL,IAAK,IAAL,CAAK,IAAL,CAEN,cAAY,OAAZ,YAEA,eAAa,OAAb,eAJW,SAUL,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAa,EAAO,OAEpB,EAAU,EAAO,MAAM,EACvB,EAAmB,EAAO,OAAO,EACvC,EAAO,KAAK,CAAC,EACb,EAAO,KAAK,CAAC,EAEb,IAAM,EAA4B,CAAC,EAEnC,QAAS,EAAI,EAAG,EAAI,EAAkB,IAAK,CAC1C,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAY,EAAO,OAAO,EAC1B,EAAqB,EAAO,SAAS,EACrC,EAAe,EAAO,OAAO,EAC7B,EAAsB,EAAe,IACrC,EAAS,EAAO,OAAO,EAGvB,EAA6B,CAAC,EAC9B,EAAc,EAAO,OAE3B,EAAO,KAAK,EAAa,CAAkB,EAC3C,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAS,KAAK,CACb,aAAc,EAAO,OAAO,EAC5B,OAAQ,EAAO,OAAO,CACvB,CAAC,EAGF,EAAO,KAAK,CAAW,EAEvB,EAAS,KAAK,CACb,cACA,YACA,qBACA,eACA,sBACA,SACA,UACD,CAAC,EAGF,MAAO,CAAE,UAAS,UAAS,EAMrB,SAAS,EAAU,CACzB,EACA,EAC4B,CAC5B,OAAO,EAAM,SAAS,KAAK,CAAC,IAAM,EAAE,cAAgB,CAAW,EAMzD,SAAS,EAAc,CAAC,EAAmC,CACjE,OAAO,EAAM,SAMP,SAAS,EAAkB,CAAC,EAAiC,CACnE,OAAQ,EAAQ,aAAe,SAA4B,EAMrD,SAAS,EAAiB,CAChC,EAC6B,CAC7B,OAAO,EAAQ,SAAS,EAAQ,qBAM1B,SAAS,EAAiB,CAChC,EACA,EAC6B,CAC7B,OAAO,EAAQ,SAAS,KAAK,CAAC,IAAM,EAAE,eAAiB,CAAY,EAM7D,SAAS,EAAe,CAC9B,EACA,EACU,CACV,OAAO,EAAQ,SAAS,KAAK,CAAC,IAAM,EAAE,eAAiB,CAAY,EAO7D,SAAS,EAAgB,CAC/B,EACA,EACgB,CAChB,OAAQ,OACF,GACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,WACH,IACJ,MAAO,WACH,IACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,WACH,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,IACJ,GACC,IAAiB,GACjB,IAAiB,EAEjB,MAAO,OAER,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,GACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,IACJ,GAAI,IAAiB,EACpB,MAAO,OAER,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,GACJ,GACC,IAAiB,GACjB,IAAiB,EAEjB,MAAO,OAER,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,OAET,UACI,IAEJ,GAAI,GAAgB,GAAK,GAAgB,GAAI,CAC5C,IAAM,EAAS,KAAK,OAAO,EAAe,GAAK,CAAC,EAAI,EACpD,GAAI,GAAU,GACb,MAAO,KAAK,EAAO,SAAS,EAAE,SAAS,EAAG,GAAG,IAG/C,UACI,IACJ,OAAQ,OACF,GACJ,MAAO,WACH,GACJ,MAAO,WACH,GACJ,MAAO,WACH,GACJ,MAAO,WACH,GACJ,MAAO,WACH,IACJ,MAAO,WACH,IACJ,MAAO,WACH,IACJ,MAAO,WACH,IACJ,MAAO,OAET,UACI,GACJ,MAAO,WACH,IACJ,MAAO,WACH,IACJ,MAAO,OAGT,OAAO,KAOD,SAAS,EAAgB,CAC/B,EAC4D,CAC5D,OAAQ,OACF,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,EACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,EACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,EACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,CACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,EACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,EACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,EACf,MACI,OACJ,MAAO,CACN,YAAa,GACb,aAAc,EACf,MACI,OACJ,MAAO,CAAE,YAAa,EAAkC,aAAc,CAAE,MACpE,OACJ,MAAO,CAAE,YAAa,GAAwB,aAAc,CAAE,MAC1D,OACJ,MAAO,CAAE,YAAa,GAAsB,aAAc,CAAE,EAI9D,GAAI,EAAI,WAAW,IAAI,GAAK,EAAI,SAAW,EAAG,CAC7C,IAAM,EAAM,SAAS,EAAI,MAAM,CAAC,EAAG,EAAE,EACrC,GAAI,GAAO,GAAK,GAAO,GACtB,MAAO,CACN,YAAa,GACb,cAAe,EAAM,GAAK,EAAI,CAC/B,EAIF,OAAO,KCpsBD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAE1B,EAAsB,CAAC,EAC7B,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAU,EAAO,OAAO,EACxB,EAAW,EAAO,OAAO,EAC/B,EAAO,KAAK,CAAE,UAAS,UAAS,CAAC,EAMlC,OAFA,EAAO,KAAK,CAAC,EAAG,IAAM,EAAE,QAAU,EAAE,OAAO,EAEpC,CAAE,UAAS,QAAO,EC/C1B,MAAM,EAAoC,CACxB,aACA,gBAEjB,WAAW,CAAC,EAAuB,EAA8B,CAChE,KAAK,aAAe,EACpB,KAAK,gBAAkB,EAGxB,GAAG,CAAC,EAA0B,CAC7B,IAAM,EAAQ,EAAU,KAAK,aAC7B,GAAI,GAAS,GAAK,EAAQ,KAAK,gBAAgB,OAE9C,OADc,KAAK,gBAAgB,IACnB,EAEjB,MAAO,GAGR,aAAa,CAAC,EAA+B,CAC5C,IAAM,EAAoB,CAAC,EAC3B,QAAS,EAAI,EAAG,EAAI,KAAK,gBAAgB,OAAQ,IAChD,GAAI,KAAK,gBAAgB,KAAO,EAC/B,EAAO,KAAK,KAAK,aAAe,CAAC,EAGnC,OAAO,EAET,CAUA,MAAM,EAAoC,CACxB,OAEjB,WAAW,CAAC,EAA4B,CACvC,KAAK,OAAS,EAGf,GAAG,CAAC,EAA0B,CAE7B,IAAI,EAAM,EACN,EAAO,KAAK,OAAO,OAAS,EAEhC,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAQ,KAAK,OAAO,GAC1B,GAAI,CAAC,EAAO,SAEZ,GAAI,EAAU,EAAM,WACnB,EAAM,EAAM,EACN,QAAI,EAAU,EAAM,aAC1B,EAAO,EAAM,EAEb,YAAO,EAAM,WAIf,MAAO,GAGR,aAAa,CAAC,EAA+B,CAC5C,IAAM,EAAoB,CAAC,EAC3B,QAAW,KAAS,KAAK,OACxB,GAAI,EAAM,aAAe,EACxB,QAAS,EAAI,EAAM,aAAc,GAAK,EAAM,WAAY,IACvD,EAAO,KAAK,CAAC,EAIhB,OAAO,EAET,CAGA,MAAM,EAAkC,CACvC,GAAG,CAAC,EAA2B,CAC9B,MAAO,GAGR,aAAa,CAAC,EAAgC,CAC7C,MAAO,CAAC,EAEV,CAGO,IAAM,GAA4B,IAAI,GAGtC,SAAS,EAAa,CAAC,EAA0B,CACvD,IAAM,EAAS,EAAO,OAAO,EAE7B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAa,EAAO,OAAO,EAC3B,EAAkB,EAAO,YAAY,CAAU,EACrD,OAAO,IAAI,GAAgB,EAAc,CAAe,EAGzD,GAAI,IAAW,EAAG,CACjB,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAiC,MAAM,CAAe,EAE5D,QAAS,EAAI,EAAG,EAAI,EAAiB,IACpC,EAAO,GAAK,CACX,aAAc,EAAO,OAAO,EAC5B,WAAY,EAAO,OAAO,EAC1B,WAAY,EAAO,OAAO,CAC3B,EAGD,OAAO,IAAI,GAAgB,CAAM,EAGlC,MAAU,MAAM,4BAA4B,GAAQ,EAI9C,SAAS,EAAe,CAAC,EAAgB,EAA0B,CACzE,GAAI,IAAW,EACd,OAAO,GAER,OAAO,GAAc,EAAO,UAAU,CAAM,CAAC,EChGvC,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAE7B,EAAsB,EAAO,SAAS,EACtC,EAAmB,EAAO,SAAS,EACnC,EAAqB,EAAO,SAAS,EACrC,EAA2B,EAAO,SAAS,EAE7C,EAAyB,EAC7B,GAAI,IAAiB,GAAK,GAAgB,EACzC,EAAyB,EAAO,SAAS,EAI1C,IAAM,EAAgB,GAAgB,EAAQ,CAAmB,EAG7D,EAA+C,KACnD,GAAI,IAAqB,EACxB,EAAa,GAAgB,EAAO,UAAU,CAAgB,CAAC,EAIhE,IAAI,EAAmD,KACvD,GAAI,IAAuB,EAC1B,EAAe,GAAkB,EAAO,UAAU,CAAkB,CAAC,EAItE,IAAM,EAAqB,GAAgB,EAAQ,CAAwB,EAGvE,EAAsC,KAC1C,GAAI,IAA2B,EAC9B,EAAgB,GACf,EAAO,UAAU,CAAsB,CACxC,EAGD,MAAO,CACN,QAAS,CAAE,MAAO,EAAc,MAAO,CAAa,EACpD,gBACA,aACA,eACA,qBACA,eACD,EAGM,SAAS,EAAe,CAAC,EAA2C,CAC1E,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAa,EAAO,OAAO,EAG3B,EAAqB,EAAO,YAAY,CAAU,EAGlD,EAAiB,EAAO,UAAU,CAAc,EAChD,EAAS,EAAe,OAAO,EAE/B,EAAsB,CAAC,EAC7B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAQ,EAAe,OAAO,EACpC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAS,KAAK,EAAe,OAAO,CAAC,EAEhC,QAAI,IAAW,EAAG,CACxB,IAAM,EAAa,EAAe,OAAO,EACzC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAQ,EAAe,OAAO,EAC9B,EAAM,EAAe,OAAO,EAClC,EAAe,KAAK,CAAC,EACrB,QAAS,EAAI,EAAO,GAAK,EAAK,IAC7B,EAAS,KAAK,CAAC,GAMlB,IAAM,EAAS,IAAI,IACnB,QAAY,EAAG,KAAW,EAAmB,QAAQ,EAAG,CACvD,IAAM,EAAU,EAAS,GACzB,GAAI,IAAY,OAAW,SAE3B,IAAM,EAAc,EAAO,UAAU,CAAM,EACrC,EAAa,EAAY,OAAO,EAChC,EAAe,MAAM,KAAK,EAAY,YAAY,CAAU,CAAC,EAEnE,EAAO,IAAI,EAAS,CAAE,cAAa,CAAC,EAGrC,OAAO,EAGD,SAAS,EAAiB,CAAC,EAA6C,CAC9E,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAgB,EAAO,OAAO,EAG9B,EAAkB,EAAO,YAAY,CAAa,EAGlD,EAAiB,EAAO,UAAU,CAAc,EAChD,EAAS,EAAe,OAAO,EAE/B,EAAsB,CAAC,EAC7B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAQ,EAAe,OAAO,EACpC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAS,KAAK,EAAe,OAAO,CAAC,EAEhC,QAAI,IAAW,EAAG,CACxB,IAAM,EAAa,EAAe,OAAO,EACzC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAQ,EAAe,OAAO,EAC9B,EAAM,EAAe,OAAO,EAClC,EAAe,KAAK,CAAC,EACrB,QAAS,EAAI,EAAO,GAAK,EAAK,IAC7B,EAAS,KAAK,CAAC,GAMlB,IAAM,EAAS,IAAI,IACnB,QAAY,EAAG,KAAW,EAAgB,QAAQ,EAAG,CACpD,IAAM,EAAU,EAAS,GACzB,GAAI,IAAY,OAAW,SAE3B,IAAM,EAAY,EAAO,UAAU,CAAM,EACnC,EAAa,EAAU,OAAO,EAC9B,EAAoB,EAAU,YAAY,CAAU,EAEpD,EAAwB,CAAC,EAC/B,QAAW,KAAe,EAAmB,CAC5C,IAAM,EAAc,EAAO,UAAU,EAAS,CAAW,EACnD,EAAc,EAAY,OAAO,EAEvC,GAAI,IAAgB,EAEnB,EAAY,KAAK,EAAY,MAAM,CAAC,EAC9B,QAAI,IAAgB,EAE1B,EAAY,KAAK,EAAY,OAAO,CAAC,EAC/B,QAAI,IAAgB,EAE1B,EAAY,KAAK,EAAY,MAAM,CAAC,EAItC,EAAO,IAAI,EAAS,CAAE,aAAY,CAAC,EAGpC,OAAO,EAGD,SAAS,EAAkB,CAAC,EAA+B,CACjE,IAAM,EAAU,EAAO,OAAO,EACxB,EAAe,EAAO,OAAO,EAG7B,EAAkB,EAAO,YAAY,CAAY,EAGjD,EAA2B,CAAC,EAClC,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAiB,EAAO,UAAU,CAAM,EACxC,EAAiB,EAAe,OAAO,EAEvC,EAAW,IAAI,IACrB,GAAI,IAAmB,EAAG,CACzB,IAAM,EAAQ,EAAe,OAAO,EACpC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAS,IAAI,EAAe,OAAO,CAAC,EAE/B,QAAI,IAAmB,EAAG,CAChC,IAAM,EAAa,EAAe,OAAO,EACzC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAQ,EAAe,OAAO,EAC9B,EAAM,EAAe,OAAO,EAClC,EAAe,KAAK,CAAC,EACrB,QAAS,EAAI,EAAO,GAAK,EAAK,IAC7B,EAAS,IAAI,CAAC,GAIjB,EAAS,KAAK,CAAQ,EAGvB,MAAO,CACN,GAAG,CAAC,EAAkB,EAA2B,CAChD,IAAM,EAAM,EAAS,GACrB,OAAO,EAAM,EAAI,IAAI,CAAO,EAAI,GAElC,EAIM,SAAS,EAAa,CAC5B,EACA,EACiB,CACjB,GAAI,CAAC,EAAM,MAAO,GAElB,OADY,EAAK,cAAc,IAAI,CAAO,EClMpC,SAAS,EAAS,CAAC,EAAgB,EAA+B,CACxE,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAY,EAAO,OAAO,EAC1B,EAAmB,EAAO,OAAO,EACjC,EAAqB,EAAO,SAAS,EACrC,EAAa,EAAO,OAAO,EAC3B,EAAQ,EAAO,OAAO,EACtB,EAAgC,EAAO,SAAS,EAEhD,EAAa,EAAQ,EAAI,EAAI,EAG7B,EAAoB,CAAC,EAC3B,QAAS,EAAI,EAAG,GAAK,EAAY,IAAK,CACrC,IAAM,EAAS,IAAe,EAAI,EAAO,OAAO,EAAI,EAAO,OAAO,EAAI,EACtE,EAAQ,KAAK,CAAM,EAIpB,IAAM,EAA2B,CAAC,EAClC,GAAI,EAAmB,EAAG,CACzB,IAAM,EAAc,EAAO,UAAU,CAAkB,EACvD,QAAS,EAAI,EAAG,EAAI,EAAkB,IAAK,CAC1C,IAAM,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAM,KAAK,EAAY,QAAQ,CAAC,EAEjC,EAAa,KAAK,CAAK,GAKzB,IAAM,EAA2C,CAAC,EAClD,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAc,EAAQ,GACtB,EAAY,EAAQ,EAAI,GAC9B,GAAI,IAAgB,QAAa,IAAc,OAAW,CACzD,EAAmB,KAAK,CAAE,sBAAuB,CAAC,CAAE,CAAC,EACrD,SAGD,IAAM,EAAY,EAAgC,EAC5C,EAAU,EAAgC,EAEhD,GAAI,IAAc,EAAS,CAE1B,EAAmB,KAAK,CAAE,sBAAuB,CAAC,CAAE,CAAC,EACrD,SAGD,IAAM,EAAa,EAAO,UAAU,CAAS,EACvC,EAAgB,GACrB,EACA,EAAU,EACV,EACA,CACD,EACA,EAAmB,KAAK,CAAa,EAGtC,MAAO,CACN,eACA,eACA,YACA,mBACA,eACA,oBACD,EAGD,SAAS,EAAuB,CAC/B,EACA,EACA,EACA,EACqB,CACrB,GAAI,IAAe,EAClB,MAAO,CAAE,sBAAuB,CAAC,CAAE,EAGpC,IAAM,EAAc,EAAO,OACrB,EAAsB,EAAO,OAAO,EACpC,EAAa,EAAO,SAAS,EAE7B,EAAa,EAAsB,KACnC,GAAyB,EAAsB,SAAY,EAG3D,EAMD,CAAC,EAEN,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAoB,EAAO,OAAO,EAClC,EAAa,EAAO,OAAO,EAE7B,EAA6B,KAC7B,EAA0C,KAC1C,EAAwC,KAE5C,GAAI,EAjHsB,MAiHY,CACrC,EAAY,CAAC,EACb,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAU,KAAK,EAAO,QAAQ,CAAC,EAE1B,KACN,IAAM,EAAc,EApHE,KAqHtB,EAAY,EAAa,IAAgB,KAG1C,GAAI,EA1HsB,MA0HY,CACrC,EAAyB,CAAC,EAC1B,EAAuB,CAAC,EACxB,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAuB,KAAK,EAAO,QAAQ,CAAC,EAE7C,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAqB,KAAK,EAAO,QAAQ,CAAC,EAI5C,EAAW,KAAK,CACf,oBACA,aACA,YACA,yBACA,sBACD,CAAC,EAIF,IAAM,EAAa,EAAO,UAAU,EAAc,CAAU,EAGxD,EAAgC,KACpC,GAAI,EACH,EAAe,GAAkB,CAAU,EAI5C,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAM,EAAY,CAC5B,IAAM,GAAoB,EAAG,WAzJD,QAyJyC,EAEjE,EACJ,GAAI,EACH,EAAe,GAAkB,CAAU,EAE3C,OAAe,EAIhB,IAAM,EAAY,EAAe,EAAa,OAAS,EAGjD,EACL,EAAY,EAAI,GAAkB,EAAY,CAAS,EAAI,CAAC,EACvD,EACL,EAAY,EAAI,GAAkB,EAAY,CAAS,EAAI,CAAC,EAEvD,EAAuB,CAAC,EAC9B,QAAY,EAAG,KAAW,EAAQ,QAAQ,EAAG,CAC5C,IAAM,EAAS,EAAQ,GACvB,EAAO,KAAK,CACX,EAAG,GAAU,EACb,EAAG,GAAU,CACd,CAAC,EAGF,EAAQ,KAAK,CACZ,kBAAmB,EAAG,kBACtB,WAAY,EAAG,WACf,UAAW,EAAG,UACd,uBAAwB,EAAG,uBAC3B,qBAAsB,EAAG,qBACzB,eAAgB,IAAI,WAAW,CAAC,EAChC,eACA,QACD,CAAC,EAGF,MAAO,CAAE,sBAAuB,CAAQ,EAMzC,SAAS,EAAiB,CAAC,EAA0B,CACpD,IAAM,EAAQ,EAAO,MAAM,EACrB,EACL,IAAU,EACP,EACA,EAAQ,KACL,EAAQ,MAAS,EAAK,EAAO,MAAM,EACrC,EAEL,GAAI,IAAgB,EACnB,MAAO,CAAC,EAGT,IAAM,EAAmB,CAAC,EACtB,EAAW,EAEf,MAAO,EAAO,OAAS,EAAa,CACnC,IAAM,EAAY,EAAO,MAAM,EACzB,GAAY,EAAY,KAAQ,EAChC,GAAkB,EAAY,OAAU,EAE9C,QAAS,EAAI,EAAG,EAAI,GAAY,EAAO,OAAS,EAAa,IAAK,CACjE,IAAM,EAAQ,EAAiB,EAAO,OAAO,EAAI,EAAO,MAAM,EAC9D,GAAY,EACZ,EAAO,KAAK,CAAQ,GAItB,OAAO,EAMD,SAAS,EAAiB,CAAC,EAAgB,EAAyB,CAC1E,IAAM,EAAmB,CAAC,EAE1B,MAAO,EAAO,OAAS,EAAO,CAC7B,IAAM,EAAY,EAAO,MAAM,EACzB,GAAY,EAAY,IAAQ,EAChC,GAAiB,EAAY,OAAU,EACvC,GAAkB,EAAY,MAAU,EAE9C,QAAS,EAAI,EAAG,EAAI,GAAY,EAAO,OAAS,EAAO,IACtD,GAAI,EACH,EAAO,KAAK,CAAC,EACP,QAAI,EACV,EAAO,KAAK,EAAO,MAAM,CAAC,EAE1B,OAAO,KAAK,EAAO,KAAK,CAAC,EAK5B,OAAO,EAMD,SAAS,EAAoB,CACnC,EACA,EACA,EACA,EACS,CACT,IAAI,EAAS,EAEb,QAAY,EAAG,KAAS,EAAU,QAAQ,EAAG,CAC5C,IAAM,EAAQ,EAAW,IAAM,EAE/B,GAAI,IAAS,GAAK,IAAU,EAAG,CAC9B,GAAI,IAAS,EAAG,EAAS,EACzB,SAGD,GAAI,GAAqB,EAAiB,CACzC,IAAM,EAAQ,EAAkB,GAC1B,EAAM,EAAgB,GAC5B,GAAI,IAAU,QAAa,IAAQ,OAAW,SAE9C,GAAI,EAAQ,GAAS,EAAQ,EAAK,CACjC,EAAS,EACT,MAGD,GAAI,EAAQ,EACX,IAAW,EAAQ,IAAU,EAAO,GAC9B,QAAI,EAAQ,EAClB,IAAW,EAAM,IAAU,EAAM,GAE5B,KAEN,GAAK,EAAO,GAAK,EAAQ,GAAO,EAAO,GAAK,EAAQ,EAAI,CACvD,EAAS,EACT,MAGD,GAAI,KAAK,IAAI,CAAK,EAAI,KAAK,IAAI,CAAI,EAClC,GAAU,EAAQ,GAKrB,OAAO,EAMD,SAAS,EAAa,CAC5B,EACA,EACA,EACA,EACa,CACb,IAAM,EAAY,EAAK,mBAAmB,GAC1C,GAAI,CAAC,EAAW,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEpC,IAAI,EAAS,EACT,EAAS,EAEb,QAAW,KAAU,EAAU,sBAAuB,CACrD,GAAI,CAAC,EAAO,UAAW,SAEvB,IAAM,EAAS,GACd,EAAO,UACP,EACA,EAAO,uBACP,EAAO,oBACR,EAEA,GAAI,IAAW,EAAG,SAGlB,GAAI,EAAO,eAAiB,KAAM,CACjC,IAAM,EAAW,EAAO,aAAa,QAAQ,CAAU,EACvD,GAAI,EAAW,EAAG,SAElB,IAAM,EAAQ,EAAO,OAAO,GAC5B,GAAI,EACH,GAAU,EAAM,EAAI,EACpB,GAAU,EAAM,EAAI,EAEf,KAEN,IAAM,EAAQ,EAAO,OAAO,GAC5B,GAAI,EACH,GAAU,EAAM,EAAI,EACpB,GAAU,EAAM,EAAI,GAKvB,MAAO,CAAE,EAAG,KAAK,MAAM,CAAM,EAAG,EAAG,KAAK,MAAM,CAAM,CAAE,EC3XhD,SAAS,EAAS,CACxB,EACA,EACA,EACY,CACZ,IAAM,EAAU,IAAqB,EAC/B,EAAoB,CAAC,EAGrB,EAAQ,EAAY,EAE1B,GAAI,EAEH,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAQ,KAAK,EAAO,OAAO,EAAI,CAAC,EAIjC,aAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAQ,KAAK,EAAO,OAAO,CAAC,EAI9B,MAAO,CAAE,UAAS,SAAQ,EAOpB,SAAS,EAAgB,CAC/B,EACA,EAC4C,CAC5C,GAAI,EAAU,GAAK,GAAW,EAAK,QAAQ,OAAS,EACnD,OAAO,KAGR,IAAM,EAAS,EAAK,QAAQ,GACtB,EAAa,EAAK,QAAQ,EAAU,GAC1C,GAAI,IAAW,QAAa,IAAe,OAC1C,OAAO,KAGR,IAAM,EAAS,EAAa,EAG5B,GAAI,IAAW,EACd,OAAO,KAGR,MAAO,CAAE,SAAQ,QAAO,EAMlB,SAAS,EAAe,CAAC,EAAiB,EAA2B,CAC3E,OAAO,GAAiB,EAAM,CAAO,IAAM,KClErC,IAAM,GAAY,CACxB,QAAS,EACT,aAAc,EACd,aAAc,EACd,OAAQ,EACR,kBAAmB,GACnB,kBAAmB,GACnB,cAAe,EAChB,EAGa,GAAgB,CAC5B,iBAAkB,EAClB,gBAAiB,EACjB,cAAe,EACf,aAAc,EACd,eAAgB,GAChB,mBAAoB,GACpB,gBAAiB,IACjB,mBAAoB,IACpB,aAAc,IACd,gBAAiB,KACjB,sBAAuB,KACvB,wBAAyB,IAC1B,EA8DO,SAAS,EAAS,CAAC,EAA2B,CAEpD,MAAO,CAAE,QAAO,EAMV,SAAS,EAAU,CACzB,EACA,EACA,EACQ,CACR,IAAM,EAAW,GAAiB,EAAM,CAAO,EAC/C,GAAI,CAAC,EACJ,MAAO,CAAE,KAAM,OAAQ,EAGxB,IAAM,EAAS,EAAK,OAAO,MAAM,EAAS,OAAQ,EAAS,MAAM,EACjE,OAAO,GAAe,CAAM,EAG7B,SAAS,EAAc,CAAC,EAAuB,CAC9C,IAAM,EAAmB,EAAO,MAAM,EAChC,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EAE1B,GAAI,GAAoB,EACvB,OAAO,GAAiB,EAAQ,EAAkB,EAAM,EAAM,EAAM,CAAI,EAExE,YAAO,GACN,EACA,EACA,EACA,EACA,EACA,CACD,EAIF,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACA,EACA,EACc,CACd,GAAI,IAAqB,EACxB,MAAO,CACN,KAAM,SACN,mBACA,OACA,OACA,OACA,OACA,SAAU,CAAC,EACX,aAAc,IAAI,WAAW,CAAC,CAC/B,EAID,IAAM,EAA6B,CAAC,EACpC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAiB,KAAK,EAAO,OAAO,CAAC,EAItC,IAAM,EAAY,EAAiB,EAAmB,GACtD,GAAI,IAAc,OACjB,MAAO,CACN,KAAM,SACN,mBACA,OACA,OACA,OACA,OACA,SAAU,CAAC,EACX,aAAc,IAAI,WAAW,CAAC,CAC/B,EAED,IAAM,EAAY,EAAY,EAGxB,EAAoB,EAAO,OAAO,EAClC,EAAe,EAAO,MAAM,CAAiB,EAG7C,EAAiB,CAAC,EACxB,MAAO,EAAM,OAAS,EAAW,CAChC,IAAM,EAAO,EAAO,MAAM,EAI1B,GAHA,EAAM,KAAK,CAAI,EAGX,EAAO,GAAU,OAAQ,CAC5B,IAAM,EAAc,EAAO,MAAM,EACjC,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAM,KAAK,CAAI,GAMlB,IAAM,EAAyB,CAAC,EAC5B,EAAI,EACR,QAAY,EAAI,KAAS,EAAM,QAAQ,EAAG,CACzC,GAAI,EAAO,GAAU,aAAc,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,GAAK,EAAO,GAAU,kBAAoB,EAAK,CAAC,EAC1C,QAAI,EAAE,EAAO,GAAU,mBAC7B,GAAK,EAAO,MAAM,EAGnB,EAAa,KAAK,CAAC,EAIpB,IAAM,EAAyB,CAAC,EAC5B,EAAI,EACR,QAAY,EAAI,KAAS,EAAM,QAAQ,EAAG,CACzC,GAAI,EAAO,GAAU,aAAc,CAClC,IAAM,EAAK,EAAO,MAAM,EACxB,GAAK,EAAO,GAAU,kBAAoB,EAAK,CAAC,EAC1C,QAAI,EAAE,EAAO,GAAU,mBAC7B,GAAK,EAAO,MAAM,EAGnB,EAAa,KAAK,CAAC,EAIpB,IAAM,EAAsB,CAAC,EACzB,EAAa,EACjB,QAAW,KAAS,EAAkB,CACrC,IAAM,EAAmB,CAAC,EAE1B,MAAO,GAAc,EAAO,CAC3B,IAAM,EAAS,EAAa,GACtB,EAAS,EAAa,GACtB,EAAO,EAAM,GACnB,GAAI,IAAW,QAAa,IAAW,QAAa,IAAS,OAC5D,MAGD,EAAQ,KAAK,CACZ,EAAG,EACH,EAAG,EACH,SAAU,EAAO,GAAU,WAAa,CACzC,CAAC,EACD,IAGD,EAAS,KAAK,CAAO,EAGtB,MAAO,CACN,KAAM,SACN,mBACA,OACA,OACA,OACA,OACA,WACA,cACD,EAGD,SAAS,EAAmB,CAC3B,EACA,EACA,EACA,EACA,EACA,EACiB,CACjB,IAAM,EAA+B,CAAC,EAClC,EAEJ,EAAG,CACF,EAAQ,EAAO,OAAO,EACtB,IAAM,EAAa,EAAO,OAAO,EAE7B,EACA,EAEJ,GAAI,EAAQ,GAAc,iBACzB,GAAI,EAAQ,GAAc,gBACzB,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EAEpB,OAAO,EAAO,OAAO,EACrB,EAAO,EAAO,OAAO,EAGtB,QAAI,EAAQ,GAAc,gBACzB,EAAO,EAAO,KAAK,EACnB,EAAO,EAAO,KAAK,EAEnB,OAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EAKtB,IAAI,EAAI,EACP,EAAI,EACJ,EAAI,EACJ,EAAI,EAEL,GAAI,EAAQ,GAAc,aACzB,EAAI,EAAI,EAAO,QAAQ,EACjB,QAAI,EAAQ,GAAc,mBAChC,EAAI,EAAO,QAAQ,EACnB,EAAI,EAAO,QAAQ,EACb,QAAI,EAAQ,GAAc,gBAChC,EAAI,EAAO,QAAQ,EACnB,EAAI,EAAO,QAAQ,EACnB,EAAI,EAAO,QAAQ,EACnB,EAAI,EAAO,QAAQ,EAGpB,EAAW,KAAK,CACf,QAAS,EACT,QACA,OACA,OACA,UAAW,CAAC,EAAG,EAAG,EAAG,CAAC,CACvB,CAAC,QACO,EAAQ,GAAc,gBAG/B,IAAI,EAA4C,IAAI,WAAW,CAAC,EAChE,GAAI,EAAQ,GAAc,mBAAoB,CAC7C,IAAM,EAAoB,EAAO,OAAO,EACxC,EAAe,EAAO,MAAM,CAAiB,EAG9C,MAAO,CACN,KAAM,YACN,mBACA,OACA,OACA,OACA,OACA,aACA,cACD,EAOM,SAAS,EAAqB,CACpC,EACA,EACA,EACA,EAAgB,EACJ,CAEZ,GAAI,EAAQ,GACX,MAAO,CAAC,EAGT,IAAM,EAAoB,CAAC,EAE3B,QAAW,KAAa,EAAM,WAAY,CACzC,IAAM,EAAiB,GAAW,EAAM,EAAM,EAAU,OAAO,EAE3D,EACJ,GAAI,EAAe,OAAS,SAC3B,EAAoB,EAAe,SAC7B,QAAI,EAAe,OAAS,YAClC,EAAoB,GACnB,EACA,EACA,EACA,EAAQ,CACT,EAEA,cAID,IAAO,EAAG,EAAG,EAAG,GAAK,EAAU,UACzB,EACL,EAAU,MAAQ,GAAc,gBAAkB,EAAU,KAAO,EAC9D,EACL,EAAU,MAAQ,GAAc,gBAAkB,EAAU,KAAO,EAEpE,QAAW,KAAW,EAAmB,CACxC,IAAM,EAA8B,EAAQ,IAAI,CAAC,KAAW,CAC3D,EAAG,KAAK,MAAM,EAAI,EAAM,EAAI,EAAI,EAAM,EAAI,CAAE,EAC5C,EAAG,KAAK,MAAM,EAAI,EAAM,EAAI,EAAI,EAAM,EAAI,CAAE,EAC5C,QAAS,EAAM,OAChB,EAAE,EACF,EAAO,KAAK,CAAkB,GAIhC,OAAO,EAMD,SAAS,EAAgB,CAC/B,EACA,EACA,EACY,CACZ,IAAM,EAAQ,GAAW,EAAM,EAAM,CAAO,EAE5C,GAAI,EAAM,OAAS,QAClB,MAAO,CAAC,EACF,QAAI,EAAM,OAAS,SACzB,OAAO,EAAM,SAEb,YAAO,GAAsB,EAAM,EAAM,CAAK,EAOzC,SAAS,EAAc,CAC7B,EACA,EACA,EACoE,CACpE,IAAM,EAAQ,GAAW,EAAM,EAAM,CAAO,EAE5C,GAAI,EAAM,OAAS,QAClB,OAAO,KAGR,MAAO,CACN,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,IACb,EAMM,SAAS,EAAc,CAC7B,EACA,EACA,EACA,EACe,CACf,IAAM,EAAY,EAAK,mBAAmB,GAC1C,GAAI,CAAC,EACJ,OAAO,MAAM,CAAS,EAAE,KAAK,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAI5C,IAAM,EAAuB,MAAM,CAAS,EAC1C,KAAK,IAAI,EACT,IAAI,KAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAAE,EAE5B,QAAW,KAAU,EAAU,sBAAuB,CACrD,GAAI,CAAC,EAAO,UAAW,SAEvB,IAAM,EAAS,GACd,EAAO,UACP,EACA,EAAO,uBACP,EAAO,oBACR,EAEA,GAAI,IAAW,EAAG,SAElB,GAAI,EAAO,eAAiB,KAE3B,QAAY,EAAG,KAAe,EAAO,aAAa,QAAQ,EAAG,CAC5D,IAAM,EAAQ,EAAO,GACf,EAAc,EAAO,OAAO,GAClC,GAAI,EAAa,GAAa,GAAS,EACtC,EAAM,GAAK,EAAY,EAAI,EAC3B,EAAM,GAAK,EAAY,EAAI,EAK7B,aAAS,EAAI,EAAG,EAAI,KAAK,IAAI,EAAO,OAAO,OAAQ,CAAS,EAAG,IAAK,CACnE,IAAM,EAAQ,EAAO,GACf,EAAc,EAAO,OAAO,GAClC,GAAI,GAAS,EACZ,EAAM,GAAK,EAAY,EAAI,EAC3B,EAAM,GAAK,EAAY,EAAI,GAO/B,QAAW,KAAK,EACf,EAAE,EAAI,KAAK,MAAM,EAAE,CAAC,EACpB,EAAE,EAAI,KAAK,MAAM,EAAE,CAAC,EAGrB,OAAO,EAMD,SAAS,EAAoB,CACnC,EACA,EACY,CACZ,IAAM,EAAoB,CAAC,EACvB,EAAa,EAEjB,QAAW,KAAW,EAAU,CAC/B,IAAM,EAAsB,CAAC,EAC7B,QAAW,KAAS,EAAS,CAC5B,IAAM,EAAQ,EAAO,IAAe,CAAE,EAAG,EAAG,EAAG,CAAE,EACjD,EAAW,KAAK,CACf,EAAG,EAAM,EAAI,EAAM,EACnB,EAAG,EAAM,EAAI,EAAM,EACnB,QAAS,EAAM,OAChB,CAAC,EACD,IAED,EAAO,KAAK,CAAU,EAGvB,OAAO,EAMD,SAAS,EAA6B,CAC5C,EACA,EACA,EACA,EACA,EACY,CACZ,IAAM,EAAQ,GAAW,EAAM,EAAM,CAAO,EAE5C,GAAI,EAAM,OAAS,QAClB,MAAO,CAAC,EAGT,IAAI,EACJ,GAAI,EAAM,OAAS,SAClB,EAAW,EAAM,SAEjB,OAAW,GACV,EACA,EACA,EACA,EACA,CACD,EAID,GAAI,GAAQ,GAAc,EAAW,OAAS,EAAG,CAEhD,IAAI,EAAY,EAChB,QAAW,KAAK,EACf,GAAa,EAAE,OAGhB,GAAa,EAEb,IAAM,EAAS,GAAe,EAAM,EAAS,EAAW,CAAU,EAClE,EAAW,GAAqB,EAAU,CAAM,EAGjD,OAAO,EAMR,SAAS,EAAkC,CAC1C,EACA,EACA,EACA,EACA,EACA,EAAgB,EACJ,CACZ,GAAI,EAAQ,GACX,MAAO,CAAC,EAGT,IAAM,EAAoB,CAAC,EAE3B,QAAW,KAAa,EAAM,WAAY,CACzC,IAAM,EAAiB,GAAW,EAAM,EAAM,EAAU,OAAO,EAE3D,EACJ,GAAI,EAAe,OAAS,UAI3B,GAHA,EAAoB,EAAe,SAG/B,GAAQ,GAAc,EAAW,OAAS,EAAG,CAChD,IAAI,EAAY,EAChB,QAAW,KAAK,EACf,GAAa,EAAE,OAEhB,GAAa,EAEb,IAAM,EAAS,GACd,EACA,EAAU,QACV,EACA,CACD,EACA,EAAoB,GAAqB,EAAmB,CAAM,GAE7D,QAAI,EAAe,OAAS,YAClC,EAAoB,GACnB,EACA,EACA,EACA,EACA,EACA,EAAQ,CACT,EAEA,cAID,IAAO,EAAG,EAAG,EAAG,GAAK,EAAU,UACzB,EACL,EAAU,MAAQ,GAAc,gBAAkB,EAAU,KAAO,EAC9D,EACL,EAAU,MAAQ,GAAc,gBAAkB,EAAU,KAAO,EAEpE,QAAW,KAAW,EAAmB,CACxC,IAAM,EAA8B,EAAQ,IAAI,CAAC,KAAW,CAC3D,EAAG,KAAK,MAAM,EAAI,EAAM,EAAI,EAAI,EAAM,EAAI,CAAE,EAC5C,EAAG,KAAK,MAAM,EAAI,EAAM,EAAI,EAAI,EAAM,EAAI,CAAE,EAC5C,QAAS,EAAM,OAChB,EAAE,EACF,EAAO,KAAK,CAAkB,GAIhC,OAAO,ECznBR,MAAM,EAAoC,CACxB,WACA,SAEjB,WAAW,CAAC,EAAyB,CACpC,KAAK,WAAa,EAClB,KAAK,SAAW,IAAI,IAAI,CAAU,KAG/B,KAAI,EAAW,CAClB,OAAO,KAAK,WAAW,OAGxB,GAAG,CAAC,EAAiC,CAEpC,IAAI,EAAM,EACN,EAAO,KAAK,WAAW,OAAS,EAEpC,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAS,KAAK,WAAW,GAC/B,GAAI,IAAW,OAAW,SAE1B,GAAI,EAAS,EACZ,EAAM,EAAM,EACN,QAAI,EAAS,EACnB,EAAO,EAAM,EAEb,YAAO,EAIT,OAAO,KAGR,MAAM,CAAC,EAA2B,CACjC,OAAO,KAAK,SAAS,IAAI,CAAO,EAGjC,MAAM,EAAc,CACnB,OAAO,MAAM,KAAK,KAAK,UAAU,EAEnC,CAUA,MAAM,EAAoC,CACxB,OACA,MAEjB,WAAW,CAAC,EAAuB,CAGlC,GAFA,KAAK,OAAS,EAEV,EAAO,SAAW,EACrB,KAAK,MAAQ,EACP,KACN,IAAM,EAAY,EAAO,EAAO,OAAS,GACzC,GAAI,EACH,KAAK,MACJ,EAAU,oBACT,EAAU,WAAa,EAAU,aAAe,GAElD,UAAK,MAAQ,MAKZ,KAAI,EAAW,CAClB,OAAO,KAAK,MAGb,GAAG,CAAC,EAAiC,CAEpC,IAAI,EAAM,EACN,EAAO,KAAK,OAAO,OAAS,EAEhC,MAAO,GAAO,EAAM,CACnB,IAAM,EAAO,EAAM,IAAU,EACvB,EAAQ,KAAK,OAAO,GAC1B,GAAI,CAAC,EAAO,SAEZ,GAAI,EAAU,EAAM,WACnB,EAAM,EAAM,EACN,QAAI,EAAU,EAAM,aAC1B,EAAO,EAAM,EAGb,YAAO,EAAM,oBAAsB,EAAU,EAAM,cAIrD,OAAO,KAGR,MAAM,CAAC,EAA2B,CACjC,OAAO,KAAK,IAAI,CAAO,IAAM,KAG9B,MAAM,EAAc,CACnB,IAAM,EAAoB,CAAC,EAC3B,QAAW,KAAS,KAAK,OACxB,QAAS,EAAI,EAAM,aAAc,GAAK,EAAM,WAAY,IACvD,EAAO,KAAK,CAAC,EAGf,OAAO,EAET,CAGO,SAAS,EAAa,CAAC,EAA0B,CACvD,IAAM,EAAS,EAAO,OAAO,EAE7B,GAAI,IAAW,EAAG,CACjB,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAa,EAAO,YAAY,CAAU,EAChD,OAAO,IAAI,GAAgB,CAAU,EAGtC,GAAI,IAAW,EAAG,CACjB,IAAM,EAAa,EAAO,OAAO,EAC3B,EAA4B,MAAM,CAAU,EAElD,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAO,GAAK,CACX,aAAc,EAAO,OAAO,EAC5B,WAAY,EAAO,OAAO,EAC1B,mBAAoB,EAAO,OAAO,CACnC,EAGD,OAAO,IAAI,GAAgB,CAAM,EAGlC,MAAU,MAAM,4BAA4B,GAAQ,EAI9C,SAAS,CAAe,CAAC,EAAgB,EAA0B,CACzE,OAAO,GAAc,EAAO,UAAU,CAAM,CAAC,EC1IvC,SAAS,EAAqB,CACpC,EAC+B,CAC/B,MAAO,uBAAwB,EAIzB,SAAS,EAAa,CAC5B,EACA,EACgC,CAChC,GAAI,IAAW,EAAG,OAAO,KACzB,OAAO,GAAY,EAAO,UAAU,CAAM,CAAC,EAIrC,SAAS,EAAW,CAAC,EAAwC,CACnE,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAU,EAAO,OAAO,EACxB,EAAc,EAAO,OAAO,EAGlC,GAAI,IAAgB,MACnB,MAAO,CACN,mBAAoB,EACpB,mBAAoB,CACrB,EAGD,IAAM,EAAuB,CAAC,EAE9B,GAAI,GAAe,GAAK,GAAe,EAAG,CACzC,IAAM,EAAQ,EAAU,EAAY,EAC9B,EAAe,GAAK,EACpB,EAAgB,GAAK,EACrB,GAAQ,GAAK,GAAgB,EAC7B,EAAU,GAAM,EAAe,EAE/B,EAAY,KAAK,KAAK,EAAQ,CAAa,EAC7C,EAAa,EAEjB,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAO,EAAO,OAAO,EAE3B,QACK,EAAI,EACR,EAAI,GAAiB,EAAa,EAClC,IAAK,IACJ,CACD,IAAM,EAAQ,GAAK,GAAgB,EAAI,GACnC,EAAS,GAAQ,EAAS,EAG9B,GAAI,EAAQ,EACX,EAAQ,GAAS,GAAK,GAGvB,EAAY,KAAK,CAAK,IAKzB,MAAO,CACN,YACA,UACA,cACA,aACD,EAOM,SAAS,EAAc,CAAC,EAAqB,EAAqB,CACxE,GAAI,EAAO,EAAO,WAAa,EAAO,EAAO,QAC5C,MAAO,GAER,IAAM,EAAQ,EAAO,EAAO,UAC5B,OAAO,EAAO,YAAY,IAAU,EAO9B,SAAS,EAAqB,CACpC,EACA,EACA,EACS,CACT,GAAI,CAAC,EAAQ,OAAO,EAEpB,GAAI,GAAsB,CAAM,EAG/B,OAAO,EAGR,OAAO,EAAQ,GAAe,EAAQ,CAAI,EC5DpC,IAAM,GAAa,CACzB,YAAa,EACb,iBAAkB,EAClB,gBAAiB,EACjB,YAAa,EACb,oBAAqB,GAErB,uBAAwB,KACzB,EAGO,SAAS,EAAqB,CAAC,EAA4B,CACjE,OAAQ,EAAa,GAAW,yBAA2B,EAIrD,SAAS,EAAe,CAAC,EAA4B,CAC3D,IAAM,EAAc,EAAO,OAAO,EAC5B,EAAqD,CAAC,EAE5D,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAc,KAAK,CAClB,IAAK,EAAO,IAAI,EAChB,OAAQ,EAAO,SAAS,CACzB,CAAC,EAGF,IAAM,EAA0B,CAAC,EACjC,QAAW,KAAU,EAAe,CACnC,IAAM,EAAe,EAAO,UAAU,EAAO,MAAM,EAC7C,EAAS,GAAY,CAAY,EACvC,EAAQ,KAAK,CACZ,UAAW,EAAO,IAClB,QACD,CAAC,EAGF,MAAO,CAAE,SAAQ,EAGlB,SAAS,EAAW,CAAC,EAAwB,CAC5C,IAAM,EAAuB,EAAO,SAAS,EACvC,EAAe,EAAO,OAAO,EAE7B,EAAsD,CAAC,EAC7D,QAAS,EAAI,EAAG,EAAI,EAAc,IACjC,EAAe,KAAK,CACnB,IAAK,EAAO,IAAI,EAChB,OAAQ,EAAO,SAAS,CACzB,CAAC,EAIF,IAAI,EAAiC,KACrC,GAAI,IAAyB,EAC5B,EAAiB,GAAa,EAAO,UAAU,CAAoB,CAAC,EAIrE,IAAM,EAAwC,CAAC,EAC/C,QAAW,KAAU,EAAgB,CACpC,IAAM,EAAU,GAAa,EAAO,UAAU,EAAO,MAAM,CAAC,EAC5D,EAAqB,KAAK,CACzB,WAAY,EAAO,IACnB,SACD,CAAC,EAGF,MAAO,CACN,iBACA,eAAgB,CACjB,EAGD,SAAS,EAAY,CAAC,EAAyB,CAC9C,IAAM,EAAqB,EAAO,SAAS,EACrC,EAAuB,EAAO,OAAO,EACrC,EAAoB,EAAO,OAAO,EAClC,EAAiB,MAAM,KAAK,EAAO,YAAY,CAAiB,CAAC,EAEvE,MAAO,CACN,uBACA,gBACD,EAIM,SAAS,EAAgB,CAAC,EAA6B,CAC7D,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAsD,CAAC,EAE7D,QAAS,EAAI,EAAG,EAAI,EAAc,IACjC,EAAe,KAAK,CACnB,IAAK,EAAO,IAAI,EAChB,OAAQ,EAAO,SAAS,CACzB,CAAC,EAGF,IAAM,EAA4B,CAAC,EACnC,QAAW,KAAU,EAAgB,CACpC,IAAM,EAAgB,EAAO,UAAU,EAAO,MAAM,EAC9C,EAAU,GAAa,CAAa,EAC1C,EAAS,KAAK,CACb,WAAY,EAAO,IACnB,SACD,CAAC,EAGF,MAAO,CAAE,UAAS,EAGnB,SAAS,EAAY,CAAC,EAAyB,CAC9C,IAAM,EAAsB,EAAO,SAAS,EACtC,EAAmB,EAAO,OAAO,EACjC,EAAoB,MAAM,KAAK,EAAO,YAAY,CAAgB,CAAC,EAEzE,MAAO,CACN,sBACA,mBACD,EAqCM,SAAS,EAAU,CACzB,EACA,EACgB,CAChB,QAAW,KAAU,EAAW,QAC/B,GAAI,EAAO,YAAc,EACxB,OAAO,EAAO,OAGhB,OAAO,KAID,SAAS,EAAW,CAC1B,EACA,EACiB,CACjB,GAAI,IAAe,KAClB,OAAO,EAAO,eAGf,QAAW,KAAU,EAAO,eAC3B,GAAI,EAAO,aAAe,EACzB,OAAO,EAAO,QAIhB,OAAO,EAAO,eAIR,SAAS,EAAU,CACzB,EACA,EACuB,CACvB,OAAO,EAAY,SAAS,IAAU,KC9IhC,SAAS,EAAe,CAC9B,EACA,EACuB,CACvB,IAAM,EAAkC,CAAC,EAEzC,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,OAFe,EAAE,OAAO,OAGlB,GACJ,EAAU,KAAK,GAAuB,CAAC,CAAC,EACxC,UACI,GACJ,EAAU,KAAK,GAAuB,CAAC,CAAC,EACxC,UACI,GACJ,EAAU,KAAK,GAAuB,CAAC,CAAC,EACxC,OAIH,OAAO,EAGR,SAAS,EAAsB,CAAC,EAAmC,CAClE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAe,EAAO,OAAO,EAC7B,EAAiB,EAAO,YAAY,CAAY,EAEhD,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAwC,CAAC,EAE/C,QAAW,KAAiB,EAAgB,CAC3C,GAAI,IAAkB,EAAG,CACxB,EAAS,KAAK,IAAI,EAClB,SAGD,IAAM,EAAW,EAAO,UAAU,CAAa,EACzC,EAAY,EAAS,OAAO,EAC5B,EAAc,EAAS,YAAY,CAAS,EAE5C,EAA0B,CAAC,EACjC,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAS,UAAU,CAAU,EAC1C,EAAa,EAAW,OAAO,EAC/B,EAAc,EAAW,OAAO,EAChC,EAAgB,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EACjE,EAAgB,GAAsB,EAAY,CAAW,EAEnE,EAAM,KAAK,CAAE,aAAY,gBAAe,eAAc,CAAC,EAGxD,EAAS,KAAK,CAAK,EAGpB,MAAO,CAAE,OAAQ,EAAG,WAAU,UAAS,EAGxC,SAAS,EAAsB,CAAC,EAAmC,CAClE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAiB,EAAO,SAAS,EACjC,EAAoB,EAAO,OAAO,EAClC,EAAsB,EAAO,YAAY,CAAiB,EAE1D,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAW,GAAgB,EAAQ,CAAc,EACjD,EAA2C,CAAC,EAElD,QAAW,KAAa,EAAqB,CAC5C,GAAI,IAAc,EAAG,CACpB,EAAc,KAAK,IAAI,EACvB,SAGD,IAAM,EAAY,EAAO,UAAU,CAAS,EACtC,EAAY,EAAU,OAAO,EAC7B,EAAc,EAAU,YAAY,CAAS,EAE7C,EAAwB,CAAC,EAC/B,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAU,UAAU,CAAU,EAC3C,EAAa,EAAW,OAAO,EAC/B,EAAc,EAAW,OAAO,EAChC,EAAe,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAChE,EAAgB,GAAsB,EAAY,CAAW,EAEnE,EAAM,KAAK,CAAE,aAAY,eAAc,eAAc,CAAC,EAGvD,EAAc,KAAK,CAAK,EAGzB,MAAO,CAAE,OAAQ,EAAG,WAAU,WAAU,eAAc,EAGvD,SAAS,EAAsB,CAAC,EAAmC,CAClE,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAc,EAAO,OAAO,EAC5B,EAAkB,EAAO,YAAY,CAAU,EAE/C,EAAwB,CAAC,EAC/B,QAAW,KAAU,EACpB,EAAU,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAG/C,IAAM,EAAgB,GAAsB,EAAQ,CAAW,EAE/D,MAAO,CAAE,OAAQ,EAAG,YAAW,eAAc,EAGvC,SAAS,EAAuB,CACtC,EACA,EAC+B,CAC/B,IAAM,EAA0C,CAAC,EAEjD,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,OAFe,EAAE,OAAO,OAGlB,GACJ,EAAU,KAAK,GAAwB,CAAC,CAAC,EACzC,UACI,GACJ,EAAU,KAAK,GAAwB,CAAC,CAAC,EACzC,UACI,GACJ,EAAU,KAAK,GAAwB,CAAC,CAAC,EACzC,OAIH,OAAO,EAGR,SAAS,EAAuB,CAAC,EAA2C,CAC3E,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAoB,EAAO,OAAO,EAClC,EAAsB,EAAO,YAAY,CAAiB,EAE1D,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAA2C,CAAC,EAElD,QAAW,KAAa,EAAqB,CAC5C,GAAI,IAAc,EAAG,CACpB,EAAc,KAAK,IAAI,EACvB,SAGD,IAAM,EAAY,EAAO,UAAU,CAAS,EACtC,EAAY,EAAU,OAAO,EAC7B,EAAc,EAAU,YAAY,CAAS,EAE7C,EAAwB,CAAC,EAC/B,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAU,UAAU,CAAU,EAE3C,EAAiB,EAAW,OAAO,EACnC,EAAoB,MAAM,KAC/B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAa,EAAW,OAAO,EAC/B,EAAgB,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAEjE,EAAiB,EAAW,OAAO,EACnC,EAAoB,MAAM,KAC/B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAc,EAAW,OAAO,EAChC,EAAgB,GAAsB,EAAY,CAAW,EAEnE,EAAM,KAAK,CACV,oBACA,gBACA,oBACA,eACD,CAAC,EAGF,EAAc,KAAK,CAAK,EAGzB,MAAO,CAAE,OAAQ,EAAG,WAAU,eAAc,EAG7C,SAAS,EAAuB,CAAC,EAA2C,CAC3E,IAAM,EAAiB,EAAO,SAAS,EACjC,EAA0B,EAAO,SAAS,EAC1C,EAAsB,EAAO,SAAS,EACtC,EAA0B,EAAO,SAAS,EAC1C,EAAyB,EAAO,OAAO,EACvC,EAA2B,EAAO,YAAY,CAAsB,EAEpE,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAoB,GAAgB,EAAQ,CAAuB,EACnE,EAAgB,GAAgB,EAAQ,CAAmB,EAC3D,EAAoB,GAAgB,EAAQ,CAAuB,EAEnE,EAAqD,CAAC,EAE5D,QAAW,KAAc,EAA0B,CAClD,GAAI,IAAe,EAAG,CACrB,EAAmB,KAAK,IAAI,EAC5B,SAGD,IAAM,EAAa,EAAO,UAAU,CAAU,EACxC,EAAY,EAAW,OAAO,EAC9B,EAAc,EAAW,YAAY,CAAS,EAE9C,EAA6B,CAAC,EACpC,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAW,UAAU,CAAU,EAE5C,EAAiB,EAAW,OAAO,EACnC,EAAmB,MAAM,KAC9B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAa,EAAW,OAAO,EAC/B,EAAe,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAEhE,EAAiB,EAAW,OAAO,EACnC,EAAmB,MAAM,KAC9B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAc,EAAW,OAAO,EAChC,EAAgB,GAAsB,EAAY,CAAW,EAEnE,EAAM,KAAK,CACV,mBACA,eACA,mBACA,eACD,CAAC,EAGF,EAAmB,KAAK,CAAK,EAG9B,MAAO,CACN,OAAQ,EACR,WACA,oBACA,gBACA,oBACA,oBACD,EAGD,SAAS,EAAuB,CAAC,EAA2C,CAC3E,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAA2B,EAAO,YAAY,CAAc,EAE5D,EAAa,EAAO,OAAO,EAC3B,EAAuB,EAAO,YAAY,CAAU,EAEpD,EAAiB,EAAO,OAAO,EAC/B,EAA2B,EAAO,YAAY,CAAc,EAE5D,EAAc,EAAO,OAAO,EAC5B,EAAgB,GAAsB,EAAQ,CAAW,EAEzD,EAAiC,CAAC,EACxC,QAAW,KAAU,EACpB,EAAmB,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGxD,IAAM,EAA6B,CAAC,EACpC,QAAW,KAAU,EACpB,EAAe,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGpD,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAU,EACpB,EAAmB,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGxD,MAAO,CACN,OAAQ,EACR,qBACA,iBACA,qBACA,eACD,EAGD,SAAS,EAAqB,CAC7B,EACA,EACoB,CACpB,IAAM,EAA6B,CAAC,EACpC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAQ,KAAK,CACZ,cAAe,EAAO,OAAO,EAC7B,gBAAiB,EAAO,OAAO,CAChC,CAAC,EAEF,OAAO,ECrTD,SAAS,EAAW,CAAC,EAAwB,CACnD,IAAM,EAAS,EAAO,OAAO,EACvB,EAAc,EAAO,MAAM,EAC3B,EAAc,EAAO,MAAM,EAE3B,EAAiB,CAAE,cAAa,aAAY,EAElD,GAAI,IAAW,EACd,EAAO,YAAc,EAAO,OAAO,EAC7B,QAAI,IAAW,EACrB,EAAO,cAAgB,EAAO,OAAO,EACrC,EAAO,cAAgB,EAAO,OAAO,EAGtC,OAAO,EAGD,SAAS,EAAa,CAAC,EAAgB,EAA+B,CAC5E,GAAI,IAAW,EAAG,OAAO,KACzB,OAAO,GAAY,EAAO,UAAU,CAAM,CAAC,EAGrC,SAAS,EAAc,CAAC,EAA2B,CACzD,IAAM,EAAY,EAAO,OAAO,EAC1B,EAA4B,CAAC,EAE7B,EAAiE,CAAC,EACxE,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAW,KAAK,CACf,UAAW,EAAO,OAAO,EACzB,aAAc,EAAO,OAAO,CAC7B,CAAC,EAGF,QAAW,KAAQ,EAAY,CAC9B,IAAM,EAAa,GAAY,EAAO,UAAU,EAAK,YAAY,CAAC,EAClE,EAAY,KAAK,CAChB,UAAW,EAAK,UAChB,YACD,CAAC,EAGF,MAAO,CAAE,aAAY,EAGf,SAAS,EAAe,CAC9B,EACA,EACuB,CACvB,IAAM,EAAkC,CAAC,EAEzC,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAiB,EAAE,OAAO,EAE1B,EACL,CAAC,EACF,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAc,KAAK,CAClB,YAAa,EAAE,OAAO,EACtB,WAAY,EAAE,OAAO,CACtB,CAAC,EAGF,IAAM,EAAW,EAAgB,EAAG,CAAc,EAC5C,EAAsC,CAAC,EAE7C,QAAW,KAAQ,EAClB,EAAiB,KAAK,CACrB,YAAa,GAAc,EAAG,EAAK,WAAW,EAC9C,WAAY,GAAc,EAAG,EAAK,UAAU,CAC7C,CAAC,EAGF,EAAU,KAAK,CAAE,WAAU,kBAAiB,CAAC,GAI/C,OAAO,EAGD,SAAS,EAAgB,CAC/B,EACA,EACwB,CACxB,IAAM,EAAmC,CAAC,EAE1C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAqB,EAAE,SAAS,EAChC,EAAqB,EAAE,SAAS,EAChC,EAAiB,EAAE,OAAO,EAC1B,EAAkB,EAAE,SAAS,EAC7B,EAAkB,EAAE,SAAS,EAE7B,EAAe,EAAgB,EAAG,CAAkB,EACpD,EAAe,EAAgB,EAAG,CAAkB,EACpD,EAAY,GAAe,EAAE,UAAU,CAAe,CAAC,EAGvD,EAAkB,EAAE,UAAU,CAAe,EAC7C,EAAY,EAAgB,OAAO,EACnC,EAA0B,CAAC,EAG3B,EAAkC,CAAC,EACzC,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAc,KAAK,EAAgB,OAAO,CAAC,EAE5C,EAAe,KAAK,CAAa,EAIlC,QAAW,KAAiB,EAAgB,CAC3C,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAgB,EAC1B,EAAY,KAAK,GAAc,EAAiB,CAAY,CAAC,EAE9D,EAAU,KAAK,CAAE,aAAY,CAAC,EAG/B,EAAU,KAAK,CACd,eACA,eACA,iBACA,YACA,WACD,CAAC,GAIH,OAAO,EAGD,SAAS,EAAoB,CACnC,EACA,EAC4B,CAC5B,IAAM,EAAuC,CAAC,EAE9C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAqB,EAAE,SAAS,EAChC,EAAyB,EAAE,SAAS,EACpC,EAAiB,EAAE,OAAO,EAC1B,EAAkB,EAAE,SAAS,EAC7B,EAAsB,EAAE,SAAS,EAEjC,EAAe,EAAgB,EAAG,CAAkB,EACpD,EAAmB,EAAgB,EAAG,CAAsB,EAC5D,EAAY,GAAe,EAAE,UAAU,CAAe,CAAC,EAGvD,EAAiB,EAAE,UAAU,CAAmB,EAChD,EAAgB,EAAe,OAAO,EACtC,EAAwB,EAAe,YAAY,CAAa,EAEhE,EAAkC,CAAC,EACzC,QAAW,KAAmB,EAAuB,CACpD,IAAM,EAAkB,EAAe,UAAU,CAAe,EAC1D,EAAiB,EAAgB,OAAO,EAExC,EAAsC,CAAC,EAEvC,EAAiC,CAAC,EACxC,QAAS,EAAI,EAAG,EAAI,EAAgB,IAAK,CACxC,IAAM,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAc,KAAK,EAAgB,OAAO,CAAC,EAE5C,EAAc,KAAK,CAAa,EAIjC,QAAW,KAAiB,EAAe,CAC1C,IAAM,EAAqC,CAAC,EAC5C,QAAW,KAAgB,EAC1B,EAAgB,KAAK,GAAc,EAAiB,CAAY,CAAC,EAElE,EAAiB,KAAK,CAAE,iBAAgB,CAAC,EAG1C,EAAc,KAAK,CAAE,kBAAiB,CAAC,EAGxC,EAAU,KAAK,CACd,eACA,mBACA,iBACA,YACA,eACD,CAAC,GAIH,OAAO,EAGD,SAAS,EAAgB,CAC/B,EACA,EACwB,CACxB,IAAM,EAAmC,CAAC,EAE1C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAsB,EAAE,SAAS,EACjC,EAAsB,EAAE,SAAS,EACjC,EAAiB,EAAE,OAAO,EAC1B,EAAmB,EAAE,SAAS,EAC9B,EAAmB,EAAE,SAAS,EAE9B,EAAgB,EAAgB,EAAG,CAAmB,EACtD,EAAgB,EAAgB,EAAG,CAAmB,EACtD,EAAa,GAAe,EAAE,UAAU,CAAgB,CAAC,EAGzD,EAAmB,EAAE,UAAU,CAAgB,EAC/C,EAAa,EAAiB,OAAO,EACrC,EAA4B,CAAC,EAG7B,EAA6B,CAAC,EACpC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAc,KAAK,EAAiB,OAAO,CAAC,EAE7C,EAAU,KAAK,CAAa,EAI7B,QAAW,KAAiB,EAAW,CACtC,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAgB,EAC1B,EAAa,KAAK,GAAc,EAAkB,CAAY,CAAC,EAEhE,EAAW,KAAK,CAAE,cAAa,CAAC,EAGjC,EAAU,KAAK,CACd,gBACA,gBACA,iBACA,aACA,YACD,CAAC,GAIH,OAAO,ECrTD,IAAM,GAAc,CAC1B,WAAY,EACZ,WAAY,EACZ,SAAU,EACV,SAAU,EACV,WAAY,GACZ,WAAY,GACZ,WAAY,GACZ,WAAY,GACb,EAoHO,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAE7B,EAAmB,EAAO,SAAS,EACnC,EAAoB,EAAO,SAAS,EACpC,EAAmB,EAAO,SAAS,EAEzC,GAAI,IAAiB,GAAK,GAAgB,EACzC,EAAO,SAAS,EAGjB,IAAM,EAAa,GAAgB,EAAO,UAAU,CAAgB,CAAC,EAC/D,EAAc,GAAiB,EAAO,UAAU,CAAiB,CAAC,EAElE,EAAmB,EAAO,UAAU,CAAgB,EACpD,EAAc,EAAiB,OAAO,EACtC,EAAgB,EAAiB,YAAY,CAAW,EAExD,EAA2B,CAAC,EAClC,QAAW,KAAgB,EAAe,CACzC,IAAM,EAAe,EAAiB,UAAU,CAAY,EACtD,EAAS,GAAgB,CAAY,EAC3C,GAAI,EACH,EAAQ,KAAK,CAAM,EAIrB,MAAO,CACN,QAAS,CAAE,MAAO,EAAc,MAAO,CAAa,EACpD,aACA,cACA,SACD,EAGD,SAAS,EAAe,CAAC,EAAsC,CAC9D,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAa,EAAO,OAAO,EAC3B,EAAgB,EAAO,OAAO,EAC9B,EAAkB,MAAM,KAAK,EAAO,YAAY,CAAa,CAAC,EAEhE,EACJ,GAAI,EAAa,GAAW,oBAC3B,EAAmB,EAAO,OAAO,EAGlC,IAAM,EAAY,CAAE,KAAM,EAAY,kBAAiB,EAEvD,OAAQ,OACF,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAe,EAAQ,CAAe,CAClD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAa,EAAQ,CAAe,CAChD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAgB,EAAQ,CAAe,CACnD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAiB,EAAQ,CAAe,CACpD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAqB,EAAQ,CAAe,CACxD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAiB,EAAQ,CAAe,CACpD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAgB,EAAQ,CAAe,CACnD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAwB,EAAQ,CAAe,CAC3D,MAEI,GACJ,OAAO,GAAqB,EAAQ,EAAiB,CAAS,UAG9D,OAAO,MAIV,SAAS,EAAgB,CACxB,EACA,EACA,EACc,CACd,IAAM,EAAsB,CAAC,EAE7B,GAAI,EAAc,GAAY,WAAY,EAAO,WAAa,EAAO,MAAM,EAC3E,GAAI,EAAc,GAAY,WAAY,EAAO,WAAa,EAAO,MAAM,EAC3E,GAAI,EAAc,GAAY,SAAU,EAAO,SAAW,EAAO,MAAM,EACvE,GAAI,EAAc,GAAY,SAAU,EAAO,SAAW,EAAO,MAAM,EAGvE,IAAM,EAAe,GAAkB,EACvC,GAAI,EAAc,GAAY,WAAY,CACzC,IAAM,EAAS,EAAO,OAAO,EAC7B,GAAI,IAAW,EACd,EAAO,WAAa,GAAc,EAAc,CAAM,GAAK,OAE7D,GAAI,EAAc,GAAY,WAAY,CACzC,IAAM,EAAS,EAAO,OAAO,EAC7B,GAAI,IAAW,EACd,EAAO,WAAa,GAAc,EAAc,CAAM,GAAK,OAE7D,GAAI,EAAc,GAAY,WAAY,CACzC,IAAM,EAAS,EAAO,OAAO,EAC7B,GAAI,IAAW,EACd,EAAO,WAAa,GAAc,EAAc,CAAM,GAAK,OAE7D,GAAI,EAAc,GAAY,WAAY,CACzC,IAAM,EAAS,EAAO,OAAO,EAC7B,GAAI,IAAW,EACd,EAAO,WAAa,GAAc,EAAc,CAAM,GAAK,OAG7D,OAAO,EAGR,SAAS,EAAc,CACtB,EACA,EACsB,CACtB,IAAM,EAAiC,CAAC,EAExC,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAiB,EAAO,UAAU,CAAM,EACxC,EAAI,EAAO,UAAU,CAAM,EAC3B,EAAS,EAAE,OAAO,EAExB,GAAI,IAAW,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAc,EAAE,OAAO,EACvB,EAAQ,GAAiB,EAAG,EAAa,CAAc,EACvD,EAAW,EAAgB,EAAgB,CAAc,EAC/D,EAAU,KAAK,CAAE,OAAQ,EAAG,WAAU,cAAa,OAAM,CAAC,EACpD,QAAI,IAAW,EAAG,CACxB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAc,EAAE,OAAO,EACvB,EAAa,EAAE,OAAO,EACtB,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAO,KAAK,GAAiB,EAAG,EAAa,CAAc,CAAC,EAE7D,IAAM,EAAW,EAAgB,EAAgB,CAAc,EAC/D,EAAU,KAAK,CAAE,OAAQ,EAAG,WAAU,cAAa,QAAO,CAAC,GAI7D,OAAO,EAGR,SAAS,EAAY,CACpB,EACA,EACoB,CACpB,IAAM,EAA+B,CAAC,EAEtC,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAiB,EAAO,UAAU,CAAM,EACxC,EAAI,EAAO,UAAU,CAAM,EAC3B,EAAS,EAAE,OAAO,EAExB,GAAI,IAAW,EACd,EAAU,KAAK,GAAoB,EAAG,CAAc,CAAC,EAC/C,QAAI,IAAW,EACrB,EAAU,KAAK,GAAoB,EAAG,CAAc,CAAC,EAIvD,OAAO,EAGR,SAAS,EAAmB,CAC3B,EACA,EACiB,CACjB,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAiB,EAAO,YAAY,CAAY,EAEhD,EAAW,EAAgB,EAAgB,CAAc,EACzD,EAAsB,CAAC,EAE7B,QAAW,KAAiB,EAAgB,CAC3C,IAAM,EAAgB,EAAe,UAAU,CAAa,EACtD,EAAI,EAAe,UAAU,CAAa,EAC1C,EAAiB,EAAE,OAAO,EAC1B,EAAsC,CAAC,EAE7C,QAAS,EAAI,EAAG,EAAI,EAAgB,IAAK,CACxC,IAAM,EAAc,EAAE,OAAO,EACvB,EAAS,GAAiB,EAAG,EAAc,CAAa,EACxD,EAAS,GAAiB,EAAG,EAAc,CAAa,EAC9D,EAAiB,KAAK,CAAE,cAAa,SAAQ,QAAO,CAAC,EAGtD,EAAS,KAAK,CAAE,kBAAiB,CAAC,EAGnC,MAAO,CAAE,OAAQ,EAAG,WAAU,eAAc,eAAc,UAAS,EAGpE,SAAS,EAAmB,CAC3B,EACA,EACiB,CACjB,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAkB,EAAO,SAAS,EAClC,EAAkB,EAAO,SAAS,EAClC,EAAc,EAAO,OAAO,EAC5B,EAAc,EAAO,OAAO,EAE5B,EAAW,EAAgB,EAAgB,CAAc,EACzD,EAAY,GAAgB,EAAgB,CAAe,EAC3D,EAAY,GAAgB,EAAgB,CAAe,EAE3D,EAAgC,CAAC,EACvC,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAgC,CAAC,EACvC,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAS,GAAiB,EAAQ,EAAc,CAAc,EAC9D,EAAS,GAAiB,EAAQ,EAAc,CAAc,EACpE,EAAc,KAAK,CAAE,SAAQ,QAAO,CAAC,EAEtC,EAAc,KAAK,CAAE,eAAc,CAAC,EAGrC,MAAO,CACN,OAAQ,EACR,WACA,eACA,eACA,YACA,YACA,cACA,cACA,eACD,EAGD,SAAS,EAAoB,CAC5B,EACA,EACA,EACuB,CACvB,GAAI,EAAgB,SAAW,EAAG,OAAO,KAEzC,IAAM,EAAwD,CAAC,EAE/D,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAY,EAAO,UAAU,CAAM,EAEzC,GADe,EAAU,OAAO,IACjB,EAAG,SAElB,IAAM,EAAsB,EAAU,OAAO,EACvC,EAAkB,EAAU,OAAO,EAGzC,EAAa,KAAK,CACjB,KAAM,EACN,OAAQ,EAAU,UAAU,CAAe,CAC5C,CAAC,EAGF,GAAI,EAAa,SAAW,EAAG,OAAO,KAItC,OAFmB,EAAa,IAAI,UAG9B,GAAuB,CAC3B,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAe,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAElD,MAAO,CAAE,KAAM,KAA0B,EAAW,WAAU,CAC/D,KAEK,GAAqB,CACzB,IAAM,EAA+B,CAAC,EACtC,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAa,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEhD,MAAO,CAAE,KAAM,KAAwB,EAAW,WAAU,CAC7D,KAEK,GAAwB,CAC5B,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAgB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEnD,MAAO,CAAE,KAAM,KAA2B,EAAW,WAAU,CAChE,KAEK,GAA2B,CAC/B,IAAM,EAAmC,CAAC,EAC1C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAiB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEpD,MAAO,CAAE,KAAM,KAA8B,EAAW,WAAU,CACnE,KAEK,GAA+B,CACnC,IAAM,EAAuC,CAAC,EAC9C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAqB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAExD,MAAO,CAAE,KAAM,KAAkC,EAAW,WAAU,CACvE,KAEK,GAA2B,CAC/B,IAAM,EAAmC,CAAC,EAC1C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAiB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEpD,MAAO,CAAE,KAAM,KAA8B,EAAW,WAAU,CACnE,KAEK,GAAwB,CAC5B,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAgB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEnD,MAAO,CAAE,KAAM,KAA2B,EAAW,WAAU,CAChE,KAEK,GAAgC,CACpC,IAAM,EAA0C,CAAC,EACjD,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAwB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAE3D,MAAO,CAAE,KAAM,KAAmC,EAAW,WAAU,CACxE,SAGC,OAAO,MAMH,SAAS,EAAU,CACzB,EACA,EACA,EACkD,CAClD,QAAW,KAAY,EAAO,UAAW,CACxC,IAAM,EAAgB,EAAS,SAAS,IAAI,CAAU,EACtD,GAAI,IAAkB,KAAM,SAE5B,GAAI,EAAS,SAAW,EAAG,CAC1B,IAAM,EAAU,EAAS,SAAS,GAClC,GAAI,CAAC,EAAS,SAEd,QAAW,KAAU,EAAQ,iBAC5B,GAAI,EAAO,cAAgB,EAC1B,MAAO,CACN,UAAW,EAAO,OAAO,UAAY,EACrC,UAAW,EAAO,OAAO,UAAY,CACtC,EAGI,QAAI,EAAS,SAAW,EAAG,CACjC,IAAM,EAAS,EAAS,UAAU,IAAI,CAAU,EAC1C,EAAS,EAAS,UAAU,IAAI,CAAW,EAE3C,EAAe,EAAS,cAAc,GAC5C,GAAI,CAAC,EAAc,SAEnB,IAAM,EAAe,EAAa,cAAc,GAChD,GAAI,CAAC,EAAc,SAEnB,MAAO,CACN,UAAW,EAAa,OAAO,UAAY,EAC3C,UAAW,EAAa,OAAO,UAAY,CAC5C,GAIF,OAAO,KC7eD,SAAS,EAAiB,CAChC,EACA,EACyB,CACzB,IAAM,EAAoC,CAAC,EAE3C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,OAFe,EAAE,OAAO,OAGlB,GACJ,EAAU,KAAK,GAAoB,CAAC,CAAC,EACrC,UACI,GACJ,EAAU,KAAK,GAAoB,CAAC,CAAC,EACrC,UACI,GACJ,EAAU,KAAK,GAAoB,CAAC,CAAC,EACrC,OAIH,OAAO,EAGR,SAAS,EAAmB,CAAC,EAAqC,CACjE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAe,EAAO,OAAO,EAC7B,EAAiB,EAAO,YAAY,CAAY,EAEhD,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAqC,CAAC,EAE5C,QAAW,KAAiB,EAAgB,CAC3C,GAAI,IAAkB,EAAG,CACxB,EAAS,KAAK,IAAI,EAClB,SAGD,IAAM,EAAW,EAAO,UAAU,CAAa,EACzC,EAAY,EAAS,OAAO,EAC5B,EAAc,EAAS,YAAY,CAAS,EAE5C,EAAuB,CAAC,EAC9B,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAS,UAAU,CAAU,EAC1C,EAAa,EAAW,OAAO,EAC/B,EAAc,EAAW,OAAO,EAChC,EAAgB,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EACjE,EAAgB,GAAmB,EAAY,CAAW,EAEhE,EAAM,KAAK,CAAE,aAAY,gBAAe,eAAc,CAAC,EAGxD,EAAS,KAAK,CAAK,EAGpB,MAAO,CAAE,OAAQ,EAAG,WAAU,UAAS,EAGxC,SAAS,EAAmB,CAAC,EAAqC,CACjE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAiB,EAAO,SAAS,EACjC,EAAoB,EAAO,OAAO,EAClC,EAAsB,EAAO,YAAY,CAAiB,EAE1D,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAW,GAAgB,EAAQ,CAAc,EACjD,EAAwC,CAAC,EAE/C,QAAW,KAAa,EAAqB,CAC5C,GAAI,IAAc,EAAG,CACpB,EAAc,KAAK,IAAI,EACvB,SAGD,IAAM,EAAY,EAAO,UAAU,CAAS,EACtC,EAAY,EAAU,OAAO,EAC7B,EAAc,EAAU,YAAY,CAAS,EAE7C,EAAqB,CAAC,EAC5B,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAU,UAAU,CAAU,EAC3C,EAAa,EAAW,OAAO,EAC/B,EAAc,EAAW,OAAO,EAChC,EAAe,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAChE,EAAgB,GAAmB,EAAY,CAAW,EAEhE,EAAM,KAAK,CAAE,aAAY,eAAc,eAAc,CAAC,EAGvD,EAAc,KAAK,CAAK,EAGzB,MAAO,CAAE,OAAQ,EAAG,WAAU,WAAU,eAAc,EAGvD,SAAS,EAAmB,CAAC,EAAqC,CACjE,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAc,EAAO,OAAO,EAC5B,EAAkB,EAAO,YAAY,CAAU,EAE/C,EAAwB,CAAC,EAC/B,QAAW,KAAU,EACpB,EAAU,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAG/C,IAAM,EAAgB,GAAmB,EAAQ,CAAW,EAE5D,MAAO,CAAE,OAAQ,EAAG,YAAW,eAAc,EAGvC,SAAS,EAAyB,CACxC,EACA,EACiC,CACjC,IAAM,EAA4C,CAAC,EAEnD,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,OAFe,EAAE,OAAO,OAGlB,GACJ,EAAU,KAAK,GAAqB,CAAC,CAAC,EACtC,UACI,GACJ,EAAU,KAAK,GAAqB,CAAC,CAAC,EACtC,UACI,GACJ,EAAU,KAAK,GAAqB,CAAC,CAAC,EACtC,OAIH,OAAO,EAGR,SAAS,EAAoB,CAAC,EAAwC,CACrE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAAoB,EAAO,OAAO,EAClC,EAAsB,EAAO,YAAY,CAAiB,EAE1D,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAwC,CAAC,EAE/C,QAAW,KAAa,EAAqB,CAC5C,GAAI,IAAc,EAAG,CACpB,EAAc,KAAK,IAAI,EACvB,SAGD,IAAM,EAAY,EAAO,UAAU,CAAS,EACtC,EAAY,EAAU,OAAO,EAC7B,EAAc,EAAU,YAAY,CAAS,EAE7C,EAAqB,CAAC,EAC5B,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAU,UAAU,CAAU,EAE3C,EAAiB,EAAW,OAAO,EACnC,EAAoB,MAAM,KAC/B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAa,EAAW,OAAO,EAC/B,EAAgB,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAEjE,EAAiB,EAAW,OAAO,EACnC,EAAoB,MAAM,KAC/B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAc,EAAW,OAAO,EAChC,EAAgB,GAAmB,EAAY,CAAW,EAEhE,EAAM,KAAK,CACV,oBACA,gBACA,oBACA,eACD,CAAC,EAGF,EAAc,KAAK,CAAK,EAGzB,MAAO,CAAE,OAAQ,EAAG,WAAU,eAAc,EAG7C,SAAS,EAAoB,CAAC,EAAwC,CACrE,IAAM,EAAiB,EAAO,SAAS,EACjC,EAA0B,EAAO,SAAS,EAC1C,EAAsB,EAAO,SAAS,EACtC,EAA0B,EAAO,SAAS,EAC1C,EAAyB,EAAO,OAAO,EACvC,EAA2B,EAAO,YAAY,CAAsB,EAEpE,EAAW,EAAgB,EAAQ,CAAc,EACjD,EAAoB,GAAgB,EAAQ,CAAuB,EACnE,EAAgB,GAAgB,EAAQ,CAAmB,EAC3D,EAAoB,GAAgB,EAAQ,CAAuB,EAEnE,EAAkD,CAAC,EAEzD,QAAW,KAAc,EAA0B,CAClD,GAAI,IAAe,EAAG,CACrB,EAAmB,KAAK,IAAI,EAC5B,SAGD,IAAM,EAAa,EAAO,UAAU,CAAU,EACxC,EAAY,EAAW,OAAO,EAC9B,EAAc,EAAW,YAAY,CAAS,EAE9C,EAA0B,CAAC,EACjC,QAAW,KAAc,EAAa,CACrC,IAAM,EAAa,EAAW,UAAU,CAAU,EAE5C,EAAiB,EAAW,OAAO,EACnC,EAAmB,MAAM,KAC9B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAa,EAAW,OAAO,EAC/B,EAAe,MAAM,KAAK,EAAW,YAAY,EAAa,CAAC,CAAC,EAEhE,EAAiB,EAAW,OAAO,EACnC,EAAmB,MAAM,KAC9B,EAAW,YAAY,CAAc,CACtC,EAEM,EAAc,EAAW,OAAO,EAChC,EAAgB,GAAmB,EAAY,CAAW,EAEhE,EAAM,KAAK,CACV,mBACA,eACA,mBACA,eACD,CAAC,EAGF,EAAmB,KAAK,CAAK,EAG9B,MAAO,CACN,OAAQ,EACR,WACA,oBACA,gBACA,oBACA,oBACD,EAGD,SAAS,EAAoB,CAAC,EAAwC,CACrE,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAA2B,EAAO,YAAY,CAAc,EAE5D,EAAa,EAAO,OAAO,EAC3B,EAAuB,EAAO,YAAY,CAAU,EAEpD,EAAiB,EAAO,OAAO,EAC/B,EAA2B,EAAO,YAAY,CAAc,EAE5D,EAAc,EAAO,OAAO,EAC5B,EAAgB,GAAmB,EAAQ,CAAW,EAEtD,EAAiC,CAAC,EACxC,QAAW,KAAU,EACpB,EAAmB,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGxD,IAAM,EAA6B,CAAC,EACpC,QAAW,KAAU,EACpB,EAAe,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGpD,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAU,EACpB,EAAmB,KAAK,EAAgB,EAAQ,CAAM,CAAC,EAGxD,MAAO,CACN,OAAQ,EACR,qBACA,iBACA,qBACA,eACD,EAGD,SAAS,EAAkB,CAC1B,EACA,EACyB,CACzB,IAAM,EAAkC,CAAC,EACzC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAQ,KAAK,CACZ,cAAe,EAAO,OAAO,EAC7B,gBAAiB,EAAO,OAAO,CAChC,CAAC,EAEF,OAAO,ECvRD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAE7B,EAAmB,EAAO,SAAS,EACnC,EAAoB,EAAO,SAAS,EACpC,EAAmB,EAAO,SAAS,EAEzC,GAAI,IAAiB,GAAK,GAAgB,EACzC,EAAO,SAAS,EAGjB,IAAM,EAAa,GAAgB,EAAO,UAAU,CAAgB,CAAC,EAC/D,EAAc,GAAiB,EAAO,UAAU,CAAiB,CAAC,EAElE,EAAmB,EAAO,UAAU,CAAgB,EACpD,EAAc,EAAiB,OAAO,EACtC,EAAgB,EAAiB,YAAY,CAAW,EAExD,EAA2B,CAAC,EAClC,QAAW,KAAgB,EAAe,CACzC,IAAM,EAAe,EAAiB,UAAU,CAAY,EACtD,EAAS,GACd,EACA,EACA,CACD,EACA,GAAI,EACH,EAAQ,KAAK,CAAM,EAIrB,MAAO,CACN,QAAS,CAAE,MAAO,EAAc,MAAO,CAAa,EACpD,aACA,cACA,SACD,EAGD,SAAS,EAAe,CACvB,EACA,EACA,EACuB,CACvB,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAa,EAAO,OAAO,EAC3B,EAAgB,EAAO,OAAO,EAC9B,EAAkB,MAAM,KAAK,EAAO,YAAY,CAAa,CAAC,EAEhE,EACJ,GAAI,EAAa,GAAW,oBAC3B,EAAmB,EAAO,OAAO,EAGlC,IAAM,EAAY,CAAE,KAAM,EAAY,kBAAiB,EAEvD,OAAQ,OACF,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAiB,EAAQ,CAAe,CACpD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAmB,EAAQ,CAAe,CACtD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAoB,EAAQ,CAAe,CACvD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAmB,EAAQ,CAAe,CACtD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAkB,EAAQ,CAAe,CACrD,MAEI,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAA0B,EAAQ,CAAe,CAC7D,MAEI,GACJ,OAAO,GAAqB,EAAQ,EAAiB,CAAS,MAE1D,GACJ,MAAO,CACN,KAAM,KACH,EACH,UAAW,GAAgC,EAAQ,CAAe,CACnE,UAGA,OAAO,MAIV,SAAS,EAAgB,CACxB,EACA,EACwB,CACxB,IAAM,EAAmC,CAAC,EAE1C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAC3B,EAAS,EAAE,OAAO,EAExB,GAAI,IAAW,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAe,EAAE,MAAM,EACvB,EAAW,EAAgB,EAAG,CAAc,EAClD,EAAU,KAAK,CAAE,OAAQ,EAAG,WAAU,cAAa,CAAC,EAC9C,QAAI,IAAW,EAAG,CACxB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAa,EAAE,OAAO,EACtB,EAAqB,MAAM,KAAK,EAAE,YAAY,CAAU,CAAC,EACzD,EAAW,EAAgB,EAAG,CAAc,EAClD,EAAU,KAAK,CAAE,OAAQ,EAAG,WAAU,oBAAmB,CAAC,GAI5D,OAAO,EAGR,SAAS,EAAkB,CAC1B,EACA,EAC0B,CAC1B,IAAM,EAAqC,CAAC,EAE5C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAgB,EAAE,OAAO,EACzB,EAAkB,EAAE,YAAY,CAAa,EAE7C,EAAW,EAAgB,EAAG,CAAc,EAC5C,EAAyB,CAAC,EAEhC,QAAW,KAAa,EAAiB,CACxC,IAAM,EAAY,EAAE,UAAU,CAAS,EACjC,EAAa,EAAU,OAAO,EACpC,EAAU,KAAK,MAAM,KAAK,EAAU,YAAY,CAAU,CAAC,CAAC,EAG7D,EAAU,KAAK,CAAE,WAAU,WAAU,CAAC,GAIxC,OAAO,EAGR,SAAS,EAAmB,CAC3B,EACA,EAC2B,CAC3B,IAAM,EAAsC,CAAC,EAE7C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAoB,EAAE,OAAO,EAC7B,EAAsB,EAAE,YAAY,CAAiB,EAErD,EAAW,EAAgB,EAAG,CAAc,EAC5C,EAA6B,CAAC,EAEpC,QAAW,KAAa,EAAqB,CAC5C,IAAM,EAAY,EAAE,UAAU,CAAS,EACjC,EAAa,EAAU,OAAO,EACpC,EAAc,KAAK,MAAM,KAAK,EAAU,YAAY,CAAU,CAAC,CAAC,EAGjE,EAAU,KAAK,CAAE,WAAU,eAAc,CAAC,GAI5C,OAAO,EAGR,SAAS,EAAkB,CAC1B,EACA,EAC0B,CAC1B,IAAM,EAAqC,CAAC,EAE5C,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAC5B,EAAmB,EAAE,OAAO,EAC5B,EAAqB,EAAE,YAAY,CAAgB,EAEnD,EAAW,EAAgB,EAAG,CAAc,EAC5C,EAA8B,CAAC,EAErC,QAAW,KAAa,EAAoB,CAC3C,IAAM,EAAY,EAAE,UAAU,CAAS,EACjC,EAAgB,EAAU,OAAO,EACjC,EAAkB,EAAU,YAAY,CAAa,EAErD,EAAwB,CAAC,EAC/B,QAAW,KAAa,EAAiB,CACxC,IAAM,EAAY,EAAU,UAAU,CAAS,EACzC,EAAgB,EAAU,OAAO,EACjC,EAAiB,EAAU,OAAO,EAClC,EAAoB,MAAM,KAC/B,EAAU,YAAY,EAAiB,CAAC,CACzC,EACA,EAAU,KAAK,CAAE,gBAAe,mBAAkB,CAAC,EAGpD,EAAa,KAAK,CAAE,WAAU,CAAC,EAGhC,EAAU,KAAK,CAAE,WAAU,cAAa,CAAC,GAI3C,OAAO,EAGR,SAAS,EAA+B,CACvC,EACA,EACuC,CACvC,IAAM,EAAkD,CAAC,EAEzD,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAI,EAAO,UAAU,CAAM,EAGjC,GAFe,EAAE,OAAO,IAET,EAAG,CACjB,IAAM,EAAiB,EAAE,SAAS,EAE5B,EAAiB,EAAE,OAAO,EAC1B,EAA2B,EAAE,YAAY,CAAc,EAEvD,EAAiB,EAAE,OAAO,EAC1B,EAA2B,EAAE,YAAY,CAAc,EAEvD,EAAa,EAAE,OAAO,EACtB,EAAqB,MAAM,KAAK,EAAE,YAAY,CAAU,CAAC,EAEzD,EAAW,EAAgB,EAAG,CAAc,EAE5C,EAAiC,CAAC,EACxC,QAAW,KAAa,EACvB,EAAmB,KAAK,EAAgB,EAAG,CAAS,CAAC,EAGtD,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAa,EACvB,EAAmB,KAAK,EAAgB,EAAG,CAAS,CAAC,EAGtD,EAAU,KAAK,CACd,WACA,qBACA,qBACA,oBACD,CAAC,GAIH,OAAO,EAGR,SAAS,EAAoB,CAC5B,EACA,EACA,EACuB,CACvB,GAAI,EAAgB,SAAW,EAAG,OAAO,KAGzC,IAAM,EAAwD,CAAC,EAE/D,QAAW,KAAU,EAAiB,CACrC,IAAM,EAAY,EAAO,UAAU,CAAM,EAEzC,GADe,EAAU,OAAO,IACjB,EAAG,SAElB,IAAM,EAAsB,EAAU,OAAO,EACvC,EAAkB,EAAU,OAAO,EAGzC,EAAa,KAAK,CACjB,KAAM,EACN,OAAQ,EAAU,UAAU,CAAe,CAC5C,CAAC,EAGF,GAAI,EAAa,SAAW,EAAG,OAAO,KAEtC,IAAM,EAAa,EAAa,IAAI,KAC9B,EAAiB,EAAa,IAAI,CAAC,EAAG,IAAO,CAAC,EAGpD,OAAQ,OACF,GAAuB,CAC3B,IAAM,EAAmC,CAAC,EAC1C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAiB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEpD,MAAO,CAAE,KAAM,KAA0B,EAAW,WAAU,CAC/D,KAEK,GAAyB,CAC7B,IAAM,EAAqC,CAAC,EAC5C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAmB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEtD,MAAO,CAAE,KAAM,KAA4B,EAAW,WAAU,CACjE,KAEK,GAA0B,CAC9B,IAAM,EAAsC,CAAC,EAC7C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAoB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEvD,MAAO,CAAE,KAAM,KAA6B,EAAW,WAAU,CAClE,KAEK,GAAyB,CAC7B,IAAM,EAAqC,CAAC,EAC5C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAmB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEtD,MAAO,CAAE,KAAM,KAA4B,EAAW,WAAU,CACjE,KAEK,GAAwB,CAC5B,IAAM,EAAoC,CAAC,EAC3C,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAkB,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAErD,MAAO,CAAE,KAAM,KAA2B,EAAW,WAAU,CAChE,KAEK,GAAgC,CACpC,IAAM,EAA4C,CAAC,EACnD,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAA0B,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAE7D,MAAO,CAAE,KAAM,KAAmC,EAAW,WAAU,CACxE,KAEK,GAAsC,CAC1C,IAAM,EAAkD,CAAC,EACzD,QAAW,KAAO,EACjB,EAAU,KAAK,GAAG,GAAgC,EAAI,OAAQ,CAAC,CAAC,CAAC,CAAC,EAEnE,MAAO,CACN,KAAM,KACH,EACH,WACD,CACD,SAGC,OAAO,MAMH,SAAS,EAAgB,CAC/B,EACA,EACiB,CACjB,QAAW,KAAY,EAAO,UAAW,CACxC,IAAM,EAAgB,EAAS,SAAS,IAAI,CAAO,EACnD,GAAI,IAAkB,KAAM,SAE5B,GAAI,EAAS,SAAW,GAAK,EAAS,eAAiB,OACtD,OAAQ,EAAU,EAAS,aAAgB,MAG5C,GAAI,EAAS,SAAW,GAAK,EAAS,mBACrC,OAAO,EAAS,mBAAmB,IAAkB,KAIvD,OAAO,KAGD,SAAS,EAAkB,CACjC,EACA,EACA,EACsD,CACtD,IAAM,EAAa,EAAS,GAC5B,GAAI,IAAe,OAAW,OAAO,KAErC,QAAW,KAAY,EAAO,UAAW,CACxC,IAAM,EAAgB,EAAS,SAAS,IAAI,CAAU,EACtD,GAAI,IAAkB,KAAM,SAE5B,IAAM,EAAc,EAAS,aAAa,GAC1C,GAAI,CAAC,EAAa,SAElB,QAAW,KAAY,EAAY,UAAW,CAC7C,IAAM,EAAiB,EAAS,kBAAkB,OAElD,GAAI,EAAa,EAAI,EAAiB,EAAS,OAAQ,SAEvD,IAAI,EAAU,GACd,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,GAAI,EAAS,EAAa,EAAI,KAAO,EAAS,kBAAkB,GAAI,CACnE,EAAU,GACV,MAIF,GAAI,EACH,MAAO,CACN,cAAe,EAAS,cACxB,SAAU,EAAI,CACf,GAKH,OAAO,KC1hBD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,MAAM,EAC5B,EAAqB,EAAO,OAAO,EACnC,EAAc,EAAO,OAAO,EAElC,GAAI,IAxDqB,WAyDxB,MAAU,MACT,sCAAsC,EAAY,SAAS,EAAE,GAC9D,EAGD,IAAM,EAAQ,EAAO,OAAO,EACtB,EAAa,EAAO,OAAO,EAC3B,EAAU,EAAO,aAAa,EAC9B,EAAW,EAAO,aAAa,EAC/B,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EACpB,EAAO,EAAO,MAAM,EACpB,EAAW,EAAO,OAAO,EACzB,EAAgB,EAAO,OAAO,EAC9B,EAAoB,EAAO,MAAM,EACjC,EAAmB,EAAO,MAAM,EAChC,EAAkB,EAAO,MAAM,EAErC,MAAO,CACN,eACA,eACA,eACA,qBACA,cACA,QACA,aACA,UACA,WACA,OACA,OACA,OACA,OACA,WACA,gBACA,oBACA,mBACA,iBACD,ECzEM,SAAS,EAAS,CAAC,EAA2B,CACpD,MAAO,CACN,aAAc,EAAO,OAAO,EAC5B,aAAc,EAAO,OAAO,EAC5B,SAAU,EAAO,MAAM,EACvB,UAAW,EAAO,MAAM,EACxB,QAAS,EAAO,MAAM,EACtB,gBAAiB,EAAO,OAAO,EAC/B,mBAAoB,EAAO,MAAM,EACjC,oBAAqB,EAAO,MAAM,EAClC,WAAY,EAAO,MAAM,EACzB,eAAgB,EAAO,MAAM,EAC7B,cAAe,EAAO,MAAM,EAC5B,YAAa,EAAO,MAAM,EAC1B,UAAW,EAAO,MAAM,EACxB,UAAW,EAAO,MAAM,EACxB,UAAW,EAAO,MAAM,EACxB,UAAW,EAAO,MAAM,EACxB,iBAAkB,EAAO,MAAM,EAC/B,iBAAkB,EAAO,OAAO,CACjC,ECZM,SAAS,EAAS,CAAC,EAA2B,CAEpD,MAAO,CAAE,aADY,EAAO,MAAM,EAAO,SAAS,CAC5B,EAMhB,SAAS,EAAS,CAAC,EAA2B,CAEpD,MAAO,CAAE,aADY,EAAO,MAAM,EAAO,SAAS,CAC5B,EAMhB,SAAS,EAAQ,CAAC,EAA0B,CAClD,IAAM,EAAQ,KAAK,MAAM,EAAO,UAAY,CAAC,EACvC,EAAS,IAAI,WAAW,CAAK,EACnC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAO,GAAK,EAAO,MAAM,EAE1B,MAAO,CAAE,QAAO,EClCV,SAAS,EAAS,CACxB,EACA,EACA,EACY,CAEZ,IAAM,EAAgC,MAAM,CAAgB,EAC5D,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAS,GAAK,CACb,aAAc,EAAO,OAAO,EAC5B,IAAK,EAAO,MAAM,CACnB,EAID,IAAM,EAAsB,EAAY,EAClC,EAAgC,MAAM,CAAmB,EAC/D,QAAS,EAAI,EAAG,EAAI,EAAqB,IACxC,EAAiB,GAAK,EAAO,MAAM,EAGpC,MAAO,CAAE,WAAU,kBAAiB,EAI9B,SAAS,EAAe,CAAC,EAAiB,EAA0B,CAC1E,GAAI,EAAU,EAAK,SAAS,OAC3B,OAAO,EAAK,SAAS,IAAU,aAGhC,OAAO,EAAK,SAAS,EAAK,SAAS,OAAS,IAAI,aAI1C,SAAS,EAAkB,CAAC,EAAiB,EAA0B,CAC7E,GAAI,EAAU,EAAK,SAAS,OAC3B,OAAO,EAAK,SAAS,IAAU,IAEhC,IAAM,EAAM,EAAU,EAAK,SAAS,OACpC,OAAO,EAAK,iBAAiB,IAAQ,ECyBtC,SAAS,EAAgB,CAAC,EAAgB,EAAoC,CAC7E,GAAI,IAAW,EAAG,OAAO,KAEzB,IAAM,EAAY,EAAO,UAAU,CAAM,EACnC,EAAc,EAAU,OAAO,EAC/B,EAA0B,CAAC,EAEjC,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAc,KAAK,EAAU,OAAO,CAAC,EAGtC,MAAO,CAAE,eAAc,EAGxB,SAAS,EAAY,CAAC,EAAgB,EAAgC,CACrE,GAAI,IAAW,EAAG,OAAO,KAEzB,IAAM,EAAY,EAAO,UAAU,CAAM,EACnC,EAAc,EAAU,OAAO,EAC/B,EAA0B,CAAC,EAEjC,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAc,KAAK,EAAU,OAAO,CAAC,EAGtC,MAAO,CAAE,eAAc,EAGxB,SAAS,EAAiB,CAAC,EAAgB,EAAoC,CAC9E,IAAM,EAAY,EAAO,UAAU,CAAM,EAEnC,EAA4B,EAAU,OAAO,EAC7C,EAA6B,EAAU,OAAO,EAC9C,EAA4B,EAAU,OAAO,EAC7C,EAA6B,EAAU,OAAO,EAC9C,EAAyB,EAAU,OAAO,EAC1C,EAA4B,EAAU,OAAO,EAC7C,EAA6B,EAAU,OAAO,EAC9C,EAA4B,EAAU,OAAO,EAC7C,EAA6B,EAAU,OAAO,EAC9C,EAAyB,EAAU,OAAO,EAEhD,MAAO,CACN,oBAAqB,GACpB,EACA,EAAS,CACV,EACA,qBAAsB,GACrB,EACA,EAAS,CACV,EACA,oBAAqB,GACpB,EACA,EAAS,CACV,EACA,qBAAsB,GACrB,EACA,EAAS,CACV,EACA,iBAAkB,GAAa,EAAQ,EAAS,CAAsB,EACtE,oBAAqB,GACpB,EACA,EAAS,CACV,EACA,qBAAsB,GACrB,EACA,EAAS,CACV,EACA,oBAAqB,GACpB,EACA,EAAS,CACV,EACA,qBAAsB,GACrB,EACA,EAAS,CACV,EACA,iBAAkB,GAAa,EAAQ,EAAS,CAAsB,CACvE,EAGD,SAAS,EAAgB,CAAC,EAAgB,EAA6B,CACtE,IAAM,EAAa,EAAO,UAAU,CAAM,EACpC,EAAoB,EAAW,OAAO,EAEtC,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAmB,IACtC,EAAgB,KAAK,EAAW,OAAO,CAAC,EAGzC,IAAM,EAAmC,CAAC,EAC1C,QAAW,KAAa,EACvB,EAAW,KAAK,GAAkB,EAAQ,EAAS,CAAS,CAAC,EAG9D,MAAO,CAAE,YAAW,EAGrB,SAAS,EAAe,CACvB,EACA,EACsC,CACtC,IAAM,EAAe,EAAO,UAAU,CAAM,EACtC,EAAsB,EAAa,OAAO,EAC1C,EAAuB,EAAa,OAAO,EAC3C,EAAmB,EAAa,OAAO,EAGvC,EAAsD,CAAC,EAC7D,QAAS,EAAI,EAAG,EAAI,EAAkB,IAAK,CAC1C,IAAM,EAAM,EAAa,OAAO,EAC1B,EAAa,EAAa,OAAO,EACvC,EAAY,KAAK,CAAE,MAAK,OAAQ,CAAW,CAAC,EAI7C,IAAM,EAA2B,CAAC,EAClC,GAAI,IAAwB,EAAG,CAC9B,IAAM,EAAY,EAAO,UAAU,EAAS,CAAmB,EACzD,EAAa,EAAU,OAAO,EACpC,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAe,KAAK,EAAU,OAAO,CAAC,EAKxC,IAAM,EACL,IAAyB,EACtB,GAAiB,EAAQ,EAAS,CAAoB,EACtD,KAGE,EAAiB,IAAI,IAC3B,QAAa,MAAK,OAAQ,KAAgB,EACzC,EAAe,IAAI,EAAK,GAAiB,EAAQ,EAAS,CAAU,CAAC,EAGtE,MAAO,CAAE,iBAAgB,iBAAgB,gBAAe,EAGlD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAkB,EAAO,OAAO,EAGhC,EAAqD,CAAC,EAC5D,QAAS,EAAI,EAAG,EAAI,EAAiB,IAAK,CACzC,IAAM,EAAM,EAAO,OAAO,EACpB,EAAS,EAAO,OAAO,EAC7B,EAAW,KAAK,CAAE,MAAK,QAAO,CAAC,EAIhC,IAAM,EAA8B,CAAC,EACrC,QAAa,MAAK,YAAY,EAAY,CACzC,IAAM,EAAS,GAAgB,EAAQ,CAAM,EAC7C,EAAQ,KAAK,CAAE,UAAW,KAAQ,CAAO,CAAC,EAG3C,MAAO,CACN,eACA,eACA,SACD,EAIM,SAAS,EAAiB,CAChC,EACA,EACW,CAEX,OADe,EAAK,QAAQ,KAAK,CAAC,IAAM,EAAE,YAAc,CAAS,GAClD,gBAAkB,CAAC,EAI5B,SAAS,EAAiB,CAChC,EACA,EACA,EACuB,CACvB,IAAM,EAAS,EAAK,QAAQ,KAAK,CAAC,IAAM,EAAE,YAAc,CAAS,EACjE,GAAI,CAAC,EAAQ,MAAO,CAAC,EAGrB,GAAI,IAAgB,OAAW,CAC9B,IAAM,EAAU,EAAO,eAAe,IAAI,CAAW,EACrD,GAAI,EAAS,OAAO,EAAQ,WAI7B,OAAO,EAAO,gBAAgB,YAAc,CAAC,EAIvC,SAAS,EAAgB,CAAC,EAM/B,CACD,MAAO,CACN,WAAY,EAAS,qBAAqB,eAAiB,CAAC,EAC5D,YAAa,EAAS,sBAAsB,eAAiB,CAAC,EAC9D,WAAY,EAAS,qBAAqB,eAAiB,CAAC,EAC5D,YAAa,EAAS,sBAAsB,eAAiB,CAAC,EAC9D,WAAY,EAAS,kBAAkB,eAAiB,CAAC,CAC1D,EAIM,SAAS,EAAgB,CAAC,EAM/B,CACD,MAAO,CACN,WAAY,EAAS,qBAAqB,eAAiB,CAAC,EAC5D,YAAa,EAAS,sBAAsB,eAAiB,CAAC,EAC9D,WAAY,EAAS,qBAAqB,eAAiB,CAAC,EAC5D,YAAa,EAAS,sBAAsB,eAAiB,CAAC,EAC9D,WAAY,EAAS,kBAAkB,eAAiB,CAAC,CAC1D,ECzQM,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAU,EAAO,OAAO,EACxB,EAA4B,CAAC,EAEnC,GAAI,IAAY,EAAG,CAElB,IAAM,EAAU,EAAO,OAAO,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAW,GAAkB,CAAM,EACzC,GAAI,EAAU,EAAU,KAAK,CAAQ,GAEhC,QAAI,IAAY,EAAG,CAEzB,EAAO,KAAK,CAAC,EACb,IAAM,EAAU,EAAO,OAAO,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAW,GAAuB,CAAM,EAC9C,GAAI,EAAU,EAAU,KAAK,CAAQ,GAIvC,MAAO,CAAE,UAAS,WAAU,EAG7B,SAAS,EAAiB,CAAC,EAAqC,CAC/D,IAAM,EAAW,EAAO,OAAO,EACzB,EAAS,EAAO,OAAO,EACvB,EAAe,EAAO,OAAO,EAE7B,EAAyB,CAC9B,YAAa,EAAe,KAAY,EACxC,SAAU,EAAe,KAAY,EACrC,aAAc,EAAe,KAAY,EACzC,UAAW,EAAe,KAAY,CACvC,EAEM,EAAU,GAAgB,EAAK,IAErC,GAAI,IAAW,EACd,OAAO,GAAiB,EAAQ,CAAQ,EAClC,QAAI,IAAW,EACrB,OAAO,GAAiB,EAAQ,EAAU,EAAS,CAAC,EAKrD,OADA,EAAO,KAAK,EAAS,CAAC,EACf,KAGR,SAAS,EAAsB,CAAC,EAAqC,CACpE,IAAM,EAAS,EAAO,OAAO,EACvB,EAAe,EAAO,OAAO,EAC7B,EAAc,EAAO,OAAO,EAE5B,EAAyB,CAC9B,YAAa,EAAe,SAAY,EACxC,QAAS,GACT,aAAc,EAAe,SAAY,EACzC,UAAW,EAAe,QAAY,CACvC,EAEM,EAAS,EAAe,IAE9B,GAAI,IAAW,EACd,OAAO,GAAiB,EAAQ,CAAQ,EAClC,QAAI,IAAW,EACrB,OAAO,GAAiB,EAAQ,EAAU,EAAS,CAAC,EAKrD,OADA,EAAO,KAAK,EAAS,CAAC,EACf,KAGR,SAAS,EAAgB,CAAC,EAAgB,EAAqC,CAC9E,IAAM,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,CAAC,EAEb,IAAM,EAAQ,IAAI,IAElB,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAO,EAAO,OAAO,EACrB,EAAQ,EAAO,OAAO,EACtB,EAAQ,EAAO,MAAM,EACrB,EAAO,GAAQ,GAAM,EAC3B,EAAM,IAAI,EAAK,CAAK,EAGrB,MAAO,CAAE,OAAQ,EAAG,WAAU,OAAM,EAGrC,SAAS,EAAgB,CACxB,EACA,EACA,EACc,CACd,IAAM,EAAc,EAAO,OACrB,EAAW,EAAO,OAAO,EACzB,EAAkB,EAAO,OAAO,EAChC,EAAmB,EAAO,OAAO,EACjC,EAAc,EAAO,OAAO,EAG5B,EAAiB,IAAI,IAC3B,EAAO,KAAK,EAAc,CAAe,EACzC,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAAc,EAAO,OAAO,EAClC,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAAa,EAAO,OAAO,EACjC,GAAI,IAAe,EAClB,EAAe,IAAI,EAAiB,EAAG,CAAU,EAKnD,IAAM,EAAkB,IAAI,IAC5B,EAAO,KAAK,EAAc,CAAgB,EAC1C,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAe,EAAO,OAAO,EACnC,QAAS,EAAI,EAAG,EAAI,EAAc,IAAK,CACtC,IAAM,EAAa,EAAO,OAAO,EACjC,GAAI,IAAe,EAClB,EAAgB,IAAI,EAAkB,EAAG,CAAU,EAKrD,EAAO,KAAK,EAAc,CAAW,EACrC,IAAM,EAAU,EAAW,EAAI,KAAK,MAAM,EAAa,CAAQ,EAAI,EAC7D,EAAU,EAAW,EACrB,EAA2B,CAAC,EAElC,QAAS,EAAM,EAAG,EAAM,EAAS,IAAO,CACvC,IAAM,EAAqB,CAAC,EAC5B,QAAS,EAAM,EAAG,EAAM,EAAS,IAChC,EAAU,KAAK,EAAO,MAAM,CAAC,EAE9B,EAAc,KAAK,CAAS,EAG7B,MAAO,CACN,OAAQ,EACR,WACA,WACA,iBACA,kBACA,eACD,EAMM,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,IAAI,EAAQ,EAEZ,QAAW,KAAY,EAAK,UAAW,CACtC,GAAI,CAAC,EAAS,SAAS,WAAY,SAEnC,GAAI,EAAS,SAAW,EAAG,CAC1B,IAAM,EAAO,GAAQ,GAAM,EACrB,EAAQ,EAAS,MAAM,IAAI,CAAG,EACpC,GAAI,IAAU,OACb,GAAI,EAAS,SAAS,SACrB,EAAQ,EAER,QAAS,EAGL,QAAI,EAAS,SAAW,EAAG,CACjC,IAAM,EAAY,EAAS,eAAe,IAAI,CAAI,GAAK,EACjD,EAAa,EAAS,gBAAgB,IAAI,CAAK,GAAK,EAE1D,GAAI,EAAY,GAAK,EAAa,EAAG,CACpC,IAAM,EAAW,KAAK,MAAM,EAAY,CAAC,EACnC,EAAW,KAAK,MAAM,EAAa,CAAC,EACpC,EAAM,EAAS,cAAc,GACnC,GAAI,EAAK,CACR,IAAM,EAAQ,EAAI,GAClB,GAAI,IAAU,OACb,GAAI,EAAS,SAAS,SACrB,EAAQ,EAER,QAAS,KAQf,OAAO,ECpHD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAU,EAAO,OAAO,EAC9B,EAAO,KAAK,CAAC,EACb,IAAM,EAAU,EAAO,OAAO,EAExB,EAA4B,CAAC,EAEnC,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAW,GAAkB,CAAM,EACzC,GAAI,EAAU,EAAU,KAAK,CAAQ,EAGtC,MAAO,CAAE,UAAS,UAAS,WAAU,EAGtC,SAAS,EAAiB,CAAC,EAAqC,CAC/D,IAAM,EAAS,EAAO,OAAO,EACvB,EAAoB,EAAO,OAAO,EAClC,EAAa,EAAO,OAAO,EACjC,EAAO,KAAK,CAAC,EAEb,IAAM,EAAS,EAAoB,IAC7B,EAAyB,CAC9B,UAAW,EAAoB,cAAgB,EAC/C,aAAc,EAAoB,cAAgB,EAClD,WAAY,EAAoB,aAAgB,CACjD,EAEM,EAAyB,CAAE,SAAQ,WAAU,YAAW,EACxD,EAAc,EAAO,OAAS,EAAS,GAEzC,EAAgC,KAEpC,OAAQ,OACF,GACJ,EAAW,GAAiB,EAAQ,CAAI,EACxC,UACI,GACJ,EAAW,GAAiB,EAAQ,CAAI,EACxC,UACI,GACJ,EAAW,GAAiB,EAAQ,CAAI,EACxC,UACI,GACJ,EAAW,GAAiB,EAAQ,CAAI,EACxC,MAMF,OAFA,EAAO,KAAK,CAAW,EAEhB,EAGR,SAAS,EAAgB,CACxB,EACA,EAC0B,CAC1B,IAAM,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,EAAE,EAEd,IAAM,EAAoB,CAAC,EAC3B,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAM,KAAK,CACV,KAAM,EAAO,OAAO,EACpB,MAAO,EAAO,OAAO,EACrB,MAAO,EAAO,MAAM,CACrB,CAAC,EACD,EAAO,KAAK,CAAC,EAGd,MAAO,IACH,EACH,OAAQ,EACR,SACA,OACD,EAGD,SAAS,EAAgB,CACxB,EACA,EACyB,CACzB,IAAM,EAA+B,CACpC,SAAU,EAAO,OAAO,EACxB,iBAAkB,EAAO,SAAS,EAClC,iBAAkB,EAAO,SAAS,EAClC,iBAAkB,EAAO,SAAS,EAClC,iBAAkB,EAAO,SAAS,CACnC,EAEA,MAAO,IACH,EACH,OAAQ,EACR,aACD,EAGD,SAAS,EAAgB,CACxB,EACA,EAC0B,CAC1B,IAAM,EAAW,EAAO,OAAO,EAC/B,EAAO,KAAK,CAAC,EAEb,IAAM,EAAuB,EAAO,SAAS,EACvC,EAAwB,EAAO,SAAS,EACxC,EAAqB,EAAO,SAAS,EAGrC,EAAiB,GACtB,EAAO,UAAU,CAAoB,CACtC,EACM,EAAkB,GACvB,EAAO,UAAU,CAAqB,CACvC,EAGM,EAAc,EAAO,UAAU,CAAkB,EACjD,EACL,EAAe,QAAU,EACtB,KAAK,IAAI,GAAG,MAAM,KAAK,EAAe,OAAO,CAAC,EAAI,EAClD,EACE,EAAU,EAAW,EACrB,EAAe,IAAI,WAAW,EAAU,CAAO,EAErD,QAAY,EAAG,KAAM,EAAa,QAAQ,EACzC,EAAa,GAAK,EAAY,MAAM,EAGrC,MAAO,IACH,EACH,OAAQ,EACR,WACA,iBACA,kBACA,cACD,EAGD,SAAS,EAAmB,CAAC,EAAgC,CAC5D,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAU,EAAO,OAAO,EACxB,EAAU,IAAI,WAAW,CAAO,EAEtC,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,EAAQ,GAAK,EAAO,MAAM,EAG3B,MAAO,CAAE,aAAY,UAAS,SAAQ,EAGvC,SAAS,EAAgB,CACxB,EACA,EACsB,CACtB,IAAM,EAAQ,EAAO,OAAO,EACtB,EAAW,EAAO,OAAO,EACzB,EAAc,EAAO,OAAO,EAC5B,EAAsB,EAAO,SAAS,EACtC,EAAyB,EAAO,SAAS,EACzC,EAAqB,EAAO,SAAS,EACrC,EAAsB,EAAO,SAAS,EAE5C,MAAO,IACH,EACH,OAAQ,EACR,QACA,WACA,cACA,sBACA,yBACA,qBACA,qBACD,EAMM,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,QAAW,KAAY,EAAK,UAAW,CACtC,GAAI,EAAS,SAAS,SAAU,SAEhC,OAAQ,EAAS,YACX,GAA8B,CAElC,IAAM,EAAQ,EAAS,MACnB,EAAK,EACL,EAAK,EAAM,OAAS,EAExB,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,GAAO,EACnB,EAAO,EAAM,GACnB,GAAI,CAAC,EAAM,MAEX,IAAM,EAAO,EAAK,MAAQ,GAAM,EAAK,MAC/B,EAAU,GAAQ,GAAM,EAE9B,GAAI,IAAQ,EACX,OAAO,EAAK,MACN,QAAI,EAAM,EAChB,EAAK,EAAM,EAEX,OAAK,EAAM,EAGb,KACD,KACK,GAA8B,CAClC,IAA2B,eAArB,EACsB,gBAAtB,GAAa,EAEnB,GACC,EAAO,EAAU,YACjB,GAAQ,EAAU,WAAa,EAAU,QAEzC,SAED,GACC,EAAQ,EAAW,YACnB,GAAS,EAAW,WAAa,EAAW,QAE5C,SAGD,IAAM,EAAY,EAAU,QAAQ,EAAO,EAAU,YAC/C,EAAa,EAAW,QAAQ,EAAQ,EAAW,YACzD,GAAI,IAAc,QAAa,IAAe,OAAW,SAEzD,IAAM,EAAU,EAAS,SAAW,EAC9B,EAAQ,EAAY,EAAU,EAEpC,GAAI,EAAQ,EAAS,aAAa,OAAQ,CACzC,IAAM,EAAQ,EAAS,aAAa,GACpC,GAAI,IAAU,QAAa,IAAU,EAAG,OAAO,EAEhD,KACD,GAIF,MAAO,GC5MR,SAAS,CAAoB,CAC5B,EACA,EACkB,CAClB,IAAM,EAAQ,EAAO,MAAM,EACrB,EAAe,EAAO,OAAO,EACnC,MAAO,CACN,QACA,OAAQ,GAAc,EAAa,CAAY,CAChD,EAGD,SAAS,EAAkB,CAAC,EAA+B,CAC1D,IAAM,EAAc,EACd,EAAyB,EAAO,MAAM,EACtC,EAA+B,EAAO,MAAM,EAC5C,EAA+B,EAAO,OAAO,EAC7C,EAA2B,EAAO,OAAO,EAE/C,MAAO,CACN,yBACA,+BACA,+BACA,2BACA,YAAa,EAAqB,EAAQ,CAAW,EACrD,WAAY,EAAqB,EAAQ,CAAW,EACpD,iBAAkB,EAAqB,EAAQ,CAAW,EAC1D,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,mBAAoB,EAAqB,EAAQ,CAAW,EAC5D,gBAAiB,EAAqB,EAAQ,CAAW,EACzD,yBAA0B,EAAqB,EAAQ,CAAW,EAClE,mBAAoB,EAAqB,EAAQ,CAAW,EAC5D,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,2BAA4B,EAAqB,EAAQ,CAAW,EACpE,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,kCAAmC,EAClC,EACA,CACD,EACA,iBAAkB,EAAqB,EAAQ,CAAW,EAC1D,iBAAkB,EAAqB,EAAQ,CAAW,EAC1D,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,iBAAkB,EAAqB,EAAQ,CAAW,EAC1D,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,gBAAiB,EAAqB,EAAQ,CAAW,EACzD,4BAA6B,EAAqB,EAAQ,CAAW,EACrE,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,iCAAkC,EAAqB,EAAQ,CAAW,EAC1E,YAAa,EAAqB,EAAQ,CAAW,EACrD,wBAAyB,EAAqB,EAAQ,CAAW,EACjE,uBAAwB,EAAqB,EAAQ,CAAW,EAChE,4BAA6B,EAAqB,EAAQ,CAAW,EACrE,wBAAyB,EAAqB,EAAQ,CAAW,EACjE,wBAAyB,EAAqB,EAAQ,CAAW,EACjE,yBAA0B,EAAqB,EAAQ,CAAW,EAClE,qCAAsC,EACrC,EACA,CACD,EACA,6BAA8B,EAAqB,EAAQ,CAAW,EACtE,yCAA0C,EACzC,EACA,CACD,EACA,wBAAyB,EAAqB,EAAQ,CAAW,EACjE,8BAA+B,EAAqB,EAAQ,CAAW,EACvE,sBAAuB,EAAqB,EAAQ,CAAW,EAC/D,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,gCAAiC,EAAqB,EAAQ,CAAW,EACzE,4BAA6B,EAAqB,EAAQ,CAAW,EACrE,0BAA2B,EAAqB,EAAQ,CAAW,EACnE,mBAAoB,EAAqB,EAAQ,CAAW,EAC5D,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,oBAAqB,EAAqB,EAAQ,CAAW,EAC7D,sBAAuB,EAAqB,EAAQ,CAAW,EAC/D,uBAAwB,EAAqB,EAAQ,CAAW,EAChE,mBAAoB,EAAqB,EAAQ,CAAW,EAC5D,+BAAgC,EAAqB,EAAQ,CAAW,EACxE,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,qBAAsB,EAAqB,EAAQ,CAAW,EAC9D,wBAAyB,EAAqB,EAAQ,CAAW,EACjE,uBAAwB,EAAqB,EAAQ,CAAW,EAChE,gCAAiC,EAAO,MAAM,CAC/C,EAGD,SAAS,EAA0B,CAAC,EAAuC,CAC1E,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAAQ,EAAO,OAAO,EAEtB,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAO,KAAK,EAAqB,EAAQ,CAAM,CAAC,EAKjD,MAAO,CAAE,SAFQ,EAAgB,EAAQ,CAAc,EAEpC,QAAO,EAG3B,SAAS,EAA4B,CAAC,EAAyC,CAC9E,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAAQ,EAAO,OAAO,EAEtB,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAO,KAAK,EAAqB,EAAQ,CAAM,CAAC,EAKjD,MAAO,CAAE,SAFQ,EAAgB,EAAQ,CAAc,EAEpC,QAAO,EAG3B,SAAS,EAAmB,CAAC,EAAgB,EAAgC,CAC5E,IAAM,EAAa,EAAO,UAAU,CAAM,EACpC,EAAc,EAAW,OAAO,EAEhC,EAAuC,CAAC,EAC9C,QAAS,EAAI,EAAG,EAAI,EAAa,IAChC,EAAkB,KAAK,EAAqB,EAAY,CAAU,CAAC,EAGpE,IAAM,EAAgC,CAAC,EACvC,QAAS,EAAI,EAAG,EAAI,EAAc,EAAG,IACpC,EAAW,KAAK,EAAqB,EAAY,CAAU,CAAC,EAG7D,MAAO,CAAE,oBAAmB,YAAW,EAGxC,SAAS,EAAsB,CAAC,EAAmC,CAClE,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAAQ,EAAO,OAAO,EAEtB,EAKD,CAAC,EAEN,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAgB,KAAK,CACpB,eAAgB,EAAO,OAAO,EAC9B,cAAe,EAAO,OAAO,EAC7B,kBAAmB,EAAO,OAAO,EACjC,iBAAkB,EAAO,OAAO,CACjC,CAAC,EAGF,IAAM,EAAW,EAAgB,EAAQ,CAAc,EAEjD,EAA2B,EAAgB,IAAI,CAAC,KAAY,CACjE,SACC,EAAO,iBAAmB,EACvB,GAAoB,EAAQ,EAAO,cAAc,EACjD,KACJ,QACC,EAAO,gBAAkB,EACtB,GAAoB,EAAQ,EAAO,aAAa,EAChD,KACJ,YACC,EAAO,oBAAsB,EAC1B,GAAoB,EAAQ,EAAO,iBAAiB,EACpD,KACJ,WACC,EAAO,mBAAqB,EACzB,GAAoB,EAAQ,EAAO,gBAAgB,EACnD,IACL,EAAE,EAEF,MAAO,CAAE,WAAU,UAAS,EAG7B,SAAS,EAAkB,CAAC,EAA+B,CAC1D,IAAM,EAA0B,EAAO,OAAO,EACxC,EAA4B,EAAO,OAAO,EAC1C,EAA8B,EAAO,OAAO,EAC5C,EAAiB,EAAO,OAAO,EAEjC,EAAkD,KACtD,GAAI,IAA4B,EAC/B,EAAoB,GACnB,EAAO,UAAU,CAAuB,CACzC,EAGD,IAAI,EAAsD,KAC1D,GAAI,IAA8B,EACjC,EAAsB,GACrB,EAAO,UAAU,CAAyB,CAC3C,EAGD,IAAI,EAAsD,KAC1D,GAAI,IAAgC,EAEnC,EAAwB,CAAE,SADT,EAAgB,EAAQ,CAA2B,CACjC,EAGpC,IAAI,EAAqC,KACzC,GAAI,IAAmB,EACtB,EAAW,GAAuB,EAAO,UAAU,CAAc,CAAC,EAGnE,MAAO,CACN,oBACA,sBACA,wBACA,UACD,EAGD,SAAS,EAAkB,CAAC,EAA+B,CAC1D,IAAM,EAAoB,EAAqB,EAAQ,CAAM,EACvD,EAAY,EAAO,OAAO,EAE1B,EAA2B,CAAC,EAClC,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAM,KAAK,CACV,QAAS,EAAO,OAAO,EACvB,qBAAsB,EAAO,OAAO,EACpC,mBAAoB,EAAO,OAAO,EAClC,YAAa,EAAO,OAAO,EAC3B,UAAW,EAAO,OAAO,CAC1B,CAAC,EAGF,MAAO,CAAE,oBAAmB,OAAM,EAGnC,SAAS,EAA0B,CAAC,EAAuC,CAC1E,IAAM,EAAsB,EAAO,OAAO,EACpC,EAAe,EAAO,OAAO,EAE7B,EACL,CAAC,EACF,QAAS,EAAI,EAAG,EAAI,EAAc,IACjC,EAAS,KAAK,CACb,aAAc,EAAO,OAAO,EAC5B,mBAAoB,EAAO,OAAO,CACnC,CAAC,EAGF,IAAI,EAAsC,KAC1C,GAAI,IAAwB,EAC3B,EAAgB,GAAmB,EAAO,UAAU,CAAmB,CAAC,EAGzE,MAAO,CAAE,gBAAe,UAAS,EAGlC,SAAS,EAAiB,CAAC,EAA8B,CACxD,IAAM,EAAsB,EAAO,OAAO,EACpC,EAA0B,EAAO,OAAO,EACxC,EAA2B,EAAO,OAAO,EACzC,EAAiB,EAAO,OAAO,EAC/B,EAAkB,EAAO,OAAO,EAEhC,EAAyC,CAAC,EAChD,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAA6B,KAAK,EAAO,OAAO,CAAC,EAGlD,IAAM,EAA0C,CAAC,EACjD,QAAS,EAAI,EAAG,EAAI,EAAiB,IACpC,EAA8B,KAAK,EAAO,OAAO,CAAC,EAGnD,IAAM,EACL,IAA4B,EACzB,EAAgB,EAAQ,CAAuB,EAC/C,KAEE,EACL,IAA6B,EAC1B,EAAgB,EAAQ,CAAwB,EAChD,KAEE,EAAwB,EAA6B,IAAI,CAAC,IAC/D,GAA2B,EAAO,UAAU,CAAM,CAAC,CACpD,EAEM,EAAyB,EAA8B,IAAI,CAAC,IACjE,GAA2B,EAAO,UAAU,CAAM,CAAC,CACpD,EAEA,MAAO,CACN,sBACA,oBACA,qBACA,wBACA,wBACD,EAGM,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAsB,EAAO,OAAO,EACpC,EAAsB,EAAO,OAAO,EACpC,EAAqB,EAAO,OAAO,EAErC,EAAkC,KACtC,GAAI,IAAwB,EAC3B,EAAY,GAAmB,EAAO,UAAU,CAAmB,CAAC,EAGrE,IAAI,EAAkC,KACtC,GAAI,IAAwB,EAC3B,EAAY,GAAmB,EAAO,UAAU,CAAmB,CAAC,EAGrE,IAAI,EAAgC,KACpC,GAAI,IAAuB,EAC1B,EAAW,GAAkB,EAAO,UAAU,CAAkB,CAAC,EAGlE,MAAO,CACN,eACA,eACA,YACA,YACA,UACD,EC/cM,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAU,EAAO,OAAO,EACxB,EAAY,EAAO,OAAO,EAEhC,GAAI,IAAY,MAEf,MAAO,CAAE,UAAS,WAAU,EAG7B,GAAI,IAAY,MAEf,MAAO,CACN,UACA,YACA,UAAW,EAAO,OAAO,EACzB,YAAa,EAAO,OAAO,EAC3B,mBAAoB,EAAO,OAAO,EAClC,qBAAsB,EAAO,OAAO,EACpC,SAAU,EAAO,OAAO,EACxB,kBAAmB,EAAO,OAAO,EACjC,WAAY,EAAO,OAAO,EAC1B,gBAAiB,EAAO,OAAO,EAC/B,mBAAoB,EAAO,OAAO,EAClC,iBAAkB,EAAO,OAAO,EAChC,sBAAuB,EAAO,OAAO,EACrC,qBAAsB,EAAO,OAAO,EACpC,kBAAmB,EAAO,OAAO,CAClC,EAGD,MAAU,MAAM,2BAA2B,EAAQ,SAAS,EAAE,GAAG,EC1B3D,IAAK,IAAL,CAAK,IAAL,CACN,kBAAgB,GAAhB,gBACA,eAAa,GAAb,aACA,aAAW,GAAX,WACA,kBAAgB,GAAhB,gBACA,cAAY,GAAZ,cALW,SAgIL,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAU,EAAO,OAAO,EAG9B,GAFA,EAAO,KAAK,CAAC,EAET,EAAU,EAEb,MAAO,CAAE,UAAS,OAAQ,CAAC,CAAE,EAG9B,IAAM,EAAU,EAAO,OAAO,EACxB,EAAsB,CAAC,EAE7B,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAQ,GAAe,CAAM,EACnC,EAAO,KAAK,CAAK,EAGlB,MAAO,CAAE,UAAS,QAAO,EAG1B,SAAS,EAAc,CAAC,EAA2B,CAClD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAkB,EAAO,OAAO,EAChC,EAAa,EAAO,OAAO,EAG3B,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAiB,IACpC,EAAS,KAAK,CACb,YAAa,EAAO,OAAO,EAC3B,eAAgB,EAAO,OAAO,EAC9B,YAAa,EAAO,OAAO,EAC3B,aAAc,EAAO,OAAO,CAC7B,CAAC,EAIF,IAAM,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAW,GAAkB,CAAM,EACzC,GAAI,EAAU,EAAU,KAAK,CAAQ,EAGtC,MAAO,CAAE,eAAc,WAAU,WAAU,EAG5C,SAAS,EAAiB,CAAC,EAAqC,CAC/D,IAAM,EAAS,EAAO,OAAO,EACvB,EAAe,EAAO,OAAO,EAC7B,EAAkB,EAAO,OAAO,EAEhC,EAAO,EAAe,IACtB,EAAyB,CAC9B,UAAW,EAAe,cAAgB,EAC1C,YAAa,EAAe,cAAgB,EAC5C,SAAU,EAAe,aAAgB,CAC1C,EAGM,EADgB,EAAO,OACO,EAAS,GAEzC,EAAgC,KAEpC,OAAQ,OACF,GACJ,EAAW,GAA2B,EAAQ,EAAU,CAAe,EACvE,UACI,GACJ,EAAW,GAAwB,EAAQ,EAAU,CAAe,EACpE,UACI,GACJ,EAAW,GAAsB,EAAQ,EAAU,CAAe,EAClE,UACI,GACJ,EAAW,GAA2B,EAAQ,EAAU,CAAe,EACvE,UACI,GACJ,EAAW,GAAuB,EAAQ,EAAU,CAAe,EACnE,MAMF,OAFA,EAAO,KAAK,CAAW,EAEhB,EAGR,SAAS,EAA0B,CAClC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAc,GAAiB,CAAM,EAE3C,MAAO,CACN,KAAM,EACN,WACA,kBACA,aACD,EAGD,SAAS,EAAuB,CAC/B,EACA,EACA,EACyB,CACzB,IAAM,EAAmB,EAAO,OAC1B,EAAW,EAAO,OAAO,EACzB,EAAmB,EAAO,SAAS,EACnC,EAAoB,EAAO,SAAS,EACpC,EAAoB,EAAO,SAAS,EACpC,EAA2B,EAAO,SAAS,EAG3C,EAAa,GAClB,EAAO,UAAU,EAAmB,CAAgB,CACrD,EAWA,MAAO,CACN,KAAM,EACN,WACA,kBACA,WAZ+C,CAC/C,WACA,aACA,WAAY,CAAC,CACd,EASC,kBAPkD,CAAC,CAQpD,EAGD,SAAS,EAAqB,CAC7B,EACA,EACA,EACuB,CACvB,IAAM,EAAmB,EAAO,OAC1B,EAAW,EAAO,OAAO,EACzB,EAAmB,EAAO,SAAS,EACnC,EAAoB,EAAO,SAAS,EACpC,EAAoB,EAAO,SAAS,EACpC,EAAyB,EAAO,SAAS,EACzC,EAAoB,EAAO,SAAS,EACpC,EAAmB,EAAO,SAAS,EAGnC,EAAa,GAClB,EAAO,UAAU,EAAmB,CAAgB,CACrD,EASA,MAAO,CACN,KAAM,EACN,WACA,kBACA,WAV6C,CAC7C,WACA,aACA,WAAY,CAAC,CACd,EAOC,gBAAiB,CAAC,EAClB,WAAY,CAAC,EACb,UAAW,CAAC,CACb,EAGD,SAAS,EAA0B,CAClC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAmB,EAAO,OAC1B,EAAW,EAAO,OAAO,EACzB,EAAmB,EAAO,SAAS,EACnC,EAAmB,EAAO,SAAS,EACnC,EAAmB,EAAO,SAAS,EAGnC,EAAa,GAClB,EAAO,UAAU,EAAmB,CAAgB,CACrD,EAGM,EAAmB,EAAO,UAC/B,EAAmB,CACpB,EACM,EAAc,EAAO,UAAU,EAAmB,CAAgB,EAGlE,EAAgC,CAAC,EACjC,EAAa,IACnB,QAAS,EAAI,EAAG,EADG,IACa,IAC/B,EAAQ,KAAK,CACZ,SAAU,EAAY,OAAO,EAC7B,MAAO,EAAY,OAAO,CAC3B,CAAC,EAIF,IAAM,EAAqC,CAAC,EACtC,EAAa,KAAK,IACvB,IACA,KAAK,MAAM,EAAmB,IAAqB,EAAW,EAAE,CACjE,EACA,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAa,EAAiB,OAAO,EAC3C,EAAI,KAAK,EAAQ,IAAe,CAAE,SAAU,EAAG,MAAO,CAAE,CAAC,EAE1D,EAAW,KAAK,CAAG,EAGpB,MAAO,CACN,KAAM,EACN,WACA,kBACA,WAAY,CACX,WACA,aACA,YACD,CACD,EAGD,SAAS,EAAsB,CAC9B,EACA,EACA,EACwB,CACxB,IAAM,EAAmB,EAAO,OAC1B,EAAW,EAAO,OAAO,EACzB,EAAmB,EAAO,SAAS,EACnC,EAAmB,EAAO,SAAS,EACnC,EAAmB,EAAO,SAAS,EACnC,EAAwB,EAAO,SAAS,EAGxC,EAAa,GAClB,EAAO,UAAU,EAAmB,CAAgB,CACrD,EAGM,EAAkB,EAAO,UAC9B,EAAmB,CACpB,EACM,EAA6B,CAAC,EAE9B,EAAqB,KAC3B,QAAS,EAAI,EAAG,EADW,KACa,IACvC,GAAI,CACH,EAAgB,KAAK,EAAgB,OAAO,CAAC,EAC5C,KAAM,CACP,MAKF,IAAM,EAAc,EAAO,UAAU,EAAmB,CAAgB,EAClE,EAA4B,CAAC,EAC7B,EAAa,IACnB,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAQ,KAAK,CACZ,SAAU,EAAY,OAAO,EAC7B,MAAO,EAAY,OAAO,EAC1B,mBAAoB,EAAY,OAAO,EACvC,kBAAmB,EAAY,OAAO,CACvC,CAAC,EAIF,IAAM,EAAmB,EAAO,UAC/B,EAAmB,CACpB,EACM,EAAiC,CAAC,EAClC,EAAa,KAAK,IACvB,IACA,KAAK,MAAM,EAAmB,IAAqB,EAAW,EAAE,CACjE,EACA,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAa,EAAiB,OAAO,EAC3C,EAAI,KACH,EAAQ,IAAe,CACtB,SAAU,EACV,MAAO,EACP,mBAAoB,MACpB,kBAAmB,KACpB,CACD,EAED,EAAW,KAAK,CAAG,EAGpB,MAAO,CACN,KAAM,EACN,WACA,kBACA,WAAY,CACX,WACA,aACA,YACD,EACA,iBACD,EAGD,SAAS,EAAgB,CAAC,EAA6B,CACtD,IAAM,EAAS,EAAO,OAAO,EACvB,EAAU,IAAI,IAEpB,OAAQ,OACF,GAGJ,UAEI,GAAG,CAEP,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,CAAC,EAEb,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAa,EAAO,OAAO,EAC3B,EAAQ,EAAO,OAAO,EAE5B,QAAS,EAAI,EAAY,GAAK,EAAW,IACxC,EAAQ,IAAI,EAAG,CAAK,EAGtB,KACD,KACK,GAAG,CAEP,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,CAAC,EAEb,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAc,EAAO,OAAO,EAC5B,EAAe,EAAO,OAAO,EAKpC,KACD,KACK,GAAG,CAEP,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,CAAC,EAEb,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAQ,EAAO,OAAO,EACtB,EAAQ,EAAO,OAAO,EAC5B,EAAQ,IAAI,EAAO,CAAK,EAEzB,KACD,KACK,GAAG,CAEP,IAAM,EAAa,EAAO,OAAO,EAC3B,EAAa,EAAO,OAAO,EAEjC,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAQ,EAAO,OAAO,EAC5B,GAAI,IAAU,EACb,EAAQ,IAAI,EAAa,EAAG,CAAK,EAGnC,KACD,EAGD,MAAO,CAAE,SAAQ,SAAQ,EAG1B,SAAS,EAAe,CAAC,EAA4B,CACpD,IAAM,EAAS,EAAO,OAAO,EACvB,EAAuB,CAAC,EAE9B,GAAI,IAAW,EAAG,CAEjB,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAS,EAAO,OAAO,EAC7B,EAAO,KAAK,CAAC,EAEb,IAAM,EAAkE,CAAC,EACzE,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAS,KAAK,CACb,KAAM,EAAO,OAAO,EACpB,MAAO,EAAO,OAAO,EACrB,WAAY,EAAO,OAAO,CAC3B,CAAC,EAIF,IAAM,EAAW,KAAK,IAAI,GAAG,EAAS,IAAI,CAAC,IAAM,EAAE,IAAI,EAAG,CAAC,EAC3D,QAAS,EAAI,EAAG,GAAK,EAAU,IAAK,CACnC,IAAM,EAAM,EAAS,KAAK,CAAC,IAAM,GAAK,EAAE,OAAS,GAAK,EAAE,IAAI,EAC5D,EAAW,GAAK,GAAK,YAAc,GAIrC,MAAO,CAAE,SAAQ,YAAW,EAMtB,SAAS,EAAkB,CACjC,EACA,EACiB,CACjB,OAAO,EAAS,YAAY,QAAQ,IAAI,CAAO,GAAK,KCjjB9C,IAAM,GAAW,CAEvB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAGhB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAGhB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAGhB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,EAChB,KAAM,EAAI,MAAM,CACjB,EAKO,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EACnC,EAAO,OAAO,EACd,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAmB,EAAO,OAAO,EACjC,EAA2B,EAAO,SAAS,EAG3C,EAAkC,CAAC,EACzC,QAAS,EAAI,EAAG,EAAI,EAAkB,IAOrC,GANA,EAAa,KAAK,CACjB,SAAU,EAAO,IAAI,EACrB,mBAAoB,EAAO,OAAO,EAClC,mBAAoB,EAAO,OAAO,CACnC,CAAC,EAEG,EAAkB,EACrB,EAAO,KAAK,EAAkB,CAAC,EAKjC,IAAM,EAAqB,GAC1B,EAAO,UAAU,CAAwB,CAC1C,EAEA,MAAO,CACN,eACA,eACA,qBACA,cACD,EAGD,SAAS,EAAuB,CAAC,EAAoC,CACpE,IAAM,EAAS,EAAO,OAAO,EACvB,EAA4B,EAAO,SAAS,EAC5C,EAAyB,EAAO,OAAO,EAEvC,EAAqC,CAAC,EAC5C,QAAS,EAAI,EAAG,EAAI,EAAwB,IAC3C,EAAyB,KAAK,EAAO,SAAS,CAAC,EAIhD,IAAM,EAAe,EAAO,UAAU,CAAyB,EACzD,EAAY,EAAa,OAAO,EAChC,EAAc,EAAa,OAAO,EAElC,EAAsC,CAAC,EAC7C,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAIA,CAAC,EACP,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAW,KAAK,CACf,WAAY,EAAa,QAAQ,EACjC,UAAW,EAAa,QAAQ,EAChC,SAAU,EAAa,QAAQ,CAChC,CAAC,EAEF,EAAiB,KAAK,CAAE,YAAW,CAAC,EAIrC,IAAM,EAIA,CAAC,EACP,QAAW,KAAU,EAA0B,CAC9C,IAAM,EAAa,EAAO,UAAU,CAAM,EACpC,EAAY,EAAW,OAAO,EAC9B,EAAiB,EAAW,OAAO,EACnC,EAAmB,EAAW,OAAO,EAErC,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAc,KAAK,EAAW,OAAO,CAAC,EAIvC,IAAM,GAAa,EAAiB,SAAY,EAC1C,EAAY,EAAiB,MAC7B,EAAa,EAAmB,EAEhC,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAmB,CAAC,EAE1B,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,GAAI,EACH,EAAO,KAAK,EAAW,MAAM,CAAC,EAE9B,OAAO,KAAK,EAAW,MAAM,CAAC,EAIhC,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,GAAI,EACH,EAAO,KAAK,EAAW,MAAM,CAAC,EAE9B,OAAO,KAAK,EAAW,KAAK,CAAC,EAG/B,EAAU,KAAK,CAAM,EAGtB,EAAkB,KAAK,CAAE,YAAW,gBAAe,WAAU,CAAC,EAG/D,MAAO,CAAE,SAAQ,mBAAkB,mBAAkB,EAM/C,SAAS,EAAc,CAC7B,EACA,EACA,EACS,CAET,IAAM,EAAS,EAAK,aAAa,KAAK,CAAC,IAAM,EAAE,WAAa,CAAQ,EACpE,GAAI,CAAC,EAAQ,MAAO,GAEpB,IAAqB,mBAAf,EACe,mBAAf,GAAQ,EAER,EAAU,EAAK,mBAAmB,kBAAkB,GAC1D,GAAI,CAAC,GAAW,GAAS,EAAQ,UAChC,MAAO,GAGR,IAAM,EAAW,EAAQ,UAAU,GACnC,GAAI,CAAC,EACJ,MAAO,GAIR,IAAI,EAAQ,EACZ,QAAY,EAAG,KAAgB,EAAQ,cAAc,QAAQ,EAAG,CAC/D,IAAM,EAAS,EAAK,mBAAmB,iBAAiB,GACxD,GAAI,CAAC,EAAQ,SAEb,IAAM,EAAS,GAAsB,EAAQ,CAAM,EAC7C,EAAc,EAAS,IAAM,EACnC,GAAS,EAAS,EAGnB,OAAO,KAAK,MAAM,CAAK,EAMjB,SAAS,EAAiB,CAAC,EAAiB,EAA0B,CAC5E,OAAO,GAAe,EAAM,GAAS,KAAM,CAAM,EAM3C,SAAS,EAAkB,CAAC,EAAiB,EAA0B,CAC7E,OAAO,GAAe,EAAM,GAAS,KAAM,CAAM,EAa3C,SAAS,EAAe,CAAC,EAAiB,EAA0B,CAC1E,OAAO,GAAe,EAAM,GAAS,KAAM,CAAM,EAM3C,SAAS,EAAiB,CAAC,EAAiB,EAA0B,CAC5E,OAAO,GAAe,EAAM,GAAS,KAAM,CAAM,ECpO3C,IAAM,GAAa,CACzB,QAAS,EACT,UAAW,EACX,SAAU,EACV,QAAS,CACV,EA6BO,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAS,EAAO,OAAO,EACvB,EAAQ,EAAO,OAAO,EACtB,EAAe,EAAO,OAAO,EAE7B,EAAwB,CAAC,EAGzB,EAOD,CAAC,EAEN,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAW,KAAK,CACf,WAAY,EAAO,OAAO,EAC1B,WAAY,EAAO,OAAO,EAC1B,WAAY,EAAO,OAAO,EAC1B,OAAQ,EAAO,OAAO,EACtB,OAAQ,EAAO,OAAO,EACtB,OAAQ,EAAO,OAAO,CACvB,CAAC,EAIF,QAAW,KAAM,EAAY,CAC5B,IAAM,EAAY,EAAO,UAAU,EAAe,EAAG,MAAM,EACrD,EAAQ,GACb,EACA,EAAG,OACH,EAAG,WACH,EAAG,UACJ,EAEA,GAAI,IAAU,KACb,EAAQ,KAAK,CACZ,WAAY,EAAG,WACf,WAAY,EAAG,WACf,WAAY,EAAG,WACf,OAAQ,EAAG,OACX,OACD,CAAC,EAIH,MAAO,CAAE,SAAQ,SAAQ,EAI1B,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACgB,CAEhB,GACC,IAAe,GAAW,SACzB,IAAe,GAAW,UACzB,IAAe,GAAK,IAAe,IACpC,CAED,IAAM,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAQ,GAAK,EAAG,CACnC,IAAM,EAAO,EAAO,OAAO,EAC3B,EAAM,KAAK,OAAO,aAAa,CAAI,CAAC,EAErC,OAAO,EAAM,KAAK,EAAE,EAIrB,GAAI,IAAe,GAAW,WAAa,IAAe,EAAG,CAC5D,IAAM,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAM,KAAK,EAAO,MAAM,CAAC,EAG1B,OAAO,OAAO,aAAa,GAAG,CAAK,EAIpC,OAAO,KCnDD,SAAS,EAAQ,CAAC,EAA0B,CAClD,IAAM,EAAU,EAAO,OAAO,EACxB,EAAgB,EAAO,MAAM,EAC7B,EAAgB,EAAO,OAAO,EAC9B,EAAe,EAAO,OAAO,EAC7B,EAAS,EAAO,OAAO,EACvB,EAAkB,EAAO,MAAM,EAC/B,EAAkB,EAAO,MAAM,EAC/B,EAAoB,EAAO,MAAM,EACjC,EAAoB,EAAO,MAAM,EACjC,EAAoB,EAAO,MAAM,EACjC,EAAoB,EAAO,MAAM,EACjC,EAAsB,EAAO,MAAM,EACnC,EAAsB,EAAO,MAAM,EACnC,EAAiB,EAAO,MAAM,EAC9B,EAAqB,EAAO,MAAM,EAClC,EAAe,EAAO,MAAM,EAG5B,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,GAAI,IACvB,EAAO,KAAK,EAAO,MAAM,CAAC,EAG3B,IAAM,EAAkB,EAAO,OAAO,EAChC,EAAkB,EAAO,OAAO,EAChC,EAAkB,EAAO,OAAO,EAChC,EAAkB,EAAO,OAAO,EAGhC,EAAY,OAAO,aACxB,EAAO,MAAM,EACb,EAAO,MAAM,EACb,EAAO,MAAM,EACb,EAAO,MAAM,CACd,EAEM,EAAc,EAAO,OAAO,EAC5B,EAAmB,EAAO,OAAO,EACjC,EAAkB,EAAO,OAAO,EAChC,EAAgB,EAAO,MAAM,EAC7B,EAAiB,EAAO,MAAM,EAC9B,EAAe,EAAO,MAAM,EAC5B,EAAc,EAAO,OAAO,EAC5B,EAAe,EAAO,OAAO,EAE7B,EAAmB,CACxB,UACA,gBACA,gBACA,eACA,SACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,sBACA,sBACA,iBACA,qBACA,eACA,SACA,kBACA,kBACA,kBACA,kBACA,YACA,cACA,mBACA,kBACA,gBACA,iBACA,eACA,cACA,cACD,EAGA,GAAI,GAAW,EACd,EAAO,iBAAmB,EAAO,OAAO,EACxC,EAAO,iBAAmB,EAAO,OAAO,EAIzC,GAAI,GAAW,EACd,EAAO,SAAW,EAAO,MAAM,EAC/B,EAAO,WAAa,EAAO,MAAM,EACjC,EAAO,cAAgB,EAAO,OAAO,EACrC,EAAO,YAAc,EAAO,OAAO,EACnC,EAAO,aAAe,EAAO,OAAO,EAIrC,GAAI,GAAW,EACd,EAAO,wBAA0B,EAAO,OAAO,EAC/C,EAAO,wBAA0B,EAAO,OAAO,EAGhD,OAAO,ECmFD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAU,EAAe,EAAe,MAExC,EAAc,EAAO,MAAM,EAC3B,EAAoB,EAAO,MAAM,EACjC,EAAqB,EAAO,MAAM,EAClC,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAc,EAAO,OAAO,EAC5B,EAAc,EAAO,OAAO,EAE5B,EAAoB,CACzB,UACA,cACA,oBACA,qBACA,eACA,eACA,eACA,cACA,aACD,EAGA,GAAI,IAAY,EAAK,CACpB,IAAM,EAAiB,EAAO,OAAO,EAC/B,EAA2B,CAAC,EAElC,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAe,KAAK,EAAO,OAAO,CAAC,EAIpC,IAAM,EAAwB,CAAC,EAC3B,EAAW,EACf,QAAW,KAAO,EACjB,GAAI,GAAO,KAAO,EAAM,EACvB,EAAW,EAKb,IAAM,EAAiB,GAAY,IAAM,EAAW,IAAM,EAC1D,QAAS,EAAI,EAAG,EAAI,EAAgB,IAAK,CACxC,IAAM,EAAS,EAAO,MAAM,EACtB,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAM,KAAK,OAAO,aAAa,EAAO,MAAM,CAAC,CAAC,EAE/C,EAAY,KAAK,EAAM,KAAK,EAAE,CAAC,EAGhC,EAAO,eAAiB,EACxB,EAAO,eAAiB,EACxB,EAAO,MAAQ,EAGhB,OAAO,ECtTD,IAAM,GAAkB,CAC9B,IAAK,OACL,IAAK,OACL,KAAM,OACN,IAAK,OACL,KAAM,OACN,KAAM,MACP,EAKO,SAAS,EAAS,CAAC,EAAgB,EAA8B,CACvE,IAAM,EAAa,EAAO,OACpB,EAAU,EAAO,OAAO,EACxB,EAAQ,EAAO,OAAO,EACtB,EAAa,EAAO,OAAO,EAG3B,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAc,KAAK,EAAO,OAAO,CAAC,EAInC,IAAM,EAAwB,CAAC,EAC/B,QAAW,KAAgB,EAAe,CACzC,IAAM,EAAS,GAAY,EAAQ,EAAa,EAAc,CAAS,EACvE,EAAQ,KAAK,CAAM,EAGpB,MAAO,CAAE,UAAS,QAAO,SAAQ,EAGlC,SAAS,EAAW,CACnB,EACA,EACA,EACa,CACb,IAAM,EAAe,EAAO,UAAU,CAAY,EAC5C,EAAO,EAAa,OAAO,EAC3B,EAAM,EAAa,OAAO,EAG1B,EAA6B,CAAC,EACpC,QAAS,EAAI,EAAG,GAAK,EAAW,IAC/B,EAAiB,KAAK,EAAa,OAAO,CAAC,EAI5C,IAAM,EAAY,IAAI,IAEtB,QAAS,EAAU,EAAG,EAAU,EAAW,IAAW,CACrD,IAAM,EAAS,EAAiB,GAC1B,EAAa,EAAiB,EAAU,GAC9C,GAAI,IAAW,QAAa,IAAe,OAAW,SACtD,IAAM,EAAa,EAAa,EAEhC,GAAI,GAAc,EAEjB,SAGD,IAAM,EAAc,EAAO,UAAU,EAAe,CAAM,EACpD,EAAgB,EAAY,MAAM,EAClC,EAAgB,EAAY,MAAM,EAClC,EAAc,EAAY,UAAU,EAGpC,EAAkB,EAAa,EAC/B,EAAO,EAAY,MAAM,CAAe,EAE9C,EAAU,IAAI,EAAS,CACtB,gBACA,gBACA,cACA,MACD,CAAC,EAGF,MAAO,CAAE,OAAM,MAAK,WAAU,EAOxB,SAAS,EAAc,CAC7B,EACA,EACA,EACmB,CAEnB,IAAI,EAAgC,KAChC,EAAW,IAEf,QAAW,KAAU,EAAK,QAAS,CAClC,IAAM,EAAO,KAAK,IAAI,EAAO,KAAO,CAAI,EACxC,GAAI,EAAO,EACV,EAAW,EACX,EAAa,EAIf,GAAI,CAAC,EAAY,OAAO,KAExB,OAAO,EAAW,UAAU,IAAI,CAAO,GAAK,KAMtC,SAAS,EAAgB,CAC/B,EACA,EACoB,CACpB,OAAO,EAAK,QAAQ,KAAK,CAAC,IAAM,EAAE,OAAS,CAAI,GAAK,KAM9C,SAAS,EAAqB,CAAC,EAA2B,CAChE,OAAO,EAAK,QAAQ,IAAI,CAAC,IAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAG,IAAM,EAAI,CAAC,EAMrD,SAAS,EAAc,CAC7B,EACA,EACA,EACU,CACV,GAAI,IAAS,OAEZ,OADe,GAAiB,EAAM,CAAI,GAC3B,UAAU,IAAI,CAAO,GAAK,GAI1C,QAAW,KAAU,EAAK,QACzB,GAAI,EAAO,UAAU,IAAI,CAAO,EAC/B,MAAO,GAGT,MAAO,GAOD,SAAS,EAAgB,CAC/B,EACA,EACA,EACmB,CACnB,GAAI,EAAM,cAAgB,GAAgB,KACzC,OAAO,EAIR,GAAI,EAAM,KAAK,OAAS,EAAG,OAAO,KAElC,IAAM,GAAgB,EAAM,KAAK,IAAM,IAAM,GAAM,EAAM,KAAK,IAAM,GAC9D,EAAW,EAAO,UAAU,IAAI,CAAW,EAEjD,GAAI,CAAC,EAAU,OAAO,KAGtB,GAAI,EAAS,cAAgB,GAAgB,KAC5C,OAAO,GAAiB,EAAM,EAAQ,CAAQ,EAG/C,OAAO,EC3LD,SAAS,EAAkB,CAAC,EAA+B,CACjE,IAAM,EAAc,EAAO,OAAO,EAGlC,GACC,IAvB4B,OAwB5B,IAvB4B,YAwB5B,IAvBwB,WAyBxB,MAAU,MACT,2BAA2B,EAAY,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,GACpE,EAGD,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAc,EAAO,OAAO,EAC5B,EAAgB,EAAO,OAAO,EAC9B,EAAa,EAAO,OAAO,EAE3B,EAAS,IAAI,IAEnB,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAM,EAAO,IAAI,EACjB,EAAW,EAAO,OAAO,EACzB,EAAS,EAAO,OAAO,EACvB,EAAS,EAAO,OAAO,EAE7B,EAAO,IAAI,EAAK,CAAE,MAAK,WAAU,SAAQ,QAAO,CAAC,EAGlD,MAAO,CACN,cACA,YACA,cACA,gBACA,aACA,QACD,EAIM,SAAS,EAAU,CAAC,EAAmC,CAC7D,OACC,EAAU,cA7DkB,OA8D5B,EAAU,cA5Dc,WCwBnB,IAAM,GAAiB,CAC7B,0BAA2B,EAC3B,sBAAuB,CACxB,EA2DO,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAa,EAAO,OACpB,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAiB,EAAO,OAAO,EAC/B,EAAkB,EAAO,OAAO,EAChC,EAAmB,EAAO,SAAS,EACnC,EAAiB,EAAO,OAAO,EAC/B,EAAuB,EAAO,SAAS,EAEzC,EACJ,GAAI,GAAgB,GAAK,GAAgB,EACxC,EAAuB,EAAO,OAAO,EAItC,IAAM,EAA2B,CAAC,EAClC,GAAI,IAAqB,EAAG,CAC3B,IAAM,EAAa,EAAO,UAAU,EAAa,CAAgB,EACjE,QAAS,EAAI,EAAG,EAAI,EAAiB,IAOpC,GANA,EAAW,KAAK,CACf,QAAS,EAAW,IAAI,EACxB,WAAY,EAAW,OAAO,EAC9B,aAAc,EAAW,OAAO,CACjC,CAAC,EAEG,EAAiB,EACpB,EAAW,KAAK,EAAiB,CAAC,EAMrC,IAAM,EAA0B,CAAC,EACjC,GAAI,IAAyB,GAAK,EAAiB,EAAG,CACrD,IAAM,EAAc,EAAO,UAAU,EAAa,CAAoB,EAGhE,EAA6B,CAAC,EACpC,QAAS,EAAI,EAAG,EAAI,EAAgB,IACnC,EAAiB,KAAK,EAAY,OAAO,CAAC,EAI3C,QAAW,KAAU,EAAkB,CACtC,IAAM,EAAc,EAAO,UAC1B,EAAa,EAAuB,CACrC,EACM,EAAY,GAAe,CAAW,EAC5C,GAAI,EACH,EAAW,KAAK,CAAS,GAK5B,MAAO,CACN,eACA,eACA,kBACA,aACA,iBACA,aACA,sBACD,EAGD,SAAS,EAAc,CAAC,EAAkC,CAGzD,OAFe,EAAO,OAAO,OAGvB,GACJ,MAAO,CACN,OAAQ,EACR,UAAW,EAAO,OAAO,EACzB,MAAO,EAAO,OAAO,EACrB,YAAa,EAAO,OAAO,EAC3B,MAAO,EAAO,MAAM,CACrB,MAEI,GACJ,MAAO,CACN,OAAQ,EACR,UAAW,EAAO,OAAO,EACzB,MAAO,EAAO,OAAO,EACrB,YAAa,EAAO,OAAO,EAC3B,aAAc,EAAO,MAAM,EAC3B,cAAe,EAAO,MAAM,EAC5B,cAAe,EAAO,MAAM,CAC7B,MAEI,GACJ,MAAO,CACN,OAAQ,EACR,UAAW,EAAO,OAAO,EACzB,MAAO,EAAO,OAAO,EACrB,YAAa,EAAO,OAAO,EAC3B,MAAO,EAAO,MAAM,EACpB,YAAa,EAAO,MAAM,CAC3B,MAEI,GAAG,CACP,IAAM,EAAY,EAAO,OAAO,EAC1B,EAAQ,EAAO,OAAO,EACtB,EAAc,EAAO,OAAO,EAE5B,EAAqD,CAAC,EAC5D,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAW,KAAK,CACf,UAAW,EAAO,OAAO,EACzB,MAAO,EAAO,MAAM,CACrB,CAAC,EAGF,MAAO,CACN,OAAQ,EACR,YACA,QACA,cACA,YACD,CACD,SAEC,OAAO,MAOH,SAAS,EAAa,CAC5B,EACA,EACoB,CACpB,OAAO,EAAK,WAAW,KAAK,CAAC,IAAM,EAAE,UAAY,CAAO,GAAK,KAMvD,SAAS,EAAY,CAAC,EAAiB,EAAsB,CACnE,OAAO,EAAK,WAAW,UAAU,CAAC,IAAM,EAAE,UAAY,CAAO,EAMvD,SAAS,EAAoB,CACnC,EACA,EACc,CACd,OAAO,EAAK,WAAW,OAAO,CAAC,IAAM,CACpC,GAAI,EAAE,SAAW,EAChB,OAAO,EAAE,WAAW,KAAK,CAAC,IAAO,EAAG,YAAc,CAAS,EAE5D,OAAO,EAAE,YAAc,EACvB,EAMK,SAAS,EAAqB,CACpC,EACA,EACmB,CACnB,OAAO,EAAK,WAAW,KAAK,CAAC,IAAM,EAAE,cAAgB,CAAM,GAAK,KAM1D,SAAS,EAAmB,CAAC,EAA+B,CAClE,OAAQ,EAAU,MAAQ,GAAe,yBAA2B,EAM9D,SAAS,EAAkB,CAAC,EAA+B,CACjE,OAAQ,EAAU,MAAQ,GAAe,6BAA+B,EAMlE,SAAS,EAAkB,CAAC,EAAqC,CACvE,OAAQ,EAAU,YACZ,OACA,GACJ,OAAO,EAAU,UACb,GACJ,OAAO,EAAU,iBACb,GACJ,OAAO,MAQH,SAAS,EAAc,CAC7B,EACA,EACU,CACV,OAAQ,EAAU,YACZ,OACA,GAAG,CACP,IAAM,EAAQ,EAAO,IAAI,EAAU,SAAS,EAC5C,OAAO,IAAU,QAAa,IAAU,EAAU,KACnD,KACK,GAAG,CACP,IAAM,EAAQ,EAAO,IAAI,EAAU,SAAS,EAC5C,OACC,IAAU,QACV,GAAS,EAAU,eACnB,GAAS,EAAU,aAErB,KACK,GACJ,OAAO,EAAU,WAAW,MAAM,CAAC,IAAO,CACzC,IAAM,EAAQ,EAAO,IAAI,EAAG,SAAS,EACrC,OAAO,IAAU,QAAa,IAAU,EAAG,MAC3C,GClSG,SAAS,EAAQ,CAAC,EAA0B,CAClD,IAAM,EAAU,EAAO,OAAO,EAGxB,EAAwB,EAAO,SAAS,EAG9C,EAAO,KAAK,CAAC,EAGb,IAAM,EAAa,EAAO,UAAU,CAAqB,EACnD,EAAa,EAAW,OAAO,EAG/B,EAKA,CAAC,EAEP,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,EAAQ,KAAK,CACZ,aAAc,EAAW,OAAO,EAChC,WAAY,EAAW,OAAO,EAC9B,aAAc,EAAW,SAAS,EAClC,aAAc,EAAW,OAAO,CACjC,CAAC,EAIF,IAAM,EAAuC,CAAC,EACxC,EAAU,IAAI,YAAY,OAAO,EAEvC,QAAW,KAAS,EAAS,CAG5B,IAAM,EADY,EAAW,UAAU,EAAM,YAAY,EAC9B,MAAM,EAAM,YAAY,EAG/C,EACJ,GAAI,EAAS,KAAO,IAAQ,EAAS,KAAO,IAE3C,GAAI,CACH,IAAM,EAAe,GAAe,CAAQ,EAC5C,EAAS,EAAQ,OAAO,CAAY,EACnC,KAAM,CAEP,EAAS,EAAQ,OAAO,CAAQ,EAGjC,OAAS,EAAQ,OAAO,CAAQ,EAGjC,EAAgB,KAAK,CACpB,aAAc,EAAM,aACpB,WAAY,EAAM,WAClB,QACD,CAAC,EAGF,MAAO,CAAE,UAAS,iBAAgB,EAO5B,SAAS,EAAc,CAAC,EAAe,EAAiC,CAC9E,QAAW,KAAU,EAAI,gBACxB,GAAI,GAAW,EAAO,cAAgB,GAAW,EAAO,WACvD,OAAO,EAAO,OAGhB,OAAO,KAMD,SAAS,EAAW,CAAC,EAAe,EAA2B,CACrE,OAAO,GAAe,EAAK,CAAO,IAAM,KAMlC,SAAS,EAAc,CAAC,EAA0B,CACxD,IAAM,EAAsB,CAAC,EAE7B,QAAW,KAAU,EAAI,gBACxB,QAAS,EAAM,EAAO,aAAc,GAAO,EAAO,WAAY,IAC7D,EAAS,KAAK,CAAG,EAInB,OAAO,EAOR,SAAS,EAAc,CAAC,EAA8B,CAErD,GAAI,OAAO,oBAAwB,IAIlC,OAAO,EAIR,OAAO,ECpGD,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAc,EACd,EAAU,EAAO,OAAO,EAAI,MAC5B,EAAS,EAAO,OAAO,EACvB,EAAc,EAAO,SAAS,EAC9B,EAAa,EAAO,SAAS,EACnC,EAAO,KAAK,CAAC,EAEb,IAAI,EAA8B,KAC9B,EAA6B,KAEjC,GAAI,IAAgB,EACnB,EAAY,GAAe,EAAO,UAAU,CAAW,EAAG,CAAW,EAGtE,GAAI,IAAe,EAClB,EAAW,GAAe,EAAO,UAAU,CAAU,EAAG,CAAW,EAGpE,MAAO,CACN,UACA,SACA,YACA,UACD,EAGD,SAAS,EAAc,CAAC,EAAgB,EAAgC,CACvE,IAAM,EAAU,EAAO,OAAO,EACxB,EAAS,EAAO,OAAO,EACvB,EAAkB,EAAO,SAAS,EAElC,EAAgC,CAAC,EAGvC,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAQ,EAAO,MAAM,EAAI,MACzB,EAAY,EAAO,OAAO,EAC1B,EAAS,EAAO,OAAO,EAE7B,EAAW,KAAK,CACf,QACA,YACA,SACA,gBAAiB,CAAC,CACnB,CAAC,EAKF,QAAW,KAAS,EAAY,CAC/B,IAAM,EAAc,EAAY,UAAU,EAAM,MAAM,EACtD,EAAM,gBAAkB,CAAC,EACzB,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAM,gBAAgB,KAAK,EAAY,MAAM,CAAC,EAKhD,IAAM,EAAa,EAAY,UAAU,CAAe,EAClD,EAAsB,CAAC,EAC7B,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAU,KAAK,EAAW,MAAM,EAAI,KAAK,EAG1C,MAAO,CACN,UACA,SACA,kBACA,aACA,WACD,EAMM,SAAS,EAAgB,CAC/B,EACA,EACA,EACS,CAET,IAAI,EAAqC,KAEzC,QAAW,KAAS,EAAU,WAC7B,GAAI,EAAM,QAAU,EAAO,CAC1B,EAAa,EACb,MAKF,GAAI,CAAC,EAAY,CAChB,IAAI,EAAgC,KAChC,EAAgC,KAEpC,QAAW,KAAS,EAAU,WAAY,CACzC,GAAI,EAAM,OAAS,IAAU,CAAC,GAAS,EAAM,MAAQ,EAAM,OAC1D,EAAQ,EAET,GAAI,EAAM,OAAS,IAAU,CAAC,GAAS,EAAM,MAAQ,EAAM,OAC1D,EAAQ,EAIV,GAAI,GAAS,GAAS,IAAU,EAAO,CAEtC,IAAM,GAAK,EAAQ,EAAM,QAAU,EAAM,MAAQ,EAAM,OACjD,EAAa,GAAa,EAAW,EAAO,CAAS,EACrD,EAAa,GAAa,EAAW,EAAO,CAAS,EAC3D,OAAO,KAAK,MAAM,EAAa,GAAK,EAAa,EAAW,EACtD,QAAI,EACV,EAAa,EACP,QAAI,EACV,EAAa,EAEb,WAAO,GAIT,GAAI,CAAC,EAAY,MAAO,GAExB,OAAO,GAAa,EAAW,EAAY,CAAS,EAGrD,SAAS,EAAY,CACpB,EACA,EACA,EACS,CACT,IAAM,EAAQ,EAAU,UAClB,EAAS,EAAM,gBAErB,GAAI,EAAM,SAAW,GAAK,EAAO,SAAW,EAAG,MAAO,GAEtD,IAAM,EAAY,EAAM,GAClB,EAAa,EAAO,GAC1B,GAAI,IAAc,QAAa,IAAe,OAAW,MAAO,GAGhE,GAAI,GAAa,EAChB,OAAO,EAGR,IAAM,EAAW,EAAM,EAAM,OAAS,GAChC,EAAY,EAAO,EAAO,OAAS,GACzC,GAAI,IAAa,QAAa,IAAc,OAAW,MAAO,GAE9D,GAAI,GAAa,EAChB,OAAO,EAIR,QAAS,EAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IAAK,CAC1C,IAAM,EAAQ,EAAM,GACd,EAAQ,EAAM,EAAI,GAClB,EAAS,EAAO,GAChB,EAAS,EAAO,EAAI,GAC1B,GACC,IAAU,QACV,IAAU,QACV,IAAW,QACX,IAAW,OAEX,SAED,GAAI,GAAa,GAAS,GAAa,EAAO,CAC7C,IAAM,GAAK,EAAY,IAAU,EAAQ,GACzC,OAAO,KAAK,MAAM,EAAS,GAAK,EAAS,EAAO,GAIlD,MAAO,GAMD,SAAS,EAAa,CAC5B,EACA,EACA,EACA,EAAgB,EAChB,EAAoB,GACb,CACP,IAAM,EAAY,EAAW,EAAK,SAAW,EAAK,UAClD,GAAI,CAAC,EAAW,OAEhB,IAAM,EAAgB,GAAiB,EAAW,EAAO,CAAS,EAClE,GAAI,IAAkB,EAAG,OAGzB,QAAY,EAAG,KAAY,EAAS,QAAQ,EAC3C,EAAS,IAAM,GAAW,GAAK,ECjM1B,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAW,EAAO,MAAM,EACxB,EAAY,EAAO,MAAM,EACzB,EAAU,EAAO,MAAM,EACvB,EAAmB,EAAO,OAAO,EACjC,EAAoB,EAAO,MAAM,EACjC,EAAuB,EAAO,MAAM,EACpC,EAAa,EAAO,MAAM,EAC1B,EAAiB,EAAO,MAAM,EAC9B,EAAgB,EAAO,MAAM,EAC7B,EAAc,EAAO,MAAM,EAGjC,EAAO,KAAK,CAAC,EAEb,IAAM,EAAmB,EAAO,MAAM,EAChC,EAAmB,EAAO,OAAO,EAEvC,MAAO,CACN,QAAS,CAAE,MAAO,EAAc,MAAO,CAAa,EACpD,WACA,YACA,UACA,mBACA,oBACA,uBACA,aACA,iBACA,gBACA,cACA,mBACA,kBACD,EC3CM,SAAS,EAAS,CACxB,EACA,EACA,EACY,CACZ,IAAM,EAA6B,CAAC,EAGpC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAS,KAAK,CACb,cAAe,EAAO,OAAO,EAC7B,eAAgB,EAAO,MAAM,CAC9B,CAAC,EAIF,IAAM,EAA2B,CAAC,EAC5B,EAAY,EAAY,EAE9B,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAgB,KAAK,EAAO,MAAM,CAAC,EAGpC,MAAO,CAAE,WAAU,iBAAgB,EAM7B,SAAS,EAAkB,CACjC,EACA,EACoD,CACpD,GAAI,EAAU,EAAK,SAAS,OAAQ,CACnC,IAAM,EAAS,EAAK,SAAS,GAC7B,GAAI,EACH,MAAO,CACN,cAAe,EAAO,cACtB,eAAgB,EAAO,cACxB,EAMF,IAAM,EADa,EAAK,SAAS,EAAK,SAAS,OAAS,IACtB,eAAiB,EAC7C,EAAW,EAAU,EAAK,SAAS,OACnC,EAAiB,EAAK,gBAAgB,IAAa,EAEzD,MAAO,CAAE,gBAAe,gBAAe,ECrDjC,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAAqB,EAAO,MAAM,EAClC,EAAwB,EAAO,OAAO,EAEtC,EAA0C,CAAC,EACjD,QAAS,EAAI,EAAG,EAAI,EAAuB,IAC1C,EAAmB,KAAK,CACvB,WAAY,EAAO,OAAO,EAC1B,YAAa,EAAO,MAAM,CAC3B,CAAC,EAMF,OAFA,EAAmB,KAAK,CAAC,EAAG,IAAM,EAAE,WAAa,EAAE,UAAU,EAEtD,CACN,eACA,eACA,qBACA,oBACD,EAOM,SAAS,EAAc,CAAC,EAAiB,EAAyB,CAExE,IAAM,EAAU,EAAK,mBACjB,EAAK,EACL,EAAK,EAAQ,OAAS,EAE1B,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,IAAQ,EACpB,EAAS,EAAQ,GACvB,GAAI,IAAW,OAAW,MAE1B,GAAI,EAAO,aAAe,EACzB,OAAO,EAAO,YACR,QAAI,EAAO,WAAa,EAC9B,EAAK,EAAM,EAEX,OAAK,EAAM,EAKb,OAAO,EAAK,mBAMN,SAAS,EAAc,CAAC,EAAiB,EAA2B,CAC1E,IAAM,EAAU,EAAK,mBACjB,EAAK,EACL,EAAK,EAAQ,OAAS,EAE1B,MAAO,GAAM,EAAI,CAChB,IAAM,EAAO,EAAK,IAAQ,EACpB,EAAS,EAAQ,GACvB,GAAI,IAAW,OAAW,MAE1B,GAAI,EAAO,aAAe,EACzB,MAAO,GACD,QAAI,EAAO,WAAa,EAC9B,EAAK,EAAM,EAEX,OAAK,EAAM,EAIb,MAAO,GC3ED,SAAS,EAAS,CAAC,EAA2B,CACpD,IAAM,EAAe,EAAO,OAAO,EAC7B,EAAe,EAAO,OAAO,EAC7B,EAA2B,EAAO,SAAS,EAC3C,EAA6B,EAAO,SAAS,EAC7C,EAAmB,EAAO,SAAS,EACnC,EAAmB,EAAO,SAAS,EACnC,EAAoB,EAAO,SAAS,EAGpC,EAAqB,GAC1B,EAAO,UAAU,CAAwB,CAC1C,EAGM,EACL,IAA+B,EAC5B,GAAsB,EAAO,UAAU,CAA0B,CAAC,EAClE,KAEE,EACL,IAAqB,EAClB,GAAsB,EAAO,UAAU,CAAgB,CAAC,EACxD,KAEE,EACL,IAAqB,EAClB,GAAsB,EAAO,UAAU,CAAgB,CAAC,EACxD,KAEE,EACL,IAAsB,EACnB,GAAsB,EAAO,UAAU,CAAiB,CAAC,EACzD,KAEJ,MAAO,CACN,eACA,eACA,qBACA,uBACA,aACA,aACA,aACD,EAGD,SAAS,EAAuB,CAAC,EAAoC,CACpE,IAAM,EAAS,EAAO,OAAO,EACvB,EAA4B,EAAO,SAAS,EAC5C,EAAyB,EAAO,OAAO,EAEvC,EAAqC,CAAC,EAC5C,QAAS,EAAI,EAAG,EAAI,EAAwB,IAC3C,EAAyB,KAAK,EAAO,SAAS,CAAC,EAIhD,IAAM,EAAe,EAAO,UAAU,CAAyB,EACzD,EAAY,EAAa,OAAO,EAChC,EAAc,EAAa,OAAO,EAElC,EAAsC,CAAC,EAC7C,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,CACrC,IAAM,EAIA,CAAC,EACP,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAW,KAAK,CACf,WAAY,EAAa,QAAQ,EACjC,UAAW,EAAa,QAAQ,EAChC,SAAU,EAAa,QAAQ,CAChC,CAAC,EAEF,EAAiB,KAAK,CAAE,YAAW,CAAC,EAIrC,IAAM,EAIA,CAAC,EACP,QAAW,KAAU,EAA0B,CAC9C,IAAM,EAAa,EAAO,UAAU,CAAM,EACpC,EAAY,EAAW,OAAO,EAC9B,EAAiB,EAAW,OAAO,EACnC,EAAmB,EAAW,OAAO,EAErC,EAA0B,CAAC,EACjC,QAAS,EAAI,EAAG,EAAI,EAAkB,IACrC,EAAc,KAAK,EAAW,OAAO,CAAC,EAIvC,IAAM,GAAa,EAAiB,SAAY,EAC1C,EAAY,EAAiB,MAC7B,EAAa,EAAmB,EAEhC,EAAwB,CAAC,EAC/B,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAmB,CAAC,EAE1B,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,GAAI,EACH,EAAO,KAAK,EAAW,MAAM,CAAC,EAE9B,OAAO,KAAK,EAAW,MAAM,CAAC,EAIhC,QAAS,EAAI,EAAG,EAAI,EAAY,IAC/B,GAAI,EACH,EAAO,KAAK,EAAW,MAAM,CAAC,EAE9B,OAAO,KAAK,EAAW,KAAK,CAAC,EAG/B,EAAU,KAAK,CAAM,EAGtB,EAAkB,KAAK,CAAE,YAAW,gBAAe,WAAU,CAAC,EAG/D,MAAO,CAAE,SAAQ,mBAAkB,mBAAkB,EAGtD,SAAS,EAAqB,CAAC,EAAkC,CAChE,IAAM,EAAS,EAAO,MAAM,EACtB,EAAc,EAAO,MAAM,EAC3B,EAAW,IAAW,EAAI,EAAO,OAAO,EAAI,EAAO,OAAO,EAE1D,GAAsB,EAAc,IAAQ,EAC5C,GAAiB,GAAe,EAAK,GAAQ,EAE7C,EAA8C,CAAC,EACrD,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAI,EAAQ,EACZ,QAAS,EAAI,EAAG,EAAI,EAAc,IACjC,EAAS,GAAS,EAAK,EAAO,MAAM,EAGrC,IAAM,EAAQ,GAAU,GAAK,GAAsB,EAC7C,EAAQ,GAAS,EACvB,EAAQ,KAAK,CAAE,QAAO,OAAM,CAAC,EAG9B,MAAO,CAAE,SAAQ,WAAU,cAAa,qBAAoB,SAAQ,EAM9D,SAAS,EAAqB,CACpC,EACA,EACA,EACS,CACT,IAAM,EAAU,EAAK,qBAGjB,EACA,EAEJ,GAAI,GAAW,EAAU,EAAQ,QAAQ,OAAQ,CAChD,IAAM,EAAQ,EAAQ,QAAQ,GAC9B,GAAI,CAAC,EACJ,MAAO,GAER,EAAQ,EAAM,MACd,EAAQ,EAAM,MAGd,OAAQ,EACR,EAAQ,EAGT,OAAO,GAAe,EAAK,mBAAoB,EAAO,EAAO,CAAM,EAM7D,SAAS,EAAW,CAC1B,EACA,EACA,EACS,CACT,IAAM,EAAU,EAAK,WACrB,GAAI,CAAC,EAAS,MAAO,GAErB,GAAI,GAAW,EAAQ,QAAQ,OAAQ,MAAO,GAE9C,IAAM,EAAQ,EAAQ,QAAQ,GAC9B,GAAI,CAAC,EAAO,MAAO,GAEnB,OAAO,GACN,EAAK,mBACL,EAAM,MACN,EAAM,MACN,CACD,EAMM,SAAS,EAAW,CAC1B,EACA,EACA,EACS,CACT,IAAM,EAAU,EAAK,WACrB,GAAI,CAAC,EAAS,MAAO,GAErB,GAAI,GAAW,EAAQ,QAAQ,OAAQ,MAAO,GAE9C,IAAM,EAAQ,EAAQ,QAAQ,GAC9B,GAAI,CAAC,EAAO,MAAO,GAEnB,OAAO,GACN,EAAK,mBACL,EAAM,MACN,EAAM,MACN,CACD,EAMM,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,IAAM,EAAU,EAAK,YACrB,GAAI,CAAC,EAAS,MAAO,GAErB,GAAI,GAAW,EAAQ,QAAQ,OAAQ,MAAO,GAE9C,IAAM,EAAQ,EAAQ,QAAQ,GAC9B,GAAI,CAAC,EAAO,MAAO,GAEnB,OAAO,GACN,EAAK,mBACL,EAAM,MACN,EAAM,MACN,CACD,EAMD,SAAS,EAAc,CACtB,EACA,EACA,EACA,EACS,CACT,IAAM,EAAU,EAAM,kBAAkB,GACxC,GAAI,CAAC,GAAW,GAAS,EAAQ,UAChC,MAAO,GAGR,IAAM,EAAW,EAAQ,UAAU,GACnC,GAAI,CAAC,EACJ,MAAO,GAIR,IAAI,EAAQ,EACZ,QAAY,EAAG,KAAgB,EAAQ,cAAc,QAAQ,EAAG,CAC/D,IAAM,EAAS,EAAM,iBAAiB,GACtC,GAAI,CAAC,EAAQ,SAEb,IAAM,EAAS,GAAsB,EAAQ,CAAM,EAC7C,EAAc,EAAS,IAAM,EACnC,GAAS,EAAS,EAGnB,OAAO,KAAK,MAAM,CAAK,EC/SxB,IAAM,GAAa,WACb,GAAc,WAGpB,SAAS,EAAO,CAAC,EAA8B,CAE9C,OADa,IAAI,SAAS,CAAM,EACpB,UAAU,EAAG,EAAK,IAAM,GAIrC,SAAS,EAAM,CAAC,EAA8B,CAE7C,OADa,IAAI,SAAS,CAAM,EACpB,UAAU,EAAG,EAAK,IAAM,GAyF9B,MAAM,EAAK,CACA,OACA,UAGT,MAA0B,KAC1B,MAA0B,KAC1B,MAA0B,KAC1B,MAA0B,KAC1B,MAA0B,KAC1B,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,KAAoC,OACpC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,KAAoC,OACpC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,KAAoC,OACpC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,MAAsC,OACtC,KAAoC,OACpC,MAAsC,OAEtC,WAAW,CAAC,EAAqB,EAA4B,CAAC,EAAG,CACxE,KAAK,OAAS,IAAI,GAAO,CAAM,EAC/B,KAAK,UAAY,GAAmB,KAAK,MAAM,QAIzC,KAAI,CAAC,EAAqB,EAAiC,CACjE,GAAI,GAAQ,CAAM,EACjB,MAAU,MACT,6DACD,EAED,GAAI,GAAO,CAAM,EAChB,MAAU,MACT,8DACD,EAED,OAAO,IAAI,GAAK,EAAQ,CAAO,cAInB,UAAS,CACrB,EACA,EACgB,CAChB,GAAI,GAAQ,CAAM,EACjB,EAAS,MAAM,GAAY,CAAM,EAC3B,QAAI,GAAO,CAAM,EACvB,MAAU,MACT,8DACD,EAED,OAAO,IAAI,GAAK,EAAQ,CAAO,cAInB,QAAO,CAAC,EAAa,EAA0C,CAC3E,IAAM,EAAW,MAAM,MAAM,CAAG,EAChC,GAAI,CAAC,EAAS,GACb,MAAU,MACT,yBAAyB,EAAS,UAAU,EAAS,YACtD,EAED,IAAM,EAAS,MAAM,EAAS,YAAY,EAC1C,OAAO,GAAK,UAAU,EAAQ,CAAO,cAIzB,SAAQ,CACpB,EACA,EACgB,CAEhB,IAAM,EAAS,MADF,IAAI,KAAK,CAAI,EACA,YAAY,EACtC,OAAO,GAAK,UAAU,EAAQ,CAAO,EAMtC,QAAQ,CAAC,EAAmB,CAC3B,OAAO,KAAK,UAAU,OAAO,IAAI,CAAG,EAIrC,cAAc,CAAC,EAAmC,CACjD,OAAO,KAAK,UAAU,OAAO,IAAI,CAAG,EAIrC,cAAc,CAAC,EAAyB,CACvC,IAAM,EAAS,KAAK,UAAU,OAAO,IAAI,CAAG,EAC5C,GAAI,CAAC,EAAQ,OAAO,KACpB,OAAO,KAAK,OAAO,MAAM,EAAO,OAAQ,EAAO,MAAM,KAKlD,KAAI,EAAc,CACrB,GAAI,CAAC,KAAK,MAAO,CAChB,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,GAAI,CAAC,EAAQ,MAAU,MAAM,+BAA+B,EAC5D,KAAK,MAAQ,GAAU,CAAM,EAE9B,OAAO,KAAK,SAGT,KAAI,EAAc,CACrB,GAAI,CAAC,KAAK,MAAO,CAChB,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,GAAI,CAAC,EAAQ,MAAU,MAAM,+BAA+B,EAC5D,KAAK,MAAQ,GAAU,CAAM,EAE9B,OAAO,KAAK,SAGT,KAAI,EAAc,CACrB,GAAI,CAAC,KAAK,MAAO,CAChB,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,GAAI,CAAC,EAAQ,MAAU,MAAM,+BAA+B,EAC5D,KAAK,MAAQ,GAAU,CAAM,EAE9B,OAAO,KAAK,SAGT,KAAI,EAAc,CACrB,GAAI,CAAC,KAAK,MAAO,CAChB,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,GAAI,CAAC,EAAQ,MAAU,MAAM,+BAA+B,EAC5D,KAAK,MAAQ,GACZ,EACA,KAAK,KAAK,iBACV,KAAK,SACN,EAED,OAAO,KAAK,SAGT,KAAI,EAAc,CACrB,GAAI,CAAC,KAAK,MAAO,CAChB,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EACtC,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,GAAI,CAAC,GAAU,CAAC,EAAQ,MAAU,MAAM,+BAA+B,EACvE,KAAK,MAAQ,GAAU,EAAQ,EAAO,MAAM,EAE7C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAO,KAAK,KAClB,GAAI,CAAC,EACJ,KAAK,MAAQ,KACP,KACN,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EACV,GAAU,EAAQ,EAAK,iBAAkB,KAAK,SAAS,EACvD,MAGL,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,EAAQ,KAAK,SAAS,EAAI,KAE3D,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAO,KAAK,KAClB,GAAI,CAAC,EACJ,KAAK,MAAQ,KACP,KACN,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,EAAQ,EAAK,KAAK,MAAM,EAAI,MAG9D,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,IAAG,EAAoB,CAC1B,GAAI,KAAK,OAAS,OAAW,CAC5B,IAAM,EAAS,KAAK,eAAe,EAAK,GAAG,EAC3C,KAAK,KAAO,EAAS,GAAS,CAAM,EAAI,KAEzC,OAAO,KAAK,QAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,IAAG,EAAoB,CAC1B,GAAI,KAAK,OAAS,OAAW,CAC5B,IAAM,EAAS,KAAK,eAAe,EAAK,GAAG,EAC3C,KAAK,KAAO,EAAS,GAAS,CAAM,EAAI,KAEzC,OAAO,KAAK,QAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EACV,GAAU,EAAQ,KAAK,UAAW,KAAK,KAAK,gBAAgB,EAC5D,KAEJ,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,IAAG,EAAoB,CAC1B,GAAI,KAAK,OAAS,OAAW,CAC5B,IAAM,EAAS,KAAK,eAAe,EAAK,GAAG,EAC3C,KAAK,KAAO,EAAS,GAAS,CAAM,EAAI,KAEzC,OAAO,KAAK,QAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,EAAQ,KAAK,SAAS,EAAI,KAE3D,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAGT,SAAQ,EAAoB,CAC/B,GAAI,KAAK,OAAS,OAAW,CAC5B,IAAM,EAAS,KAAK,eAAe,EAAK,GAAG,EAC3C,KAAK,KAAO,EAAS,GAAS,CAAM,EAAI,KAEzC,OAAO,KAAK,QAGT,KAAI,EAAqB,CAC5B,GAAI,KAAK,QAAU,OAAW,CAC7B,IAAM,EAAS,KAAK,eAAe,EAAK,IAAI,EAC5C,KAAK,MAAQ,EAAS,GAAU,CAAM,EAAI,KAE3C,OAAO,KAAK,SAMT,UAAS,EAAW,CACvB,OAAO,KAAK,KAAK,aAId,WAAU,EAAW,CACxB,OAAO,KAAK,KAAK,cAId,SAAQ,EAAW,CACtB,OAAO,KAAK,KAAK,YAId,UAAS,EAAW,CACvB,OAAO,KAAK,KAAK,aAId,QAAO,EAAW,CACrB,OAAO,KAAK,KAAK,WAId,WAAU,EAAY,CACzB,OAAO,GAAW,KAAK,SAAS,KAI7B,MAAK,EAAY,CACpB,OAAO,KAAK,SAAS,EAAK,GAAG,GAAK,KAAK,SAAS,EAAK,IAAI,KAItD,WAAU,EAAY,CACzB,OAAO,KAAK,SAAS,EAAK,IAAI,KAI3B,kBAAiB,EAAY,CAChC,OAAO,KAAK,SAAS,EAAK,IAAI,GAAK,KAAK,SAAS,EAAK,IAAI,KAIvD,aAAY,EAAY,CAC3B,OAAO,KAAK,SAAS,EAAK,IAAI,GAAK,KAAK,SAAS,EAAK,IAAI,KAIvD,YAAW,EAAY,CAC1B,OACC,KAAK,SAAS,EAAK,IAAI,GACvB,KAAK,SAAS,EAAK,GAAG,GACtB,KAAK,SAAS,EAAK,IAAI,GACvB,KAAK,SAAS,EAAK,IAAI,KAKrB,WAAU,EAAY,CACzB,OACC,KAAK,aAAe,KAAK,SAAS,EAAK,IAAI,GAAK,KAAK,SAAS,EAAK,IAAI,GAOzE,OAAO,CAAC,EAA4B,CACnC,OAAO,GAAW,KAAK,KAAM,CAAS,EAIvC,cAAc,CAAC,EAAuB,CACrC,IAAM,EAAY,EAAK,YAAY,CAAC,EACpC,GAAI,IAAc,OAAW,MAAO,GACpC,OAAO,KAAK,QAAQ,CAAS,EAI9B,YAAY,CAAC,EAA0B,CACtC,OAAO,GAAgB,KAAK,KAAM,CAAO,EAI1C,eAAe,CAAC,EAA0B,CACzC,OAAO,GAAmB,KAAK,KAAM,CAAO,EAI7C,UAAU,EAAa,CACtB,OAAO,MAAM,KAAK,KAAK,UAAU,OAAO,KAAK,CAAC,EAAE,IAAI,EAAW,EAMhE,QAAQ,CAAC,EAAgC,CACxC,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,KAAM,OAAO,KACrC,OAAO,GAAW,KAAK,KAAM,KAAK,KAAM,CAAO,EAIhD,gBAAgB,CAAC,EAAoC,CAEpD,GAAI,KAAK,MAAQ,KAAK,KACrB,OAAO,GAAiB,KAAK,KAAM,KAAK,KAAM,CAAO,EAGtD,GAAI,KAAK,IACR,OAAO,GAAqB,KAAK,IAAK,EAAS,CAAC,EAGjD,GAAI,KAAK,KACR,OAAO,GAAsB,KAAK,KAAM,EAAS,IAAI,EAEtD,OAAO,KAIR,cAAc,CACb,EACoE,CAEpE,GAAI,KAAK,MAAQ,KAAK,KACrB,OAAO,GAAe,KAAK,KAAM,KAAK,KAAM,CAAO,EAGpD,IAAM,EAAW,KAAK,iBAAiB,CAAO,EAC9C,GAAI,CAAC,GAAY,EAAS,SAAW,EAAG,OAAO,KAE/C,IAAI,EAAO,IACP,EAAO,IACP,EAAO,KACP,EAAO,KAEX,QAAW,KAAW,EACrB,QAAW,KAAS,EACnB,EAAO,KAAK,IAAI,EAAM,EAAM,CAAC,EAC7B,EAAO,KAAK,IAAI,EAAM,EAAM,CAAC,EAC7B,EAAO,KAAK,IAAI,EAAM,EAAM,CAAC,EAC7B,EAAO,KAAK,IAAI,EAAM,EAAM,CAAC,EAI/B,GAAI,IAAS,IAAU,OAAO,KAC9B,MAAO,CAAE,OAAM,OAAM,OAAM,MAAK,EAIjC,6BAA6B,CAC5B,EACA,EACmB,CAEnB,GAAI,KAAK,MAAQ,KAAK,KACrB,OAAO,GACN,KAAK,KACL,KAAK,KACL,KAAK,KACL,EACA,CACD,EAGD,GAAI,KAAK,KACR,OAAO,GAAsB,KAAK,KAAM,EAAS,CAAU,EAG5D,OAAO,KAAK,iBAAiB,CAAO,EAEtC,CC3vBO,IAAK,IAAL,CAAK,IAAL,CAEN,SAAS,SAET,SAAS,SAET,OAAO,SANI,SAiEL,SAAS,EAAkB,CAAC,EAA6B,CAC/D,IAAI,EAAQ,EACZ,QAAW,KAAO,EAAO,UACxB,GAAS,EAAI,SAEd,OAAO,EAMD,SAAS,EAAO,CACtB,EACA,EACA,EACgB,CAChB,IACC,cACA,SAAS,EAAI,MAAM,EACnB,WACA,OAAO,OACP,cAAc,GACd,gBAAgB,GAChB,uBAAuB,IACvB,uBAAuB,IACvB,sBAAsB,GACtB,mBAAmB,KAChB,EAEE,EAAe,GAAmB,CAAM,EACxC,EAAQ,EAAc,EAG5B,GAAI,KAAK,IAAI,CAAK,EAAI,EACrB,MAAO,CACN,QAAS,GACT,WAAY,EACZ,MAAO,EACP,cAAe,EACf,YAAa,CAAC,CACf,EAID,IAAI,EACJ,GAAI,IAAS,OACZ,EAAa,EAAQ,EAAI,SAAqB,SAE9C,OAAa,EAGd,IAAM,EAAmC,CAAC,EACtC,EAAiB,EACjB,EAAgB,EAGd,EAAO,EAAK,KAClB,GAAI,EAAM,CACT,IAAM,EAAa,GAAkB,EAAM,EAAQ,CAAQ,EAE3D,QAAS,EAAI,EAAG,EAAI,KAAK,IAAI,EAAW,OAAQ,CAAW,EAAG,IAAK,CAClE,IAAM,EAAW,EAAW,GACtB,EACL,IAAe,SACZ,GAAiB,CAAQ,EACzB,GAAiB,CAAQ,EAK7B,GACC,EAAK,WAAW,OAAS,GACzB,EAAK,YAAY,OAAS,GAC1B,EAAK,WAAW,OAAS,GACzB,EAAK,YAAY,OAAS,EAE1B,EAAY,KAAK,CAChB,KAAM,SACN,aAAc,CAAC,EACf,MAAO,CACR,CAAC,EACD,EAAgB,EAKlB,GAAI,GAAiB,IAAe,SAAoB,CACvD,IAAM,EAAiB,GAAkB,EAAM,CAAM,EACrD,GAAI,EAAe,OAAS,EAAG,CAC9B,IAAM,EAAgB,GACrB,EACA,EAAe,GACf,EACA,CACD,EACA,GAAkB,EAAc,eAChC,EAAY,KAAK,GAAG,EAAc,WAAW,IAMhD,IAAM,EAAe,EAAK,QAAQ,EAAM,EACxC,GAAI,IAAiB,EAAG,CACvB,IAAM,EAAc,GACnB,EACA,EACA,EACA,IAAe,SACZ,EACA,CACJ,EACA,GAAkB,EAAY,gBAC9B,EAAY,KAAK,GAAG,EAAY,WAAW,EAI5C,GAAI,GAAuB,KAAK,IAAI,CAAc,EAAI,EAAG,CACxD,IAAM,EAAe,GACpB,EACA,EACA,CACD,EACA,GAAkB,EAAa,gBAC/B,EAAY,KAAK,GAAG,EAAa,WAAW,EAG7C,IAAM,EAAa,GAAmB,CAAM,EAE5C,MAAO,CACN,QAAS,KAAK,IAAI,CAAc,EAAI,EACpC,aACA,MAAO,EAAc,EACrB,gBACA,aACD,EAMD,SAAS,EAAa,CACrB,EACA,EACA,EACA,EAC+D,CAC/D,IAAM,EAAmC,CAAC,EACtC,EAAiB,EAGf,EAA4B,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAM,OAAS,EAAG,IAAK,CACjD,IAAM,EAAO,EAAO,MAAM,GAG1B,GAAI,GAAoB,EAAK,SAAS,EACrC,EAAgB,KAAK,CAAC,EAIxB,GAAI,EAAgB,SAAW,EAC9B,MAAO,CAAE,eAAgB,EAAG,YAAa,CAAC,CAAE,EAI7C,IAAM,EAAe,EAAK,aAAa,CAAY,EACnD,GAAI,GAAgB,EACnB,MAAO,CAAE,eAAgB,EAAG,YAAa,CAAC,CAAE,EAI7C,IAAM,EAAkB,KAAK,KAC5B,EAAkB,EAAe,EAAgB,MAClD,EACM,EAAqB,KAAK,IAC/B,EAAkB,EAClB,EAAkB,EAAgB,MACnC,EAEA,QAAW,KAAS,EAAiB,CACpC,GAAI,GAAkB,EAAiB,MAGvC,EAAO,UAAU,GAAO,UAAY,EACpC,GAAkB,EAElB,EAAY,KAAK,CAChB,KAAM,UACN,aAAc,CAAC,CAAK,EACpB,MAAO,CACR,CAAC,EAGF,MAAO,CAAE,iBAAgB,aAAY,EAMtC,SAAS,EAAmB,CAAC,EAA4B,CAGxD,OAAO,GAAa,MAAU,GAAa,KAM5C,SAAS,EAAiB,CACzB,EACA,EACA,EACA,EACgE,CAChE,IAAM,EAAmC,CAAC,EACtC,EAAkB,EAGhB,EAAyB,CAAC,EAC5B,EAAkB,EAEtB,QAAS,EAAI,EAAG,EAAI,EAAO,MAAM,OAAQ,IACxC,GAAI,EAAO,MAAM,IAAI,UAAY,EAChC,EAAa,KAAK,CAAC,EACnB,GAAmB,EAAO,UAAU,IAAI,SAI1C,GAAI,EAAa,SAAW,EAC3B,MAAO,CAAE,gBAAiB,EAAG,YAAa,CAAC,CAAE,EAI9C,IAAM,EAAqB,EAAmB,EAAa,OAErD,EADqB,EAAkB,EAAa,QACd,EAAc,GAEpD,EACL,EAAmB,EAChB,KAAK,IAAI,EAAoB,CAAa,EAC1C,KAAK,IAAI,EAAoB,CAAC,CAAa,EAE/C,QAAW,KAAO,EACjB,EAAO,UAAU,GAAK,UAAY,EAClC,GAAmB,EAGpB,GAAI,IAAoB,EACvB,EAAY,KAAK,CAChB,KAAM,UACN,aAAc,EACd,MAAO,CACR,CAAC,EAGF,MAAO,CAAE,kBAAiB,aAAY,EAMvC,SAAS,EAAmB,CAC3B,EACA,EACA,EACgE,CAChE,IAAM,EAAmC,CAAC,EAEpC,EAAY,EAAO,MAAM,OAC/B,GAAI,GAAa,EAChB,MAAO,CAAE,gBAAiB,EAAG,YAAa,CAAC,CAAE,EAI9C,IAAM,EAAU,EAAY,EACtB,EAAmB,EAAmB,EAGtC,EACL,EAAmB,EAChB,KAAK,IAAI,EAAkB,CAAa,EACxC,KAAK,IAAI,EAAkB,CAAC,CAAa,EAEvC,EAA4B,CAAC,EAC/B,EAAkB,EAEtB,QAAS,EAAI,EAAG,EAAI,EAAY,EAAG,IAClC,EAAO,UAAU,GAAG,UAAY,EAChC,GAAmB,EACnB,EAAgB,KAAK,CAAC,EAGvB,GAAI,IAAoB,EACvB,EAAY,KAAK,CAChB,KAAM,UACN,aAAc,EACd,MAAO,CACR,CAAC,EAGF,MAAO,CAAE,kBAAiB,aAAY,EAehC,SAAS,EAAc,CAC7B,EACA,EACA,EACkB,CAClB,IAAM,EAAuB,CAAC,EACxB,EAAwB,CAAC,EAE/B,GAAI,EAAO,MAAM,SAAW,EAC3B,MAAO,CAAE,MAAO,CAAC,EAAG,YAAa,CAAC,CAAE,EAGrC,IAAI,EAAY,EACZ,EAAe,EACf,EAAiB,GACjB,EAAkB,EAEtB,QAAS,EAAI,EAAG,EAAI,EAAO,MAAM,OAAQ,IAAK,CAC7C,IAAM,EAAM,EAAO,UAAU,GACvB,EAAO,EAAO,MAAM,GAK1B,GAHA,GAAgB,EAAI,SAGhB,IAAe,QAAa,EAAK,UAAY,EAChD,EAAiB,EACjB,EAAkB,EAInB,GAAI,EAAe,GAAY,EAAY,EAAG,CAC7C,IAAI,EAEJ,GAAI,EAAiB,EAEpB,EAAU,EAAiB,EAG3B,OAAU,EAIX,IAAM,EAAa,GAAiB,EAAQ,EAAW,CAAO,EAC9D,EAAM,KAAK,CAAU,EACrB,EAAY,KAAK,CAAO,EAGxB,EAAY,EACZ,EAAe,EACf,EAAiB,GAGjB,QAAS,EAAI,EAAW,GAAK,EAAG,IAC/B,GAAgB,EAAO,UAAU,IAAI,UAMxC,GAAI,EAAY,EAAO,MAAM,OAAQ,CACpC,IAAM,EAAa,GAAiB,EAAQ,EAAW,EAAO,MAAM,MAAM,EAC1E,EAAM,KAAK,CAAU,EAGtB,MAAO,CAAE,QAAO,aAAY,EAM7B,SAAS,EAAgB,CACxB,EACA,EACA,EACc,CACd,IAAM,EAAa,IAAI,GACvB,EAAW,UAAY,EAAO,UAC9B,EAAW,OAAS,EAAO,OAC3B,EAAW,SAAW,EAAO,SAE7B,QAAS,EAAI,EAAO,EAAI,EAAK,IAC5B,EAAW,MAAM,KAAK,IAAK,EAAO,MAAM,EAAG,CAAC,EAC5C,EAAW,UAAU,KAAK,IAAK,EAAO,UAAU,EAAG,CAAC,EAGrD,OAAO,EAMD,SAAS,EAAgB,CAC/B,EACA,EACA,EACkB,CAClB,IAAM,EAA2B,CAAC,EAElC,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACtC,IAAM,EAAO,EAAM,GAInB,GAHmB,IAAM,EAAM,OAAS,EAIvC,EAAQ,KAAK,CACZ,QAAS,GACT,WAAY,GAAmB,CAAI,EACnC,MAAO,EACP,cAAe,EACf,YAAa,CAAC,CACf,CAAC,EAED,OAAQ,KAAK,GAAQ,EAAM,EAAM,CAAO,CAAC,EAI3C,OAAO,EC/UD,SAAS,EAAoB,CACnC,EACA,EACU,CACV,QAAW,KAAa,EAAa,WAAY,CAChD,IAAM,EAAY,EAAW,EAAU,YAAc,EACrD,GACC,EAAY,EAAU,qBACtB,EAAY,EAAU,oBAEtB,MAAO,GAGT,MAAO,GAOD,SAAS,EAA4B,CAC3C,EACA,EACgC,CAChC,QAAW,KAAU,EAAkB,wBACtC,GAAI,GAAqB,EAAO,aAAc,CAAU,EACvD,OAAO,EAGT,OAAO,KAOD,SAAS,EAAqB,CACpC,EACA,EACA,EACA,EACW,CACX,GAAI,CAAC,GAAqB,CAAC,EAC1B,OAAO,EAGR,IAAM,EAAiB,GACtB,EACA,CACD,EACA,GAAI,CAAC,EACJ,OAAO,EAIR,IAAM,EACL,EAAe,yBAAyB,cAAc,KACrD,CAAC,IAAM,EAAE,eAAiB,CAC3B,EAED,GAAI,EACH,OAAO,EAAa,iBAAiB,kBAGtC,OAAO,EAOD,SAAS,EAAsB,CACrC,EACA,EACA,EACA,EACqB,CACrB,GAAI,CAAC,GAAqB,CAAC,EAC1B,OAAO,EAGR,IAAM,EAAiB,GACtB,EACA,CACD,EACA,GAAI,CAAC,EACJ,OAAO,EAIR,IAAM,EAAS,IAAI,IAAI,CAAc,EAErC,QAAW,KAAgB,EAAe,yBACxC,cAED,QAAY,EAAK,KAAU,EAC1B,GAAI,IAAU,EAAa,aAAc,CACxC,EAAO,IAAI,EAAK,EAAa,iBAAiB,iBAAiB,EAC/D,MAKH,OAAO,ECvOR,SAAS,EAAuB,CAC/B,EACA,EACA,EACA,EACS,CAGT,IAAM,EAAK,CAAC,EAAK,EACX,EAAK,EAAK,EAGV,EAAM,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACvC,GAAI,EAAM,aACT,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,IAAK,CAAE,EAI7B,MAAO,CACN,EAAG,EAAK,EACR,EAAG,EAAK,EACR,KACD,EAMD,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACA,EACO,CAEP,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EAKrB,GAHC,KAAK,KAAK,EAAG,EAAI,EAAG,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,CAAE,EAChD,KAAK,KAAK,EAAK,EAAK,EAAK,EAAK,YAAK,GAE3B,EAAK,CACb,EAAO,KAAK,CAAE,EACd,OAID,IAAM,EAAa,CAAE,GAAI,EAAG,EAAI,EAAG,GAAK,EAAG,GAAI,EAAG,EAAI,EAAG,GAAK,CAAE,EAC1D,EAAa,CAAE,GAAI,EAAG,EAAI,EAAG,GAAK,EAAG,GAAI,EAAG,EAAI,EAAG,GAAK,CAAE,EAC1D,EAAc,CAAE,GAAI,EAAI,EAAI,EAAI,GAAK,EAAG,GAAI,EAAI,EAAI,EAAI,GAAK,CAAE,EAErE,GAAiB,EAAI,EAAK,EAAM,EAAK,CAAM,EAC3C,GAAiB,EAAM,EAAK,EAAI,EAAK,CAAM,EAM5C,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACA,EACA,EACO,CAEP,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAQ,EAAK,EAAK,EAAK,EAAK,aAC5B,EACL,KAAK,KAAK,EAAG,EAAI,EAAG,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,CAAE,EAAI,KAAK,KAAK,CAAK,EAC9D,EACL,KAAK,KAAK,EAAG,EAAI,EAAG,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,CAAE,EAAI,KAAK,KAAK,CAAK,EAEpE,GAAI,GAAM,GAAO,GAAM,EAAK,CAC3B,EAAO,KAAK,CAAE,EACd,OAID,IAAM,EAAa,CAAE,GAAI,EAAG,EAAI,EAAG,GAAK,EAAG,GAAI,EAAG,EAAI,EAAG,GAAK,CAAE,EAC1D,EAAa,CAAE,GAAI,EAAG,EAAI,EAAG,GAAK,EAAG,GAAI,EAAG,EAAI,EAAG,GAAK,CAAE,EAC1D,EAAa,CAAE,GAAI,EAAG,EAAI,EAAG,GAAK,EAAG,GAAI,EAAG,EAAI,EAAG,GAAK,CAAE,EAC1D,EAAc,CAAE,GAAI,EAAI,EAAI,EAAI,GAAK,EAAG,GAAI,EAAI,EAAI,EAAI,GAAK,CAAE,EAC/D,EAAc,CAAE,GAAI,EAAI,EAAI,EAAI,GAAK,EAAG,GAAI,EAAI,EAAI,EAAI,GAAK,CAAE,EAC/D,EAAe,CAAE,GAAI,EAAK,EAAI,EAAK,GAAK,EAAG,GAAI,EAAK,EAAI,EAAK,GAAK,CAAE,EAE1E,GAAa,EAAI,EAAK,EAAM,EAAO,EAAK,CAAM,EAC9C,GAAa,EAAO,EAAM,EAAK,EAAI,EAAK,CAAM,EAM/C,SAAS,EAAc,CACtB,EACA,EACyC,CACzC,IAAM,EAAmD,CAAC,EACtD,EAAmB,CAAC,EACpB,EAAkB,CAAE,EAAG,EAAG,EAAG,CAAE,EAC/B,EAAoB,CAAE,EAAG,EAAG,EAAG,CAAE,EAErC,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,GAAI,EAAQ,OAAS,EACpB,EAAS,KAAK,CAAE,OAAQ,EAAS,OAAQ,EAAM,CAAC,EAEjD,EAAW,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EAChC,EAAa,EACb,EAAU,CAAC,CAAQ,EACnB,UAEI,IACJ,EAAW,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EAChC,EAAQ,KAAK,CAAQ,EACrB,UAEI,IACJ,GACC,EACA,CAAE,EAAG,EAAI,GAAI,EAAG,EAAI,EAAG,EACvB,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EACrB,EACA,CACD,EACA,EAAW,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EAChC,UAEI,IACJ,GACC,EACA,CAAE,EAAG,EAAI,GAAI,EAAG,EAAI,EAAG,EACvB,CAAE,EAAG,EAAI,GAAI,EAAG,EAAI,EAAG,EACvB,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EACrB,EACA,CACD,EACA,EAAW,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,EAChC,UAEI,IAEJ,GAAI,EAAQ,OAAS,EAAG,CAEvB,IAAM,EAAQ,EAAQ,GAChB,EAAO,EAAQ,EAAQ,OAAS,GACtC,GAAI,GAAS,EAAM,CAClB,IAAM,EAAK,EAAK,EAAI,EAAM,EACpB,EAAK,EAAK,EAAI,EAAM,EAC1B,GAAI,EAAK,EAAK,EAAK,EAAK,EAAM,EAC7B,EAAQ,KAAK,IAAK,CAAM,CAAC,EAG3B,EAAS,KAAK,CAAE,OAAQ,EAAS,OAAQ,EAAK,CAAC,EAEhD,EAAU,CAAC,EACX,EAAW,EACX,MAKH,GAAI,EAAQ,OAAS,EACpB,EAAS,KAAK,CAAE,OAAQ,EAAS,OAAQ,EAAM,CAAC,EAGjD,OAAO,EAMR,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CAEP,IAAM,EAAM,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAClD,EAAQ,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EACpD,EAAQ,KAAK,MAAM,EAAO,CAAG,EAG7B,EAAc,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAI,CAAK,GAAK,KAAK,GAAK,EAAE,CAAC,EAEpE,EAAO,EAAQ,EAAI,GACnB,EAAa,KAAK,MAAM,EAAQ,EAAG,EAAQ,CAAC,EAElD,QAAS,EAAI,EAAG,GAAK,EAAa,IAAK,CACtC,IAAM,EAAI,EAAI,EACR,EAAe,EAAa,EAAQ,EACpC,EAAK,KAAK,IAAI,CAAY,EAC1B,EAAK,KAAK,IAAI,CAAY,EAChC,EAAO,KAAK,CACX,EAAG,EAAO,EAAI,EAAK,EAAU,EAC7B,EAAG,EAAO,EAAI,EAAK,EAAU,CAC9B,CAAC,GAOH,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACU,CACV,IAAM,EAAO,EAAQ,EAAI,GAGnB,EAAM,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAClD,EAAe,KAAK,MAAM,EAAI,GAAO,CAAC,EAE5C,GAAI,EAAe,aAClB,MAAO,GAGR,IAAM,EAAc,EAAI,EAExB,GAAI,EAAc,EACjB,MAAO,GAIR,IAAM,EAAK,EAAQ,EAAI,EAAQ,EACzB,EAAK,EAAQ,EAAI,EAAQ,EACzB,EAAO,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EAExC,GAAI,EAAO,aACV,MAAO,GAGR,IAAM,EACJ,EAAc,KAAK,KAAK,EAAU,EAAU,EAAU,CAAO,EAAK,EAOpE,OALA,EAAO,KAAK,CACX,EAAG,EAAO,EAAK,EAAK,EAAQ,EAAY,EACxC,EAAG,EAAO,EAAK,EAAK,EAAQ,EAAY,CACzC,CAAC,EAEM,GAOR,SAAS,EAAmB,CAC3B,EACA,EACA,EACA,EACA,EACqC,CACrC,IAAM,EAAI,EAAO,OACjB,GAAI,EAAI,EACP,MAAO,CAAE,MAAO,CAAC,EAAG,MAAO,CAAC,CAAE,EAI/B,IAAM,EAAU,EAAI,EACd,EAAQ,EAAO,GACf,EAAO,EAAO,GAChB,EAAa,EACjB,GAAI,GAAS,EAAM,CAClB,IAAM,EAAK,EAAK,EAAI,EAAM,EACpB,EAAK,EAAK,EAAI,EAAM,EAC1B,GAAI,EAAK,EAAK,EAAK,EAAK,EACvB,EAAa,EAAI,EAInB,GAAI,EAAa,EAChB,MAAO,CAAE,MAAO,CAAC,EAAG,MAAO,CAAC,CAAE,EAI/B,IAAM,EAAoB,CAAC,EAC3B,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAK,EAAO,GACZ,EAAK,EAAQ,GAAI,GAAK,GAC5B,GAAI,CAAC,GAAM,CAAC,EAAI,SAEhB,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAM,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EAEvC,GAAI,EAAM,aACT,EAAQ,KAAK,CAAE,EAAG,EAAG,EAAG,EAAG,IAAK,CAAE,CAAC,EAEnC,OAAQ,KACP,GAAwB,EAAK,EAAK,EAAK,EAAK,EAAS,CAAO,CAC7D,EAIF,IAAM,EAAiB,CAAC,EAClB,EAAiB,CAAC,EAGxB,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAK,EAAO,GACZ,EAAa,EAAS,GAAI,EAAI,GAAc,GAC5C,EAAa,EAAQ,GAC3B,GAAI,CAAC,GAAM,CAAC,GAAc,CAAC,EAAY,SAGvC,GAAI,EAAW,IAAM,cAAS,EAAW,IAAM,aAAO,CACrD,EAAM,KAAK,CACV,EAAG,EAAG,GAAK,EAAW,IAAM,EAAI,EAAW,EAAI,EAAU,GACzD,EAAG,EAAG,GAAK,EAAW,IAAM,EAAI,EAAW,EAAI,EAAU,EAC1D,CAAC,EACD,SAID,IAAM,EAAkB,CACvB,EAAG,EAAG,EAAI,EAAW,EAAI,EACzB,EAAG,EAAG,EAAI,EAAW,EAAI,CAC1B,EAGM,EAAQ,EAAW,EAAI,EAAW,EAAI,EAAW,EAAI,EAAW,EAChE,EAAW,EAAQ,EAEzB,GAAI,KAAK,IAAI,CAAK,EAAI,KAErB,EAAM,KAAK,CAAQ,EACb,QAAI,EAEV,OAAQ,OACF,QACJ,GACC,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EACA,UACI,QACJ,GACC,CAAC,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EAEA,EAAM,KAAK,CAAQ,EAEpB,cAEA,EAAM,KAAK,CAAQ,EACnB,MAIF,OAAM,KAAK,CAAQ,EAKrB,QAAS,EAAI,EAAG,EAAI,EAAY,IAAK,CACpC,IAAM,EAAK,EAAO,GACZ,EAAa,EAAS,GAAI,EAAI,GAAc,GAC5C,EAAa,EAAQ,GAC3B,GAAI,CAAC,GAAM,CAAC,GAAc,CAAC,EAAY,SAEvC,GAAI,EAAW,IAAM,cAAS,EAAW,IAAM,aAAO,CACrD,EAAM,KAAK,CACV,EAAG,EAAG,GAAK,EAAW,IAAM,EAAI,EAAW,EAAI,EAAU,GACzD,EAAG,EAAG,GAAK,EAAW,IAAM,EAAI,EAAW,EAAI,EAAU,EAC1D,CAAC,EACD,SAGD,IAAM,EAAkB,CACvB,EAAG,EAAG,EAAI,EAAW,EAAI,EACzB,EAAG,EAAG,EAAI,EAAW,EAAI,CAC1B,EAEM,EAAQ,EAAW,EAAI,EAAW,EAAI,EAAW,EAAI,EAAW,EAChE,EAAW,EAAQ,EAEzB,GAAI,KAAK,IAAI,CAAK,EAAI,KACrB,EAAM,KAAK,CAAQ,EACb,QAAI,EACV,OAAQ,OACF,QACJ,GACC,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EACA,UACI,QACJ,GACC,CAAC,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EAEA,EAAM,KAAK,CAAQ,EAEpB,cAEA,EAAM,KAAK,CAAQ,EACnB,MAGF,OAAM,KAAK,CAAQ,EAIrB,MAAO,CAAE,QAAO,OAAM,EAMvB,SAAS,EAAY,CAAC,EAAiB,EAAgC,CACtE,GAAI,EAAO,SAAW,EAAG,MAAO,CAAC,EAEjC,IAAM,EAA0B,CAAC,EAC3B,EAAQ,EAAO,GACrB,GAAI,CAAC,EAAO,MAAO,CAAC,EAEpB,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAM,EAAG,EAAG,EAAM,CAAE,CAAC,EAEnD,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACvC,IAAM,EAAK,EAAO,GAClB,GAAI,CAAC,EAAI,SACT,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EAG9C,GAAI,EACH,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAG5B,OAAO,EAcD,SAAS,EAAgB,CAC/B,EACA,EACyC,CACzC,IACC,UACA,UACA,MAAM,EACN,WAAW,QACX,aAAa,GACV,EAEJ,GAAI,GAAW,GAAK,GAAW,EAC9B,MAAO,CACN,MAAO,CAAE,SAAU,CAAC,EAAG,OAAQ,IAAK,EACpC,MAAO,CAAE,SAAU,CAAC,EAAG,OAAQ,IAAK,CACrC,EAID,IAAM,EAAW,GAAe,EAAM,CAAG,EAEnC,EAA+B,CAAC,EAChC,EAA+B,CAAC,EAEtC,QAAW,KAAW,EAAU,CAC/B,GAAI,CAAC,EAAQ,OAAQ,CAGpB,IAAM,EAAa,EAAQ,OAAO,GAClC,GAAI,EAAY,EAAQ,OAAO,KAAK,CAAU,EAC9C,EAAQ,OAAS,GAGlB,IAAQ,QAAO,SAAU,GACxB,EAAQ,OACR,EACA,EACA,EACA,CACD,EAEA,EAAc,KAAK,GAAG,GAAa,EAAO,EAAI,CAAC,EAC/C,EAAc,KAAK,GAAG,GAAa,EAAO,EAAI,CAAC,EAIhD,IAAI,EAAc,KACd,EAAc,KAElB,GAAI,EAAK,OACR,EAAc,CACb,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,CAC1B,EACA,EAAc,CACb,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,CAC1B,EAGD,MAAO,CACN,MAAO,CAAE,SAAU,EAAe,OAAQ,EAAa,MAAO,EAAK,KAAM,EACzE,MAAO,CAAE,SAAU,EAAe,OAAQ,EAAa,MAAO,EAAK,KAAM,CAC1E,EAOM,SAAS,EAAwB,CACvC,EACA,EACY,CACZ,IAAQ,QAAO,SAAU,GAAiB,EAAM,CAAO,EAIjD,EAA0B,CAAC,GAAG,EAAM,SAAU,GAAG,EAAM,QAAQ,EAE/D,EAAS,EAAM,OAErB,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAMvC,SAAS,EAAa,CAC5B,EACA,EACA,EACyC,CACzC,OAAO,GAAiB,EAAM,CAC7B,QAAS,EACT,QAAS,KACN,CACJ,CAAC,ECnnBK,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAI1B,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAI1B,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAGD,GAAI,IAAM,EAAG,CACZ,EAAI,MAAQ,wBACZ,EAAI,MAAM,EAAI,YAAc,EAC5B,OAID,EAAI,MAAM,EAAI,YAAc,KAAK,MAAO,EAAI,GAAM,CAAC,EAI7C,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAID,EAAI,MAAM,EAAI,YAAc,KAAK,MAAO,EAAI,EAAK,EAAE,EAI7C,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,uBACZ,OAED,EAAI,MAAM,EAAI,SAAW,GAAK,EAAM,EAAI,CAAC,EAAM,EAIzC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,uBACZ,OAED,EAAI,MAAM,EAAI,SAAW,GAAK,CAAC,EAIzB,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,yBACZ,OAED,EAAI,MAAM,EAAI,SAAW,GAAK,EAAM,IAI9B,SAAS,EAAO,CAAC,EAAwB,CAC/C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,2BACZ,OAED,EAAI,MAAM,EAAI,SAAW,GAAM,EAAM,GAAM,IAIrC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAAI,EAAI,EAIlC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAAI,EAAI,EAMlC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,sBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAAI,EAAI,EAIlC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,wBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,GAAK,EAAI,EAAI,EAInC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,sBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,EAAI,EAAI,EAIlC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,wBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,GAAK,EAAI,EAAI,EAInC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,sBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,IAAM,EAAI,EAAI,EAIpC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,IAAM,EAAI,EAAI,EAIpC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,uBACZ,OAGD,IAAM,EAAW,EAAM,GAAM,IAC7B,EAAI,MAAM,EAAI,SAAW,GAAK,EAAU,GAAK,EAAI,EAI3C,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,wBACZ,OAGD,IAAM,EAAW,EAAM,GAAM,IAC7B,EAAI,MAAM,EAAI,SAAW,GAAK,EAAU,GAAK,EAAI,EAM3C,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,uBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,GAAK,EAAI,EAAI,EAInC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAC1B,GAAI,IAAM,QAAa,IAAM,OAAW,CACvC,EAAI,MAAQ,sBACZ,EAAI,UAAY,EAChB,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,GAAK,EAAI,EAAI,EAInC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,GAAI,IAAQ,OAAW,CACtB,EAAI,MAAQ,uBACZ,OAED,EAAI,MAAM,EAAI,SAAW,GAAK,EAAM,EAAI,EC1QlC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAY,EAAI,MAAM,EAAE,EAAI,UAClC,GAAI,IAAc,OAAW,CAC5B,EAAI,MAAQ,sBACZ,EAAI,WACJ,OAGD,GAAI,EAEH,OAID,IAAI,EAAQ,EAEZ,MAAO,EAAI,GAAK,EAAI,SAAU,CAC7B,IAAM,EAAS,EAAI,KAAK,EAAI,MAC5B,GAAI,IAAW,OAAW,MAE1B,OAAQ,OACF,IACJ,IACA,UACI,IACJ,GAAI,IAAU,EAEb,OAED,UACI,IAEJ,GADA,IACI,IAAU,EACb,OAED,UAEI,IACJ,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GACnC,UACI,IACJ,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAAK,EACxC,cAEA,GAAI,GAAU,KAAQ,GAAU,IAE/B,EAAI,IAAM,EAAS,IAAO,EACpB,QAAI,GAAU,KAAQ,GAAU,IAEtC,EAAI,KAAO,EAAS,IAAO,GAAK,GAKpC,EAAI,MAAQ,kBAIN,SAAS,EAAI,CAAC,EAAwB,CAE5C,IAAI,EAAQ,EAEZ,MAAO,EAAI,GAAK,EAAI,SAAU,CAC7B,IAAM,EAAS,EAAI,KAAK,EAAI,MAC5B,GAAI,IAAW,OAAW,MAE1B,OAAQ,OACF,IACJ,IACA,UACI,IAEJ,GADA,IACI,IAAU,EACb,OAED,UACI,IACJ,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GACnC,UACI,IACJ,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAAK,EACxC,cAEA,GAAI,GAAU,KAAQ,GAAU,IAC/B,EAAI,IAAM,EAAS,IAAO,EACpB,QAAI,GAAU,KAAQ,GAAU,IACtC,EAAI,KAAO,EAAS,IAAO,GAAK,GAKpC,EAAI,MAAQ,oBAIN,SAAS,EAAG,CAAC,EAAyB,EAKtC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAS,EAAI,MAAM,EAAE,EAAI,UAC/B,GAAI,IAAW,OAAW,CACzB,EAAI,MAAQ,wBACZ,EAAI,WACJ,OAED,EAAI,IAAM,EAAS,EAIb,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAY,EAAI,MAAM,EAAE,EAAI,UAC5B,EAAS,EAAI,MAAM,EAAE,EAAI,UAC/B,GAAI,IAAc,QAAa,IAAW,OAAW,CACpD,EAAI,MAAQ,wBACZ,EAAI,UAAY,EAChB,OAGD,GAAI,EACH,EAAI,IAAM,EAAS,EAKd,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAY,EAAI,MAAM,EAAE,EAAI,UAC5B,EAAS,EAAI,MAAM,EAAE,EAAI,UAC/B,GAAI,IAAc,QAAa,IAAW,OAAW,CACpD,EAAI,MAAQ,wBACZ,EAAI,UAAY,EAChB,OAGD,GAAI,CAAC,EACJ,EAAI,IAAM,EAAS,EAKd,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAU,EAAI,MAAM,EAAE,EAAI,UAChC,GAAI,IAAY,OAAW,CAC1B,EAAI,MAAQ,wBACZ,EAAI,WACJ,OAGD,GAAI,EAAU,GAAK,GAAW,EAAI,SAAU,CAC3C,EAAI,MAAQ,iCAAiC,IAC7C,OAGD,IAAM,EAAM,EAAI,MAAM,GACtB,GAAI,CAAC,EAAK,CACT,EAAI,MAAQ,8BAA8B,IAC1C,OAED,EAAI,GAAK,EACT,EAAI,MAAQ,EAAI,GAChB,EAAI,OAAS,GACb,EAAI,MAAQ,EAAI,aAGhB,MAAO,EAAI,GAAK,EAAI,SAAU,CAC7B,IAAM,EAAS,EAAI,KAAK,EAAI,MAC5B,GAAI,IAAW,OAAW,MAE1B,GAAI,IAAW,GAAM,CAEpB,EAAI,IAAM,EAAI,GACd,OAID,GAAI,IAAW,GACd,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAC7B,QAAI,IAAW,GACrB,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAAK,EAClC,QAAI,GAAU,KAAQ,GAAU,IACtC,EAAI,IAAM,EAAS,IAAO,EACpB,QAAI,GAAU,KAAQ,GAAU,IACtC,EAAI,KAAO,EAAS,IAAO,GAAK,EAIlC,EAAI,MAAQ,qBAIN,SAAS,EAAI,CAAC,EAAwB,CAE5C,GAAI,EAAI,cAAgB,EAAG,CAC1B,EAAI,MAAQ,6BACZ,OAGD,IAAM,EAAO,EAAI,UAAU,EAAI,aAAe,GAC9C,GAAI,CAAC,EAAM,CACV,EAAI,MAAQ,2BACZ,OAMD,GAFA,EAAK,QAED,EAAK,MAAQ,EAEhB,EAAI,GAAK,EAAK,IAAI,MACZ,KAEN,EAAI,eACJ,EAAI,GAAK,EAAK,SACd,EAAI,aAAe,EAAK,YAGxB,IAAM,EAAQ,EAAI,WAAW,IAAI,EAAI,YAAY,EACjD,GAAI,EACH,EAAI,KAAO,EAAM,KACjB,EAAI,SAAW,EAAM,MAMjB,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAU,EAAI,MAAM,EAAE,EAAI,UAChC,GAAI,IAAY,OAAW,CAC1B,EAAI,MAAQ,wBACZ,EAAI,WACJ,OAGD,GAAI,EAAU,GAAK,GAAW,EAAI,SAAU,CAC3C,EAAI,MAAQ,iCAAiC,IAC7C,OAGD,IAAM,EAAM,EAAI,MAAM,GACtB,GAAI,CAAC,GAAO,CAAC,EAAI,OAAQ,CACxB,EAAI,MAAQ,kBAAkB,gBAC9B,OAGD,GAAI,EAAI,cAAgB,EAAI,aAAc,CACzC,EAAI,MAAQ,4BACZ,OAID,IAAM,EAAO,EAAI,UAAU,EAAI,gBAC/B,GAAI,CAAC,EAAM,CACV,EAAI,MAAQ,gCACZ,EAAI,eACJ,OAED,EAAK,SAAW,EAAI,GACpB,EAAK,YAAc,EAAI,aACvB,EAAK,IAAM,EACX,EAAK,MAAQ,EAGb,EAAI,aAAe,EAAI,MACvB,IAAM,EAAQ,EAAI,WAAW,IAAI,EAAI,YAAY,EACjD,GAAI,EACH,EAAI,KAAO,EAAM,KACjB,EAAI,SAAW,EAAM,KAEtB,EAAI,GAAK,EAAI,MAIP,SAAS,EAAQ,CAAC,EAAwB,CAChD,IAAM,EAAU,EAAI,MAAM,EAAE,EAAI,UAC1B,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,IAAY,QAAa,IAAU,OAAW,CACjD,EAAI,MAAQ,4BACZ,EAAI,UAAY,EAChB,OAGD,GAAI,EAAU,GAAK,GAAW,EAAI,SAAU,CAC3C,EAAI,MAAQ,qCAAqC,IACjD,OAGD,IAAM,EAAM,EAAI,MAAM,GACtB,GAAI,CAAC,GAAO,CAAC,EAAI,OAAQ,CACxB,EAAI,MAAQ,sBAAsB,gBAClC,OAGD,GAAI,GAAS,EACZ,OAGD,GAAI,EAAI,cAAgB,EAAI,aAAc,CACzC,EAAI,MAAQ,gCACZ,OAID,IAAM,EAAO,EAAI,UAAU,EAAI,gBAC/B,GAAI,CAAC,EAAM,CACV,EAAI,MAAQ,oCACZ,EAAI,eACJ,OAED,EAAK,SAAW,EAAI,GACpB,EAAK,YAAc,EAAI,aACvB,EAAK,IAAM,EACX,EAAK,MAAQ,EAGb,EAAI,aAAe,EAAI,MACvB,IAAM,EAAQ,EAAI,WAAW,IAAI,EAAI,YAAY,EACjD,GAAI,EACH,EAAI,KAAO,EAAM,KACjB,EAAI,SAAW,EAAM,KAEtB,EAAI,GAAK,EAAI,MAIP,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAS,EAAI,MAAM,EAAE,EAAI,UAC/B,GAAI,IAAW,OAAW,CACzB,EAAI,MAAQ,wBACZ,EAAI,WACJ,OAGD,GAAI,EAAS,GAAK,GAAU,EAAI,SAAU,CACzC,EAAI,MAAQ,wBAAwB,IACpC,OAGD,IAAM,EAAM,EAAI,MAAM,GACtB,GAAI,CAAC,EAAK,CACT,EAAI,MAAQ,4BAA4B,IACxC,OAED,EAAI,OAAS,EACb,EAAI,MAAQ,EAAI,GAChB,EAAI,OAAS,GACb,EAAI,MAAQ,EAAI,aAGhB,MAAO,EAAI,GAAK,EAAI,SAAU,CAC7B,IAAM,EAAK,EAAI,KAAK,EAAI,MACxB,GAAI,IAAO,OAAW,MAEtB,GAAI,IAAO,GAAM,CAEhB,EAAI,IAAM,EAAI,GACd,OAID,GAAI,IAAO,GACV,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAC7B,QAAI,IAAO,GACjB,EAAI,IAAM,GAAK,EAAI,KAAK,EAAI,KAAO,GAAK,EAClC,QAAI,GAAM,KAAQ,GAAM,IAC9B,EAAI,IAAM,EAAK,IAAO,EAChB,QAAI,GAAM,KAAQ,GAAM,IAC9B,EAAI,KAAO,EAAK,IAAO,GAAK,EAI9B,EAAI,MAAQ,qBC/ON,SAAS,EAA0B,EAAkB,CAC3D,MAAO,CACN,IAAK,EACL,IAAK,EACL,IAAK,EACL,WAAY,CAAE,EAAG,MAAQ,EAAG,CAAE,EAC9B,WAAY,CAAE,EAAG,MAAQ,EAAG,CAAE,EAC9B,WAAY,CAAE,EAAG,MAAQ,EAAG,CAAE,EAC9B,KAAM,EACN,gBAAiB,GACjB,WAAY,EACZ,SAAU,GACV,kBAAmB,GACnB,iBAAkB,EAClB,iBAAkB,EAClB,UAAW,EACX,WAAY,EACZ,gBAAiB,EACjB,YAAa,EACb,SAAU,EACV,KAAM,EACN,KAAM,EACN,KAAM,EACN,OAAQ,GACR,MAAO,EACP,UAAW,EACZ,EAwIM,SAAS,EAAe,CAC9B,EACA,EACY,CACZ,MAAO,CACN,QAAS,EACT,UAAW,EACX,IAAS,MAAM,CAAS,EAAE,KAAK,IAAI,EAAE,IAAI,KAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAAE,EAC/D,IAAS,MAAM,CAAS,EAAE,KAAK,IAAI,EAAE,IAAI,KAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAAE,EAC/D,KAAU,MAAM,CAAS,EAAE,KAAK,IAAI,EAAE,IAAI,KAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAAE,EAChE,KAAM,IAAI,WAAW,CAAS,EAC9B,SAAU,IAAI,YAAY,CAAW,CACtC,EAMM,SAAS,EAAiB,CAChC,EAAmB,IACnB,EAAqB,GACrB,EAAmB,GACnB,EAAmB,GACnB,EAAuB,GACvB,EAA4B,GACd,CACd,IAAM,EAAY,GAA2B,EAE7C,MAAO,CACN,GAAI,IAAK,CAAU,EACnB,YAEA,IAAK,GAAgB,EAAG,CAAC,EACzB,IAAK,GAAgB,EAAG,CAAC,EACzB,IAAK,GAAgB,EAAG,CAAC,EAEzB,SAAU,GAAgB,EAAmB,CAAC,EAC9C,IAAK,GAAgB,EAAG,CAAC,EAEzB,MAAO,IAAI,WAAW,CAAQ,EAC9B,SAAU,EAEV,GAAI,EACJ,KAAM,IAAI,WAAW,CAAC,EACtB,SAAU,EACV,aAAc,EAEd,OAAQ,EACR,QAAS,EAET,IAAK,IAAI,WAAW,CAAC,EACrB,QAAS,EAET,QAAS,IAAI,WAAW,CAAU,EAClC,YAAa,EAEb,MAAW,MAAM,CAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,EAAG,KAAO,CACpD,GAAI,EACJ,MAAO,EACP,IAAK,EACL,OAAQ,GACR,MAAO,CACR,EAAE,EACF,WAEA,MAAW,MAAM,CAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,EAAG,KAAO,CACpD,OAAQ,EACR,MAAO,EACP,IAAK,EACL,OAAQ,GACR,MAAO,CACR,EAAE,EACF,WAEA,UAAe,MAAM,CAAY,EAAE,KAAK,IAAI,EAAE,IAAI,KAAO,CACxD,SAAU,EACV,YAAa,EACb,IAAK,CAAE,GAAI,EAAG,MAAO,EAAG,IAAK,EAAG,OAAQ,GAAO,MAAO,CAAe,EACrE,MAAO,CACR,EAAE,EACF,aAAc,EACd,eAEA,WAAY,IAAI,IAEhB,KAAM,GACN,UAAW,GACX,MAAO,EAEP,MAAO,KAEP,iBAAkB,EAClB,gBAAiB,GAClB,EAMM,IAAM,EAAS,CAErB,OAAQ,GACR,OAAQ,GACR,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IAGT,GAAI,GACJ,GAAI,GAGJ,KAAM,GACN,MAAO,GACP,MAAO,IAGP,IAAK,GACL,IAAK,GACL,MAAO,GACP,KAAM,GACN,MAAO,GACP,OAAQ,GACR,OAAQ,GACR,KAAM,IAGN,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,MAAO,IACP,QAAS,IACT,IAAK,IACL,IAAK,IAGL,GAAI,GACJ,KAAM,GACN,GAAI,GACJ,KAAM,GACN,GAAI,GACJ,IAAK,GACL,IAAK,GACL,KAAM,GAGN,IAAK,GACL,GAAI,GACJ,IAAK,GAGL,GAAI,GACJ,KAAM,GACN,IAAK,GACL,KAAM,GACN,KAAM,IACN,KAAM,IAGN,KAAM,GACN,KAAM,GACN,KAAM,GACN,SAAU,GACV,KAAM,IAGN,QAAS,EACT,QAAS,EACT,SAAU,EACV,SAAU,EACV,SAAU,EACV,SAAU,EACV,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,SAAU,IACV,SAAU,IACV,MAAO,GACP,MAAO,GACP,IAAK,GACL,IAAK,GACL,OAAQ,GACR,MAAO,GAGP,KAAM,GACN,KAAM,GACN,KAAM,GAGN,KAAM,GACN,KAAM,GACN,KAAM,GACN,KAAM,GAGN,MAAO,GACP,IAAK,GACL,KAAM,GACN,IAAK,GACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,OAAQ,IACR,SAAU,IACV,OAAQ,GACR,MAAO,GACP,IAAK,GACL,OAAQ,GACR,QAAS,GACT,MAAO,IACP,IAAK,GACL,IAAK,GAGL,KAAM,GACN,KAAM,GACN,KAAM,GACN,KAAM,GACN,KAAM,GACN,MAAO,GACP,IAAK,GACL,OAAQ,IACR,SAAU,IACV,UAAW,IAGX,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,GAAI,GACJ,QAAS,GACT,QAAS,GACT,QAAS,GACT,KAAM,GACN,OAAQ,GACR,OAAQ,GAGR,SAAU,GAGV,IAAK,GAGL,OAAQ,GACR,OAAQ,GAGR,MAAO,GACP,MAAO,GAGP,QAAS,GACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IAGT,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IAGV,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,IACV,GAAI,IACJ,MAAO,GAGP,UAAW,IAGX,UAAW,GACZ,EAKa,GAAqC,EAChD,EAAO,IAAK,GACZ,EAAO,IAAK,GACZ,EAAO,MAAO,GACd,EAAO,OAAQ,GACf,EAAO,OAAQ,GACf,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,OAAQ,GACf,EAAO,MAAO,GACd,EAAO,OAAQ,GACf,EAAO,QAAS,GAChB,EAAO,QAAS,GAChB,EAAO,MAAO,GACd,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,OAAQ,GACf,EAAO,SAAU,GACjB,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,IAAK,GACZ,EAAO,MAAO,GACd,EAAO,IAAK,GACZ,EAAO,MAAO,GACd,EAAO,IAAK,GACZ,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,MAAO,GACd,EAAO,KAAM,GACb,EAAO,IAAK,GACZ,EAAO,KAAM,GACb,EAAO,IAAK,GACZ,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,UAAW,GAClB,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,OAAQ,GACf,EAAO,KAAM,GACb,EAAO,QAAS,GAChB,EAAO,OAAQ,GACf,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,KAAM,GACb,EAAO,OAAQ,GACf,EAAO,OAAQ,GACf,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,MAAO,GACd,EAAO,OAAQ,GACf,EAAO,SAAU,GACjB,EAAO,IAAK,GACZ,EAAO,OAAQ,GACf,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,QAAS,GAChB,EAAO,QAAS,GAChB,EAAO,QAAS,GAChB,EAAO,QAAS,GAChB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,QAAS,GAChB,EAAO,UAAW,GAClB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,SAAU,GACjB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,UAAW,GAClB,EAAO,SAAU,GACjB,EAAO,QAAS,GAChB,EAAO,UAAW,GAClB,EAAO,WAAY,CACrB,EC1rBO,SAAS,EAAW,CAAC,EAAmB,EAAgC,CAC9E,GAAI,GAAY,EACf,OAAQ,EAAW,GAAK,EAAgB,IAExC,WAAO,EAAG,CAAC,EAAW,GAAK,EAAgB,KAOtC,SAAS,EAAe,CAC9B,EACA,EACU,CACV,GAAI,GAAY,EACf,OAAS,EAAW,GAAK,EAAgB,KAAO,GAEhD,WAAO,GAAI,CAAC,EAAW,GAAK,EAAgB,KAAO,IAO9C,SAAS,EAAiB,CAChC,EACA,EACU,CACV,GAAI,GAAY,EACf,OAAQ,EAAW,GAAK,EAAgB,IAExC,WAAO,EAAG,CAAC,EAAW,GAAK,EAAgB,KAOtC,SAAS,EAAe,CAC9B,EACA,EACU,CACV,GAAI,GAAY,EACf,OAAQ,EAAW,EAAgB,IAEnC,WAAO,EAAG,EAAe,EAAY,KAOhC,SAAS,EAAa,CAC5B,EACA,EACU,CACV,GAAI,GAAY,EACf,OAAQ,EAAW,GAAK,EAAgB,IAExC,WAAO,EAAG,GAAK,EAAe,EAAY,KAOrC,SAAS,EAAQ,CAAC,EAAmB,EAAiC,CAC5E,OAAO,EAMD,SAAS,EAAU,CACzB,EACA,EACA,EACU,CACV,IAAQ,SAAQ,QAAO,aAAc,EAErC,GAAI,GAAY,EAEf,OADa,EAAW,EAAY,EAAQ,EAAgB,CAAC,GAChD,EAGb,WAAO,GADM,CAAC,EAAW,EAAY,EAAQ,EAAgB,CAAC,GAC/C,GAOV,SAAS,EAAY,CAC3B,EACA,EACA,EACU,CAGV,IAAQ,SAAQ,QAAO,aAAc,EAC/B,EAAW,KAAK,MAAO,EAAS,GAAM,EAAE,EAE9C,GAAI,GAAY,EAEf,OADa,EAAW,EAAY,EAAQ,EAAgB,CAAC,GAChD,EAGb,WAAO,GADM,CAAC,EAAW,EAAY,EAAQ,EAAgB,CAAC,GAC/C,GAOV,SAAS,EAAK,CACpB,EACA,EACA,EACU,CACV,OAAQ,EAAG,mBAET,OAAO,GAAY,EAAU,CAAY,SAEzC,OAAO,GAAgB,EAAU,CAAY,SAE7C,OAAO,GAAkB,EAAU,CAAY,SAE/C,OAAO,GAAgB,EAAU,CAAY,SAE7C,OAAO,GAAc,EAAU,CAAY,SAE3C,OAAO,GAAS,EAAU,CAAY,SAEtC,OAAO,GAAW,EAAU,EAAc,CAAE,SAE5C,OAAO,GAAa,EAAU,EAAc,CAAE,UAE9C,OAAO,GAAY,EAAU,CAAY,GAOrC,SAAS,EAAe,CAAC,EAAkB,EAAyB,CAE1E,OAAS,GAAY,EAAK,OACpB,GACJ,EAAG,OAAS,GACZ,UACI,GACJ,EAAG,OAAS,GACZ,UACI,GACJ,EAAG,OAAS,IACZ,cAGA,EAAG,OAAS,GAId,OAAS,GAAY,EAAK,OACpB,GACJ,EAAG,MAAQ,EACX,UACI,GACJ,EAAG,MAAQ,EAAG,QAAU,EACxB,UACI,GACJ,EAAG,MAAQ,EAAG,QAAU,EACxB,UACI,GACJ,EAAG,MAAS,EAAG,OAAS,GAAM,EAC9B,MAIF,IAAM,EAAgB,EAAW,GACjC,GAAI,IAAkB,EACrB,EAAG,UAAY,EAAG,OAAS,EAE3B,OAAG,WAAc,EAAgB,GAAK,EAAG,QAAW,EAQ/C,SAAS,EAAU,CAAC,EAAoB,EAA6B,CAG3E,MAAO,GC3LD,SAAS,EAAO,CAAC,EAAkB,EAAmB,CAC5D,OAAQ,EAAE,EAAI,EAAI,GAAG,WAAW,EAAI,EAAE,EAAI,EAAI,GAAG,WAAW,EAAI,MAAW,GAMrE,SAAS,EAAW,CAAC,EAAkB,EAAmB,CAChE,OAAQ,EAAE,EAAI,EAAI,GAAG,WAAW,EAAI,EAAE,EAAI,EAAI,GAAG,WAAW,EAAI,MAAW,GAMrE,SAAS,EAAS,CACxB,EACA,EACA,EACA,EACO,CACP,IAAM,EAAK,EAAK,IAAI,GAId,EAAK,EAAI,GAAG,WACZ,EAAK,EAAI,GAAG,WAGZ,EAAO,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,MAAW,GAEpD,GAAI,IAAQ,EAEX,OAID,IAAM,EAAK,KAAK,MAAO,EAAW,EAAG,EAAK,CAAG,EACvC,EAAK,KAAK,MAAO,EAAW,EAAG,EAAK,CAAG,EAE7C,EAAG,GAAK,EACR,EAAG,GAAK,EAMF,SAAS,EAAU,CACzB,EACA,EACA,EACU,CACV,IAAM,EAAK,EAAK,IAAI,GACpB,GAAI,CAAC,EAAI,MAAO,GAChB,OAAO,GAAQ,EAAK,CAAE,EAMhB,SAAS,EAAW,CAC1B,EACA,EACA,EACU,CACV,IAAM,EAAK,EAAK,IAAI,GACpB,GAAI,CAAC,EAAI,MAAO,GAChB,OAAO,GAAY,EAAK,CAAE,EAMpB,SAAS,EAAU,CACzB,EACA,EACA,EACO,CAEP,IAAM,EAAK,EAAI,GAAG,WAClB,GAAI,EAAG,IAAM,EACZ,EAAK,KAAK,MAEX,GAAI,EAAG,IAAM,EACZ,EAAK,KAAK,MASL,SAAS,EAAI,CAAC,EAAkB,EAAwB,CAC9D,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAO,EAAI,IACjB,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,uBAAuB,IACnC,OAGD,IAAI,EAAW,GAAW,EAAK,EAAM,CAAU,EAE/C,GAAI,EAAS,CACZ,IAAM,EAAO,GAAW,EAAU,EAAI,EAAE,EACxC,EAAW,GAAM,EAAU,EAAM,EAAI,EAAE,EAAI,EAE3C,OAAW,EAGZ,GAAU,EAAK,EAAM,EAAY,CAAQ,EACzC,GAAW,EAAK,EAAM,CAAU,EAEhC,EAAI,GAAG,IAAM,EACb,EAAI,GAAG,IAAM,EAQP,SAAS,EAAI,CAAC,EAAkB,EAAwB,CAC9D,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAO,EAAI,IACjB,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,uBAAuB,IACnC,OAGD,GAAI,EAAW,GAAK,GAAY,EAAI,QAAS,CAC5C,EAAI,MAAQ,2BAA2B,IACvC,OAGD,IAAI,EAAc,EAAI,IAAI,GACpB,EAAa,GAAW,EAAK,EAAM,CAAU,EAEnD,GAAI,EAAS,CAIZ,GAFa,KAAK,IAAI,EAAc,CAAU,EAEnC,EAAI,GAAG,kBAEjB,EAAc,EAGf,IAAM,EAAO,GAAW,EAAa,EAAI,EAAE,EAC3C,EAAc,GAAM,EAAa,EAAM,EAAI,EAAE,EAG9C,IAAM,EAAW,EAAc,EAC/B,GAAU,EAAK,EAAM,EAAY,CAAQ,EACzC,GAAW,EAAK,EAAM,CAAU,EAEhC,EAAI,GAAG,IAAM,EACb,EAAI,GAAG,IAAM,EAQP,SAAS,EAAI,CAAC,EAAkB,EAAqB,CAC3D,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,GAAU,EAAQ,MAAU,EAC5B,GAAe,EAAQ,KAAU,EACjC,GAAW,EAAQ,KAAU,EAG7B,EAAM,EAAI,IACV,EAAM,EAAI,IAEhB,GAAI,EAAa,GAAK,GAAc,EAAI,QAAS,CAChD,EAAI,MAAQ,uBAAuB,IACnC,OAGD,IAAM,EAAM,EAAI,GAAG,IACnB,GAAI,EAAM,GAAK,GAAO,EAAI,QAAS,CAClC,EAAI,MAAQ,qBAAqB,IACjC,OAID,IAAI,EAAW,GAAY,EAAK,EAAK,CAAU,EAAI,GAAY,EAAK,EAAK,CAAG,EAG5E,GAAI,EAAI,GAAG,UAAY,EAAW,EACjC,EAAW,CAAC,EAGb,GAAI,EAAS,CACZ,IAAM,EAAO,GAAW,EAAU,EAAI,EAAE,EACxC,EAAW,GAAM,EAAU,EAAM,EAAI,EAAE,EAIxC,GAAI,GACH,GAAI,GAAY,GACf,GAAI,EAAW,EAAI,GAAG,gBACrB,EAAW,EAAI,GAAG,gBAGnB,QAAI,EAAW,CAAC,EAAI,GAAG,gBACtB,EAAW,CAAC,EAAI,GAAG,gBAMtB,IAAM,EACL,GAAW,EAAK,EAAK,CAAU,EAAI,GAAW,EAAK,EAAK,CAAG,EACtD,EAAO,EAAW,EAOxB,GALA,GAAU,EAAK,EAAK,EAAY,CAAI,EACpC,GAAW,EAAK,EAAK,CAAU,EAE/B,EAAI,GAAG,IAAM,EAAI,GAAG,IACpB,EAAI,GAAG,IAAM,EACT,EACH,EAAI,GAAG,IAAM,EASR,SAAS,EAAI,CAAC,EAAkB,EAAqB,CAC3D,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,GAAU,EAAQ,MAAU,EAC5B,GAAe,EAAQ,KAAU,EACjC,GAAW,EAAQ,KAAU,EAG7B,EAAM,EAAI,IACV,EAAM,EAAI,IAEhB,GAAI,EAAa,GAAK,GAAc,EAAI,QAAS,CAChD,EAAI,MAAQ,uBAAuB,IACnC,OAGD,GAAI,EAAW,GAAK,GAAY,EAAI,QAAS,CAC5C,EAAI,MAAQ,2BAA2B,IACvC,OAGD,IAAM,EAAM,EAAI,GAAG,IACnB,GAAI,EAAM,GAAK,GAAO,EAAI,QAAS,CAClC,EAAI,MAAQ,qBAAqB,IACjC,OAID,IAAM,EACL,GAAY,EAAK,EAAK,CAAU,EAAI,GAAY,EAAK,EAAK,CAAG,EAG1D,EAAU,EAAI,IAAI,GAGtB,GAAI,EAAI,GAAG,UACV,GAAK,EAAU,GAAK,EAAU,GAAO,EAAU,GAAK,EAAU,EAC7D,EAAU,CAAC,EAKb,IAAM,EAAO,KAAK,IAAI,EAAU,CAAO,EACnC,EAEJ,GAAI,EAAO,EAAI,GAAG,kBAEjB,EAAW,EAGX,OAAW,EAGZ,GAAI,EAAS,CACZ,IAAM,EAAO,GAAW,EAAU,EAAI,EAAE,EACxC,EAAW,GAAM,EAAU,EAAM,EAAI,EAAE,EAIxC,GAAI,GACH,GAAI,GAAW,GACd,GAAI,EAAW,EAAI,GAAG,gBACrB,EAAW,EAAI,GAAG,gBAGnB,QAAI,EAAW,CAAC,EAAI,GAAG,gBACtB,EAAW,CAAC,EAAI,GAAG,gBAMtB,IAAM,EACL,GAAW,EAAK,EAAK,CAAU,EAAI,GAAW,EAAK,EAAK,CAAG,EACtD,EAAO,EAAW,EAOxB,GALA,GAAU,EAAK,EAAK,EAAY,CAAI,EACpC,GAAW,EAAK,EAAK,CAAU,EAE/B,EAAI,GAAG,IAAM,EAAI,GAAG,IACpB,EAAI,GAAG,IAAM,EACT,EACH,EAAI,GAAG,IAAM,EASR,SAAS,EAAG,CAAC,EAAkB,EAAuB,CAC5D,IAAM,EAAU,EAAS,EAAI,IAAM,EAAI,IACjC,EAAW,EAAS,EAAI,GAAG,IAAM,EAAI,GAAG,IAE9C,GAAI,EAAW,GAAK,GAAY,EAAQ,QAAS,CAChD,EAAI,MAAQ,gCAAgC,IAC5C,OAID,IAAM,EAAS,GAAY,EAAK,EAAS,CAAQ,EAE3C,EADS,GAAW,EAAK,EAAS,CAAQ,EACzB,EAGjB,EAAO,EAAI,IACX,EAAQ,EAAI,GAAG,KACrB,EAAI,GAAG,KAAO,EAEd,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,sBAAsB,IAClC,OAGD,GAAU,EAAK,EAAM,EAAY,CAAK,EACtC,GAAW,EAAK,EAAM,CAAU,GAS3B,SAAS,EAAG,CAAC,EAAkB,EAAuB,CAC5D,IAAM,EAAe,EAAI,MAAM,EAAE,EAAI,UAE/B,EAAU,EAAS,EAAI,IAAM,EAAI,IACjC,EAAW,EAAS,EAAI,GAAG,IAAM,EAAI,GAAG,IAE9C,GAAI,EAAW,GAAK,GAAY,EAAQ,QAAS,CAChD,EAAI,MAAQ,gCAAgC,IAC5C,OAGD,IAAM,EAAO,EAAI,IACjB,GAAI,EAAe,GAAK,GAAgB,EAAK,UAAW,CACvD,EAAI,MAAQ,wBAAwB,IACpC,OAID,IAAM,EAAS,GAAY,EAAK,EAAS,CAAQ,EAE3C,EADS,GAAW,EAAK,EAAS,CAAQ,EACzB,EAGjB,EAAQ,IAAiB,EAAI,EAAI,EAAK,SAAS,EAAe,GAAK,EACnE,EAAM,EAAK,SAAS,GAG1B,QAAS,EAAI,EAAO,GAAK,EAAK,IAAK,CAClC,GAAI,IAAS,GAAW,IAAM,EAAU,SACxC,GAAU,EAAK,EAAM,EAAG,CAAK,EAC7B,GAAW,EAAK,EAAM,CAAC,GASlB,SAAS,EAAG,CAAC,EAAkB,EAAuB,CAC5D,IAAM,EAAY,EAAI,MAAM,EAAE,EAAI,UAE5B,EAAU,EAAS,EAAI,IAAM,EAAI,IACjC,EAAW,EAAS,EAAI,GAAG,IAAM,EAAI,GAAG,IAE9C,GAAI,EAAW,GAAK,GAAY,EAAQ,QAAS,CAChD,EAAI,MAAQ,gCAAgC,IAC5C,OAGD,IAAM,EAAO,IAAc,EAAI,EAAI,SAAW,EAAI,IAG5C,EAAS,GAAY,EAAK,EAAS,CAAQ,EAE3C,EADS,GAAW,EAAK,EAAS,CAAQ,EACzB,EAGvB,QAAS,EAAI,EAAG,EAAI,EAAK,QAAS,IAAK,CACtC,GAAI,IAAS,GAAW,IAAM,EAAU,SACxC,GAAU,EAAK,EAAM,EAAG,CAAK,GAUxB,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAE3B,EAAO,EAAI,IACX,EAAQ,EAAI,GAAG,KACrB,EAAI,GAAG,KAAO,EAEd,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,wBAAwB,IACpC,OAGD,GAAU,EAAK,EAAM,EAAY,CAAQ,EACzC,GAAW,EAAK,EAAM,CAAU,GAS3B,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAM,EAAI,GAAG,IACb,EAAM,EAAI,GAAG,IAEnB,GAAI,EAAM,GAAK,GAAO,EAAI,IAAI,QAAS,CACtC,EAAI,MAAQ,mBAAmB,IAC/B,OAED,GAAI,EAAM,GAAK,GAAO,EAAI,IAAI,QAAS,CACtC,EAAI,MAAQ,mBAAmB,IAC/B,OAID,IAAM,EAAO,GAAY,EAAK,EAAI,IAAK,CAAG,EACpC,EAAO,GAAY,EAAK,EAAI,IAAK,CAAG,EACpC,EAAO,GAAW,EAAK,EAAI,IAAK,CAAG,EACnC,EAAO,GAAW,EAAK,EAAI,IAAK,CAAG,EAEnC,EAAW,EAAO,EAClB,EAAW,EAAO,EAElB,EAAO,EAAI,IACX,EAAQ,EAAI,GAAG,KACrB,EAAI,GAAG,KAAO,EAEd,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,qBAAqB,IACjC,OAGD,IAAM,EAAQ,GAAY,EAAK,EAAM,CAAU,EACzC,EAAQ,GAAW,EAAK,EAAM,CAAU,EAE1C,EAEJ,GAAI,IAAa,EAAG,CAEnB,IAAM,EAAI,EAAQ,EAClB,EAAS,EAAO,KAAK,MAAO,EAAI,EAAY,CAAQ,EAGpD,OAAS,GAAS,EAAO,GAG1B,GAAU,EAAK,EAAM,EAAY,EAAS,CAAK,EAC/C,GAAW,EAAK,EAAM,CAAU,GAS3B,SAAS,EAAO,CAAC,EAAwB,CAC/C,IAAM,EAAM,EAAI,GAAG,IAEnB,GAAI,EAAM,GAAK,GAAO,EAAI,IAAI,QAAS,CACtC,EAAI,MAAQ,wBAAwB,IACpC,OAGD,IAAM,EAAS,GAAW,EAAK,EAAI,IAAK,CAAG,EAErC,EAAO,EAAI,IACX,EAAQ,EAAI,GAAG,KACrB,EAAI,GAAG,KAAO,EAEd,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,0BAA0B,IACtC,OAGD,IAAM,EAAS,GAAW,EAAK,EAAM,CAAU,EACzC,EAAW,EAAS,EAE1B,GAAU,EAAK,EAAM,EAAY,CAAQ,EACzC,GAAW,EAAK,EAAM,CAAU,GAS3B,SAAS,EAAK,CAAC,EAAkB,EAAuB,CAC9D,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAM,EAAI,IACV,EAAM,EAAI,IAEhB,GAAI,EAAa,GAAK,GAAc,EAAI,QAAS,CAChD,EAAI,MAAQ,wBAAwB,IACpC,OAGD,IAAM,EAAM,EAAI,GAAG,IACnB,GAAI,EAAM,GAAK,GAAO,EAAI,QAAS,CAClC,EAAI,MAAQ,sBAAsB,IAClC,OAID,IAAM,EACL,GAAW,EAAK,EAAK,CAAU,EAAI,GAAW,EAAK,EAAK,CAAG,EACtD,EAAO,EAAW,EAOxB,GALA,GAAU,EAAK,EAAK,EAAY,CAAI,EACpC,GAAW,EAAK,EAAK,CAAU,EAE/B,EAAI,GAAG,IAAM,EAAI,GAAG,IACpB,EAAI,GAAG,IAAM,EACT,EACH,EAAI,GAAG,IAAM,EASR,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAQ,EAAI,MAAM,EAAE,EAAI,UAMxB,EAAQ,EAAI,IACZ,EAAQ,EAAI,IACZ,EAAQ,EAAI,IAElB,GAAI,EAAK,GAAK,GAAM,EAAM,SAAW,EAAK,GAAK,GAAM,EAAM,QAAS,CACnE,EAAI,MAAQ,+BACZ,OAED,GAAI,EAAK,GAAK,GAAM,EAAM,SAAW,EAAK,GAAK,GAAM,EAAM,QAAS,CACnE,EAAI,MAAQ,+BACZ,OAED,GAAI,EAAQ,GAAK,GAAS,EAAM,QAAS,CACxC,EAAI,MAAQ,wBAAwB,IACpC,OAID,IAAM,EAAM,EAAM,IAAI,GAChB,EAAM,EAAM,IAAI,GAChB,EAAM,EAAM,IAAI,GAChB,EAAM,EAAM,IAAI,GAGhB,EAAM,EAAI,EAAI,EAAI,EAClB,EAAM,EAAI,EAAI,EAAI,EAClB,EAAM,EAAI,EAAI,EAAI,EAClB,EAAM,EAAI,EAAI,EAAI,EAGlB,EAAQ,EAAM,EAAM,EAAM,EAE1B,EAAK,EAAM,IAAI,GAErB,GAAI,IAAU,EAEb,EAAG,EAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,EAC1C,EAAG,EAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,GAAM,EACpC,KAEN,IAAM,EAAK,EAAI,EAAI,EAAI,EACjB,EAAK,EAAI,EAAI,EAAI,EACjB,GAAK,EAAK,EAAM,EAAK,GAAO,EAElC,EAAG,EAAI,KAAK,MAAM,EAAI,EAAI,EAAI,CAAG,EACjC,EAAG,EAAI,KAAK,MAAM,EAAI,EAAI,EAAI,CAAG,EAGlC,EAAM,KAAK,MAQL,SAAS,EAAQ,CAAC,EAAwB,CAChD,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UAErB,EAAQ,EAAI,IACZ,EAAQ,EAAI,IAElB,GAAI,EAAK,GAAK,GAAM,EAAM,QAAS,CAClC,EAAI,MAAQ,2BAA2B,IACvC,OAED,GAAI,EAAK,GAAK,GAAM,EAAM,QAAS,CAClC,EAAI,MAAQ,2BAA2B,IACvC,OAID,IAAM,EAAO,GAAW,EAAK,EAAO,CAAE,EAChC,EAAO,GAAW,EAAK,EAAO,CAAE,EAGhC,EAAO,EAAO,GAAS,EAE7B,GAAU,EAAK,EAAO,EAAI,EAAM,CAAI,EACpC,GAAU,EAAK,EAAO,EAAI,EAAM,CAAI,EAEpC,GAAW,EAAK,EAAO,CAAE,EACzB,GAAW,EAAK,EAAO,CAAE,EAQnB,SAAS,EAAE,CAAC,EAAkB,EAA4B,CAChE,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAC7B,EAAO,EAAI,IAEjB,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,qBAAqB,IACjC,EAAI,MAAM,EAAI,YAAc,EAC5B,OAGD,IAAM,EAAQ,EACX,GAAY,EAAK,EAAM,CAAU,EACjC,GAAW,EAAK,EAAM,CAAU,EAEnC,EAAI,MAAM,EAAI,YAAc,EAQtB,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAO,EAAI,IAEjB,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,uBAAuB,IACnC,OAGD,IAAM,EAAU,GAAW,EAAK,EAAM,CAAU,EAChD,GAAU,EAAK,EAAM,EAAY,EAAQ,CAAO,EAChD,GAAW,EAAK,EAAM,CAAU,EAQ1B,SAAS,EAAE,CAAC,EAAkB,EAA4B,CAChE,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UAErB,EAAQ,EAAI,IACZ,EAAQ,EAAI,IAElB,GAAI,EAAK,GAAK,GAAM,EAAM,QAAS,CAClC,EAAI,MAAQ,qBAAqB,IACjC,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,GAAI,EAAK,GAAK,GAAM,EAAM,QAAS,CAClC,EAAI,MAAQ,qBAAqB,IACjC,EAAI,MAAM,EAAI,YAAc,EAC5B,OAGD,IAAI,EAEJ,GAAI,EACH,EAAW,GAAY,EAAK,EAAO,CAAE,EAAI,GAAY,EAAK,EAAO,CAAE,EAEnE,OAAW,GAAW,EAAK,EAAO,CAAE,EAAI,GAAW,EAAK,EAAO,CAAE,EAGlE,EAAI,MAAM,EAAI,YAAc,EAQtB,SAAS,EAAK,CAAC,EAAwB,CAC7C,EAAI,MAAM,EAAI,YAAc,EAAI,KAI1B,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,MAAM,EAAI,YAAc,EAAI,UAQ1B,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAO,EAAI,IACX,EAAQ,EAAI,GAAG,KACrB,EAAI,GAAG,KAAO,EAEd,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,yBAAyB,IACrC,OAID,EAAK,KAAK,IAAe,GASpB,SAAS,EAAQ,CAAC,EAAwB,CAChD,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAO,EAAI,IAEjB,GAAI,EAAa,GAAK,GAAY,EAAK,SAAW,EAAa,EAAU,CACxE,EAAI,MAAQ,2BAA2B,KAAc,IACrD,OAGD,QAAS,EAAI,EAAY,GAAK,EAAU,IACvC,EAAK,KAAK,IAAM,EAKX,SAAS,EAAS,CAAC,EAAwB,CACjD,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAa,EAAI,MAAM,EAAE,EAAI,UAE7B,EAAO,EAAI,IAEjB,GAAI,EAAa,GAAK,GAAY,EAAK,SAAW,EAAa,EAAU,CACxE,EAAI,MAAQ,4BAA4B,KAAc,IACtD,OAGD,QAAS,EAAI,EAAY,GAAK,EAAU,IACvC,EAAK,KAAK,IAAM,GASX,SAAS,EAAK,CAAC,EAAkB,EAA2B,CAClE,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAO,GAAW,EAAO,EAAI,EAAE,EACrC,EAAI,MAAM,EAAI,YAAc,GAAM,EAAO,EAAM,EAAI,EAAE,EAI/C,SAAS,EAAM,CAAC,EAAkB,EAA2B,CACnE,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAO,GAAW,EAAO,EAAI,EAAE,EACrC,EAAI,MAAM,EAAI,YAAc,EAAQ,ECz1B9B,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAW,EAAK,CAAC,EAMX,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAW,EAAK,EAAE,EAMZ,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAW,EAAK,EAAE,EAMnB,SAAS,EAAU,CAAC,EAAkB,EAA2B,CAChE,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAE9B,GAAI,EAAQ,EAAG,CACd,EAAI,MAAQ,yBAAyB,IACrC,OAGD,IAAM,EAAO,EAAI,IAEjB,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAU,EAAI,MAAM,EAAE,EAAI,UAC1B,EAAa,EAAI,MAAM,EAAE,EAAI,UAEnC,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,yBAAyB,IACrC,OAMD,IAAM,GAAc,GAAW,EAAK,IAAQ,EAAI,GAAG,UAAY,EACzD,EAAY,EAAU,GAG5B,GAAI,IAAc,EAAI,KACrB,SAMD,IAAI,EACJ,GAAI,EAAY,EACf,EAAS,EAAY,GAAO,EAAI,EAAI,GAAG,WAEvC,OAAQ,EAAG,EAAY,GAAO,EAAI,EAAI,GAAG,YAG1C,GAAU,EAAK,EAAM,EAAY,CAAK,EACtC,GAAW,EAAK,EAAM,CAAU,GAO3B,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAS,EAAK,CAAC,EAMT,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAS,EAAK,EAAE,EAMV,SAAS,EAAO,CAAC,EAAwB,CAC/C,GAAS,EAAK,EAAE,EAMjB,SAAS,EAAQ,CAAC,EAAkB,EAA2B,CAC9D,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAE9B,GAAI,EAAQ,EAAG,CACd,EAAI,MAAQ,yBAAyB,IACrC,OAGD,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAU,EAAI,MAAM,EAAE,EAAI,UAC1B,EAAW,EAAI,MAAM,EAAE,EAAI,UAEjC,GAAI,EAAW,GAAK,GAAY,EAAI,QAAS,CAC5C,EAAI,MAAQ,6BAA6B,IACzC,OAID,IAAM,GAAc,GAAW,EAAK,IAAQ,EAAI,GAAG,UAAY,EACzD,EAAY,EAAU,GAG5B,GAAI,IAAc,EAAI,KACrB,SAID,IAAI,EACJ,GAAI,EAAY,EACf,EAAS,EAAY,GAAO,EAAI,EAAI,GAAG,WAEvC,OAAQ,EAAG,EAAY,GAAO,EAAI,EAAI,GAAG,YAG1C,EAAI,IAAI,IAAa,GC3HhB,SAAS,EAAK,CAAC,EAAkB,EAAmB,CAC1D,GAAI,IAAS,EAEZ,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EAGtC,OAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EAKjC,SAAS,EAAM,CAAC,EAAkB,EAAmB,CAC3D,GAAI,IAAS,EACZ,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EAEtC,OAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EACtC,EAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EAKjC,SAAS,EAAM,CAAC,EAAkB,EAAmB,CAC3D,GAAI,IAAS,EACZ,EAAI,GAAG,WAAa,CAAE,EAAG,EAAG,EAAG,KAAO,EAEtC,OAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EAKxC,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACA,EACa,CACb,IAAM,EAAK,IAAU,EAAI,EAAI,SAAW,EAAI,IACtC,EAAK,IAAU,EAAI,EAAI,SAAW,EAAI,IAEtC,EAAM,EAAG,IAAI,GACb,EAAM,EAAG,IAAI,GAEnB,GAAI,CAAC,GAAO,CAAC,EACZ,MAAO,CAAE,EAAG,MAAQ,EAAG,CAAE,EAG1B,IAAM,EAAK,EAAI,EAAI,EAAI,EACjB,EAAK,EAAI,EAAI,EAAI,EAEjB,EAAM,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACvC,GAAI,IAAQ,EACX,MAAO,CAAE,EAAG,MAAQ,EAAG,CAAE,EAG1B,MAAO,CACN,EAAG,KAAK,MAAO,EAAK,EAAO,KAAM,EACjC,EAAG,KAAK,MAAO,EAAK,EAAO,KAAM,CAClC,EAIM,SAAS,EAAK,CAAC,EAAkB,EAA8B,CACrE,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UAErB,EAAM,GAAiB,EAAK,EAAI,EAAI,EAAI,GAAG,KAAM,EAAI,GAAG,IAAI,EAElE,GAAI,EAAe,CAElB,IAAM,EAAO,EAAI,EACjB,EAAI,EAAI,EAAI,EACZ,EAAI,EAAI,CAAC,EAGV,EAAI,GAAG,WAAa,EACpB,EAAI,GAAG,WAAa,EAId,SAAS,EAAK,CAAC,EAAkB,EAA8B,CACrE,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UAErB,EAAM,GAAiB,EAAK,EAAI,EAAI,EAAI,GAAG,KAAM,EAAI,GAAG,IAAI,EAElE,GAAI,EAAe,CAClB,IAAM,EAAO,EAAI,EACjB,EAAI,EAAI,EAAI,EACZ,EAAI,EAAI,CAAC,EAGV,EAAI,GAAG,WAAa,EAId,SAAS,EAAM,CAAC,EAAkB,EAA8B,CACtE,IAAM,EAAK,EAAI,MAAM,EAAE,EAAI,UACrB,EAAK,EAAI,MAAM,EAAE,EAAI,UAErB,EAAM,GAAiB,EAAK,EAAI,EAAI,EAAI,GAAG,KAAM,EAAI,GAAG,IAAI,EAElE,GAAI,EAAe,CAClB,IAAM,EAAO,EAAI,EACjB,EAAI,EAAI,EAAI,EACZ,EAAI,EAAI,CAAC,EAKV,EAAI,GAAG,WAAa,EAId,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAGpB,EAAM,KAAK,KAAK,EAAI,EAAI,EAAI,CAAC,EACnC,GAAI,IAAQ,EACX,EAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EAEtC,OAAI,GAAG,WAAa,CACnB,EAAG,KAAK,MAAO,EAAI,EAAO,KAAM,EAChC,EAAG,KAAK,MAAO,EAAI,EAAO,KAAM,CACjC,EAED,EAAI,GAAG,WAAa,IAAK,EAAI,GAAG,UAAW,EAIrC,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAI,EAAI,MAAM,EAAE,EAAI,UACpB,EAAI,EAAI,MAAM,EAAE,EAAI,UAEpB,EAAM,KAAK,KAAK,EAAI,EAAI,EAAI,CAAC,EACnC,GAAI,IAAQ,EACX,EAAI,GAAG,WAAa,CAAE,EAAG,MAAQ,EAAG,CAAE,EAEtC,OAAI,GAAG,WAAa,CACnB,EAAG,KAAK,MAAO,EAAI,EAAO,KAAM,EAChC,EAAG,KAAK,MAAO,EAAI,EAAO,KAAM,CACjC,EAKK,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,MAAM,EAAI,YAAc,EAAI,GAAG,WAAW,EAC9C,EAAI,MAAM,EAAI,YAAc,EAAI,GAAG,WAAW,EAIxC,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,MAAM,EAAI,YAAc,EAAI,GAAG,WAAW,EAC9C,EAAI,MAAM,EAAI,YAAc,EAAI,GAAG,WAAW,EAIxC,SAAS,EAAM,CAAC,EAAwB,CAC9C,EAAI,GAAG,WAAa,IAAK,EAAI,GAAG,UAAW,EAMrC,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,IAAM,EAAI,MAAM,EAAE,EAAI,UAIvB,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,IAAM,EAAI,MAAM,EAAE,EAAI,UAIvB,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,IAAM,EAAI,MAAM,EAAE,EAAI,UAMvB,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAO,EAAI,MAAM,EAAE,EAAI,UAC7B,GAAI,IAAS,GAAK,IAAS,EAAG,CAC7B,EAAI,MAAQ,sBAAsB,IAClC,OAED,EAAI,GAAG,KAAO,EACd,EAAI,IAAM,IAAS,EAAI,EAAI,SAAW,EAAI,IAIpC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAO,EAAI,MAAM,EAAE,EAAI,UAC7B,GAAI,IAAS,GAAK,IAAS,EAAG,CAC7B,EAAI,MAAQ,sBAAsB,IAClC,OAED,EAAI,GAAG,KAAO,EACd,EAAI,IAAM,IAAS,EAAI,EAAI,SAAW,EAAI,IAIpC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAO,EAAI,MAAM,EAAE,EAAI,UAC7B,GAAI,IAAS,GAAK,IAAS,EAAG,CAC7B,EAAI,MAAQ,sBAAsB,IAClC,OAED,EAAI,GAAG,KAAO,EACd,EAAI,IAAM,IAAS,EAAI,EAAI,SAAW,EAAI,IAIpC,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAO,EAAI,MAAM,EAAE,EAAI,UAC7B,GAAI,IAAS,GAAK,IAAS,EAAG,CAC7B,EAAI,MAAQ,sBAAsB,IAClC,OAED,EAAI,GAAG,KAAO,EACd,EAAI,GAAG,KAAO,EACd,EAAI,GAAG,KAAO,EACd,IAAM,EAAI,IAAS,EAAI,EAAI,SAAW,EAAI,IAC1C,EAAI,IAAM,EACV,EAAI,IAAM,EACV,EAAI,IAAM,EAMJ,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,GAAS,EAAG,CACf,EAAI,MAAQ,wBAAwB,IACpC,OAED,EAAI,GAAG,KAAO,EAIR,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,GAAG,gBAAkB,EAAI,MAAM,EAAE,EAAI,UAInC,SAAS,EAAM,CAAC,EAAwB,CAC9C,EAAI,GAAG,kBAAoB,EAAI,MAAM,EAAE,EAAI,UAIrC,SAAS,EAAK,CAAC,EAAwB,CAC7C,EAAI,GAAG,iBAAmB,EAAI,MAAM,EAAE,EAAI,UAIpC,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,GAAG,iBAAmB,EAAI,MAAM,EAAE,EAAI,UAIpC,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,GAAG,UAAY,EAAI,MAAM,EAAE,EAAI,UAI7B,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,GAAG,WAAa,EAAI,MAAM,EAAE,EAAI,UAM9B,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,GAAG,aAID,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,aAID,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,aAID,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,aAID,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,aAID,SAAS,EAAI,CAAC,EAAwB,CAC5C,EAAI,GAAG,aAID,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UACjC,GAAgB,EAAU,EAAI,EAAE,EAChC,EAAI,GAAG,aAID,SAAS,EAAQ,CAAC,EAAwB,CAChD,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UACjC,GAAgB,EAAU,EAAI,EAAE,EAChC,EAAI,GAAG,aAMD,SAAS,EAAM,CAAC,EAAwB,CAC9C,EAAI,GAAG,SAAW,GAIZ,SAAS,EAAO,CAAC,EAAwB,CAC/C,EAAI,GAAG,SAAW,GAMZ,SAAS,EAAQ,CAAC,EAAwB,CAChD,EAAI,GAAG,YAAc,EAAI,MAAM,EAAE,EAAI,UAI/B,SAAS,EAAQ,CAAC,EAAwB,CAChD,EAAI,GAAG,SAAW,EAAI,MAAM,EAAE,EAAI,UAI5B,SAAS,EAAQ,CAAC,EAAwB,CAChD,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC3B,EAAQ,EAAI,MAAM,EAAE,EAAI,UAI9B,GAAI,IAAa,GAAK,IAAa,EAClC,GAAI,EACH,EAAI,GAAG,iBAAmB,EAE1B,OAAI,GAAG,iBAAmB,CAAC,EAMvB,SAAS,EAAO,CAAC,EAAwB,CAC/C,IAAM,EAAW,EAAI,MAAM,EAAE,EAAI,UAC7B,EAAS,EAGb,GAAI,EAAW,EACd,GAAU,GAOX,GAAI,EAAW,GACd,GAAU,KAMX,EAAI,MAAM,EAAI,YAAc,EAMtB,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,EAAQ,GAAK,GAAS,EAAI,YAAa,CAC1C,EAAI,MAAQ,qBAAqB,IACjC,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,QAAQ,GAIlC,SAAS,EAAE,CAAC,EAAwB,CAC1C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,EAAQ,GAAK,GAAS,EAAI,YAAa,CAC1C,EAAI,MAAQ,qBAAqB,IACjC,OAED,EAAI,QAAQ,GAAS,EAIf,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,EAAQ,GAAK,GAAS,EAAI,QAAS,CACtC,EAAI,MAAQ,uBAAuB,IACnC,EAAI,MAAM,EAAI,YAAc,EAC5B,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,IAAI,GAI9B,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,EAAQ,GAAK,GAAS,EAAI,QAAS,CACtC,EAAI,MAAQ,wBAAwB,IACpC,OAED,EAAI,IAAI,GAAS,EAIX,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UACxB,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,EAAQ,GAAK,GAAS,EAAI,QAAS,CACtC,EAAI,MAAQ,wBAAwB,IACpC,OAGD,EAAI,IAAI,GAAS,KAAK,MAAM,EAAQ,EAAI,KAAK,EAIvC,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAa,EAAI,MAAM,EAAE,EAAI,UAC7B,EAAO,EAAI,IAEjB,GAAI,EAAa,GAAK,GAAc,EAAK,QAAS,CACjD,EAAI,MAAQ,sBAAsB,IAClC,OAID,IAAM,EAAK,EAAI,GAAG,WAClB,GAAI,EAAG,IAAM,EACZ,EAAK,KAAK,IAAe,GAE1B,GAAI,EAAG,IAAM,EACZ,EAAK,KAAK,IAAe,GCjdpB,SAAS,EAAK,CAAC,EAAwB,CAC7C,GAAqB,IAAkB,EAAI,EAMrC,SAAS,EAAK,CAAC,EAAwB,CAC7C,GAAqB,IAAkB,EAAK,EAM7C,SAAS,EAAoB,CAC5B,EACA,EACA,EACO,CACP,IAAM,EAAO,EAAI,IACX,EAAU,EAAK,QACf,EAAY,EAAK,UAEvB,GAAI,IAAY,GAAK,IAAc,EAAG,OAGtC,IAAI,EAAe,EAEnB,QAAS,EAAI,EAAG,EAAI,EAAW,IAAK,CACnC,IAAM,EAAa,EAAK,SAAS,GAG7B,EAAe,GACnB,QAAS,EAAI,EAAc,GAAK,EAAY,IAC3C,GAAI,EAAK,KAAK,GAAK,EAAW,CAC7B,EAAe,EACf,MAIF,GAAI,EAAe,EAAG,CAErB,EAAe,EAAa,EAC5B,SAID,IAAI,EAAc,EACd,EAAI,EAAe,EACnB,EAAU,GAEd,MAAO,GAAM,CAEZ,GAAI,EAAI,EAAY,CACnB,GAAI,EAAS,MACb,EAAI,EACJ,EAAU,GAGX,GAAI,IAAM,GAAgB,EAAS,CAElC,GAAI,IAAgB,EACnB,GACC,EACA,EACA,EACA,EACA,EACA,CACD,EAED,MAGD,GAAI,EAAK,KAAK,GAAK,EAAW,CAE7B,GAAI,IAAgB,EACnB,GAAiB,EAAM,EAAa,EAAG,EAAc,EAAY,CAAG,EAErE,EAAc,EAGf,IAGD,EAAe,EAAa,GAO9B,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACA,EACA,EACO,CAEP,IAAM,EAAO,EAAM,EAAK,IAAI,IAAK,EAAI,EAAK,IAAI,IAAK,EAC7C,EAAO,EAAM,EAAK,IAAI,IAAK,EAAI,EAAK,IAAI,IAAK,EAC7C,EAAO,EAAM,EAAK,IAAI,IAAK,EAAI,EAAK,IAAI,IAAK,EAC7C,EAAO,EAAM,EAAK,IAAI,IAAK,EAAI,EAAK,IAAI,IAAK,EAG/C,EAAgB,EAChB,EAAgB,EAEpB,GAAI,GAAQ,EACX,EAAS,EACT,EAAS,EACT,EAAS,EACT,EAAS,EAET,OAAS,EACT,EAAS,EACT,EAAS,EACT,EAAS,EAGV,IAAM,EAAW,EAAS,EACpB,EAAW,EAAS,EAGtB,EAAI,EAAK,EACb,GAAI,EAAI,EAAY,EAAI,EAExB,MAAO,IAAM,EAAI,CAChB,IAAM,EAAM,EAAM,EAAK,IAAI,IAAI,EAAI,EAAK,IAAI,IAAI,EAC5C,EAEJ,GAAI,GAAO,EAEV,GAAU,EAAM,EAAK,IAAI,IAAI,EAAI,EAAK,IAAI,IAAI,IAAM,EAAS,GACvD,QAAI,GAAO,EAEjB,GAAU,EAAM,EAAK,IAAI,IAAI,EAAI,EAAK,IAAI,IAAI,IAAM,EAAS,GAG7D,QAAI,IAAa,EAAG,CACnB,IAAM,EAAI,EAAM,EAChB,EAAS,EAAS,KAAK,MAAO,EAAI,EAAY,CAAQ,EAEtD,OAAS,EAIX,GAAI,EACH,EAAK,IAAI,GAAG,EAAI,EAEhB,OAAK,IAAI,GAAG,EAAI,EAIjB,GADA,IACI,EAAI,EAAY,EAAI,GClKnB,SAAS,EAAG,CAAC,EAAwB,CAC3C,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GACrC,EAAI,MAAM,EAAI,YAAc,EAItB,SAAS,EAAG,CAAC,EAAwB,CAC3C,EAAI,WAIE,SAAS,EAAK,CAAC,EAAwB,CAC7C,EAAI,SAAW,EAIT,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAI,EAAI,MAAM,EAAI,SAAW,GAC7B,EAAI,EAAI,MAAM,EAAI,SAAW,GACnC,EAAI,MAAM,EAAI,SAAW,GAAK,EAC9B,EAAI,MAAM,EAAI,SAAW,GAAK,EAIxB,SAAS,EAAK,CAAC,EAAwB,CAC7C,IAAM,EAAQ,EAAI,SAClB,EAAI,MAAM,EAAI,YAAc,EAItB,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,GAAS,GAAK,EAAQ,EAAI,SAAU,CACvC,EAAI,MAAQ,yBAAyB,IACrC,OAED,EAAI,MAAM,EAAI,YAAc,EAAI,MAAM,EAAI,SAAW,GAI/C,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAQ,EAAI,MAAM,EAAE,EAAI,UAC9B,GAAI,GAAS,GAAK,EAAQ,EAAI,SAAU,CACvC,EAAI,MAAQ,yBAAyB,IACrC,OAGD,IAAM,EAAM,EAAI,MAAM,EAAI,SAAW,GAGrC,QAAS,EAAI,EAAI,SAAW,EAAO,EAAI,EAAI,SAAW,EAAG,IACxD,EAAI,MAAM,GAAK,EAAI,MAAM,EAAI,GAG9B,EAAI,MAAM,EAAI,SAAW,GAAK,EAIxB,SAAS,EAAI,CAAC,EAAwB,CAC5C,IAAM,EAAI,EAAI,MAAM,EAAI,SAAW,GAC7B,EAAI,EAAI,MAAM,EAAI,SAAW,GAC7B,EAAI,EAAI,MAAM,EAAI,SAAW,GAEnC,EAAI,MAAM,EAAI,SAAW,GAAK,EAC9B,EAAI,MAAM,EAAI,SAAW,GAAK,EAC9B,EAAI,MAAM,EAAI,SAAW,GAAK,EAIxB,SAAS,EAAK,CAAC,EAAkB,EAAqB,CAC5D,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,EAAI,MAAM,EAAI,YAAc,EAAI,KAAK,EAAI,MAKpC,SAAS,EAAK,CAAC,EAAkB,EAAqB,CAC5D,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAK,EAAI,KAAK,EAAI,MAClB,EAAK,EAAI,KAAK,EAAI,MAEpB,EAAO,GAAM,EAAK,EACtB,GAAI,GAAO,MAAQ,GAAO,MAC1B,EAAI,MAAM,EAAI,YAAc,GAKvB,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAI,EAAI,KAAK,EAAI,MACvB,GAAM,EAAK,CAAC,EAIN,SAAS,EAAM,CAAC,EAAwB,CAC9C,IAAM,EAAI,EAAI,KAAK,EAAI,MACvB,GAAM,EAAK,CAAC,ECyCN,SAAS,EAAO,CAAC,EAAwB,CAC/C,MAAO,EAAI,GAAK,EAAI,UAAY,EAAI,QAAU,KAAM,CAEnD,GAAI,EAAE,EAAI,iBAAmB,EAAI,gBAAiB,CACjD,EAAI,MAAQ,sDACZ,OAGD,IAAM,EAAS,EAAI,KAAK,EAAI,MAC5B,EAAI,OAAS,EAEb,GAAc,EAAK,CAAM,GAO3B,SAAS,EAAa,CAAC,EAAkB,EAAsB,CAE9D,GAAI,GAAU,KAAQ,GAAU,IAAM,CACrC,GAAM,EAAK,EAAS,IAAO,CAAC,EAC5B,OAID,GAAI,GAAU,KAAQ,GAAU,IAAM,CACrC,GAAM,EAAK,EAAS,IAAO,CAAC,EAC5B,OAID,GAAI,GAAU,KAAQ,GAAU,IAAM,CACrC,GAAK,EAAK,EAAS,EAAI,EACvB,OAID,GAAI,GAAU,KAAQ,GAAU,IAAM,CACrC,GAAK,EAAK,EAAS,EAAI,EACvB,OAGD,OAAQ,QAEF,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,QACX,GAAM,EAAK,EAAK,EAChB,WACI,EAAO,QACX,GAAM,EAAK,EAAI,EACf,WACI,EAAO,QACX,GAAM,EAAK,EAAK,EAChB,WACI,EAAO,QACX,GAAM,EAAK,EAAI,EACf,WACI,EAAO,SACX,GAAO,EAAK,EAAK,EACjB,WACI,EAAO,SACX,GAAO,EAAK,EAAI,EAChB,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,MACX,GAAM,CAAG,EACT,WAGI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,IACX,GAAI,CAAG,EACP,WAGI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,SACX,GAAS,CAAG,EACZ,WAGI,EAAO,OACX,GAAK,EAAK,EAAK,EACf,WACI,EAAO,OACX,GAAK,EAAK,EAAI,EACd,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,MACX,GAAI,EAAK,EAAK,EACd,WACI,EAAO,MACX,GAAI,EAAK,EAAI,EACb,WACI,EAAO,MACX,GAAI,EAAK,EAAK,EACd,WACI,EAAO,MACX,GAAI,EAAK,EAAI,EACb,WACI,EAAO,MACX,GAAI,EAAK,EAAK,EACd,WACI,EAAO,MACX,GAAI,EAAK,EAAI,EACb,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,QACX,GAAM,EAAK,EAAK,EAChB,WACI,EAAO,QACX,GAAM,EAAK,EAAI,EACf,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,SACX,GAAS,CAAG,EACZ,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,OACX,GAAK,EAAK,EAAK,EACf,WACI,EAAO,OACX,GAAK,EAAK,EAAI,EACd,WAGI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,OACX,GAAO,CAAG,EACV,WAGI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,GACX,GAAG,CAAG,EACN,WAGI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,KACX,GAAG,EAAK,EAAK,EACb,WACI,EAAO,KACX,GAAG,EAAK,EAAI,EACZ,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAG,EAAK,EAAK,EACb,WACI,EAAO,KACX,GAAG,EAAK,EAAI,EACZ,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,MAEX,WAGI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,IACX,GAAI,CAAG,EACP,WAGI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,GACX,GAAG,CAAG,EACN,WACI,EAAO,IACX,GAAI,CAAG,EACP,WAGI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WAGI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,MACX,GAAM,CAAG,EACT,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WAGI,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,QACX,GAAM,EAAK,CAAC,EACZ,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WACI,EAAO,SACX,GAAO,EAAK,CAAC,EACb,WAGI,EAAO,MACX,GAAM,CAAG,EACT,WAGI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,QACX,GAAQ,CAAG,EACX,WAGI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,SACX,GAAS,CAAG,EACZ,WAGI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,KACX,GAAK,CAAG,EACR,WAGI,EAAO,MAEX,EAAI,WACJ,WACI,EAAO,GAEX,EAAI,WACJ,WAGI,EAAO,OACX,GAAO,CAAG,EACV,WACI,EAAO,SACX,GAAS,CAAG,EACZ,WACI,EAAO,UACX,GAAU,CAAG,EACb,WAGI,EAAO,SACX,GAAS,CAAG,EACZ,WACI,EAAO,SACX,GAAS,CAAG,EACZ,WAGI,EAAO,IACX,GAAI,CAAG,EACP,WACI,EAAO,IACX,GAAI,CAAG,EACP,WAGI,EAAO,QACX,GAAQ,CAAG,EACX,WACI,EAAO,KACX,GAAK,CAAG,EACR,WACI,EAAO,SACX,GAAS,CAAG,EACZ,cAIA,GAAI,EAAS,EAAI,UAAY,EAAI,MAAM,IAAS,OAAQ,CACvD,IAAM,EAAM,EAAI,MAAM,GAEtB,GAAI,EAAI,cAAgB,EAAI,aAAc,CACzC,EAAI,MAAQ,iCACZ,OAID,IAAM,EAAO,EAAI,UAAU,EAAI,gBAC/B,EAAK,SAAW,EAAI,GACpB,EAAK,YAAc,EAAI,aACvB,EAAK,IAAM,CACV,GAAI,EACJ,MAAO,EAAI,MACX,IAAK,EAAI,IACT,OAAQ,GACR,MAAO,EAAI,KACZ,EACA,EAAK,MAAQ,EAGb,EAAI,aAAe,EAAI,MACvB,IAAM,EAAQ,EAAI,WAAW,IAAI,EAAI,YAAY,EACjD,GAAI,EACH,EAAI,KAAO,EAAM,KACjB,EAAI,SAAW,EAAM,KAEtB,EAAI,GAAK,EAAI,MAEb,OAAI,MAAQ,oBAAoB,EAAO,SAAS,EAAE,KAQ/C,SAAS,EAAY,CAC3B,EACA,EACA,EACO,CACP,EAAI,WAAW,IAAI,EAAO,CAAE,OAAM,KAAM,EAAK,MAAO,CAAC,EAM/C,SAAS,EAAU,CAAC,EAAkB,EAAwB,CACpE,IAAM,EAAY,EAAI,WAAW,IAAI,CAAK,EAC1C,GAAI,CAAC,EACJ,OAGD,EAAI,aAAe,EACnB,EAAI,KAAO,EAAU,KACrB,EAAI,SAAW,EAAU,KACzB,EAAI,GAAK,EACT,EAAI,iBAAmB,EAEvB,GAAQ,CAAG,EAML,SAAS,EAAc,CAAC,EAAwB,CACtD,GAAW,GAAmB,EAMxB,SAAS,EAAa,CAAC,EAAwB,CAErD,EAAI,GAAK,IAAK,EAAI,SAAU,EAC5B,GAAW,GAAkB,EAE7B,EAAI,UAAY,IAAK,EAAI,EAAG,EAMtB,SAAS,EAAe,CAC9B,EACA,EACO,CAEP,EAAI,GAAK,IAAK,EAAI,SAAU,EAG5B,EAAI,IAAM,EAAI,IACd,EAAI,IAAM,EAAI,IACd,EAAI,IAAM,EAAI,IAGd,GAAa,IAAsB,CAAY,EAC/C,GAAW,GAAoB,ECntBzB,SAAS,EAAmB,CAClC,EACA,EAAmB,IACnB,EAAqB,GACrB,EAAmB,GACnB,EAA4B,GAC5B,EACgB,CAChB,IAAM,EAAM,GACX,EACA,EACA,EACA,EACA,GACA,CACD,EAGA,GAAI,EACH,EAAI,IAAM,IAAI,WAAW,CAAS,EAClC,EAAI,QAAU,EAAU,OAGzB,MAAO,CACN,MACA,aACA,aAAc,GACd,YAAa,CACd,EAMM,SAAS,EAAe,CAAC,EAAuB,EAAwB,CAC9E,GAAa,EAAO,MAAqB,CAAI,EAMvC,SAAS,EAAc,CAAC,EAAuB,EAAwB,CAC7E,GAAa,EAAO,MAAoB,CAAI,EAMtC,SAAS,EAAkB,CAAC,EAAsC,CACxE,GAAI,EAAO,aAAc,OAAO,KAMhC,OAJA,EAAO,IAAI,MAAQ,KACnB,GAAe,EAAO,GAAG,EACzB,EAAO,aAAe,GAEf,EAAO,IAAI,MAMZ,SAAS,EAAO,CACtB,EACA,EACA,EACgB,CAEhB,GAAI,CAAC,EAAO,aAAc,CACzB,IAAM,EAAY,GAAmB,CAAM,EAC3C,GAAI,EAAW,OAAO,EAIvB,GAAI,EAAO,cAAgB,EAAM,OAAO,KAgBxC,OAZA,EAAO,IAAI,MAAS,EAAO,GAAM,EAAO,WACxC,EAAO,IAAI,KAAO,EAClB,EAAO,IAAI,UAAY,EAGvB,GAAS,EAAO,GAAG,EAGnB,EAAO,IAAI,MAAQ,KACnB,GAAc,EAAO,GAAG,EACxB,EAAO,YAAc,EAEd,EAAO,IAAI,MAMnB,SAAS,EAAQ,CAAC,EAAwB,CACzC,QAAS,EAAI,EAAG,EAAI,EAAI,QAAS,IAChC,EAAI,IAAI,GAAK,KAAK,MAAM,EAAI,IAAI,GAAK,EAAI,KAAK,EA+CzC,SAAS,EAAS,CACxB,EACA,EACc,CACd,IAAM,EAAM,EAAO,IACb,EAAU,EAAQ,QAAQ,OAC1B,EAAY,EAAQ,YAAY,OAGhC,EAAc,EAAU,EAGxB,EAAO,GAAgB,EAAa,CAAS,EACnD,EAAK,QAAU,EACf,EAAK,UAAY,EAGjB,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAM,EAAI,KAAK,MAAM,EAAQ,QAAQ,GAAK,EAAI,KAAK,EAC7C,EAAI,KAAK,MAAM,EAAQ,QAAQ,GAAK,EAAI,KAAK,EAEnD,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,KAAK,GAAG,EAAI,EAAQ,QAAQ,GACjC,EAAK,KAAK,GAAG,EAAI,EAAQ,QAAQ,GACjC,EAAK,KAAK,GAAK,EAAQ,MAAM,GAU9B,IAAI,EAAO,IACX,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,GAAI,EAAQ,QAAQ,GAAK,EAAM,EAAO,EAAQ,QAAQ,GAEvD,GAAI,CAAC,OAAO,SAAS,CAAI,EAAG,EAAO,EAEnC,IAAM,EAAM,EAAQ,KAAO,EACrB,EAAO,EAAQ,cAAgB,EAG/B,EAAO,KAAK,OAAO,EAAO,GAAO,EAAI,KAAK,EAChD,EAAK,IAAI,GAAS,EAAI,EACtB,EAAK,IAAI,GAAS,EAAI,EACtB,EAAK,IAAI,GAAS,EAAI,EACtB,EAAK,IAAI,GAAS,EAAI,EACtB,EAAK,KAAK,GAAS,EAAI,EAAO,EAC9B,EAAK,KAAK,GAAS,EAAI,EACvB,EAAK,KAAK,GAAW,EAGrB,IAAM,EAAO,KAAK,OAAO,EAAO,EAAM,GAAQ,EAAI,KAAK,EACvD,EAAK,IAAI,EAAU,GAAG,EAAI,EAC1B,EAAK,IAAI,EAAU,GAAG,EAAI,EAC1B,EAAK,IAAI,EAAU,GAAG,EAAI,EAC1B,EAAK,IAAI,EAAU,GAAG,EAAI,EAC1B,EAAK,KAAK,EAAU,GAAG,EAAI,EAAO,EAAM,EACxC,EAAK,KAAK,EAAU,GAAG,EAAI,EAC3B,EAAK,KAAK,EAAU,GAAK,EAGzB,QAAS,EAAI,EAAU,EAAG,EAAI,EAAa,IAC1C,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,IAAI,GAAG,EAAI,EAChB,EAAK,KAAK,GAAG,EAAI,EACjB,EAAK,KAAK,GAAG,EAAI,EACjB,EAAK,KAAK,GAAK,EAIhB,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,EAAK,SAAS,GAAK,EAAQ,YAAY,GAIxC,EAAI,IAAM,EACV,EAAI,IAAM,EACV,EAAI,IAAM,EACV,EAAI,IAAM,EAGV,EAAI,SAAS,QAAU,EAAI,SAAS,IAAI,OACxC,QAAS,EAAI,EAAG,EAAI,EAAI,SAAS,QAAS,IACzC,EAAI,SAAS,IAAI,GAAG,EAAI,EACxB,EAAI,SAAS,IAAI,GAAG,EAAI,EACxB,EAAI,SAAS,IAAI,GAAG,EAAI,EACxB,EAAI,SAAS,IAAI,GAAG,EAAI,EACxB,EAAI,SAAS,KAAK,GAAK,EAKxB,GADA,EAAI,MAAQ,KACR,EAAQ,aAAa,OAAS,EACjC,GAAgB,EAAK,EAAQ,YAAY,EAI1C,IAAM,EAAc,MAAc,CAAO,EACnC,EAAc,MAAc,CAAO,EAEzC,QAAS,EAAI,EAAG,EAAI,EAAS,IAC5B,EAAQ,GAAK,EAAK,IAAI,IAAI,EAC1B,EAAQ,GAAK,EAAK,IAAI,IAAI,EAG3B,MAAO,CACN,UACA,UACA,MAAO,EAAQ,MACf,YAAa,EAAQ,YACrB,MAAO,EAAI,KACZ,EC3PM,SAAS,EAAa,CAAC,EAAiC,CAC9D,GAAI,EAAQ,SAAW,EAAG,MAAO,CAAC,EAElC,IAAM,EAA2B,CAAC,EAKlC,GAFiB,EAAQ,KAAK,CAAC,IAAM,EAAE,KAAK,EAI3C,OAAO,GAAmB,CAAO,EAIlC,OAAO,GAAuB,CAAO,EAMtC,SAAS,EAAkB,CAAC,EAAiC,CAC5D,GAAI,EAAQ,SAAW,EAAG,MAAO,CAAC,EAElC,IAAM,EAA0B,CAAC,EAC7B,EAAI,EAGF,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,MAAO,CAAC,EAEpB,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAM,EAAG,EAAG,EAAM,CAAE,CAAC,EACnD,EAAI,EAEJ,MAAO,EAAI,EAAQ,OAAQ,CAC1B,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,MAEZ,GAAI,EAAM,QAET,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAM,EAAG,EAAG,EAAM,CAAE,CAAC,EACnD,IACM,QAAI,EAAM,MAAO,CAEvB,IAAM,EAAM,EACN,EAAM,EAAQ,EAAI,GAClB,EAAM,EAAQ,EAAI,GAExB,GAAI,CAAC,GAAO,CAAC,EAAK,CAEjB,IACA,SAGD,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAI,EACR,GAAI,EAAI,EACR,GAAI,EAAI,EACR,GAAI,EAAI,EACR,EAAG,EAAI,EACP,EAAG,EAAI,CACR,CAAC,EACD,GAAK,EACC,KAEN,IAAM,EAAK,EACL,EAAO,EAAQ,EAAI,GACzB,GAAI,CAAC,EAAM,CACV,IACA,SAGD,IAAI,EACJ,GAAI,EAAK,QACR,EAAW,EACX,GAAK,EAEL,OAAW,CACV,GAAI,EAAG,EAAI,EAAK,GAAK,EACrB,GAAI,EAAG,EAAI,EAAK,GAAK,EACrB,QAAS,EACV,EACA,IAGD,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAG,EACP,GAAI,EAAG,EACP,EAAG,EAAS,EACZ,EAAG,EAAS,CACb,CAAC,GAKH,OADA,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EACpB,EAMR,SAAS,EAAsB,CAAC,EAAiC,CAChE,GAAI,EAAQ,SAAW,EAAG,MAAO,CAAC,EAElC,IAAM,EAA0B,CAAC,EAG7B,EAAa,EACjB,QAAY,EAAG,KAAU,EAAQ,QAAQ,EACxC,GAAI,EAAM,QAAS,CAClB,EAAa,EACb,MAKF,IAAM,EAAc,EAAQ,MAAM,CAAC,IAAM,CAAC,EAAE,OAAO,EAC/C,EAEJ,GAAI,EAAa,CAEhB,IAAM,EAAQ,EAAQ,GAChB,EAAO,EAAQ,EAAQ,OAAS,GACtC,GAAI,CAAC,GAAS,CAAC,EAAM,MAAO,CAAC,EAC7B,EAAa,CACZ,GAAI,EAAM,EAAI,EAAK,GAAK,EACxB,GAAI,EAAM,EAAI,EAAK,GAAK,EACxB,QAAS,EACV,EACA,EAAa,EACP,KACN,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,MAAO,CAAC,EACpB,EAAa,EAGd,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAE7D,IAAM,EAAI,EAAQ,OACd,EAAI,EAAc,GAAK,EAAa,GAAK,EACzC,EAAU,EACV,EAAa,EAEjB,MAAO,EAAa,EAAG,CACtB,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,MAEZ,GAAI,EAAM,QAET,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAM,EAAG,EAAG,EAAM,CAAE,CAAC,EACnD,EAAU,EACJ,KAEN,IAAM,GAAa,EAAI,GAAK,EACtB,EAAY,EAAQ,GAC1B,GAAI,CAAC,EAAW,MAEhB,IAAI,EACJ,GAAI,EAAU,QAEb,EAAW,EACX,EAAI,EACJ,IAGA,OAAW,CACV,GAAI,EAAM,EAAI,EAAU,GAAK,EAC7B,GAAI,EAAM,EAAI,EAAU,GAAK,EAC7B,QAAS,EACV,EAID,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAM,EACV,GAAI,EAAM,EACV,EAAG,EAAS,EACZ,EAAG,EAAS,CACb,CAAC,EACD,EAAU,EAOX,GAJA,GAAK,EAAI,GAAK,EACd,IAGI,EAAQ,IAAM,EAAW,GAAK,EAAQ,IAAM,EAAW,EAC1D,MAOF,OAFA,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAEpB,EAMD,SAAS,EAAY,CAAC,EAAY,EAAoC,CAC5E,IAAM,EAAW,EAAK,iBAAiB,CAAO,EAC9C,GAAI,CAAC,EAAU,OAAO,KAEtB,IAAM,EAA0B,CAAC,EACjC,QAAW,KAAW,EACrB,EAAS,KAAK,GAAG,GAAc,CAAO,CAAC,EAGxC,IAAM,EAAS,EAAK,eAAe,CAAO,EAE1C,MAAO,CAAE,WAAU,QAAO,EAMpB,SAAS,EAAS,CACxB,EACA,EACS,CACT,IAAM,EAAQ,GAAS,OAAS,EAC1B,EAAQ,GAAS,OAAS,GAE1B,EAAkB,CAAC,EAEzB,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,EAAM,KACL,KAAK,EAAI,EAAI,KAAS,EAAQ,CAAC,EAAI,EAAI,EAAQ,EAAI,EAAI,GACxD,EACA,UACI,IACJ,EAAM,KACL,KAAK,EAAI,EAAI,KAAS,EAAQ,CAAC,EAAI,EAAI,EAAQ,EAAI,EAAI,GACxD,EACA,UACI,IACJ,EAAM,KACL,KAAK,EAAI,GAAK,KAAS,EAAQ,CAAC,EAAI,GAAK,EAAQ,EAAI,GAAK,KAAS,EAAI,EAAI,KAAS,EAAQ,CAAC,EAAI,EAAI,EAAQ,EAAI,EAAI,GACtH,EACA,UACI,IACJ,EAAM,KACL,KAAK,EAAI,GAAK,KAAS,EAAQ,CAAC,EAAI,GAAK,EAAQ,EAAI,GAAK,KAAS,EAAI,GAAK,KAAS,EAAQ,CAAC,EAAI,GAAK,EAAQ,EAAI,GAAK,KAAS,EAAI,EAAI,KAAS,EAAQ,CAAC,EAAI,EAAI,EAAQ,EAAI,EAAI,GACpL,EACA,UACI,IACJ,EAAM,KAAK,GAAG,EACd,MAIH,OAAO,EAAM,KAAK,GAAG,EAsBf,SAAS,EAAY,CAC3B,EACA,EACA,EAMO,CACP,IAAM,EAAQ,GAAS,OAAS,EAC1B,EAAQ,GAAS,OAAS,GAC1B,EAAU,GAAS,SAAW,EAC9B,EAAU,GAAS,SAAW,EAEpC,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,EAAI,OACH,EAAI,EAAI,EAAQ,GACf,EAAQ,CAAC,EAAI,EAAI,EAAI,GAAK,EAAQ,CACpC,EACA,UACI,IACJ,EAAI,OACH,EAAI,EAAI,EAAQ,GACf,EAAQ,CAAC,EAAI,EAAI,EAAI,GAAK,EAAQ,CACpC,EACA,UACI,IACJ,EAAI,iBACH,EAAI,GAAK,EAAQ,GAChB,EAAQ,CAAC,EAAI,GAAK,EAAI,IAAM,EAAQ,EACrC,EAAI,EAAI,EAAQ,GACf,EAAQ,CAAC,EAAI,EAAI,EAAI,GAAK,EAAQ,CACpC,EACA,UACI,IACJ,EAAI,cACH,EAAI,GAAK,EAAQ,GAChB,EAAQ,CAAC,EAAI,GAAK,EAAI,IAAM,EAAQ,EACrC,EAAI,GAAK,EAAQ,GAChB,EAAQ,CAAC,EAAI,GAAK,EAAI,IAAM,EAAQ,EACrC,EAAI,EAAI,EAAQ,GACf,EAAQ,CAAC,EAAI,EAAI,EAAI,GAAK,EAAQ,CACpC,EACA,UACI,IACJ,EAAI,UAAU,EACd,OAQG,SAAS,EAAU,CACzB,EACA,EACA,EAMgB,CAChB,IAAM,EAAO,GAAa,EAAM,CAAO,EACvC,GAAI,CAAC,EAAM,OAAO,KAElB,IAAM,EAAW,GAAS,UAAY,IAChC,EAAO,GAAS,MAAQ,eACxB,EAAS,GAAS,OAClB,EAAc,GAAS,aAAe,EACtC,EAAQ,EAAW,EAAK,WAExB,EAAS,EAAK,OACpB,GAAI,CAAC,EAAQ,OAAO,KAGpB,IAAM,EAAgB,EAAS,EAAc,EAAI,EAC3C,EAAQ,KAAK,MACjB,EAAO,KAAO,EAAO,MAAQ,EAAQ,EAAgB,CACvD,EACM,EAAS,KAAK,MAClB,EAAO,KAAO,EAAO,MAAQ,EAAQ,EAAgB,CACvD,EACM,EAAU,GAAG,EAAO,KAAO,KAAiB,CAAC,EAAO,KAAO,KAAiB,EAAO,KAAO,EAAO,KAAO,EAAgB,KAAK,EAAO,KAAO,EAAO,KAAO,EAAgB,IAEzK,EAAW,GAAU,EAAM,CAAE,MAAO,GAAM,MAAO,CAAE,CAAC,EAEpD,EAAa,EAChB,YAAY,oBAAyB,KACrC,GAEH,MAAO,kDAAkD,cAAkB,eAAoB;AAAA,aACnF,YAAmB,KAAQ;AAAA,QAejC,SAAS,EAAgB,CAC/B,EACA,EACA,EACA,EAUO,CACP,IAAM,EAAW,GAAS,UAAY,GAChC,EAAS,GAAS,GAAK,EACvB,EAAS,GAAS,GAAK,EACvB,EAAO,GAAS,MAAQ,QACxB,EAAS,GAAS,OAClB,EAAc,GAAS,aAAe,EAEtC,EAAQ,EAAW,EAAK,WAG9B,GADA,EAAI,UAAY,EACZ,EAAQ,CAGX,GAFA,EAAI,YAAc,EAClB,EAAI,UAAY,EAAc,EAC1B,GAAS,QAAS,EAAI,QAAU,EAAQ,QAC5C,GAAI,GAAS,SAAU,EAAI,SAAW,EAAQ,SAG/C,IAAI,EAAI,EACJ,EAAI,EAER,QAAW,KAAS,EAAQ,CAC3B,IAAM,EAAO,GAAa,EAAM,EAAM,OAAO,EAC7C,GAAI,EAAM,CAQT,GAPA,EAAI,UAAU,EACd,GAAa,EAAK,EAAM,CACvB,QACA,MAAO,GACP,QAAS,EAAI,EAAM,QAAU,EAC7B,QAAS,EAAI,EAAM,QAAU,CAC9B,CAAC,EACG,IAAS,OAAQ,EAAI,KAAK,EAC9B,GAAI,EAAQ,EAAI,OAAO,EAGxB,GAAK,EAAM,SAAW,EACtB,GAAK,EAAM,SAAW,GAOjB,SAAS,EAAe,CAC9B,EACA,EACA,EAQS,CACT,IAAM,EAAW,GAAS,UAAY,IAChC,EAAO,GAAS,MAAQ,eACxB,EAAS,GAAS,OAClB,EAAc,GAAS,aAAe,EACtC,EAAQ,EAAW,EAAK,WAExB,EAAkB,CAAC,EACrB,EAAI,EACJ,EAAI,EACJ,EAAO,IACP,EAAO,KACP,EAAO,IACP,EAAO,KAEX,QAAW,KAAS,EAAQ,CAC3B,IAAM,EAAO,GAAa,EAAM,EAAM,OAAO,EAC7C,GAAI,GAAM,OAAQ,CACjB,IAAM,EAAU,EAAI,EAAM,QAAU,EAC9B,EAAU,EAAI,EAAM,QAAU,EAG9B,EAAsB,EAAK,SAAS,IAAI,CAAC,IAAqB,CACnE,OAAQ,EAAI,UACN,QACA,IACJ,MAAO,CACN,KAAM,EAAI,KACV,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAEK,EAAU,GACf,CAAE,SAAU,EAAqB,OAAQ,IAAK,EAC9C,CAAE,MAAO,GAAO,MAAO,CAAE,CAC1B,EACA,EAAM,KAAK,CAAO,EAGlB,IAAM,EAAI,EAAK,OACf,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAG/C,GAAK,EAAM,SAAW,EACtB,GAAK,EAAM,SAAW,EAGvB,GAAI,EAAM,SAAW,EACpB,MAAO,iDAIR,IAAM,EAAgB,EAAS,EAAc,EAAI,EAC3C,EAAQ,KAAK,KAAK,EAAO,EAAO,EAAgB,CAAC,EACjD,EAAS,KAAK,KAAK,EAAO,EAAO,EAAgB,CAAC,EAClD,EAAU,GAAG,KAAK,MAAM,EAAO,CAAa,KAAK,KAAK,MAAM,EAAO,CAAa,KAAK,KAAS,IAE9F,EAAa,EAChB,YAAY,oBAAyB,KAAe,GAAS,QAAU,oBAAoB,EAAQ,WAAa,KAAK,GAAS,SAAW,qBAAqB,EAAQ,YAAc,KACpL,GAEH,MAAO,kDAAkD,cAAkB,eAAoB;AAAA,aACnF,EAAM,KAAK,GAAG,YAAY,KAAQ;AAAA,QAOxC,SAAS,EAAyB,CAAC,EAAoC,CAC7E,IAAM,EAAwB,CAAC,EAC/B,QAAY,EAAG,KAAS,EAAO,MAAM,QAAQ,EAAG,CAC/C,IAAM,EAAM,EAAO,UAAU,GAC7B,GAAI,CAAC,EAAK,SACV,EAAO,KAAK,CACX,QAAS,EAAK,QACd,QAAS,EAAI,QACb,QAAS,EAAI,QACb,SAAU,EAAI,SACd,SAAU,EAAI,QACf,CAAC,EAEF,OAAO,EAMD,SAAS,EAAyB,CACxC,EACA,EACA,EACmB,CACnB,IAAM,EAAW,EAAK,8BAA8B,EAAS,CAAU,EACvE,GAAI,CAAC,EAAU,OAAO,KAEtB,IAAM,EAA0B,CAAC,EACjC,QAAW,KAAW,EACrB,EAAS,KAAK,GAAG,GAAc,CAAO,CAAC,EAGxC,IAAM,EAAS,EAAK,eAAe,CAAO,EAE1C,MAAO,CAAE,WAAU,QAAO,EAMpB,SAAS,EAA6B,CAC5C,EACA,EACA,EACA,EACA,EAUO,CACP,IAAM,EAAW,GAAS,UAAY,GAChC,EAAS,GAAS,GAAK,EACvB,EAAS,GAAS,GAAK,EACvB,EAAO,GAAS,MAAQ,QACxB,EAAS,GAAS,OAClB,EAAc,GAAS,aAAe,EAEtC,EAAQ,EAAW,EAAK,WAG9B,GADA,EAAI,UAAY,EACZ,EAAQ,CAGX,GAFA,EAAI,YAAc,EAClB,EAAI,UAAY,EAAc,EAC1B,GAAS,QAAS,EAAI,QAAU,EAAQ,QAC5C,GAAI,GAAS,SAAU,EAAI,SAAW,EAAQ,SAG/C,IAAI,EAAI,EACJ,EAAI,EAER,QAAW,KAAS,EAAQ,CAC3B,IAAM,EAAO,GAA0B,EAAM,EAAM,QAAS,CAAU,EACtE,GAAI,EAAM,CAQT,GAPA,EAAI,UAAU,EACd,GAAa,EAAK,EAAM,CACvB,QACA,MAAO,GACP,QAAS,EAAI,EAAM,QAAU,EAC7B,QAAS,EAAI,EAAM,QAAU,CAC9B,CAAC,EACG,IAAS,OAAQ,EAAI,KAAK,EAC9B,GAAI,EAAQ,EAAI,OAAO,EAGxB,GAAK,EAAM,SAAW,EACtB,GAAK,EAAM,SAAW,GAOjB,SAAS,EAA4B,CAC3C,EACA,EACA,EACA,EAQS,CACT,IAAM,EAAW,GAAS,UAAY,IAChC,EAAO,GAAS,MAAQ,eACxB,EAAS,GAAS,OAClB,EAAc,GAAS,aAAe,EACtC,EAAQ,EAAW,EAAK,WAExB,EAAkB,CAAC,EACrB,EAAI,EACJ,EAAI,EACJ,EAAO,IACP,EAAO,KACP,EAAO,IACP,EAAO,KAEX,QAAW,KAAS,EAAQ,CAC3B,IAAM,EAAO,GAA0B,EAAM,EAAM,QAAS,CAAU,EACtE,GAAI,GAAM,OAAQ,CACjB,IAAM,EAAU,EAAI,EAAM,QAAU,EAC9B,EAAU,EAAI,EAAM,QAAU,EAE9B,EAAsB,EAAK,SAAS,IAAI,CAAC,IAAqB,CACnE,OAAQ,EAAI,UACN,QACA,IACJ,MAAO,CACN,KAAM,EAAI,KACV,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,GAAI,EAAI,GAAK,EAAQ,EACrB,GAAI,CAAC,EAAI,GAAK,EAAQ,EACtB,EAAG,EAAI,EAAI,EAAQ,EACnB,EAAG,CAAC,EAAI,EAAI,EAAQ,CACrB,MACI,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAEK,EAAU,GACf,CAAE,SAAU,EAAqB,OAAQ,IAAK,EAC9C,CAAE,MAAO,GAAO,MAAO,CAAE,CAC1B,EACA,EAAM,KAAK,CAAO,EAElB,IAAM,EAAI,EAAK,OACf,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAC9C,EAAO,KAAK,IAAI,EAAM,EAAU,EAAE,KAAO,CAAK,EAG/C,GAAK,EAAM,SAAW,EACtB,GAAK,EAAM,SAAW,EAGvB,GAAI,EAAM,SAAW,EACpB,MAAO,iDAIR,IAAM,EAAgB,EAAS,EAAc,EAAI,EAC3C,EAAQ,KAAK,KAAK,EAAO,EAAO,EAAgB,CAAC,EACjD,EAAS,KAAK,KAAK,EAAO,EAAO,EAAgB,CAAC,EAClD,EAAU,GAAG,KAAK,MAAM,EAAO,CAAa,KAAK,KAAK,MAAM,EAAO,CAAa,KAAK,KAAS,IAE9F,EAAa,EAChB,YAAY,oBAAyB,KAAe,GAAS,QAAU,oBAAoB,EAAQ,WAAa,KAAK,GAAS,SAAW,qBAAqB,EAAQ,YAAc,KACpL,GAEH,MAAO,kDAAkD,cAAkB,eAAoB;AAAA,aACnF,EAAM,KAAK,GAAG,YAAY,KAAQ;AAAA,QAOxC,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,IAAM,EAAQ,EAAW,EAAK,WAC1B,EAAQ,EACZ,QAAW,KAAS,EACnB,GAAS,EAAM,SAEhB,OAAO,EAAQ,EAMT,SAAS,EAAY,CAC3B,EACA,EAMS,CACT,IAAM,EAAI,IAAI,OAEd,OADA,GAAa,EAAG,EAAM,CAAO,EACtB,ECzzBD,IAAM,GAAa,EACb,GAAY,IAoClB,SAAS,EAAU,CAAC,EAAmB,CAC7C,OAAO,GAtCkB,EA4CnB,SAAS,EAAS,CAAC,EAAmB,CAC5C,OAAO,EA3CkB,IAwJnB,SAAS,EAAG,CAAC,EAAmB,CACtC,OAAO,EAAI,EAAI,CAAC,EAAI,ECzJrB,IAAM,GAAoB,KAGpB,GAAa,WAKZ,MAAM,WAA0B,KAAM,CAC5C,WAAW,EAAG,CACb,MAAM,oBAAoB,EAC1B,KAAK,KAAO,oBAEd,CAoBO,MAAM,EAAW,CAEf,KAEA,SAEA,UAEA,OAGA,SAAmB,EACnB,SAAmB,EAG3B,KAAe,IACf,KAAe,KACf,KAAe,IACf,KAAe,KAGP,SAAmB,EACnB,SAAmB,EACnB,iBAA2B,GAG3B,SAAmB,KACnB,SAAmB,KACnB,SAAmB,IACnB,SAAmB,IAGnB,cAGA,QAAmB,GAE3B,WAAW,CAAC,EAAmB,GAAmB,CACjD,KAAK,SAAW,EAChB,KAAK,cAAgB,EAAW,EAGhC,KAAK,KAAW,MAAM,CAAQ,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAU,IAC7B,KAAK,KAAK,GAAK,CAAE,EAAG,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,EAAG,EAIpD,KAAK,KAAK,KAAK,eAAe,EAAI,GAClC,KAAK,KAAK,KAAK,eAAe,KAAO,GAErC,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,EAGjB,KAAK,SAAW,KAChB,KAAK,SAAW,IAMjB,OAAO,CAAC,EAAc,EAAc,EAAc,EAAoB,CACrE,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,KAAK,SAAW,EAMjB,aAAa,CAAC,EAAc,EAAoB,CAC/C,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,KAAK,QAAU,GAGf,IAAM,EAAS,EAAO,EACtB,GAAI,KAAK,OAAO,OAAS,EACxB,KAAK,OAAa,MAAM,CAAM,EAI/B,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,KAAK,OAAO,GAAK,KAAK,cAKvB,KAAK,UAAY,EAMlB,KAAK,EAAS,CAWb,GATA,KAAK,UAAY,EAGjB,KAAK,KAAK,KAAK,eAAe,EAAI,GAClC,KAAK,KAAK,KAAK,eAAe,KAAO,EACrC,KAAK,KAAK,KAAK,eAAe,MAAQ,EACtC,KAAK,KAAK,KAAK,eAAe,KAAO,GAGjC,KAAK,QACR,QAAS,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IACvC,KAAK,OAAO,GAAK,KAAK,cAIvB,UAAK,OAAS,CAAC,EAEf,KAAK,SAAW,KAChB,KAAK,SAAW,IAGjB,KAAK,KAAO,IACZ,KAAK,KAAO,KACZ,KAAK,KAAO,IACZ,KAAK,KAAO,KACZ,KAAK,iBAAmB,GAOzB,cAAc,CAAC,EAAW,EAAiB,CAC1C,IAAM,EAAK,GAAW,CAAC,EACjB,EAAK,GAAW,CAAC,EAGvB,GACC,KAAK,kBAAoB,GACzB,KAAK,WAAa,GAClB,KAAK,WAAa,EAElB,OAID,GACC,EAAK,KAAK,UACV,GAAM,KAAK,UACX,EAAK,KAAK,UACV,GAAM,KAAK,UACX,EAAK,KAAK,UACV,GAAM,KAAK,SACV,CACD,KAAK,iBAAmB,KAAK,cAC7B,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,OAID,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,KAAK,iBAAmB,KAAK,iBAAiB,EAAI,CAAE,EAGpD,KAAK,KAAO,KAAK,IAAI,KAAK,KAAM,CAAE,EAClC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAM,CAAE,EAClC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAM,CAAE,EAClC,KAAK,KAAO,KAAK,IAAI,KAAK,KAAM,CAAE,EAO3B,gBAAgB,CAAC,EAAW,EAAmB,CAEtD,GAAI,CAAC,KAAK,QACT,KAAK,qBAAqB,CAAC,EAG5B,IAAM,EAAW,EAAI,KAAK,SAC1B,GAAI,EAAW,GAAK,GAAY,KAAK,OAAO,OAC3C,OAAO,KAAK,cAIb,IAAI,EAAY,GACZ,EAAY,KAAK,OAAO,GAE5B,MAAO,IAAc,KAAK,cAAe,CACxC,IAAM,EAAO,KAAK,KAAK,GACvB,GAAI,EAAK,IAAM,EACd,OAAO,EAER,GAAI,EAAK,EAAI,EACZ,MAED,EAAY,EACZ,EAAY,EAAK,KAIlB,GAAI,KAAK,WAAa,KAAK,cAC1B,MAAM,IAAI,GAGX,IAAM,EAAW,KAAK,YAChB,EAAU,KAAK,KAAK,GAO1B,GANA,EAAQ,EAAI,EACZ,EAAQ,KAAO,EACf,EAAQ,MAAQ,EAChB,EAAQ,KAAO,EAGX,IAAc,GACjB,KAAK,OAAO,GAAY,EAExB,UAAK,KAAK,GAAW,KAAO,EAG7B,OAAO,EAOA,oBAAoB,CAAC,EAAiB,CAE7C,GAAI,KAAK,OAAO,SAAW,EAAG,CAE7B,KAAK,SAAW,KAAK,IAAI,EAAG,CAAC,EAC7B,KAAK,SAAW,KAAK,IAAI,EAAI,EAAG,GAAG,EACnC,IAAM,EAAS,KAAK,SAAW,KAAK,SACpC,KAAK,OAAa,MAAM,CAAM,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,KAAK,OAAO,GAAK,KAAK,cAEvB,OAID,GAAI,EAAI,KAAK,SAAU,CACtB,IAAM,EAAS,KAAK,SAAW,EACzB,EAAgB,MAAM,KAAK,OAAO,OAAS,CAAM,EACvD,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAU,GAAK,KAAK,cAErB,QAAS,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IACvC,EAAU,EAAS,GAAK,KAAK,OAAO,GAErC,KAAK,OAAS,EACd,KAAK,SAAW,EACV,QAAI,GAAK,KAAK,SAAU,CAC9B,IAAM,EAAU,EAAI,EACd,EAAS,KAAK,OAAO,OACrB,EAAS,EAAU,KAAK,SAC9B,GAAI,EAAS,EAAQ,CACpB,IAAM,EAAgB,MAAM,CAAM,EAClC,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAU,GAAK,KAAK,OAAO,GAE5B,QAAS,EAAI,EAAQ,EAAI,EAAQ,IAChC,EAAU,GAAK,KAAK,cAErB,KAAK,OAAS,EAEf,KAAK,SAAW,GAOlB,OAAO,CAAC,EAAc,EAAqB,CAC1C,GAAI,KAAK,kBAAoB,EAAG,CAC/B,IAAM,EAAO,KAAK,KAAK,KAAK,kBAC5B,EAAK,MAAQ,EACb,EAAK,OAAS,GAOhB,OAAO,EAAW,CACjB,GAAI,KAAK,kBAAoB,EAC5B,OAAO,KAAK,KAAK,KAAK,mBAAmB,KAE1C,MAAO,GAMR,QAAQ,EAAW,CAClB,GAAI,KAAK,kBAAoB,EAC5B,OAAO,KAAK,KAAK,KAAK,mBAAmB,MAE1C,MAAO,GAMR,cAAc,CAAC,EAAmB,CACjC,IAAM,EAAW,EAAI,KAAK,SAC1B,GAAI,EAAW,GAAK,GAAY,KAAK,OAAO,OAC3C,MAAO,CAAC,EAGT,IAAM,EAAgB,CAAC,EACnB,EAAY,KAAK,OAAO,GAC5B,MAAO,IAAc,KAAK,cACzB,EAAM,KAAK,KAAK,KAAK,EAAU,EAC/B,EAAY,KAAK,KAAK,IAAY,KAEnC,OAAO,GAMP,YAAY,EAA4C,CACxD,QAAS,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IAAK,CAC5C,IAAM,EAAI,KAAK,SAAW,EACtB,EAAY,KAAK,OAAO,GAC5B,GAAI,IAAc,KAAK,cAAe,SAEtC,IAAM,EAAgB,CAAC,EACvB,MAAO,IAAc,KAAK,cACzB,EAAM,KAAK,KAAK,KAAK,EAAU,EAC/B,EAAY,KAAK,KAAK,IAAY,KAEnC,GAAI,EAAM,OAAS,EAClB,KAAM,CAAE,IAAG,OAAM,IAQnB,eAAe,CAAC,EAA4B,CAC5C,IAAM,EAAW,EAAI,KAAK,SAC1B,GAAI,EAAW,GAAK,GAAY,KAAK,OAAO,OAAQ,OAEpD,IAAI,EAAY,KAAK,OAAO,GAC5B,MAAO,IAAc,KAAK,cACzB,MAAM,KAAK,KAAK,GAChB,EAAY,KAAK,KAAK,IAAY,KAOpC,YAAY,EAAW,CACtB,OAAO,KAAK,UAMb,cAAc,EAAY,CACzB,OAAO,KAAK,UAAY,KAAK,SAAW,IAE1C,CCnZO,IAAK,IAAL,CAAK,IAAL,CAEN,SAAO,GAAP,OAEA,SAAO,GAAP,OAEA,QAAM,GAAN,MAEA,UAAQ,GAAR,QAEA,SAAO,GAAP,SAVW,SAgBL,IAAK,IAAL,CAAK,IAAL,CAEN,YAAU,GAAV,UAEA,YAAU,GAAV,YAJW,SA6KL,SAAS,CAAY,CAC3B,EACA,EACA,EAAuB,EACd,CACT,IAAI,EACJ,OAAQ,OACF,GACJ,EAAgB,MAChB,UACI,GACJ,EAAgB,EAChB,UACI,OACA,GACJ,EAAgB,EAChB,UACI,GACJ,EAAgB,EAChB,MAGF,IAAM,EACL,IAAc,EAAiB,KAAK,KAAK,EAAQ,CAAC,EAAI,EAAQ,EAE/D,MAAO,CACN,OAAQ,IAAI,WAAW,EAAQ,CAAM,EACrC,QACA,KAAM,EACN,QACA,YACA,SAAU,IAAc,EAAiB,EAAI,GAC9C,EAMM,SAAS,EAAW,CAAC,EAAsB,CACjD,EAAO,OAAO,KAAK,CAAC,EC3MrB,IAAM,GAAiB,GAGjB,GAAiB,GAKhB,MAAM,EAAW,CACf,MAGA,EAAY,EACZ,EAAY,EAGZ,KAAe,EACf,KAAe,EACf,KAAe,EACf,KAAe,EAEvB,WAAW,EAAG,CACb,KAAK,MAAQ,IAAI,GAMlB,OAAO,CAAC,EAAc,EAAc,EAAc,EAAoB,CACrE,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,MAAM,QAAQ,EAAM,EAAM,EAAM,CAAI,EAM1C,aAAa,CAAC,EAAc,EAAoB,CAC/C,KAAK,MAAM,cAAc,EAAM,CAAI,EAMpC,KAAK,EAAS,CACb,KAAK,MAAM,MAAM,EACjB,KAAK,EAAI,EACT,KAAK,EAAI,EAOV,MAAM,CAAC,EAAW,EAAiB,CAClC,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,MAAM,eAAe,EAAG,CAAC,EAM/B,MAAM,CAAC,EAAa,EAAmB,CACtC,KAAK,WAAW,EAAK,CAAG,EACxB,KAAK,EAAI,EACT,KAAK,EAAI,EAOF,UAAU,CAAC,EAAa,EAAmB,CAClD,IAAI,EAAM,GAAW,KAAK,CAAC,EACrB,EAAM,GAAW,CAAG,EAG1B,GACE,GAAO,KAAK,MAAQ,GAAO,KAAK,MAChC,EAAM,KAAK,MAAQ,EAAM,KAAK,KAE/B,OAGD,IAAM,EAAM,GAAU,KAAK,CAAC,EACtB,EAAM,GAAU,CAAG,EAGzB,GAAI,IAAQ,EAAK,CAChB,KAAK,eAAe,EAAK,KAAK,EAAG,EAAK,EAAK,CAAG,EAC9C,OAGD,IAAM,EAAK,EAAM,KAAK,EAChB,EAAK,EAAM,KAAK,EAGtB,GAAI,IAAO,EAAG,CACb,IAAM,EAAM,GAAW,KAAK,CAAC,EACvB,EAAQ,GAAU,KAAK,CAAC,EAAI,EAE9B,EACA,EAEJ,GAAI,EAAK,EACR,EAAQ,GACR,EAAO,EAEP,OAAQ,EACR,EAAO,GAIR,IAAI,EAAQ,EAAQ,EACpB,KAAK,MAAM,eAAe,KAAK,EAAG,GAAO,EAAU,EACnD,KAAK,MAAM,QAAQ,EAAQ,EAAO,CAAK,EACvC,GAAO,EAGP,KAAK,MAAM,eAAe,KAAK,EAAG,GAAO,EAAU,EACnD,EAAQ,EAAQ,EAAQ,GACxB,MAAO,IAAQ,EACd,KAAK,MAAM,QAAQ,EAAQ,EAAO,CAAK,EACvC,GAAO,EACP,KAAK,MAAM,eAAe,KAAK,EAAG,GAAO,EAAU,EAIpD,EAAQ,EAAM,GAAY,EAC1B,KAAK,MAAM,QAAQ,EAAQ,EAAO,CAAK,EACvC,OAID,IAAI,EAAI,KAAK,EACT,EACA,EAEJ,GAAI,EAAK,EACR,EAAQ,GACR,EAAO,EAEP,OAAQ,EACR,EAAO,GAIR,IAAI,EAAQ,EAAQ,EACd,EAAS,KAAK,OAAO,EAAI,EAAO,GAAI,CAAE,CAAC,EACzC,EAAK,EAAI,EASb,GAPA,KAAK,eAAe,EAAK,EAAG,EAAK,EAAI,CAAK,EAC1C,EAAI,EACJ,GAAO,EAEP,KAAK,MAAM,eAAe,EAAG,GAAO,EAAU,EAG1C,IAAQ,EAAK,CAChB,IAAM,EAAQ,KAAK,OAAO,EAAI,GAAW,GAAI,CAAE,CAAC,EAChD,EAAQ,EAAQ,EAAQ,GAExB,MAAO,IAAQ,EACd,EAAK,EAAI,EACT,KAAK,eAAe,EAAK,EAAG,GAAY,EAAO,EAAI,CAAK,EACxD,EAAI,EACJ,GAAO,EACP,KAAK,MAAM,eAAe,EAAG,GAAO,EAAU,EAKhD,EAAQ,EAAM,GAAY,EAC1B,KAAK,eAAe,EAAK,EAAG,GAAY,EAAO,EAAK,CAAG,EAMhD,cAAc,CACrB,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAM,GAAW,CAAE,EACnB,EAAM,GAAW,CAAE,EAGzB,GAAI,IAAO,EAAI,CACd,KAAK,MAAM,eAAe,EAAI,GAAM,EAAU,EAC9C,OAGD,IAAM,EAAM,GAAU,CAAE,EAClB,EAAM,GAAU,CAAE,EAGxB,GAAI,IAAQ,EAAK,CAChB,IAAM,EAAQ,EAAK,EACnB,KAAK,MAAM,eAAe,EAAI,GAAM,EAAU,EAC9C,KAAK,MAAM,QAAQ,GAAS,EAAM,GAAM,CAAK,EAC7C,OAID,IAAM,EAAK,EAAK,EACV,EAAK,EAAK,EAEZ,EACA,EAEJ,GAAI,EAAK,EACR,EAAQ,GACR,EAAO,EAEP,OAAQ,EACR,EAAO,GAIR,IAAI,EAAQ,KAAK,OAAO,EAAI,EAAQ,EAAK,GAAI,CAAE,CAAC,EAChD,KAAK,MAAM,eAAe,EAAI,GAAM,EAAU,EAC9C,KAAK,MAAM,QAAQ,GAAS,EAAM,GAAQ,CAAK,EAE/C,IAAI,EAAI,EAAK,EACT,EAAK,EAAM,EAIf,GAHA,KAAK,MAAM,eAAe,GAAM,GAAY,GAAM,EAAU,EAGxD,IAAO,EAAK,CACf,IAAM,EAAQ,KAAK,OAAO,EAAI,GAAW,GAAI,CAAE,CAAC,EAEhD,MAAO,IAAO,EACb,EAAQ,EACR,KAAK,MAAM,QAAQ,EAAQ,GAAW,CAAK,EAC3C,GAAK,EACL,GAAM,EACN,KAAK,MAAM,eAAe,GAAM,GAAY,GAAM,EAAU,EAK9D,EAAQ,EAAK,EACb,KAAK,MAAM,QAAQ,GAAS,EAAM,GAAY,GAAQ,CAAK,EAMpD,MAAM,CAAC,EAAW,EAAW,EAAmB,CACvD,GAAI,IAAM,EAAG,MAAO,GACpB,OAAO,KAAK,MAAO,EAAI,EAAK,CAAC,EAM9B,OAAO,CAAC,EAAY,EAAY,EAAa,EAAmB,CAC/D,IAAM,EAAM,KAAK,EACX,EAAM,KAAK,EAGX,EAAM,EAAK,EACX,EAAM,EAAK,EACX,EAAM,EAAM,EACZ,EAAM,EAAM,EACZ,EACL,KAAK,KAAK,EAAM,EAAM,EAAM,CAAG,EAAI,KAAK,KAAK,EAAM,EAAM,EAAM,CAAG,EAG7D,EAAc,KAAK,IAAI,EAAG,KAAK,KAAK,GAAO,GAAY,EAAE,CAAC,EAEhE,QAAS,EAAI,EAAG,GAAK,EAAa,IAAK,CACtC,IAAM,EAAI,EAAI,EACR,EAAK,EAAI,EAET,EAAI,KAAK,MAAM,EAAK,EAAK,EAAM,EAAI,EAAK,EAAI,EAAK,EAAI,EAAI,CAAG,EAC5D,EAAI,KAAK,MAAM,EAAK,EAAK,EAAM,EAAI,EAAK,EAAI,EAAK,EAAI,EAAI,CAAG,EAClE,KAAK,WAAW,EAAG,CAAC,EAEpB,KAAK,EAAI,EACT,KAAK,EAAI,EAGV,KAAK,EAAI,EACT,KAAK,EAAI,EAMV,OAAO,CACN,EACA,EACA,EACA,EACA,EACA,EACO,CACP,KAAK,YAAY,KAAK,EAAG,KAAK,EAAG,EAAK,EAAK,EAAK,EAAK,EAAG,EAAG,CAAC,EAC5D,KAAK,EAAI,EACT,KAAK,EAAI,EAGF,WAAW,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,GAAI,EAAQ,GAAI,CACf,KAAK,WAAW,EAAI,CAAE,EACtB,KAAK,EAAI,EACT,KAAK,EAAI,EACT,OAID,IAAM,EAAO,EAAK,GAAQ,EACpB,EAAO,EAAK,GAAQ,EACpB,EAAO,EAAM,GAAQ,EACrB,EAAO,EAAM,GAAQ,EACrB,EAAO,EAAM,GAAO,EACpB,EAAO,EAAM,GAAO,EACpB,EAAQ,EAAM,GAAQ,EACtB,EAAQ,EAAM,GAAQ,EACtB,EAAQ,EAAM,GAAQ,EACtB,EAAQ,EAAM,GAAQ,EACtB,EAAS,EAAO,GAAS,EACzB,EAAS,EAAO,GAAS,EAGzB,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,IAAK,EAAM,GAAM,GAAM,EAAM,GAAM,CAAE,EAC1C,EAAK,IAAK,EAAM,GAAM,GAAM,EAAM,GAAM,CAAE,EAEhD,GAAI,EAAK,IAAO,IAAa,IAAM,GAAI,CAAE,EAAI,GAAI,CAAE,GAAI,CACtD,KAAK,WAAW,EAAI,CAAE,EACtB,KAAK,EAAI,EACT,KAAK,EAAI,EACT,OAGD,KAAK,YAAY,EAAI,EAAI,EAAK,EAAK,EAAM,EAAM,EAAO,EAAO,EAAQ,CAAC,EACtE,KAAK,YAAY,EAAO,EAAO,EAAM,EAAM,EAAK,EAAK,EAAI,EAAI,EAAQ,CAAC,EAUvE,KAAK,CAAC,EAAgB,IAAiD,CAItE,IAAM,EAAQ,EAAO,MACf,EAAS,EAAQ,GAAK,EAAO,KAAO,GAAK,CAAC,EAAQ,EAExD,QAAa,IAAG,WAAW,KAAK,MAAM,aAAa,EAAG,CACrD,GAAI,EAAI,GAAK,GAAK,EAAO,KAAM,SAE/B,IAAI,EAAQ,EACR,EAAI,EAGF,EAAM,EAAQ,EAAI,EAAS,EAAI,CAAC,EAAQ,EAAI,EAElD,QAAW,KAAQ,EAAO,CAEzB,GAAI,EAAK,EAAI,GAAK,IAAU,EAAG,CAC9B,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EAAG,CACb,IAAM,EAAQ,KAAK,IAAI,EAAG,CAAC,EACrB,EAAM,KAAK,IAAI,EAAO,MAAO,EAAK,CAAC,EACzC,KAAK,SAAS,EAAQ,EAAK,EAAO,EAAK,CAAI,GAS7C,IAAM,EADc,GAAS,GAAY,GACd,EAAK,KAC1B,EAAO,KAAK,cAAc,GAAS,GAAa,EAAI,CAAQ,EAElE,GAAI,EAAO,GAAK,EAAK,GAAK,GAAK,EAAK,EAAI,EAAO,MAC9C,KAAK,SAAS,EAAQ,EAAK,EAAK,EAAG,CAAI,EAGxC,GAAS,EAAK,MACd,EAAI,EAAK,EAAI,EAId,GAAI,EAAI,EAAO,OAAS,IAAU,EAAG,CACpC,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EACV,KAAK,SAAS,EAAQ,EAAK,EAAG,EAAO,MAAO,CAAI,IAM5C,aAAa,CAAC,EAAe,EAA4B,CAChE,IAAI,EAAI,EACR,GAAI,EAAI,EAAG,EAAI,CAAC,EAEhB,GAAI,OAEH,GADA,GAAK,IACD,EAAI,IAAK,EAAI,IAAM,EAGxB,OAAO,EAAI,IAAM,IAAM,EAGhB,QAAQ,CACf,EACA,EACA,EACA,EACA,EACO,CACP,GAAI,EAAO,cACV,QAAS,EAAI,EAAO,EAAI,EAAK,IAC5B,EAAO,OAAO,EAAM,GAAK,EAEpB,QAAI,EAAO,eACjB,GAAI,GAAQ,IACX,QAAS,EAAI,EAAO,EAAI,EAAK,IAAK,CACjC,IAAM,EAAU,GAAO,GAAK,GACtB,EAAS,GAAK,EAAI,GACxB,EAAO,OAAO,IAAY,GAAK,GAG3B,QAAI,EAAO,cAIjB,QAAS,EAAI,EAAO,EAAI,EAAK,IAAK,CACjC,IAAM,EAAM,EAAM,EAAI,EACtB,EAAO,OAAO,GAAO,EACrB,EAAO,OAAO,EAAM,GAAK,EACzB,EAAO,OAAO,EAAM,GAAK,GAKpB,QAAQ,CAAC,EAAgB,EAAa,EAAW,EAAoB,CAC5E,GAAI,EAAO,cACV,EAAO,OAAO,EAAM,GAAK,EACnB,QAAI,EAAO,eACjB,GAAI,GAAQ,IAAK,CAChB,IAAM,EAAU,GAAO,GAAK,GACtB,EAAS,GAAK,EAAI,GACxB,EAAO,OAAO,IAAY,GAAK,GAE1B,QAAI,EAAO,cAA6B,CAE9C,IAAM,EAAM,EAAM,EAAI,EACtB,EAAO,OAAO,GAAO,EACrB,EAAO,OAAO,EAAM,GAAK,EACzB,EAAO,OAAO,EAAM,GAAK,GAU3B,UAAoB,CACnB,EACA,IACA,EACO,CACP,QAAa,IAAG,WAAW,KAAK,MAAM,aAAa,EAAG,CACrD,IAAM,EAAgB,CAAC,EACnB,EAAQ,EACR,EAAY,GAEhB,QAAW,KAAQ,EAAO,CAEzB,GAAI,IAAU,GAAK,EAAK,EAAI,EAAY,EAAG,CAC1C,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EACV,EAAM,KAAK,CACV,EAAG,EAAY,EACf,IAAK,EAAK,EAAI,EAAY,EAC1B,SAAU,CACX,CAAC,EAMH,IAAM,EADc,GAAS,GAAY,GACd,EAAK,KAC1B,EAAO,KAAK,cAAc,GAAS,GAAa,EAAI,CAAQ,EAClE,GAAI,EAAO,EACV,EAAM,KAAK,CAAE,EAAG,EAAK,EAAG,IAAK,EAAG,SAAU,CAAK,CAAC,EAGjD,GAAS,EAAK,MACd,EAAY,EAAK,EAGlB,GAAI,EAAM,OAAS,EAClB,EAAS,EAAG,EAAO,CAAa,GAcnC,WAAqB,CACpB,EACA,IACA,EAAe,EACf,EAAe,IACf,EACO,CACP,IAAM,EAAqB,CAAC,EAE5B,QAAa,IAAG,WAAW,KAAK,MAAM,aAAa,EAAG,CACrD,IAAI,EAAQ,EACR,EAAI,EAER,QAAW,KAAQ,EAAO,CAEzB,GAAI,IAAU,GAAK,EAAK,EAAI,EAAG,CAC9B,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,GAEV,GADA,EAAW,KAAK,CAAE,IAAG,IAAK,EAAK,EAAI,EAAG,SAAU,CAAK,CAAC,EAClD,EAAW,QAAU,GACxB,EACC,EACA,EAAW,OAAO,EAAG,EAAW,MAAM,EACtC,CACD,GAOH,IAAM,EADc,GAAS,GAAY,GACd,EAAK,KAC1B,EAAO,KAAK,cAAc,GAAS,GAAa,EAAI,CAAQ,EAClE,GAAI,EAAO,GAAK,EAAK,GAAK,GAAQ,EAAK,EAAI,GAE1C,GADA,EAAW,KAAK,CAAE,EAAG,EAAK,EAAG,IAAK,EAAG,SAAU,CAAK,CAAC,EACjD,EAAW,QAAU,GACxB,EAAS,EAAG,EAAW,OAAO,EAAG,EAAW,MAAM,EAAG,CAAa,EAIpE,GAAS,EAAK,MACd,EAAI,EAAK,EAAI,EAId,GAAI,IAAU,GAAK,EAAI,EAAM,CAC5B,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EACV,EAAW,KAAK,CACf,IACA,IAAK,KAAK,IAAI,EAAM,KAAK,KAAO,CAAC,EAAI,EACrC,SAAU,CACX,CAAC,EAKH,GAAI,EAAW,OAAS,EACvB,EAAS,EAAG,EAAW,OAAO,EAAG,EAAW,MAAM,EAAG,CAAa,GAgBrE,eAAe,CACd,EACA,EACA,EACA,IACO,CAIP,IAAM,EAAS,EAAO,KAAO,EAAO,KAChC,EAAa,KAAK,IAAI,EAAG,KAAK,MAAM,GAAY,CAAC,EAGrD,GAAI,GAAU,EACb,EAAa,EAId,IAAM,EAAO,EAAO,MAAQ,EACtB,EAAO,EAAO,MAAQ,EAAO,MAI7B,EAKD,CAAC,EAGN,QAAS,EAAI,EAAO,KAAM,EAAI,EAAO,KAAM,GAAK,EAC/C,EAAU,KAAK,CACd,KAAM,EACN,KAAM,KAAK,IAAI,EAAI,EAAY,EAAO,IAAI,EAC1C,KAAM,EACN,KAAM,CACP,CAAC,EAIF,IAAI,EAAQ,EACZ,MAAO,EAAU,OAAS,GAAK,EAAQ,GAAgB,CACtD,IAAM,EAAO,EAAU,IAAI,EAC3B,GAAI,CAAC,EAAM,MAEX,GACC,KAAK,oBACJ,EACA,EACA,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,CACD,EAEA,SAID,IAAM,EAAQ,EAAK,KAAO,EAAK,MAAS,EACxC,GAAI,EAAO,EAAK,KAAM,CAErB,EAAU,KAAK,CACd,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAM,EACN,KAAM,EAAK,IACZ,CAAC,EACD,EAAU,KAAK,CACd,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAM,CACP,CAAC,EACD,IACA,SAID,IAAM,EAAQ,EAAK,KAAO,EAAK,MAAS,EACxC,GAAI,EAAO,EAAK,KAAM,CAErB,EAAU,KAAK,CACd,KAAM,EACN,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAM,EAAK,IACZ,CAAC,EACD,EAAU,KAAK,CACd,KAAM,EAAK,KACX,KAAM,EACN,KAAM,EAAK,KACX,KAAM,EAAK,IACZ,CAAC,EACD,IACA,SAID,QAAQ,KACP,iCAAiC,EAAK,QAAQ,EAAK,8BACpD,GAQM,mBAAmB,CAC1B,EACA,EACA,EACA,EACA,EACA,EACA,EACU,CAEV,KAAK,MAAM,cAAc,EAAM,CAAI,EACnC,KAAK,MAAM,MAAM,EACjB,KAAK,KAAO,EACZ,KAAK,KAAO,EAEZ,GAAI,CAMH,OAJA,EAAY,EAGZ,KAAK,mBAAmB,EAAQ,EAAM,EAAM,EAAM,EAAM,CAAQ,EACzD,GACN,MAAO,EAAG,CACX,GAAI,aAAa,GAChB,MAAO,GAER,MAAM,GAOA,kBAAkB,CACzB,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAQ,EAAO,MACf,EAAS,EAAQ,GAAK,EAAO,KAAO,GAAK,CAAC,EAAQ,EAExD,QAAS,EAAI,EAAM,EAAI,EAAM,IAAK,CACjC,GAAI,EAAI,GAAK,GAAK,EAAO,KAAM,SAE/B,IAAI,EAAQ,EACR,EAAI,EACF,EAAM,EAAQ,EAAI,EAAS,EAAI,CAAC,EAAQ,EAAI,EAElD,QAAW,KAAQ,KAAK,MAAM,gBAAgB,CAAC,EAAG,CAEjD,GAAI,EAAK,EAAI,EAAM,CAClB,GAAS,EAAK,MACd,SAED,GAAI,EAAK,GAAK,EAAM,CAEnB,GAAI,IAAU,GAAK,EAAI,EAAM,CAC5B,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EACV,KAAK,SACJ,EACA,EACA,KAAK,IAAI,EAAG,CAAC,EACb,KAAK,IAAI,EAAO,MAAO,CAAI,EAC3B,CACD,EAGF,MAID,GAAI,EAAK,EAAI,GAAK,IAAU,EAAG,CAC9B,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EAAG,CACb,IAAM,EAAQ,KAAK,IAAI,EAAG,CAAC,EACrB,EAAM,KAAK,IAAI,EAAO,MAAO,EAAK,CAAC,EACzC,KAAK,SAAS,EAAQ,EAAK,EAAO,EAAK,CAAI,GAM7C,IAAM,EADc,GAAS,GAAY,GACd,EAAK,KAC1B,EAAO,KAAK,cAAc,GAAS,GAAa,EAAI,CAAQ,EAElE,GAAI,EAAO,GAAK,EAAK,GAAK,GAAK,EAAK,EAAI,EAAO,MAC9C,KAAK,SAAS,EAAQ,EAAK,EAAK,EAAG,CAAI,EAGxC,GAAS,EAAK,MACd,EAAI,EAAK,EAAI,EAId,GAAI,EAAI,GAAQ,EAAI,EAAO,OAAS,IAAU,EAAG,CAChD,IAAM,EAAO,KAAK,cAAc,EAAO,CAAQ,EAC/C,GAAI,EAAO,EACV,KAAK,SAAS,EAAQ,EAAK,EAAG,KAAK,IAAI,EAAO,MAAO,CAAI,EAAG,CAAI,IAKrE,CCxqBO,SAAS,EAAa,CAC5B,EACA,EACA,EACA,EAAkB,EAClB,EAAkB,EAClB,EAAiB,GACV,CACP,IAAI,EAAS,EACT,EAAS,EACT,EAAY,GAEhB,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IAAK,CAET,GAAI,EACH,EAAO,OAAO,EAAQ,CAAM,EAI7B,IAAM,EAAI,GAAW,EAAI,EAAG,EAAO,CAAO,EACpC,EAAI,EACP,GAAgB,EAAI,EAAG,EAAO,CAAO,EACrC,GAAW,EAAI,EAAG,EAAO,CAAO,EAEnC,EAAO,OAAO,EAAG,CAAC,EAClB,EAAS,EACT,EAAS,EACT,EAAY,GACZ,KACD,KAEK,IAAK,CACT,IAAM,EAAI,GAAW,EAAI,EAAG,EAAO,CAAO,EACpC,EAAI,EACP,GAAgB,EAAI,EAAG,EAAO,CAAO,EACrC,GAAW,EAAI,EAAG,EAAO,CAAO,EAEnC,EAAO,OAAO,EAAG,CAAC,EAClB,KACD,KAEK,IAAK,CACT,IAAM,EAAK,GAAW,EAAI,GAAI,EAAO,CAAO,EACtC,EAAK,EACR,GAAgB,EAAI,GAAI,EAAO,CAAO,EACtC,GAAW,EAAI,GAAI,EAAO,CAAO,EAC9B,EAAI,GAAW,EAAI,EAAG,EAAO,CAAO,EACpC,EAAI,EACP,GAAgB,EAAI,EAAG,EAAO,CAAO,EACrC,GAAW,EAAI,EAAG,EAAO,CAAO,EAEnC,EAAO,QAAQ,EAAI,EAAI,EAAG,CAAC,EAC3B,KACD,KAEK,IAAK,CACT,IAAM,EAAM,GAAW,EAAI,GAAI,EAAO,CAAO,EACvC,EAAM,EACT,GAAgB,EAAI,GAAI,EAAO,CAAO,EACtC,GAAW,EAAI,GAAI,EAAO,CAAO,EAC9B,EAAM,GAAW,EAAI,GAAI,EAAO,CAAO,EACvC,EAAM,EACT,GAAgB,EAAI,GAAI,EAAO,CAAO,EACtC,GAAW,EAAI,GAAI,EAAO,CAAO,EAC9B,EAAI,GAAW,EAAI,EAAG,EAAO,CAAO,EACpC,EAAI,EACP,GAAgB,EAAI,EAAG,EAAO,CAAO,EACrC,GAAW,EAAI,EAAG,EAAO,CAAO,EAEnC,EAAO,QAAQ,EAAK,EAAK,EAAK,EAAK,EAAG,CAAC,EACvC,KACD,KAEK,IAAK,CAET,GAAI,EACH,EAAO,OAAO,EAAQ,CAAM,EAC5B,EAAY,GAEb,KACD,EAKF,GAAI,EACH,EAAO,OAAO,EAAQ,CAAM,EAO9B,SAAS,EAAU,CAAC,EAAe,EAAe,EAAwB,CACzE,OAAO,KAAK,OAAO,EAAQ,EAAQ,GAAU,EAAS,EAOvD,SAAS,EAAe,CAAC,EAAe,EAAe,EAAwB,CAC9E,OAAO,KAAK,OAAO,CAAC,EAAQ,EAAQ,GAAU,EAAS,EAMjD,SAAS,EAAa,CAC5B,EACA,EACA,EAAiB,GACmD,CACpE,GAAI,CAAC,EAAK,OAAQ,OAAO,KAEzB,IAAM,EAAI,EAAK,OAEf,GAAI,EACH,MAAO,CACN,KAAM,KAAK,MAAM,EAAE,KAAO,CAAK,EAC/B,KAAM,KAAK,MAAM,CAAC,EAAE,KAAO,CAAK,EAChC,KAAM,KAAK,KAAK,EAAE,KAAO,CAAK,EAC9B,KAAM,KAAK,KAAK,CAAC,EAAE,KAAO,CAAK,CAChC,EAEA,WAAO,CACN,KAAM,KAAK,MAAM,EAAE,KAAO,CAAK,EAC/B,KAAM,KAAK,MAAM,EAAE,KAAO,CAAK,EAC/B,KAAM,KAAK,KAAK,EAAE,KAAO,CAAK,EAC9B,KAAM,KAAK,KAAK,EAAE,KAAO,CAAK,CAC/B,EC5RK,SAAS,EAAc,CAAC,EAA8B,CAC5D,GAAI,CAAC,EAAK,UAAY,EAAK,SAAS,SAAW,EAC9C,OAAO,KAGR,IAAI,EAAO,IACP,EAAO,IACP,EAAO,KACP,EAAO,KAEP,EAAW,EACX,EAAW,EACX,EAAY,GAEV,EAAe,CAAC,EAAW,IAAc,CAC9C,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAY,IAGb,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IAAK,CACT,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAU,CAAQ,EAC/B,KACD,KAEK,IAAK,CACT,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAU,CAAQ,EAC/B,KACD,KAEK,IAAK,CAMT,EAAa,EAAI,EAAG,EAAI,CAAC,EAGzB,IAAM,EAAW,GAAoB,EAAU,EAAI,GAAI,EAAI,CAAC,EAC5D,QAAW,KAAK,EAAU,CACzB,IAAM,EAAI,GAAkB,EAAU,EAAI,GAAI,EAAI,EAAG,CAAC,EACtD,EAAa,EAAG,CAAQ,EAIzB,IAAM,EAAW,GAAoB,EAAU,EAAI,GAAI,EAAI,CAAC,EAC5D,QAAW,KAAK,EAAU,CACzB,IAAM,EAAI,GAAkB,EAAU,EAAI,GAAI,EAAI,EAAG,CAAC,EACtD,EAAa,EAAU,CAAC,EAIzB,IAAM,EAAa,IAAI,IAAI,CAAC,GAAG,EAAU,GAAG,CAAQ,CAAC,EACrD,QAAW,KAAK,EAAY,CAC3B,IAAM,EAAI,GAAkB,EAAU,EAAI,GAAI,EAAI,EAAG,CAAC,EAChD,EAAI,GAAkB,EAAU,EAAI,GAAI,EAAI,EAAG,CAAC,EACtD,EAAa,EAAG,CAAC,EAGlB,EAAW,EAAI,EACf,EAAW,EAAI,EACf,KACD,KAEK,IAAK,CAKT,EAAa,EAAI,EAAG,EAAI,CAAC,EAGzB,IAAM,EAAW,GAAgB,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAChE,QAAW,KAAK,EAAU,CACzB,IAAM,EAAI,GAAc,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EAC1D,EAAa,EAAG,CAAQ,EAIzB,IAAM,EAAW,GAAgB,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAChE,QAAW,KAAK,EAAU,CACzB,IAAM,EAAI,GAAc,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EAC1D,EAAa,EAAU,CAAC,EAIzB,IAAM,EAAa,IAAI,IAAI,CAAC,GAAG,EAAU,GAAG,CAAQ,CAAC,EACrD,QAAW,KAAK,EAAY,CAC3B,IAAM,EAAI,GAAc,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EACpD,EAAI,GAAc,EAAU,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EAC1D,EAAa,EAAG,CAAC,EAGlB,EAAW,EAAI,EACf,EAAW,EAAI,EACf,KACD,KAEK,IAEJ,MAKH,GAAI,CAAC,EACJ,OAAO,KAGR,MAAO,CAAE,OAAM,OAAM,OAAM,MAAK,EAqB1B,SAAS,EAAmB,CAClC,EACA,EACA,EACW,CACX,IAAM,EAAc,EAAK,EAAI,EAAK,EAGlC,GAAI,KAAK,IAAI,CAAW,EAAI,aAC3B,MAAO,CAAC,EAGT,IAAM,GAAK,EAAK,GAAM,EAGtB,GAAI,EAAI,GAAK,EAAI,EAChB,MAAO,CAAC,CAAC,EAGV,MAAO,CAAC,EAsBF,SAAS,EAAe,CAC9B,EACA,EACA,EACA,EACW,CACX,IAAM,EAAI,GAAK,EAAK,EAAI,EAAK,EAAI,EAAK,GAChC,EAAI,GAAK,EAAK,EAAI,EAAK,GACvB,EAAI,GAAK,EAAK,GAEd,EAAoB,CAAC,EAG3B,GAAI,KAAK,IAAI,CAAC,EAAI,aAAO,CAExB,GAAI,KAAK,IAAI,CAAC,EAAI,aACjB,MAAO,CAAC,EAGT,IAAM,EAAI,CAAC,EAAI,EACf,GAAI,EAAI,GAAK,EAAI,EAChB,EAAQ,KAAK,CAAC,EAEf,OAAO,EAIR,IAAM,EAAe,EAAI,EAAI,EAAI,EAAI,EAGrC,GAAI,EAAe,EAClB,MAAO,CAAC,EAIT,GAAI,KAAK,IAAI,CAAY,EAAI,aAAO,CACnC,IAAM,EAAI,CAAC,GAAK,EAAI,GACpB,GAAI,EAAI,GAAK,EAAI,EAChB,EAAQ,KAAK,CAAC,EAEf,OAAO,EAIR,IAAM,EAAQ,KAAK,KAAK,CAAY,EAC9B,GAAM,CAAC,EAAI,IAAU,EAAI,GACzB,GAAM,CAAC,EAAI,IAAU,EAAI,GAE/B,GAAI,EAAK,GAAK,EAAK,EAClB,EAAQ,KAAK,CAAE,EAEhB,GAAI,EAAK,GAAK,EAAK,EAClB,EAAQ,KAAK,CAAE,EAGhB,OAAO,EAcD,SAAS,EAAiB,CAChC,EACA,EACA,EACA,EACS,CACT,IAAM,EAAY,EAAI,EACtB,OAAO,EAAY,EAAY,EAAK,EAAI,EAAY,EAAI,EAAK,EAAI,EAAI,EAe/D,SAAS,EAAa,CAC5B,EACA,EACA,EACA,EACA,EACS,CACT,IAAM,EAAY,EAAI,EAChB,EAAa,EAAY,EACzB,EAAK,EAAI,EAEf,OACC,EAAa,EAAY,EACzB,EAAI,EAAa,EAAI,EACrB,EAAI,EAAY,EAAK,EACrB,EAAK,EAAI,ECjTJ,SAAS,EAAc,CAC7B,EACA,EACA,EACS,CACT,GAAI,IAAc,GAAK,IAAc,EACpC,OAAO,GAAW,CAAM,EAGzB,IAAM,EAAS,EAAa,EAAO,MAAO,EAAO,KAAM,EAAO,SAAS,EAEvE,GAAI,EAAO,cACV,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAI,EAAS,EAEb,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IAEA,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IACC,CACD,IAAM,EAAK,EAAI,EACT,EAAK,EAAI,EAEf,GAAI,GAAM,GAAK,EAAK,EAAO,OAAS,GAAM,GAAK,EAAK,EAAO,KAAM,CAChE,IAAM,EAAM,EAAO,OAAO,EAAK,EAAO,MAAQ,IAAO,EACrD,EAAS,KAAK,IAAI,EAAQ,CAAG,GAKhC,EAAO,OAAO,EAAI,EAAO,MAAQ,GAAK,EAGlC,QAAI,EAAO,cACjB,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAI,EAAS,GAEb,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IACC,CACD,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IACC,CACD,IAAM,EAAK,EAAI,EACT,EAAK,EAAI,EAEf,GAAI,GAAM,GAAK,EAAK,EAAO,OAAS,GAAM,GAAK,EAAK,EAAO,KAAM,CAChE,IAAM,EAAU,EAAK,EAAO,OAAS,GAAM,GACrC,EAAS,GAAK,EAAK,GAEzB,IADc,EAAO,OAAO,IAAY,IAAM,EAAU,EAC/C,CACR,EAAS,GACT,QAIH,GAAI,EAAQ,MAGb,GAAI,EAAQ,CACX,IAAM,EAAa,EAAI,EAAO,OAAS,GAAK,GACtC,EAAY,GAAK,EAAI,GAC3B,EAAO,OAAO,IAAe,GAAK,GAI/B,QACN,EAAO,eACP,EAAO,cAEP,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAI,EAAO,EACV,EAAO,EACP,EAAO,EAER,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IAEA,QACK,EAAK,CAAC,KAAK,MAAM,CAAS,EAC9B,GAAM,KAAK,KAAK,CAAS,EACzB,IACC,CACD,IAAM,EAAK,EAAI,EACT,EAAK,EAAI,EAEf,GAAI,GAAM,GAAK,EAAK,EAAO,OAAS,GAAM,GAAK,EAAK,EAAO,KAAM,CAChE,IAAM,EAAM,EAAK,EAAO,MAAQ,EAAK,EACrC,EAAO,KAAK,IAAI,EAAM,EAAO,OAAO,IAAQ,CAAC,EAC7C,EAAO,KAAK,IAAI,EAAM,EAAO,OAAO,EAAM,IAAM,CAAC,EACjD,EAAO,KAAK,IAAI,EAAM,EAAO,OAAO,EAAM,IAAM,CAAC,GAKpD,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EACtC,EAAO,OAAO,GAAU,EACxB,EAAO,OAAO,EAAS,GAAK,EAC5B,EAAO,OAAO,EAAS,GAAK,EAK/B,OAAO,EAMD,SAAS,EAAa,CAAC,EAAgB,EAA+B,CAC5E,GAAI,EAAO,YAAc,EACxB,OAAO,EAGR,IAAM,EAAS,EAAa,EAAO,MAAO,EAAO,KAAM,CAAU,EAEjE,GAAI,EAAO,eAAgC,OAC1C,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAEjC,IADa,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,IACxC,IAAK,CAChB,IAAM,EAAU,EAAI,EAAO,OAAS,GAAK,GACnC,EAAS,GAAK,EAAI,GACxB,EAAO,OAAO,IAAY,GAAK,GAI5B,QACN,EAAO,eACP,MAEA,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAU,EAAI,EAAO,OAAS,GAAK,GACnC,EAAS,GAAK,EAAI,GAClB,GAAQ,EAAO,OAAO,IAAY,IAAM,EAAU,EACxD,EAAO,OAAO,EAAI,EAAO,MAAQ,GAAK,EAAM,IAAM,EAG9C,QACN,EAAO,eACP,MAEA,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAO,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,EAC9C,EAAS,EAAI,EAAO,MAAQ,EAAI,EACtC,EAAO,OAAO,GAAU,EACxB,EAAO,OAAO,EAAS,GAAK,EAC5B,EAAO,OAAO,EAAS,GAAK,EAGxB,QACN,EAAO,eACP,MAEA,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAU,EAAI,EAAO,OAAS,GAAK,GACnC,EAAS,GAAK,EAAI,GAElB,GADQ,EAAO,OAAO,IAAY,IAAM,EAAU,EACtC,IAAM,EAClB,EAAS,EAAI,EAAO,MAAQ,EAAI,EACtC,EAAO,OAAO,GAAU,EACxB,EAAO,OAAO,EAAS,GAAK,EAC5B,EAAO,OAAO,EAAS,GAAK,EAGxB,QACN,EAAO,eACP,MAEA,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAO,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,EAC9C,EAAS,EAAI,EAAO,MAAQ,EAAI,EACtC,EAAO,OAAO,GAAU,EACxB,EAAO,OAAO,EAAS,GAAK,EAC5B,EAAO,OAAO,EAAS,GAAK,EAGxB,QACN,EAAO,eACP,MAEA,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAChC,EAAI,EAAO,OAAO,IAAW,EAC7B,EAAI,EAAO,OAAO,EAAS,IAAM,EACjC,EAAI,EAAO,OAAO,EAAS,IAAM,EACvC,EAAO,OAAO,EAAI,EAAO,MAAQ,GAAK,KAAK,OAAO,EAAI,EAAI,GAAK,CAAC,EAKnE,OAAO,EAMD,SAAS,EAAW,CAC1B,EACA,EACA,EACA,EACA,EACO,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,EAAU,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAO,CAAC,EAE1C,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAC,EACvB,EAAS,KAAK,IAAI,EAAG,CAAC,CAAC,EACvB,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAC,EACxC,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAC,EAE5C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAChC,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAI,EACT,EAAK,EAAI,EAEf,GAAI,GAAM,GAAK,EAAK,EAAI,OAAS,GAAM,GAAK,EAAK,EAAI,KAAM,CAC1D,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAG5C,GAFS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,GAEzB,EAAS,EAClC,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,IAAI,IAAK,KAAK,MAAM,CAAO,CAAC,IAShE,SAAS,EAAU,CAAC,EAAwB,CAClD,MAAO,CACN,OAAQ,IAAI,WAAW,EAAO,MAAM,EACpC,MAAO,EAAO,MACd,KAAM,EAAO,KACb,MAAO,EAAO,MACd,UAAW,EAAO,UAClB,SAAU,EAAO,QAClB,EAMM,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,IAAM,EAAS,EAAa,EAAU,EAAW,EAAO,SAAS,EAE3D,EAAS,EAAO,MAAQ,EACxB,EAAS,EAAO,KAAO,EAE7B,GAAI,EAAO,cACV,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAK,KAAK,MAAM,EAAI,CAAM,EAC1B,EAAK,KAAK,MAAM,EAAI,CAAM,EAChC,EAAO,OAAO,EAAI,EAAO,MAAQ,GAChC,EAAO,OAAO,EAAK,EAAO,MAAQ,IAAO,EAGtC,QAAI,EAAO,cACjB,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAK,KAAK,MAAM,EAAI,CAAM,EAG1B,EAFK,KAAK,MAAM,EAAI,CAAM,EAER,EAAO,OAAS,GAAM,GACxC,EAAY,GAAK,EAAK,GAG5B,IAFc,EAAO,OAAO,IAAe,IAAM,EAAa,EAErD,CACR,IAAM,EAAa,EAAI,EAAO,OAAS,GAAK,GACtC,EAAY,GAAK,EAAI,GAC3B,EAAO,OAAO,IAAe,GAAK,GAI/B,QACN,EAAO,eACP,EAAO,cAEP,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAK,KAAK,MAAM,EAAI,CAAM,EAG1B,EAFK,KAAK,MAAM,EAAI,CAAM,EAEZ,EAAO,MAAQ,EAAK,EAClC,EAAS,EAAI,EAAO,MAAQ,EAAI,EAEtC,EAAO,OAAO,GAAU,EAAO,OAAO,IAAW,EACjD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,EACzD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,EAK5D,OAAO,EAQD,SAAS,EAAU,CACzB,EACA,EACA,EAAe,EACf,EAAe,EACR,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAI,EAC3C,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAI,EAE/C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,KAAM,SAE9B,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,MAAO,SAE/B,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAC5C,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAClD,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,IAAI,IAAK,EAAS,CAAM,IAU3D,SAAS,EAAU,CACzB,EACA,EACA,EAAe,EACf,EAAe,EACR,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAI,EAC3C,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAI,EAE/C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,KAAM,SAE9B,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,MAAO,SAE/B,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAC5C,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAElD,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,OACrC,EAAS,EAAS,KAAO,GAC3B,IAUI,SAAS,EAAU,CACzB,EACA,EACA,EAAe,EACf,EAAe,EACR,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAI,EAC3C,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAI,EAE/C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,KAAM,SAE9B,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,MAAO,SAE/B,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAC5C,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAClD,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,IAAI,EAAG,EAAS,CAAM,IAUzD,SAAS,EAAgB,CAC/B,EACA,EACA,EAAe,EACf,EAAe,EACR,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAI,EAC3C,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAI,EAE/C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,KAAM,SAE9B,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,MAAO,SAE/B,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAC5C,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAE5C,EAAS,EAAS,KAAK,OAAO,GAAU,IAAM,GAAU,KAAO,GAAG,EACxE,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,IAAI,IAAK,CAAM,IASlD,SAAS,EAAW,CAC1B,EACA,EACA,EACS,CACT,IAAM,EAAS,EAAa,EAAO,MAAO,EAAO,KAAM,EAAO,SAAS,EAEvE,GAAI,EAAO,cACV,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACrC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,KAAM,SAEjC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,MAAO,SAElC,EAAO,OAAO,EAAI,EAAO,MAAQ,GAChC,EAAO,OAAO,EAAK,EAAO,MAAQ,IAAO,GAGtC,QAAI,EAAO,cACjB,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACrC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,KAAM,SAEjC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,MAAO,SAElC,IAAM,EAAa,EAAK,EAAO,OAAS,GAAM,GACxC,EAAY,GAAK,EAAK,GAG5B,IAFc,EAAO,OAAO,IAAe,IAAM,EAAa,EAErD,CACR,IAAM,EAAa,EAAI,EAAO,OAAS,GAAK,GACtC,EAAY,GAAK,EAAI,GAC3B,EAAO,OAAO,IAAe,GAAK,IAI/B,QACN,EAAO,eACP,EAAO,cAEP,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACrC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,KAAM,SAEjC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAK,EAAI,EACf,GAAI,EAAK,GAAK,GAAM,EAAO,MAAO,SAElC,IAAM,EAAS,EAAK,EAAO,MAAQ,EAAK,EAClC,EAAS,EAAI,EAAO,MAAQ,EAAI,EAEtC,EAAO,OAAO,GAAU,EAAO,OAAO,IAAW,EACjD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,EACzD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,GAK5D,OAAO,EAQD,SAAS,EAAU,CACzB,EACA,EACA,EAAiB,EACjB,EAAiB,EACjB,EAAoB,IACb,CACP,GACC,EAAc,eACd,EAAY,cAEZ,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAM,EAC5B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAM,EAC5B,EAAO,KAAK,IAAI,EAAY,MAAO,EAAc,MAAQ,CAAM,EAC/D,EAAO,KAAK,IAAI,EAAY,KAAM,EAAc,KAAO,CAAM,EAEnE,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAS,EACpB,GAAI,EAAK,GAAK,GAAM,EAAc,KAAM,SAExC,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAS,EACpB,GAAI,EAAK,GAAK,GAAM,EAAc,MAAO,SAGzC,IADiB,EAAY,OAAO,EAAK,EAAY,MAAQ,IAAO,IACpD,EAEf,EAAc,OAAO,EAAK,EAAc,MAAQ,GAAM,IAWnD,SAAS,EAAU,CACzB,EACA,EACA,EAAe,EACf,EAAe,EACR,CACP,GAAI,EAAI,eAAgC,EAAI,cAC3C,OAGD,IAAM,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAS,KAAK,IAAI,EAAG,CAAC,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAI,MAAO,EAAI,MAAQ,CAAI,EAC3C,EAAO,KAAK,IAAI,EAAI,KAAM,EAAI,KAAO,CAAI,EAE/C,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,KAAM,SAE9B,QAAS,EAAK,EAAQ,EAAK,EAAM,IAAM,CACtC,IAAM,EAAK,EAAO,EAClB,GAAI,EAAK,GAAK,GAAM,EAAI,MAAO,SAE/B,IAAM,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAC5C,EAAS,EAAI,OAAO,EAAK,EAAI,MAAQ,IAAO,EAClD,EAAI,OAAO,EAAK,EAAI,MAAQ,GAAM,KAAK,IAAI,EAAQ,CAAM,IASrD,SAAS,EAAS,CACxB,EACA,EACA,EACA,EACA,EACS,CACT,IAAM,EAAW,EAAO,MAAQ,EAAU,EACpC,EAAY,EAAO,KAAO,EAAS,EACnC,EAAS,EAAa,EAAU,EAAW,EAAO,SAAS,EAEjE,GAAI,EAAO,cACV,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IACjC,EAAO,OAAQ,GAAI,GAAU,EAAO,OAAS,EAAI,IAChD,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,EAGpC,QACN,EAAO,eACP,EAAO,cAEP,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAChC,GAAU,EAAI,GAAU,EAAO,OAAS,EAAI,GAAW,EAC7D,EAAO,OAAO,GAAU,EAAO,OAAO,IAAW,EACjD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,EACzD,EAAO,OAAO,EAAS,GAAK,EAAO,OAAO,EAAS,IAAM,EAK5D,OAAO,EAOD,SAAS,EAAW,CAC1B,EACA,EACA,EACA,EAOC,CAID,IAAqB,MAAf,EACgB,KAAhB,GAAY,EAEZ,EAAU,EACV,EAAS,EACT,EAAW,EAAO,EAAI,MACtB,EAAY,EAAO,EAAI,KAEvB,EAAO,KAAK,IAVF,EAUe,CAAO,EAChC,EAAM,KAAK,IAVF,EAUc,CAAM,EAC7B,EAAQ,KAAK,IAAI,EAAU,CAAQ,EACnC,EAAS,KAAK,IAAI,EAAW,CAAS,EAEtC,EAAW,EAAQ,EACnB,EAAY,EAAS,EAErB,EAAW,EAAa,EAAU,EAAW,EAAI,SAAS,EAE1D,EApBU,EAoBa,EACvB,EApBS,EAoBa,EACtB,EAAa,EAAU,EACvB,EAAa,EAAS,EAG5B,GAAI,EAAI,cACP,QAAS,EAAI,EAAG,EAAI,EAAI,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,EAAI,MAAO,IAC9B,EAAS,OAAQ,GAAI,GAAc,EAAS,OAAS,EAAI,IACxD,EAAI,OAAO,EAAI,EAAI,MAAQ,IAAM,EAKrC,MAAO,CAAE,WAAU,aAAY,aAAY,aAAY,YAAW,EClsB5D,SAAS,EAAoB,CAAC,EAA8B,CAClE,GAAI,GAAU,EACb,OAAO,IAAI,aAAa,CAAC,CAAG,CAAC,EAK9B,IAAM,EAAQ,EACR,EAAO,KAAK,KAAK,EAAS,CAAC,EAAI,EAAI,EACnC,EAAS,IAAI,aAAa,CAAI,EAC9B,EAAS,KAAK,MAAM,EAAO,CAAC,EAE9B,EAAM,EAGV,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAI,EAAI,EACR,EAAS,KAAK,IAAI,EAAE,EAAI,IAAM,EAAI,EAAQ,EAAM,EACtD,EAAO,GAAK,EACZ,GAAO,EAIR,QAAS,EAAI,EAAG,EAAI,EAAM,IACzB,EAAO,IAAM,EAGd,OAAO,EAMR,SAAS,EAAkB,CAC1B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAS,KAAK,MAAM,EAAO,OAAS,CAAC,EAE3C,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAI,EAAM,EAEV,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACvC,IAAM,EAAK,EAAI,EAAI,EAGb,EAAW,KAAK,IAAI,EAAG,KAAK,IAAI,EAAQ,EAAG,CAAE,CAAC,EAC9C,EAAS,EAAI,EAAW,EAAW,EAAW,EACpD,IAAQ,EAAI,IAAW,GAAK,EAAO,GAGpC,IAAM,EAAS,EAAI,EAAW,EAAI,EAAW,EAC7C,EAAI,GAAU,KAAK,IAAI,IAAK,KAAK,IAAI,EAAG,KAAK,MAAM,CAAG,CAAC,CAAC,GAS5D,SAAS,EAAgB,CACxB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAS,KAAK,MAAM,EAAO,OAAS,CAAC,EAE3C,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAC1B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAI,EAAM,EAEV,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACvC,IAAM,EAAK,EAAI,EAAI,EAIb,EADW,KAAK,IAAI,EAAG,KAAK,IAAI,EAAS,EAAG,CAAE,CAAC,EAC3B,EAAW,EAAI,EAAW,EACpD,IAAQ,EAAI,IAAW,GAAK,EAAO,GAGpC,IAAM,EAAS,EAAI,EAAW,EAAI,EAAW,EAC7C,EAAI,GAAU,KAAK,IAAI,IAAK,KAAK,IAAI,EAAG,KAAK,MAAM,CAAG,CAAC,CAAC,GAUrD,SAAS,EAAY,CAAC,EAAgB,EAAwB,CAEpE,GAAI,EAAO,cAA8B,CACxC,IAAM,EAAY,GAAc,GAAsB,EACtD,OAAO,GAAa,EAAW,CAAM,EAGtC,GAAI,GAAU,EACb,OAAO,EAGR,IAAM,EAAS,GAAqB,CAAM,EAGtC,EAAW,EACf,GACC,EAAO,eACP,EAAO,cAEP,EAAW,EACL,QAAI,EAAO,cACjB,EAAW,EAIZ,IAAM,EAAO,IAAI,WAAW,EAAO,OAAO,MAAM,EA0BhD,OAvBA,GACC,EAAO,OACP,EACA,EAAO,MACP,EAAO,KACP,EAAO,MACP,EAAO,MACP,EACA,CACD,EAGA,GACC,EACA,EAAO,OACP,EAAO,MACP,EAAO,KACP,EAAO,MACP,EAAO,MACP,EACA,CACD,EAEO,EAOD,SAAS,EAAO,CAAC,EAAgB,EAAwB,CAE/D,GAAI,EAAO,cAA8B,CACxC,IAAM,EAAY,GAAc,GAAsB,EACtD,OAAO,GAAQ,EAAW,CAAM,EAGjC,GAAI,GAAU,EACb,OAAO,EAIR,IAAI,EAAW,EACf,GACC,EAAO,eACP,EAAO,cAEP,EAAW,EACL,QAAI,EAAO,cACjB,EAAW,EAGZ,IAAM,EAAU,KAAK,MAAM,CAAM,EAC3B,EAAc,EAAU,EAAI,EAG5B,EAAO,IAAI,WAAW,EAAO,OAAO,MAAM,EAGhD,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAElC,IAAI,EAAM,EACN,EAAQ,EAGZ,QAAS,EAAI,CAAC,EAAS,GAAK,EAAS,IACpC,GAAI,GAAK,GAAK,EAAI,EAAO,MAAO,CAC/B,IAAM,EAAM,EAAI,EAAO,MAAQ,EAAI,EAAW,EAC9C,GAAO,EAAO,OAAO,IAAQ,EAC7B,IAKF,IAAM,EAAU,EAAI,EAAO,MAAQ,EAAI,EAAW,EAClD,EAAK,GAAW,KAAK,MAAM,EAAM,CAAK,EAGtC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CAEtC,IAAM,EAAQ,EAAI,EAAU,EAC5B,GAAI,GAAS,EAAG,CACf,IAAM,EAAU,EAAI,EAAO,MAAQ,EAAQ,EAAW,EACtD,GAAO,EAAO,OAAO,IAAY,EACjC,IAID,IAAM,EAAS,EAAI,EACnB,GAAI,EAAS,EAAO,MAAO,CAC1B,IAAM,EAAW,EAAI,EAAO,MAAQ,EAAS,EAAW,EACxD,GAAO,EAAO,OAAO,IAAa,EAClC,IAGD,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAAW,EACjD,EAAK,GAAU,KAAK,MAAM,EAAM,CAAK,GAMxC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IACjC,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAElC,IAAI,EAAM,EACN,EAAQ,EAGZ,QAAS,EAAI,CAAC,EAAS,GAAK,EAAS,IACpC,GAAI,GAAK,GAAK,EAAI,EAAO,KAAM,CAC9B,IAAM,EAAM,EAAI,EAAO,MAAQ,EAAI,EAAW,EAC9C,GAAO,EAAK,IAAQ,EACpB,IAKF,IAAM,EAAU,EAAI,EAAO,MAAQ,EAAI,EAAW,EAClD,EAAO,OAAO,GAAW,KAAK,MAAM,EAAM,CAAK,EAG/C,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CAErC,IAAM,EAAO,EAAI,EAAU,EAC3B,GAAI,GAAQ,EAAG,CACd,IAAM,EAAS,EAAO,EAAO,MAAQ,EAAI,EAAW,EACpD,GAAO,EAAK,IAAW,EACvB,IAID,IAAM,EAAU,EAAI,EACpB,GAAI,EAAU,EAAO,KAAM,CAC1B,IAAM,EAAY,EAAU,EAAO,MAAQ,EAAI,EAAW,EAC1D,GAAO,EAAK,IAAc,EAC1B,IAGD,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAAW,EACjD,EAAO,OAAO,GAAU,KAAK,MAAM,EAAM,CAAK,GAKjD,OAAO,EAUD,SAAS,EAAU,CACzB,EACA,EACA,EAA2B,WAClB,CACT,GAAI,IAAS,MACZ,OAAO,GAAQ,EAAQ,CAAM,EAE7B,YAAO,GAAa,EAAQ,CAAM,ECtPpC,SAAS,EAAS,CACjB,EACA,EACA,EACmC,CACnC,MAAO,CACN,KAAK,MAAM,EAAO,IAAM,EAAO,GAAK,EAAO,IAAM,CAAC,EAClD,KAAK,MAAM,EAAO,IAAM,EAAO,GAAK,EAAO,IAAM,CAAC,EAClD,KAAK,MAAM,EAAO,IAAM,EAAO,GAAK,EAAO,IAAM,CAAC,EAClD,KAAK,MAAM,EAAO,IAAM,EAAO,GAAK,EAAO,IAAM,CAAC,CACnD,EAMM,SAAS,EAAmB,CAClC,EACA,EACA,EACmC,CACnC,GAAI,EAAS,MAAM,SAAW,EAC7B,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EAGnB,GAAI,EAAS,MAAM,SAAW,EAC7B,OAAO,EAAS,MAAM,GAAG,MAG1B,IAAI,EAEJ,GAAI,EAAS,OAAS,SAAU,CAC/B,IAAM,EAAK,EAAS,GAAK,EAAS,GAC5B,EAAK,EAAS,GAAK,EAAS,GAC5B,EAAW,EAAK,EAAK,EAAK,EAEhC,GAAI,IAAa,EAChB,OAAO,EAAS,MAAM,GAAG,MAG1B,IAAM,EAAK,EAAI,EAAS,GAClB,EAAK,EAAI,EAAS,GACxB,GAAK,EAAK,EAAK,EAAK,GAAM,EACpB,KACN,IAAM,EAAK,EAAI,EAAS,GAClB,EAAK,EAAI,EAAS,GAClB,EAAW,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EAC5C,EAAI,EAAS,OAAS,EAAI,EAAW,EAAS,OAAS,EAGxD,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,EAE9B,IAAM,EAAc,CAAC,GAAG,EAAS,KAAK,EAAE,KAAK,CAAC,EAAG,IAAM,EAAE,OAAS,EAAE,MAAM,EAE1E,GAAI,GAAK,EAAY,GAAG,OACvB,OAAO,EAAY,GAAG,MAGvB,GAAI,GAAK,EAAY,EAAY,OAAS,GAAG,OAC5C,OAAO,EAAY,EAAY,OAAS,GAAG,MAG5C,QAAS,EAAI,EAAG,EAAI,EAAY,OAAS,EAAG,IAAK,CAChD,IAAM,EAAQ,EAAY,GACpB,EAAQ,EAAY,EAAI,GAE9B,GAAI,GAAK,EAAM,QAAU,GAAK,EAAM,OAAQ,CAC3C,IAAM,EAAQ,EAAM,OAAS,EAAM,OACnC,GAAI,IAAU,EACb,OAAO,EAAM,MAEd,IAAM,GAAU,EAAI,EAAM,QAAU,EACpC,OAAO,GAAU,EAAM,MAAO,EAAM,MAAO,CAAM,GAInD,OAAO,EAAY,EAAY,OAAS,GAAG,MAMrC,SAAS,EAAoB,CACnC,EACA,EACA,EACS,CACT,IAAM,EAAS,EAAa,EAAO,GAAsB,EAEzD,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAQ,GAAoB,EAAU,EAAG,CAAC,EAC1C,GAAO,EAAI,EAAQ,GAAK,EAC9B,EAAO,OAAO,GAAO,EAAM,GAC3B,EAAO,OAAO,EAAM,GAAK,EAAM,GAC/B,EAAO,OAAO,EAAM,GAAK,EAAM,GAC/B,EAAO,OAAO,EAAM,GAAK,EAAM,GAIjC,OAAO,EAOD,SAAS,EAAyB,CACxC,EACA,EACA,EACS,CACT,IAAQ,QAAO,UAAW,EAEpB,EAAiB,GAAc,EAAM,IACvC,EACH,YACA,MAAO,EAAQ,OAAS,EACzB,CAAC,EAEK,EAAe,EAAa,EAAO,GAAsB,EAE/D,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAW,EAAe,OAAO,EAAI,EAAe,MAAQ,IAAM,EAExE,GAAI,EAAW,EAAG,CACjB,IAAM,EAAQ,GAAoB,EAAU,EAAG,CAAC,EAC1C,GAAO,EAAI,EAAQ,GAAK,EAExB,EAAS,EAAM,GAAK,EAAY,IAEtC,EAAa,OAAO,GAAO,EAAM,GACjC,EAAa,OAAO,EAAM,GAAK,EAAM,GACrC,EAAa,OAAO,EAAM,GAAK,EAAM,GACrC,EAAa,OAAO,EAAM,GAAK,KAAK,MAAM,CAAK,GAKlD,OAAO,ECpJD,SAAS,EAAS,CAAC,EAAiB,EAA6B,CACvE,IACC,QACA,SACA,QACA,UAAU,EACV,UAAU,EACV,QAAQ,GACR,SAAS,GACN,EAGE,EAAS,EAAa,EAAO,GAAsB,EAGnD,EAAQ,GAAa,EAAM,EAAO,EAAS,EAAS,CAAK,EAG/D,GAAI,EAAM,SAAW,EAEpB,OADA,EAAO,OAAO,KAAK,CAAC,EACb,EAIR,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAE/B,IAAM,EAAK,EAAI,IACT,EAAK,EAAI,IAGX,EAAU,IACd,QAAW,KAAQ,EAAO,CACzB,IAAM,EAAO,GAAe,EAAI,EAAI,CAAI,EACxC,EAAU,KAAK,IAAI,EAAS,CAAI,EAcjC,IAAM,EAAa,KAVJ,GAAc,EAAI,EAAI,CAAK,EAGd,EAAU,CAAC,GAOA,EAAU,IAC3C,EAAU,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,KAAK,MAAM,CAAU,CAAC,CAAC,EAEjE,EAAO,OAAO,EAAI,EAAO,MAAQ,GAAK,EAIxC,OAAO,EAMR,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACA,EACS,CACT,IAAM,EAAgB,CAAC,EACnB,EAA6B,KAC7B,EAA2B,KAEzB,EAAY,CAAC,EAAW,KAAsB,CACnD,EAAG,EAAI,EAAQ,EACf,EAAG,EAAQ,EAAE,EAAI,GAAS,EAAU,EAAI,EAAQ,CACjD,GAEA,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,EAAe,EAAU,EAAI,EAAG,EAAI,CAAC,EACrC,EAAa,EACb,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EACjC,EAAM,KAAK,CAAE,KAAM,OAAQ,GAAI,EAAc,IAAG,CAAC,EACjD,EAAe,EAEhB,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EACjC,EAAM,KAAK,CAAE,KAAM,YAAa,GAAI,EAAc,KAAI,IAAG,CAAC,EAC1D,EAAe,EAEhB,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EACjC,EAAM,KAAK,CAAE,KAAM,QAAS,GAAI,EAAc,KAAI,KAAI,IAAG,CAAC,EAC1D,EAAe,EAEhB,UAEI,IAEJ,GAAI,GAAgB,EAAY,CAE/B,GACC,KAAK,IAAI,EAAa,EAAI,EAAW,CAAC,EAAI,OAC1C,KAAK,IAAI,EAAa,EAAI,EAAW,CAAC,EAAI,MAE1C,EAAM,KAAK,CAAE,KAAM,OAAQ,GAAI,EAAc,GAAI,CAAW,CAAC,EAE9D,EAAe,EAEhB,MAIH,OAAO,EAMR,SAAS,EAAc,CAAC,EAAY,EAAY,EAAoB,CACnE,OAAQ,EAAK,UACP,OACJ,OAAO,GAAe,EAAI,EAAI,EAAK,GAAI,EAAK,EAAE,MAC1C,YACJ,OAAO,GAAoB,EAAI,EAAI,EAAK,GAAI,EAAK,GAAI,EAAK,EAAE,MACxD,QACJ,OAAO,GAAgB,EAAI,EAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,EAAE,GAOpE,SAAS,EAAc,CAAC,EAAY,EAAY,EAAW,EAAmB,CAC7E,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAQ,EAAK,EAAK,EAAK,EAE7B,GAAI,EAAQ,OAAQ,CAEnB,IAAM,EAAM,EAAK,EAAG,EACd,EAAM,EAAK,EAAG,EACpB,OAAO,KAAK,KAAK,EAAM,EAAM,EAAM,CAAG,EAIvC,IAAI,IAAM,EAAK,EAAG,GAAK,GAAM,EAAK,EAAG,GAAK,GAAM,EAChD,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,EAE9B,IAAM,EAAW,EAAG,EAAI,EAAI,EACtB,EAAW,EAAG,EAAI,EAAI,EAEtB,EAAQ,EAAK,EACb,EAAQ,EAAK,EACnB,OAAO,KAAK,KAAK,EAAQ,EAAQ,EAAQ,CAAK,EAO/C,SAAS,EAAmB,CAC3B,EACA,EACA,EACA,EACA,EACS,CACT,IAAI,EAAU,IAGR,EAAU,GAChB,QAAS,EAAI,EAAG,GAAK,EAAS,IAAK,CAClC,IAAM,EAAI,EAAI,EACR,EAAK,EAAI,EAGT,EAAI,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EACpD,EAAI,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EAEpD,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAO,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACxC,EAAU,KAAK,IAAI,EAAS,CAAI,EAGjC,OAAO,EAOR,SAAS,EAAe,CACvB,EACA,EACA,EACA,EACA,EACA,EACS,CACT,IAAI,EAAU,IAGR,EAAU,GAChB,QAAS,EAAI,EAAG,GAAK,EAAS,IAAK,CAClC,IAAM,EAAI,EAAI,EACR,EAAK,EAAI,EAGT,EACL,EAAK,EAAK,EAAK,EAAG,EAClB,EAAI,EAAK,EAAK,EAAI,EAAG,EACrB,EAAI,EAAK,EAAI,EAAI,EAAG,EACpB,EAAI,EAAI,EAAI,EAAG,EACV,EACL,EAAK,EAAK,EAAK,EAAG,EAClB,EAAI,EAAK,EAAK,EAAI,EAAG,EACrB,EAAI,EAAK,EAAI,EAAI,EAAG,EACpB,EAAI,EAAI,EAAI,EAAG,EAEV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAO,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACxC,EAAU,KAAK,IAAI,EAAS,CAAI,EAGjC,OAAO,EAOR,SAAS,EAAa,CAAC,EAAY,EAAY,EAAwB,CACtE,IAAI,EAAY,EAEhB,QAAW,KAAQ,EAAO,CAEzB,IAAM,EAAS,GAAY,CAAI,EAE/B,QAAS,EAAI,EAAG,EAAI,EAAO,OAAS,EAAG,IAAK,CAC3C,IAAM,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GACtB,GAAI,CAAC,GAAM,CAAC,EAAI,SAIhB,GAAI,EAAG,EAAI,IAAO,EAAG,EAAI,EAAI,CAE5B,IAAM,GAAS,EAAG,EAAI,EAAG,IAAM,EAAG,EAAI,EAAG,GACnC,EAAI,EAAG,EAAI,GAAS,EAAK,EAAG,GAElC,GAAI,EAAK,EACR,MAOJ,OAAQ,EAAY,KAAO,EAM5B,SAAS,EAAW,CAAC,EAAqB,CACzC,OAAQ,EAAK,UACP,OACJ,MAAO,CAAC,EAAK,GAAI,EAAK,EAAE,MAEpB,YAAa,CACjB,IAAM,EAAkB,CAAC,EAAK,EAAE,EAC1B,EAAU,GAChB,QAAS,EAAI,EAAG,GADA,GACc,IAAK,CAClC,IAAM,EAAI,EAFK,GAGT,EAAK,EAAI,EACf,EAAO,KAAK,CACX,EAAG,EAAK,EAAK,EAAK,GAAG,EAAI,EAAI,EAAK,EAAI,EAAK,GAAG,EAAI,EAAI,EAAI,EAAK,GAAG,EAClE,EAAG,EAAK,EAAK,EAAK,GAAG,EAAI,EAAI,EAAK,EAAI,EAAK,GAAG,EAAI,EAAI,EAAI,EAAK,GAAG,CACnE,CAAC,EAEF,OAAO,CACR,KAEK,QAAS,CACb,IAAM,EAAkB,CAAC,EAAK,EAAE,EAC1B,EAAU,GAChB,QAAS,EAAI,EAAG,GADA,GACc,IAAK,CAClC,IAAM,EAAI,EAFK,GAGT,EAAK,EAAI,EACf,EAAO,KAAK,CACX,EACC,EAAK,EAAK,EAAK,EAAK,GAAG,EACvB,EAAI,EAAK,EAAK,EAAI,EAAK,GAAG,EAC1B,EAAI,EAAK,EAAI,EAAI,EAAK,GAAG,EACzB,EAAI,EAAI,EAAI,EAAK,GAAG,EACrB,EACC,EAAK,EAAK,EAAK,EAAK,GAAG,EACvB,EAAI,EAAK,EAAK,EAAI,EAAK,GAAG,EAC1B,EAAI,EAAK,EAAI,EAAI,EAAK,GAAG,EACzB,EAAI,EAAI,EAAI,EAAK,GAAG,CACtB,CAAC,EAEF,OAAO,CACR,GC5UF,SAAS,EAAS,CAAC,EAAmB,CACrC,IAAM,EAAM,KAAK,KAAK,EAAE,EAAI,EAAE,EAAI,EAAE,EAAI,EAAE,CAAC,EAC3C,GAAI,IAAQ,EAAG,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EACnC,MAAO,CAAE,EAAG,EAAE,EAAI,EAAK,EAAG,EAAE,EAAI,CAAI,EAMrC,SAAS,EAAI,CAAC,EAAmB,CAChC,MAAO,CAAE,EAAG,CAAC,EAAE,EAAG,EAAG,EAAE,CAAE,EAM1B,SAAS,EAAY,CAAC,EAAY,EAAoB,CACrD,IAAM,EAAM,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAC9B,EAAQ,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EACtC,OAAO,KAAK,MAAM,EAAO,CAAG,EAM7B,SAAS,EAAW,CACnB,EACA,EACA,EACA,EACA,EACO,CAEP,IAAM,EAAU,GAAK,CAAS,EAGxB,EAAe,CACpB,EAAG,EAAO,EAAI,EAAQ,EAAI,GAAU,EAAY,EAAI,IACpD,EAAG,EAAO,EAAI,EAAQ,EAAI,GAAU,EAAY,EAAI,GACrD,EACM,EAAa,CAClB,EAAG,EAAO,EAAI,EAAQ,EAAI,GAAU,EAAY,EAAI,IACpD,EAAG,EAAO,EAAI,EAAQ,EAAI,GAAU,EAAY,EAAI,GACrD,EAGM,EAAa,CAClB,EAAG,EAAO,EAAI,EAAU,EAAI,EAC5B,EAAG,EAAO,EAAI,EAAU,EAAI,CAC7B,EAGM,EAAe,CACpB,EAAG,EAAM,EAAI,EAAU,EAAI,EAAS,OACpC,EAAG,EAAM,EAAI,EAAU,EAAI,EAAS,MACrC,EACM,EAAe,CACpB,EAAG,EAAI,EAAI,EAAU,EAAI,EAAS,OAClC,EAAG,EAAI,EAAI,EAAU,EAAI,EAAS,MACnC,EAEA,EAAS,KAAK,CAAE,KAAM,IAAK,GAAI,EAAM,EAAG,GAAI,EAAM,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EACzE,EAAS,KAAK,CAAE,KAAM,IAAK,GAAI,EAAM,EAAG,GAAI,EAAM,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EAM1E,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACO,CACP,IAAM,EAAU,GAAK,CAAS,EAGxB,EAAkB,CACvB,EAAG,EAAO,EAAI,EAAU,EAAI,EAC5B,EAAG,EAAO,EAAI,EAAU,EAAI,CAC7B,EAGM,EAAiB,CACtB,EAAG,EAAS,EAAI,EAAQ,EAAI,EAC5B,EAAG,EAAS,EAAI,EAAQ,EAAI,CAC7B,EACM,EAAiB,CACtB,EAAG,EAAS,EAAI,EAAQ,EAAI,EAC5B,EAAG,EAAS,EAAI,EAAQ,EAAI,CAC7B,EAEA,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAQ,EAAG,EAAG,EAAQ,CAAE,CAAC,EACvD,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAQ,EAAG,EAAG,EAAQ,CAAE,CAAC,EAMxD,SAAS,EAAO,CACf,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAQ,GAAa,EAAS,CAAO,EACrC,EAAW,EAAQ,EAAQ,EAAI,EAAQ,EAE7C,GAAI,KAAK,IAAI,CAAK,EAAI,KAErB,OAGD,IAAM,EAAW,GAAK,CAAO,EACvB,EAAW,GAAK,CAAO,EACvB,EAAO,EAAQ,EAAI,GAEnB,EAAqB,CAC1B,EAAG,EAAM,EAAI,EAAS,EAAI,EAAS,EACnC,EAAG,EAAM,EAAI,EAAS,EAAI,EAAS,CACpC,EACM,EAAoB,CACzB,EAAG,EAAM,EAAI,EAAS,EAAI,EAAS,EACnC,EAAG,EAAM,EAAI,EAAS,EAAI,EAAS,CACpC,EAEA,GAAI,CAAC,EAAU,CAEd,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAC7D,OAID,OAAQ,OACF,QAAS,CAEb,IAAM,EAAW,KAAK,IAAI,CAAK,EACzB,EAAc,KAAK,IAAI,EAAG,KAAK,KAAK,GAAY,KAAK,GAAK,EAAE,CAAC,EAEnE,QAAS,EAAI,EAAG,GAAK,EAAa,IAAK,CACtC,IAAM,EAAI,EAAI,EACR,EACL,KAAK,MAAM,EAAS,EAAG,EAAS,CAAC,EAAI,EAAQ,EAAI,EAC5C,EAAK,EAAM,EAAI,KAAK,IAAI,CAAY,EAAI,EAAS,EACjD,EAAK,EAAM,EAAI,KAAK,IAAI,CAAY,EAAI,EAAS,EACvD,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAI,EAAG,CAAG,CAAC,EAE1C,KACD,KACK,QAAS,CAGb,GADoB,EAAI,KAAK,IAAI,KAAK,IAAI,CAAK,EAAI,CAAC,GACjC,EAAY,CAE9B,IAAM,EAAY,EAAQ,EACpB,EAAW,GAAU,CAC1B,EAAG,EAAQ,EAAI,EAAQ,EACvB,EAAG,EAAQ,EAAI,EAAQ,CACxB,CAAC,EACK,EAAY,EAAS,KAAK,IAAI,CAAS,EACvC,EAAoB,CACzB,EAAG,EAAM,EAAI,EAAS,EAAI,EAAY,EACtC,EAAG,EAAM,EAAI,EAAS,EAAI,EAAY,CACvC,EACA,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAC7D,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAG7D,OAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAE9D,KACD,SAEC,EAAS,KAAK,CAAE,KAAM,IAAK,EAAG,EAAW,EAAG,EAAG,EAAW,CAAE,CAAC,EAC7D,OAOH,SAAS,EAAa,CACrB,EACA,EACgB,CAChB,GAAI,EAAO,OAAS,EAAG,MAAO,CAAC,EAE/B,IAAQ,QAAO,WAAU,cAAe,EAClC,EAAS,EAAQ,EAEjB,EAA0B,CAAC,EAC3B,EAAI,EAAO,OAGX,EAAuB,CAAC,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAQ,GAAI,GAAK,GAC5B,GAAI,CAAC,GAAM,CAAC,EAAI,SAChB,EAAW,KAAK,GAAU,CAAE,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAI,EAAG,CAAE,CAAC,CAAC,EAI9D,IAAM,EAAW,EAAW,GACtB,EAAa,EAAO,GAC1B,GAAI,CAAC,GAAY,CAAC,EAAY,MAAO,CAAC,EAEtC,IAAM,EAAY,GAAK,CAAQ,EAC/B,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAW,EAAI,EAAU,EAAI,EAChC,EAAG,EAAW,EAAI,EAAU,EAAI,CACjC,CAAC,EAED,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAQ,GAAI,GAAK,GACtB,EAAM,EAAW,GACjB,EAAU,EAAY,GAAI,GAAK,GACrC,GAAI,CAAC,GAAM,CAAC,GAAM,CAAC,GAAO,CAAC,EAAS,SAEpC,IAAM,EAAU,GAAK,CAAG,EAGxB,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAG,EAAI,EAAQ,EAAI,EACtB,EAAG,EAAG,EAAI,EAAQ,EAAI,CACvB,CAAC,EAGD,GAAQ,EAAU,EAAI,EAAK,EAAS,EAAQ,EAAU,EAAY,EAAI,EAGvE,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAG3B,IAAM,EAAU,EAAI,EACd,EAAU,EAAW,GACrB,EAAY,EAAO,GACzB,GAAI,CAAC,GAAW,CAAC,EAAW,OAAO,EAEnC,IAAM,EAAW,GAAK,CAAQ,EAC9B,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAW,EAAI,EAAS,EAAI,EAC/B,EAAG,EAAW,EAAI,EAAS,EAAI,CAChC,CAAC,EAED,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAQ,GAAI,GAAK,GACtB,EAAM,EAAW,GACjB,EAAU,EAAY,GAAI,GAAK,GACrC,GAAI,CAAC,GAAM,CAAC,GAAM,CAAC,GAAO,CAAC,EAAS,SAEpC,IAAM,EAAU,GAAK,CAAG,EAGxB,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAG,EAAI,EAAQ,EAAI,EACtB,EAAG,EAAG,EAAI,EAAQ,EAAI,CACvB,CAAC,EAGD,GAAQ,EAAU,EAAI,EAAK,EAAS,EAAQ,EAAU,EAAY,EAAK,EAKxE,OAFA,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAEpB,EAMR,SAAS,EAAc,CACtB,EACA,EACgB,CAChB,GAAI,EAAO,OAAS,EAAG,MAAO,CAAC,EAE/B,IAAQ,QAAO,UAAS,WAAU,cAAe,EAC3C,EAAS,EAAQ,EAEjB,EAA0B,CAAC,EAC3B,EAAI,EAAO,OAGX,EAAuB,CAAC,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC/B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GACtB,GAAI,CAAC,GAAM,CAAC,EAAI,SAChB,EAAW,KAAK,GAAU,CAAE,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAI,EAAG,CAAE,CAAC,CAAC,EAG9D,IAAM,EAAa,EAAO,GACpB,EAAY,EAAO,EAAI,GACvB,EAAW,EAAW,GACtB,EAAU,EAAW,EAAW,OAAS,GAC/C,GAAI,CAAC,GAAc,CAAC,GAAa,CAAC,GAAY,CAAC,EAAS,MAAO,CAAC,EAGhE,IAAM,EAAY,GAAK,CAAQ,EAG/B,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAW,EAAI,EAAU,EAAI,EAChC,EAAG,EAAW,EAAI,EAAU,EAAI,CACjC,CAAC,EAGD,QAAS,EAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC/B,IAAM,EAAK,EAAO,EAAI,GAChB,EAAM,EAAW,GACjB,EAAU,EAAW,EAAI,GAC/B,GAAI,CAAC,GAAM,CAAC,EAAK,SAEjB,IAAM,EAAU,GAAK,CAAG,EAOxB,GANA,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAG,EAAI,EAAQ,EAAI,EACtB,EAAG,EAAG,EAAI,EAAQ,EAAI,CACvB,CAAC,EAEG,EACH,GAAQ,EAAU,EAAI,EAAK,EAAS,EAAQ,EAAU,EAAY,EAAI,EAKxE,IAAM,EAAsB,CAAE,EAAG,CAAC,EAAQ,EAAG,EAAG,CAAC,EAAQ,CAAE,EAC3D,OAAQ,OACF,QACJ,GAAY,EAAU,EAAW,EAAS,EAAQ,EAAI,EACtD,UACI,SACJ,GAAa,EAAU,EAAW,EAAS,CAAM,EACjD,cACQ,CACR,IAAM,EAAW,GAAK,CAAO,EAC7B,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAU,EAAI,EAAS,EAAI,EAC9B,EAAG,EAAU,EAAI,EAAS,EAAI,CAC/B,CAAC,EACD,KACD,EAID,QAAS,EAAI,EAAI,EAAG,GAAK,EAAG,IAAK,CAChC,IAAM,EAAK,EAAO,GACZ,EAAM,EAAW,GACjB,EAAU,EAAW,EAAI,GAC/B,GAAI,CAAC,GAAM,CAAC,EAAK,SAEjB,IAAM,EAAU,GAAK,CAAG,EAOxB,GANA,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAG,EAAI,EAAQ,EAAI,EACtB,EAAG,EAAG,EAAI,EAAQ,EAAI,CACvB,CAAC,EAEG,EACH,GACC,EACA,EACA,CAAE,EAAG,CAAC,EAAI,EAAG,EAAG,CAAC,EAAI,CAAE,EACvB,CAAE,EAAG,CAAC,EAAQ,EAAG,EAAG,CAAC,EAAQ,CAAE,EAC/B,EACA,EACA,EACA,EACD,EAKF,IAAM,EAAsB,CAAE,EAAG,CAAC,EAAS,EAAG,EAAG,CAAC,EAAS,CAAE,EAC7D,OAAQ,OACF,QACJ,GAAY,EAAU,EAAY,EAAa,EAAQ,EAAI,EAC3D,UACI,SACJ,GAAa,EAAU,EAAY,EAAa,CAAM,EACtD,cAGA,MAKF,OAFA,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAEpB,EAOR,SAAS,EAAe,CACvB,EACyC,CACzC,IAAM,EAAmD,CAAC,EACtD,EAA0B,CAAC,EAE/B,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAE,OAAQ,EAAgB,OAAQ,EAAM,CAAC,EAExD,EAAiB,CAAC,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EACxC,UACI,IACJ,EAAe,KAAK,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EAC1C,UACI,IAAK,CAET,IAAM,EAAO,EAAe,EAAe,OAAS,GACpD,GAAI,EAEH,QAAS,EAAI,EAAG,GADF,EACc,IAAK,CAChC,IAAM,EAAI,EAFG,EAGP,EAAK,EAAI,EACT,EAAI,EAAK,EAAK,EAAK,EAAI,EAAI,EAAK,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EACzD,EAAI,EAAK,EAAK,EAAK,EAAI,EAAI,EAAK,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EAC/D,EAAe,KAAK,CAAE,IAAG,GAAE,CAAC,EAG9B,KACD,KACK,IAAK,CAET,IAAM,EAAO,EAAe,EAAe,OAAS,GACpD,GAAI,EAEH,QAAS,EAAI,EAAG,GADF,GACc,IAAK,CAChC,IAAM,EAAI,EAFG,GAGP,EAAK,EAAI,EACT,EACL,EAAK,EAAK,EAAK,EAAK,EACpB,EAAI,EAAK,EAAK,EAAI,EAAI,GACtB,EAAI,EAAK,EAAI,EAAI,EAAI,GACrB,EAAI,EAAI,EAAI,EAAI,EACX,EACL,EAAK,EAAK,EAAK,EAAK,EACpB,EAAI,EAAK,EAAK,EAAI,EAAI,GACtB,EAAI,EAAK,EAAI,EAAI,EAAI,GACrB,EAAI,EAAI,EAAI,EAAI,EACjB,EAAe,KAAK,CAAE,IAAG,GAAE,CAAC,EAG9B,KACD,KACK,IACJ,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAE,OAAQ,EAAgB,OAAQ,EAAK,CAAC,EACtD,EAAiB,CAAC,EAEnB,MAIH,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAE,OAAQ,EAAgB,OAAQ,EAAM,CAAC,EAGxD,OAAO,EAMD,SAAS,EAAU,CACzB,EACA,EACY,CACZ,IAAM,EAAiC,CACtC,MAAO,EAAQ,MACf,QAAS,EAAQ,SAAW,OAC5B,SAAU,EAAQ,UAAY,QAC9B,WAAY,EAAQ,YAAc,CACnC,EAEM,EAAW,GAAgB,CAAI,EAC/B,EAA0B,CAAC,EAEjC,QAAW,KAAW,EAAU,CAC/B,GAAI,EAAQ,OAAO,OAAS,EAAG,SAE/B,IAAM,EAAkB,EAAQ,OAC7B,GAAc,EAAQ,OAAQ,CAAI,EAClC,GAAe,EAAQ,OAAQ,CAAI,EAEtC,EAAS,KAAK,GAAG,CAAe,EAIjC,IAAI,EAAS,EAAK,OAClB,GAAI,EAAQ,CACX,IAAM,EAAU,EAAK,MAAQ,EAC7B,EAAS,CACR,KAAM,EAAO,KAAO,EACpB,KAAM,EAAO,KAAO,EACpB,KAAM,EAAO,KAAO,EACpB,KAAM,EAAO,KAAO,CACrB,EAGD,MAAO,CAAE,WAAU,QAAO,EC9hBpB,SAAS,EAAW,CAAC,EAAiB,EAA0B,CACtE,IAAM,EAA0B,CAAC,EAEjC,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,QACA,IACJ,EAAS,KAAK,CACb,KAAM,EAAI,KACV,EAAG,EAAI,EAAI,EAAI,EAAI,EACnB,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAI,GAAK,EAAI,GAAK,EACtB,GAAI,EAAI,GACR,EAAG,EAAI,EAAI,EAAI,EAAI,EACnB,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAI,GAAK,EAAI,GAAK,EACtB,GAAI,EAAI,GACR,GAAI,EAAI,GAAK,EAAI,GAAK,EACtB,GAAI,EAAI,GACR,EAAG,EAAI,EAAI,EAAI,EAAI,EACnB,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAC3B,MAKH,IAAI,EAAS,EAAK,OAClB,GAAI,EAAQ,CAEX,IAAM,EAAO,EAAO,KAAO,EAAO,KAAO,EACnC,EAAO,EAAO,KAAO,EAAO,KAAO,EAEzC,EAAS,CACR,KAAM,KAAK,IAAI,EAAM,EAAO,KAAO,EAAO,KAAO,CAAK,EACtD,KAAM,EAAO,KACb,KAAM,KAAK,IAAI,EAAM,EAAO,KAAO,EAAO,KAAO,CAAK,EACtD,KAAM,EAAO,IACd,EAGD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAqGvC,SAAS,EAAY,CAAC,EAAiB,EAA2B,CACxE,IAAM,EAA0B,CAAC,EAEjC,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,QACA,IACJ,EAAS,KAAK,CACb,KAAM,EAAI,KACV,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GACR,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CACb,KAAM,IACN,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GACR,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GACR,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,CACR,CAAC,EACD,UACI,IACJ,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,EAC3B,MAKH,IAAI,EAAS,EAAK,OAClB,GAAI,EACH,EAAS,CACR,KAAM,EAAO,KAAO,EACpB,KAAM,EAAO,KACb,KAAM,EAAO,KAAO,EACpB,KAAM,EAAO,IACd,EAGD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAcvC,SAAS,EAAY,CAAC,EAAiB,EAA6B,CAC1E,GAAI,IAAa,EAEhB,MAAO,IAAK,EAAM,SAAU,CAAC,GAAG,EAAK,QAAQ,CAAE,EAIhD,IAAM,EAAW,GAAgB,CAAI,EAC/B,EAA0B,CAAC,EAEjC,QAAW,KAAW,EAAU,CAC/B,GAAI,EAAQ,OAAS,EAAG,SAGxB,IAAM,EAAgB,GAAc,EAAS,CAAQ,EAGrD,GAAI,EAAc,OAAS,EAAG,CAC7B,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAc,GAAG,EACpB,EAAG,EAAc,GAAG,CACrB,CAAC,EACD,QAAS,EAAI,EAAG,EAAI,EAAc,OAAQ,IACzC,EAAS,KAAK,CACb,KAAM,IACN,EAAG,EAAc,GAAG,EACpB,EAAG,EAAc,GAAG,CACrB,CAAC,EAEF,EAAS,KAAK,CAAE,KAAM,GAAI,CAAC,GAK7B,IAAI,EAAS,KACb,GAAI,EAAS,OAAS,EAAG,CACxB,IAAI,EAAO,IACV,EAAO,IACP,EAAO,KACP,EAAO,KAER,QAAW,KAAO,EACjB,GAAI,EAAI,OAAS,KAAO,EAAI,OAAS,IACpC,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAI7B,GAAI,OAAO,SAAS,CAAI,EACvB,EAAS,CAAE,KAAM,EAAM,KAAM,EAAM,KAAM,EAAM,KAAM,CAAK,EAI5D,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAc9C,SAAS,EAAe,CAAC,EAA4B,CACpD,IAAM,EAAsB,CAAC,EACzB,EAA0B,CAAC,EAE/B,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAE7B,EAAiB,CAAC,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EACxC,UACI,IACJ,EAAe,KAAK,CAAE,EAAG,EAAI,EAAG,EAAG,EAAI,CAAE,CAAC,EAC1C,UACI,IAAK,CAET,IAAM,EAAO,EAAe,EAAe,OAAS,GACpD,GAAI,EAEH,QAAS,EAAI,EAAG,GADF,EACc,IAAK,CAChC,IAAM,EAAI,EAFG,EAGP,EAAK,EAAI,EACT,EAAI,EAAK,EAAK,EAAK,EAAI,EAAI,EAAK,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EACzD,EAAI,EAAK,EAAK,EAAK,EAAI,EAAI,EAAK,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,EAC/D,EAAe,KAAK,CAAE,IAAG,GAAE,CAAC,EAG9B,KACD,KACK,IAAK,CAET,IAAM,EAAO,EAAe,EAAe,OAAS,GACpD,GAAI,EAEH,QAAS,EAAI,EAAG,GADF,GACc,IAAK,CAChC,IAAM,EAAI,EAFG,GAGP,EAAK,EAAI,EACT,EACL,EAAK,EAAK,EAAK,EAAK,EACpB,EAAI,EAAK,EAAK,EAAI,EAAI,GACtB,EAAI,EAAK,EAAI,EAAI,EAAI,GACrB,EAAI,EAAI,EAAI,EAAI,EACX,EACL,EAAK,EAAK,EAAK,EAAK,EACpB,EAAI,EAAK,EAAK,EAAI,EAAI,GACtB,EAAI,EAAK,EAAI,EAAI,EAAI,GACrB,EAAI,EAAI,EAAI,EAAI,EACjB,EAAe,KAAK,CAAE,IAAG,GAAE,CAAC,EAG9B,KACD,KACK,IACJ,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAC5B,EAAiB,CAAC,EAEnB,MAIH,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAG7B,OAAO,EAUR,SAAS,EAAa,CAAC,EAAiB,EAAyB,CAChE,IAAM,EAAI,EAAO,OACjB,GAAI,EAAI,EAAG,OAAO,EAGlB,IAAI,EAAO,EACX,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,GAAK,EAAI,GAAK,EACd,EAAK,EAAO,GACZ,EAAK,EAAO,GAClB,GAAI,GAAM,EACT,IAAS,EAAG,EAAI,EAAG,IAAM,EAAG,EAAI,EAAG,GAMrC,IAAM,EAAO,EAAO,EAAI,GAAK,EACvB,EAAe,EAAS,EAExB,EAAkB,CAAC,EAEzB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAO,EAAQ,GAAI,EAAI,GAAK,GAC5B,EAAO,EAAO,GACd,EAAO,EAAQ,GAAI,GAAK,GAE9B,GAAI,CAAC,GAAQ,CAAC,GAAQ,CAAC,EAAM,SAG7B,IAAM,EAAQ,CAAE,EAAG,EAAK,EAAI,EAAK,EAAG,EAAG,EAAK,EAAI,EAAK,CAAE,EACjD,EAAQ,CAAE,EAAG,EAAK,EAAI,EAAK,EAAG,EAAG,EAAK,EAAI,EAAK,CAAE,EAGjD,EAAO,KAAK,KAAK,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,CAAC,EACtD,EAAO,KAAK,KAAK,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,CAAC,EAE5D,GAAI,IAAS,GAAK,IAAS,EAAG,CAC7B,EAAO,KAAK,CAAI,EAChB,SAGD,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,GAAK,EACX,EAAM,GAAK,EAGX,IAAM,EAAU,CAAE,EAAG,CAAC,EAAM,EAAG,EAAG,EAAM,CAAE,EACpC,EAAU,CAAE,EAAG,CAAC,EAAM,EAAG,EAAG,EAAM,CAAE,EAGtC,GAAW,EAAQ,EAAI,EAAQ,GAAK,EACpC,GAAW,EAAQ,EAAI,EAAQ,GAAK,EAGlC,EAAY,KAAK,KAAK,EAAU,EAAU,EAAU,CAAO,EACjE,GAAI,EAAY,MAAO,CACtB,GAAW,EACX,GAAW,EAIX,IAAM,EAAM,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAClD,EAAQ,EAAM,OAAS,EAAI,KAAK,MAAM,EAAI,GAAO,CAAC,EAAI,EAGtD,EAAe,KAAK,IAAI,EAAO,CAAC,EAEtC,EAAO,KAAK,CACX,EAAG,EAAK,EAAI,EAAU,EAAe,EACrC,EAAG,EAAK,EAAI,EAAU,EAAe,CACtC,CAAC,EAED,OAAO,KAAK,CAAI,EAIlB,OAAO,ECjbR,IAAM,GAAqB,IAAI,QAG/B,SAAS,EAAgB,CAAC,EAAkC,CAC3D,GAAI,CAAC,EAAK,YAAc,CAAC,EAAK,WAAY,OAAO,KAEjD,IAAI,EAAS,GAAmB,IAAI,CAAI,EACxC,GAAI,EAAQ,OAAO,EAEnB,IAAM,EAAM,EAAK,SACX,EAAY,EAAM,IAAI,WAAW,EAAI,MAAM,EAAI,OAE/C,EAAO,EAAK,KAClB,EAAS,GACR,EAAK,WACL,qBAAsB,EAAO,EAAK,iBAAmB,IACrD,eAAgB,EAAO,EAAK,WAAa,GACzC,oBAAqB,EAAO,EAAK,gBAAkB,GACnD,sBAAuB,EAAO,EAAK,kBAAoB,GACvD,CACD,EAEA,IAAM,EAAO,EAAK,KAClB,GAAI,EAAM,GAAgB,EAAQ,EAAK,YAAY,EAEnD,IAAM,EAAO,EAAK,KAClB,GAAI,EAAM,GAAe,EAAQ,EAAK,YAAY,EAGlD,OADA,GAAmB,IAAI,EAAM,CAAM,EAC5B,EAIR,SAAS,EAAc,CAAC,EAAY,EAAuC,CAC1E,IAAM,EAAQ,EAAK,SAAS,CAAO,EACnC,GAAI,CAAC,GAAS,EAAM,OAAS,QAAS,OAAO,KAE7C,IAAM,EAAoB,CAAC,EACrB,EAAoB,CAAC,EACrB,EAAkB,CAAC,EACnB,EAAwB,CAAC,EAGzB,EAAe,EAAK,aAAa,CAAO,EACxC,EAAM,EAAK,gBAAgB,CAAO,EAExC,GAAI,EAAM,OAAS,SAAU,CAC5B,IAAI,EAAa,EACjB,QAAW,KAAW,EAAM,SAAU,CACrC,QAAW,KAAS,EACnB,EAAQ,KAAK,EAAM,CAAC,EACpB,EAAQ,KAAK,EAAM,CAAC,EACpB,EAAM,KAAK,EAAM,QAAU,EAAI,CAAC,EAChC,IAED,EAAY,KAAK,EAAa,CAAC,EAEhC,MAAO,CACN,UACA,UACA,MAAO,IAAI,WAAW,CAAK,EAC3B,cACA,aAAc,EAAM,aACpB,MACA,cACD,EACM,KAEN,QAAW,KAAa,EAAM,WAAY,CACzC,IAAM,EAAY,EAAK,SAAS,EAAU,OAAO,EACjD,GAAI,CAAC,GAAa,EAAU,OAAS,SAAU,SAE/C,IAAO,EAAG,EAAG,EAAG,GAAK,EAAU,UACzB,EAAK,EAAU,KACpB,EAAK,EAAU,KACZ,EAAc,EAAQ,OAE1B,QAAW,KAAW,EAAU,SAAU,CACzC,QAAW,KAAS,EACnB,EAAQ,KAAK,EAAM,EAAI,EAAI,EAAM,EAAI,EAAI,CAAE,EAC3C,EAAQ,KAAK,EAAM,EAAI,EAAI,EAAM,EAAI,EAAI,CAAE,EAC3C,EAAM,KAAK,EAAM,QAAU,EAAI,CAAC,EAChC,IAED,EAAY,KAAK,EAAc,CAAC,GAGlC,GAAI,EAAQ,SAAW,EAAG,OAAO,KACjC,MAAO,CACN,UACA,UACA,MAAO,IAAI,WAAW,CAAK,EAC3B,cACA,aAAc,EAAM,aACpB,MACA,cACD,GAKF,SAAS,EAAoB,CAC5B,EACA,EACA,EACA,EACO,CACP,IAAQ,UAAS,UAAS,QAAO,eAAgB,EAC7C,EAAa,EAChB,EAAe,EAEhB,QAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACxC,IAAM,EAAQ,IAAM,EAAY,GAE1B,GAAM,EAAQ,IAAM,EAAK,IAAM,GAAW,GAC1C,GAAM,CAAC,EAAQ,IAAM,EAAK,IAAM,GAAW,GAC3C,GAAW,EAAM,GAAK,KAAO,EAEnC,GAAI,IAAM,EACT,EAAO,OAAO,EAAG,CAAC,EACZ,QAAI,EACV,EAAO,OAAO,EAAG,CAAC,EACZ,KACN,IAAM,EAAU,EAAQ,EAAe,EAAI,EACrC,GAAO,EAAQ,IAAY,EAAK,IAAM,GAAW,GACjD,GAAO,CAAC,EAAQ,IAAY,EAAK,IAAM,GAAW,GAGxD,IAFgB,EAAM,GAAW,KAAO,GAIvC,GADA,EAAO,QAAQ,EAAG,EAAG,EAAI,CAAE,EACvB,CAAC,EAAO,IAEZ,OAAO,QAAQ,EAAG,EAAI,EAAI,GAAO,EAAI,EAAI,GAAO,CAAC,EAInD,GAAI,EAAO,CACV,IAAM,GAAO,EAAQ,IAAiB,EAAK,IAAM,GAAW,GACtD,GAAO,CAAC,EAAQ,IAAiB,EAAK,IAAM,GAAW,GAC7D,GAAI,GAAW,IAAM,EAAc,EAAO,OAAO,EAAI,CAAE,EACvD,IACA,EAAe,EAAI,IAMtB,IAAM,GAA4B,IAK3B,SAAS,EAAa,CAC5B,EACA,EACS,CACT,IACC,QACA,SACA,QACA,UAAU,EACV,UAAU,EACV,cACA,aACA,QAAQ,IACL,EAGE,EAAS,EAAa,EAAO,EAAQ,CAAS,EAG9C,EAAS,IAAI,GAInB,GAHA,EAAO,QAAQ,EAAG,EAAG,EAAO,CAAM,EAG9B,EAAS,GAA2B,CACvC,IAAM,EAAc,IACnB,GAAc,EAAQ,EAAM,EAAO,EAAS,EAAS,CAAK,EAC3D,EAAO,gBACN,EACA,EACA,CAAE,KAAM,EAAG,KAAM,CAAO,EACxB,CACD,EAGA,OAAO,cAAc,EAAG,CAAM,EAC9B,EAAO,MAAM,EACb,GAAc,EAAQ,EAAM,EAAO,EAAS,EAAS,CAAK,EAC1D,EAAO,MAAM,EAAQ,CAAQ,EAG9B,OAAO,EAMD,SAAS,EAAc,CAC7B,EACA,EACA,EACA,EAMyB,CACzB,IAAM,EAAU,GAAS,SAAW,EAC9B,EAAY,GAAS,aAI3B,IAHmB,GAAS,SAAW,KAGrB,EAAK,WAAY,CAClC,IAAM,EAAS,GACd,EACA,EACA,EACA,EACA,CACD,EACA,GAAI,EAAQ,OAAO,EAIpB,IAAM,EAAO,GAAa,EAAM,CAAO,EACvC,GAAI,CAAC,EAAM,OAAO,KAElB,IAAM,EAAQ,EAAW,EAAK,WAGxB,EAAS,GAAc,EAAM,EAAO,EAAI,EAC9C,GAAI,CAAC,EACJ,MAAO,CACN,OAAQ,EAAa,EAAG,EAAG,CAAS,EACpC,SAAU,EACV,SAAU,CACX,EAGD,IAAM,EAAQ,EAAO,KAAO,EAAO,KAAO,EAAU,EAC9C,EAAS,EAAO,KAAO,EAAO,KAAO,EAAU,EAErD,GAAI,GAAS,GAAK,GAAU,EAC3B,MAAO,CACN,OAAQ,EAAa,EAAG,EAAG,CAAS,EACpC,SAAU,EACV,SAAU,CACX,EAGD,IAAM,EAAU,CAAC,EAAO,KAAO,EACzB,EAAU,CAAC,EAAO,KAAO,EAY/B,MAAO,CACN,OAXc,GAAc,EAAM,CAClC,QACA,SACA,QACA,UACA,UACA,YACA,MAAO,EACR,CAAC,EAIA,SAAU,EAAO,KAAO,EACxB,SAAU,EAAE,EAAO,KAAO,EAC3B,EAID,SAAS,EAAoB,CAC5B,EACA,EACA,EACA,EACA,EACyB,CACzB,IAAM,EAAS,GAAiB,CAAI,EACpC,GAAI,CAAC,EAAQ,OAAO,KAEpB,IAAM,EAAU,GAAe,EAAM,CAAO,EAC5C,GAAI,CAAC,EAAS,OAAO,KAErB,IAAM,EAAO,KAAK,MAAM,CAAQ,EAEhC,GADc,GAAQ,EAAQ,EAAM,CAAI,EAC7B,OAAO,KAElB,IAAM,EAAS,GAAU,EAAQ,CAAO,EACxC,GAAI,EAAO,OAAS,EAAO,QAAQ,SAAW,EAAG,OAAO,KAGxD,IAAI,EAAO,IACV,EAAO,IACP,EAAO,KACP,EAAO,KACR,QAAS,EAAI,EAAG,EAAI,EAAO,QAAQ,OAAQ,IAAK,CAC/C,IAAM,EAAI,EAAO,QAAQ,GAAK,GACxB,EAAI,EAAO,QAAQ,GAAK,GAC9B,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EAGxB,GAAI,CAAC,OAAO,SAAS,CAAI,EACxB,MAAO,CAAE,OAAQ,EAAa,EAAG,EAAG,CAAS,EAAG,SAAU,EAAG,SAAU,CAAE,EAG1E,IAAM,EAAQ,KAAK,MAAM,CAAI,EAC5B,EAAQ,KAAK,MAAM,CAAI,EAClB,EAAQ,KAAK,KAAK,CAAI,EAC3B,EAAQ,KAAK,KAAK,CAAI,EACjB,EAAQ,EAAQ,EAAQ,EAAU,EAClC,EAAS,EAAQ,EAAQ,EAAU,EAEzC,GAAI,GAAS,GAAK,GAAU,EAC3B,MAAO,CAAE,OAAQ,EAAa,EAAG,EAAG,CAAS,EAAG,SAAU,EAAG,SAAU,CAAE,EAG1E,IAAM,EAAS,EAAa,EAAO,EAAQ,CAAS,EAC9C,EAAS,IAAI,GACnB,EAAO,QAAQ,EAAG,EAAG,EAAO,CAAM,EAClC,EAAO,MAAM,EAEb,IAAM,EAAU,CAAC,EAAQ,EACnB,EAAU,EAAS,EAAI,EAAQ,EAKrC,OAHA,GAAqB,EAAQ,EAAQ,EAAS,CAAO,EACrD,EAAO,MAAM,GAAwB,EAE9B,CACN,SACA,SAAU,EAAQ,EAClB,SAAU,EAAQ,CACnB,EAMM,SAAS,EAAa,CAC5B,EACA,EACA,EACA,EAIgB,CAIhB,IAAM,EAAQ,EAAW,EAAK,WACxB,EAAU,GAAS,SAAW,EAC9B,EAAY,GAAS,aAGrB,EAAkD,CAAC,EACrD,EAAe,EACf,EAAY,EACZ,EAAa,EAEjB,QAAW,KAAQ,EAAM,CACxB,IAAM,EAAY,EAAK,YAAY,CAAC,EACpC,GAAI,IAAc,OAAW,SAE7B,IAAM,EAAU,EAAK,QAAQ,CAAS,EACtC,GAAI,IAAY,OAAW,SAE3B,IAAM,EAAU,EAAK,aAAa,CAAO,EAAI,EACvC,EAAO,GAAa,EAAM,CAAO,EAEvC,GAAI,GAAM,OACT,EAAY,KAAK,IAAI,EAAW,CAAC,EAAK,OAAO,KAAO,CAAK,EACzD,EAAa,KAAK,IAAI,EAAY,EAAK,OAAO,KAAO,CAAK,EAG3D,EAAO,KAAK,CAAE,UAAS,SAAQ,CAAC,EAChC,GAAgB,EAGjB,GAAI,EAAO,SAAW,EAAG,OAAO,KAGhC,IAAM,EAAQ,KAAK,KAAK,CAAY,EAAI,EAAU,EAC5C,EAAS,KAAK,KAAK,EAAY,CAAU,EAAI,EAAU,EAEvD,EAAS,EAAa,EAAO,EAAQ,CAAS,EAC9C,EAAS,IAAI,GACnB,EAAO,QAAQ,EAAG,EAAG,EAAO,CAAM,EAGlC,IAAI,EAAI,EACF,EAAW,EAAa,EAE9B,QAAa,UAAS,aAAa,EAAQ,CAC1C,IAAM,EAAO,GAAa,EAAM,CAAO,EACvC,GAAI,EACH,EAAO,MAAM,EACb,GAAc,EAAQ,EAAM,EAAO,EAAG,EAAU,EAAI,EACpD,EAAO,MAAM,CAAM,EAEpB,GAAK,EAGN,OAAO,EAMD,SAAS,EAAY,CAAC,EAA4B,CAGxD,IAAM,EAAQ,EAAO,cACf,EAAO,IAAI,WAAW,EAAO,MAAQ,EAAO,KAAO,CAAC,EAE1D,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,GAAU,EAAI,EAAO,MAAQ,GAAK,EAExC,GAAI,EAAO,cAA8B,CACxC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAC5B,EAAQ,EAAO,OAAO,IAAW,EAEvC,EAAK,GAAU,IAAM,EACrB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IACb,QAAI,EAAO,cAA8B,CAC/C,IAAM,EAAU,EAAI,EAAO,OAAS,GAAK,GACnC,EAAS,GAAK,EAAI,GAClB,GAAU,EAAO,OAAO,IAAY,IAAM,EAAU,EAAI,IAAM,EACpE,EAAK,GAAU,IAAM,EACrB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IACb,QAAI,EAAO,CAEjB,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAChC,EAAI,EAAO,OAAO,IAAW,EAC7B,EAAI,EAAO,OAAO,EAAS,IAAM,EACjC,EAAI,EAAO,OAAO,EAAS,IAAM,EAEvC,EAAK,GAAU,IAAM,EACrB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IACb,KAEN,IAAM,EAAS,EAAI,EAAO,MAAQ,EAC5B,EAAQ,EAAO,OAAO,IAAW,EACvC,EAAK,GAAU,IAAM,EACrB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,IAAM,EACzB,EAAK,EAAS,GAAK,KAKtB,OAAO,EAMD,SAAS,EAAY,CAAC,EAA4B,CACxD,GAAI,EAAO,eAAgC,EAAO,QAAU,EAAO,MAClE,OAAO,EAAO,OAGf,IAAM,EAAO,IAAI,WAAW,EAAO,MAAQ,EAAO,IAAI,EAEtD,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAElC,GAAI,EAAO,cACV,EAAK,GAAU,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,EAChD,QAAI,EAAO,cAA8B,CAC/C,IAAM,EAAU,EAAI,EAAO,OAAS,GAAK,GACnC,EAAS,GAAK,EAAI,GACxB,EAAK,IAAY,EAAO,OAAO,IAAY,IAAM,EAAU,EAAI,IAAM,GAKxE,OAAO,ECzeD,SAAS,EAAU,CACzB,EACA,EACA,EACa,CACb,IACC,WACA,UAAU,EACV,WAAW,KACX,YAAY,KACZ,eACG,EAGE,EAMD,CAAC,EAEA,EAAQ,EAAW,EAAK,WAE9B,QAAW,KAAW,EAAU,CAC/B,IAAM,EAAS,GAAe,EAAM,EAAS,EAAU,CACtD,QAAS,EACT,WACD,CAAC,EACD,GAAI,CAAC,EAAQ,SAEb,IAAM,EAAU,EAAK,aAAa,CAAO,EAAI,EAE7C,EAAU,KAAK,CACd,UACA,OAAQ,EAAO,OACf,SAAU,EAAO,SACjB,SAAU,EAAO,SACjB,SACD,CAAC,EAIF,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,OAAO,KAAO,EAAE,OAAO,IAAI,EAGtD,IACC,MAAO,EACP,OAAQ,EACR,cACG,GACH,EAAU,IAAI,CAAC,KAAO,CACrB,MAAO,EAAE,OAAO,MAAQ,EAAU,EAClC,OAAQ,EAAE,OAAO,KAAO,EAAU,CACnC,EAAE,EACF,EACA,CACD,EAGM,EAAQ,EAAa,EAAY,EAAa,CAAS,EAGvD,EAAe,IAAI,IAEzB,QAAS,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CAC1C,IAAM,EAAQ,EAAU,GAClB,EAAY,EAAW,GAE7B,GAAI,CAAC,EAAU,OAAQ,SAGvB,GACC,EAAM,OACN,EACA,EAAU,EAAI,EACd,EAAU,EAAI,CACf,EAGA,EAAa,IAAI,EAAM,QAAS,CAC/B,QAAS,EAAM,QACf,OAAQ,EAAU,EAAI,EACtB,OAAQ,EAAU,EAAI,EACtB,MAAO,EAAM,OAAO,MACpB,OAAQ,EAAM,OAAO,KACrB,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,OAChB,CAAC,EAGF,MAAO,CACN,OAAQ,EACR,OAAQ,EACR,UACD,EAMM,SAAS,EAAe,CAAC,EAAY,EAAmC,CAC9E,IAAM,EAAqB,CAAC,EAE5B,QAAS,EAAY,GAAI,GAAa,IAAK,IAAa,CACvD,IAAM,EAAU,EAAK,QAAQ,CAAS,EACtC,GAAI,IAAY,QAAa,IAAY,EACxC,EAAS,KAAK,CAAO,EAIvB,OAAO,GAAW,EAAM,EAAU,CAAO,EAMnC,SAAS,EAAgB,CAC/B,EACA,EACA,EACa,CACb,IAAM,EAAa,IAAI,IAEvB,QAAW,KAAQ,EAAM,CACxB,IAAM,EAAY,EAAK,YAAY,CAAC,EACpC,GAAI,IAAc,OAAW,SAE7B,IAAM,EAAU,EAAK,QAAQ,CAAS,EACtC,GAAI,IAAY,QAAa,IAAY,EACxC,EAAW,IAAI,CAAO,EAIxB,OAAO,GAAW,EAAM,MAAM,KAAK,CAAU,EAAG,CAAO,EAexD,SAAS,EAAU,CAClB,EACA,EACA,EAC6D,CAC7D,IAAM,EAAmB,CAAC,EACpB,EAA0B,CAAC,EAE7B,EAAa,EACb,EAAc,EAElB,QAAW,KAAQ,EAAO,CACzB,IAAI,EAAS,GACT,EAAY,GACZ,EAAQ,EAGZ,QAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACxC,IAAM,EAAQ,EAAQ,GAGtB,GAAI,EAAM,MAAQ,EAAK,OAAS,GAAY,EAAK,QAAU,EAAM,QAChE,GAAI,EAAM,EAAI,EACb,EAAY,EACZ,EAAQ,EAAM,GAKjB,GAAI,GAAa,EAAG,CAEnB,IAAM,EAAQ,EAAQ,GACtB,EAAW,KAAK,CACf,EAAG,EAAM,MACT,EAAG,EAAM,EACT,OAAQ,EACT,CAAC,EACD,EAAM,OAAS,EAAK,MACpB,EAAa,KAAK,IAAI,EAAY,EAAM,KAAK,EAC7C,EAAS,GACH,KAEN,IAAM,EAAO,EAEb,GAAI,EAAO,EAAK,QAAU,GAAa,EAAK,OAAS,EACpD,EAAQ,KAAK,CACZ,EAAG,EACH,OAAQ,EAAK,OACb,MAAO,EAAK,KACb,CAAC,EACD,EAAW,KAAK,CACf,EAAG,EACH,EAAG,EACH,OAAQ,EACT,CAAC,EACD,EAAc,EAAO,EAAK,OAC1B,EAAa,KAAK,IAAI,EAAY,EAAK,KAAK,EAC5C,EAAS,GAIX,GAAI,CAAC,EACJ,EAAW,KAAK,CAAE,EAAG,EAAG,EAAG,EAAG,OAAQ,EAAM,CAAC,EAK/C,IAAM,EAAa,GAAa,CAAU,EACpC,EAAc,GAAa,CAAW,EAE5C,MAAO,CACN,MAAO,KAAK,IAAI,EAAY,CAAQ,EACpC,OAAQ,KAAK,IAAI,EAAa,CAAS,EACvC,YACD,EAMD,SAAS,EAAU,CAClB,EACA,EACA,EACA,EACO,CACP,IAAM,EAAgB,EAAI,cAA8B,EAAI,EAE5D,QAAS,EAAI,EAAG,EAAI,EAAI,KAAM,IAAK,CAClC,IAAM,EAAS,EAAI,EAAI,MACjB,GAAU,EAAO,GAAK,EAAI,MAAQ,EAAO,EAE/C,QAAS,EAAI,EAAG,EAAI,EAAI,MAAQ,EAAe,IAC9C,EAAI,OAAO,EAAS,GAAK,EAAI,OAAO,EAAS,IAQhD,SAAS,EAAY,CAAC,EAAmB,CACxC,GAAI,GAAK,EAAG,MAAO,GAOnB,OANA,IACA,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,GACH,EAAI,EAML,SAAS,EAAW,CAAC,EAA+B,CAC1D,IAAQ,UAAW,EACb,EAAO,IAAI,WAAW,EAAO,MAAQ,EAAO,KAAO,CAAC,EAE1D,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAC5B,GAAU,EAAI,EAAO,MAAQ,GAAK,EAElC,EAAQ,EAAO,OAAO,IAAW,EAGvC,EAAK,GAAU,IACf,EAAK,EAAS,GAAK,IACnB,EAAK,EAAS,GAAK,IACnB,EAAK,EAAS,GAAK,EAIrB,OAAO,EAMD,SAAS,EAAY,CAAC,EAA+B,CAC3D,IAAQ,UAAW,EAEnB,GAAI,EAAO,QAAU,EAAO,MAC3B,OAAO,EAAO,OAIf,IAAM,EAAQ,IAAI,WAAW,EAAO,MAAQ,EAAO,IAAI,EACvD,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IACjC,EAAM,EAAI,EAAO,MAAQ,GAAK,EAAO,OAAO,EAAI,EAAO,MAAQ,GAIjE,OAAO,EAMD,SAAS,EAAU,CACzB,EACA,EAC4D,CAC5D,IAAM,EAAU,EAAM,OAAO,IAAI,CAAO,EACxC,GAAI,CAAC,EAAS,OAAO,KAErB,IAAQ,UAAW,EAEnB,MAAO,CACN,GAAI,EAAQ,OAAS,EAAO,MAC5B,GAAI,EAAQ,OAAS,EAAO,KAC5B,IAAK,EAAQ,OAAS,EAAQ,OAAS,EAAO,MAC9C,IAAK,EAAQ,OAAS,EAAQ,QAAU,EAAO,IAChD,EC/UD,IAAM,GAAK,KAAK,GAchB,SAAS,EAAS,CAAC,EAAmB,EAAW,EAAkB,CAClE,IAAM,EAAQ,IAAM,EAChB,EAAM,KAAK,IAAI,CAAC,CAAK,EACnB,EAAO,EAAM,EACf,EAAM,KAAK,KAAK,EAAQ,EAAE,EAE9B,EAAI,GAAK,EACT,GAAO,EACP,EAAI,GAAK,EACT,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,GAAO,EACP,GAAO,EACP,EAAI,GAAK,EAOX,SAAS,EAAW,CAAC,EAAqB,EAAW,EAAwB,CAC5E,IAAI,EAAQ,EAAM,GACd,EAAQ,EAAM,GACd,EAAQ,EAAM,GAElB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EACL,EAAM,GAAK,EAAO,IACjB,EAAQ,EAAM,EAAI,IAAM,EAAO,IAC/B,EAAQ,EAAM,EAAI,IAAM,EAAO,IAC/B,EAAQ,EAAM,EAAI,IAAM,EAAO,GACjC,EAAQ,EACR,EAAQ,EACR,EAAQ,EAAM,GACd,EAAM,GAAK,GAOb,SAAS,EAAU,CAClB,EACA,EACA,EACO,CAEP,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,EAAI,GAAG,GAAK,EAAQ,EAAI,EAAI,GAAK,EAAI,EAAQ,GAAK,EAAI,EAAQ,EAAI,GAClE,QAAS,EAAI,EAAI,EAAG,EAAI,EAAG,IAC1B,EAAI,GAAG,GAAK,EAAI,GAAG,GAClB,EAAQ,EAAI,EAAI,GAChB,EAAQ,EAAI,GACZ,GAAK,EAAQ,GAAK,EAAQ,EAAI,GAAK,EAAQ,EAAI,IAKlD,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAI,EAAI,EAAI,GAAG,GACrB,EAAI,GAAG,GAAK,EACZ,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,GAAI,IAAM,EAAG,SACb,IAAM,EAAM,EAAI,GAAG,GAAK,EACxB,EAAI,GAAG,GAAK,EACZ,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAI,GAAG,IAAM,EAAI,GAAG,GAAK,EAG3B,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAI,GAAG,IAAM,GAShB,SAAS,EAAS,CAAC,EAAkB,EAAW,EAAY,EAAmB,CAE9E,IAAM,EAAS,GACX,oBAAa,EAAM,qBAAY,EAAM,qBAAY,EAAM,sBACvD,qBAAa,EAAM,sBAAW,EAAM,sBAAW,EAAM,sBACrD,oBAAY,EAAM,qBAAW,EAAM,oBAAW,EAAM,sBACpD,sBAAY,EAAM,sBAAW,EAAM,sBAAW,EAAM,qBACxD,EAEM,EAAU,IAAI,aAAa,EAAE,EACnC,EAAQ,GAAK,EAAO,GACpB,EAAQ,GAAK,EAAO,GACpB,EAAQ,GAAK,EAAO,GACpB,EAAQ,GAAK,EAAO,GACpB,GAAY,EAAS,EAAG,CAAM,EAE9B,IAAM,EAAU,IAAI,aAAa,EAAE,EACnC,GAAU,EAAS,EAAI,EAAG,EAAK,CAAG,EAClC,GAAY,EAAS,EAAI,EAAG,CAAM,EAElC,IAAM,EAAsB,CAAC,EAC7B,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAI,KAAK,IAAI,aAAa,CAAC,CAAC,EAE7B,GAAW,EAAK,EAAS,CAAC,EAE1B,IAAM,EAAM,IAAI,aAAa,CAAC,EAC9B,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAI,GAAK,EAAQ,GAAK,EAAQ,EAAI,GAAK,EAAQ,GAAK,EAAQ,EAAI,GAGjE,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAI,EAAM,EACV,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,GAAO,EAAI,GAAG,GAAK,EAAI,GAExB,EAAG,GAAK,KAAK,IAAI,EAAG,CAAG,GAOzB,SAAS,EAAc,CAAC,EAAwB,CAC/C,IAAM,EAAK,IAAI,aAAa,CAAC,EACzB,EACA,EAEJ,GAAI,EAAK,IACR,EAAQ,EACR,EAAS,EACT,EAAG,GAAK,MAAQ,EAAK,EAAK,EAC1B,EAAG,GAAK,IAAM,EAAK,EAAI,EAAG,GAC1B,EAAG,GAAK,EAAG,GAAK,EACV,KAEN,IAAM,EAAU,KAAK,KAAK,QAAU,EAAK,UAAU,EACnD,EAAQ,KAAK,MAAM,KAAK,KAAK,CAAO,CAAC,EAAI,EACzC,IAAM,EAAO,EAAU,IAAM,EAAQ,GAAK,EAEpC,EAAM,MAAQ,EACpB,EAAS,EAAI,KAAK,OAAO,QAAU,OAAS,IAAQ,EAAI,EAAK,EAC7D,EAAS,KAAK,IAAI,EAAQ,CAAC,EAC3B,EAAS,KAAK,IAAI,EAAQ,CAAC,EAC3B,GAAU,EAAI,EAAQ,EAAI,CAAG,EAG9B,IAAM,EAAQ,IAAI,aAAa,CAAC,EAChC,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,EAAM,GAAK,EAAG,GAGf,MAAO,CAAE,QAAO,SAAQ,OAAM,EAO/B,SAAS,EAAU,CAClB,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,KAAK,OAAO,EAAI,GAAK,CAAC,EAEnC,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAS,EAAI,EACb,EAAS,EAAI,EAEnB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,EAAI,EAGX,EAAM,EACV,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,EAAK,CAAC,IAAM,GAAK,EAClD,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,EAAK,CAAC,IAAM,GAAK,EAClD,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAI,EAAG,CAAE,IAAM,GAAK,GAClD,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,IAAM,GAAK,GACtD,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,IAAM,GAAK,EACtD,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,IAAM,GAAK,EAEtD,EAAI,EAAS,GAAK,EAAM,KAQ3B,SAAS,EAAU,CAClB,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,KAAK,OAAO,EAAI,GAAK,CAAC,EAEnC,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,EAAI,EAEX,EAAM,EACV,IAAQ,EAAI,KAAK,IAAI,EAAG,EAAK,CAAC,EAAI,EAAY,IAAM,GAAK,EACzD,IAAQ,EAAI,KAAK,IAAI,EAAG,EAAK,CAAC,EAAI,EAAY,IAAM,GAAK,EACzD,IAAQ,EAAI,KAAK,IAAI,EAAI,EAAG,CAAE,EAAI,EAAY,IAAM,GAAK,GACzD,IAAQ,EAAI,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,EAAI,EAAY,IAAM,GAAK,GAC7D,IAAQ,EAAI,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,EAAI,EAAY,IAAM,GAAK,EAC7D,IAAQ,EAAI,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,EAAI,EAAY,IAAM,GAAK,EAE7D,EAAI,EAAI,EAAY,GAAK,EAAM,IAQlC,SAAS,EAAU,CAClB,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,EAAI,EAAI,EAErB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAS,EAAI,EACb,EAAS,EAAI,EAEnB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,KAAK,OAAO,EAAI,GAAK,CAAC,EAC3B,EAAO,EAAI,EAAK,EAElB,EAAM,EACV,GAAI,IAAQ,EAEX,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,IAAM,GAAK,EACnE,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,CAAE,CAAC,IAAM,GAAK,GAC/D,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,IAAM,GAAK,EAGnE,SAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,CAAE,CAAC,IAAM,GAAK,GAC/D,IAAQ,EAAI,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,IAAM,GAAK,GAGpE,EAAI,EAAS,GAAK,EAAM,KAQ3B,SAAS,EAAU,CAClB,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,EAAI,EAAI,EAErB,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,KAAK,OAAO,EAAI,GAAK,CAAC,EAC3B,EAAO,EAAI,EAAK,EAElB,EAAM,EACV,GAAI,IAAQ,EACX,IACE,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,EAAI,EAAY,IAAM,GAAK,EACpE,IACE,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,CAAE,CAAC,EAAI,EAAY,IAAM,GAAK,GAChE,IACE,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,EAAI,EAAY,IAAM,GAAK,EAEpE,SACE,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,CAAE,CAAC,EAAI,EAAY,IAAM,GAAK,GAChE,IACE,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,EAAI,EAAY,IAAM,GAAK,GAGrE,EAAI,EAAI,EAAY,GAAK,EAAM,IAQlC,SAAS,EAAQ,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,EAAI,EAAI,EAErB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC3B,IAAM,EAAS,EAAI,EACb,EAAS,EAAI,EAEnB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,EAAI,EACX,EAAM,EAGV,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,EAAI,CAAC,CAAC,EAC9C,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,EACjD,KACG,EAAI,EAAS,IAAS,IAAM,EAAI,EAAS,IAAU,IAAM,EAAM,GAGnE,EAAI,EAAS,GAAK,IAQrB,SAAS,EAAQ,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACO,CACP,IAAM,EAAO,EAAI,EAAI,EAErB,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,QAAS,EAAI,EAAG,EAAI,EAAM,IAAK,CAC9B,IAAM,EAAK,EAAI,EACX,EAAM,EAEV,QAAS,EAAI,EAAG,EAAI,EAAQ,IAAK,CAChC,IAAM,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,EAAI,CAAC,CAAC,EAC7C,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAG,EAAK,CAAC,CAAC,EAClD,KACG,EAAI,EAAM,EAAY,IAAM,IAC5B,EAAI,EAAS,EAAY,IAAM,IACjC,EAAM,GAGR,EAAI,EAAI,EAAY,GAAK,GAU5B,SAAS,EAAe,CACvB,EACA,EACA,EACS,CAGT,IAAM,GAAa,EAAU,GAAW,EACxC,OAAO,GAAa,EAAQ,CAAS,EAW/B,SAAS,EAAW,CAC1B,EACA,EACA,EAAkB,EACT,CACT,GAAI,GAAW,GAAK,GAAW,EAC9B,OAAO,EAIR,GAAI,EAAO,cACV,OAAO,GAAgB,EAAQ,EAAS,CAAO,EAIhD,IAAM,EAAM,EAAU,EAChB,EAAM,EAAU,EAEhB,EAAQ,GAAe,CAAG,EAC1B,EAAQ,GAAe,CAAG,EAE5B,EAAI,EAAO,MACX,EAAI,EAAO,KAGT,GAAY,EAAI,EAAM,OAAS,GAAM,EAAM,OAAS,EACpD,GAAY,EAAI,EAAM,OAAS,GAAM,EAAM,OAAS,EACpD,GAAS,EAAI,EAAW,GAAG,GAAK,EAAM,OAAS,IAAM,EACrD,GAAS,EAAI,EAAW,GAAG,GAAK,EAAM,OAAS,IAAM,EAGrD,EAAU,KAAK,IAAI,EAAI,EAAG,EAAO,CAAI,EAAI,EACzC,EAAO,IAAI,aAAa,CAAO,EAC/B,EAAO,IAAI,aAAa,CAAO,EAGrC,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAK,EAAI,EAAI,GAAK,EAAO,OAAO,EAAI,EAAO,MAAQ,IAAM,EAI3D,IAAI,EAAM,EACN,EAAM,EACN,EAAS,EAGb,QAAS,EAAI,EAAG,EAAI,EAAM,MAAO,IAAK,CACrC,IAAM,EAAO,KAAK,OAAO,EAAI,GAAK,CAAC,EACnC,GAAW,EAAK,EAAK,EAAG,EAAG,EAAQ,CAAC,EACpC,EAAI,EACJ,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAIvB,QAAS,EAAI,EAAG,EAAI,EAAM,MAAO,IAAK,CACrC,IAAM,EAAO,KAAK,OAAO,EAAI,GAAK,CAAC,EACnC,GAAW,EAAK,EAAK,EAAG,EAAG,EAAQ,CAAI,EACvC,EAAI,EACJ,EAAS,EACT,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAIvB,IAAM,EAAW,EAAI,EAAI,EAAM,OAC/B,GAAS,EAAK,EAAK,EAAG,EAAG,EAAQ,EAAU,EAAM,OAAQ,EAAM,KAAK,EACpE,EAAI,EACJ,EAAS,EACT,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAGtB,IAAM,EAAW,EAAI,EAAI,EAAM,OAC/B,GAAS,EAAK,EAAK,EAAG,EAAG,EAAQ,EAAQ,EAAM,OAAQ,EAAM,KAAK,EAClE,EAAI,EACJ,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAGtB,QAAS,EAAI,EAAG,EAAI,EAAM,MAAO,IAAK,CACrC,IAAM,EAAO,EAAI,EAAI,EACrB,GAAW,EAAK,EAAK,EAAG,EAAG,EAAQ,CAAI,EACvC,EAAI,EACJ,EAAS,EACT,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAIvB,QAAS,EAAI,EAAG,EAAI,EAAM,MAAO,IAAK,CACrC,IAAM,EAAO,EAAI,EAAI,EACrB,GAAW,EAAK,EAAK,EAAG,EAAG,EAAQ,CAAM,EACzC,EAAI,EACJ,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAIvB,IAAM,EAAW,KAAK,IAAI,EAAG,CAAI,EAC3B,EAAY,KAAK,IAAI,EAAG,CAAI,EAC5B,EAAY,IAAI,WAAW,EAAW,CAAS,EAGrD,QAAS,EAAI,EAAG,EAAI,EAAW,IAC9B,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAM,EAAI,EAAI,EAAS,IAAM,EACnC,EAAU,EAAI,EAAW,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,KAAK,MAAM,CAAG,CAAC,CAAC,EAI1E,MAAO,CACN,OAAQ,EACR,MAAO,EACP,KAAM,EACN,MAAO,EACP,YACA,SAAU,GACX,EAWM,SAAS,EAAgB,CAAC,EAAgB,EAAwB,CACxE,OAAO,GAAY,EAAQ,EAAQ,CAAM,EAYnC,SAAS,EAAY,CAC3B,EACA,EACA,EACS,CACT,IAAM,EAAK,GAAW,EAGtB,GAFkB,KAAK,IAAI,EAAS,CAAE,GAErB,EAGhB,OAAO,GAAa,GAAS,EAAU,GAAM,CAAC,EAE/C,OAAO,GAAY,EAAQ,EAAS,CAAE,ECpehC,SAAS,EAAM,CAAC,EAAW,EAAW,EAAmB,CAC/D,OAAO,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,EAAG,CAAC,CAAC,EAMrD,SAAS,EAAoB,CACnC,EACA,EACA,EACA,EACuB,CACvB,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAQ,EAAK,EAAK,EAAK,EAE7B,GAAI,EAAQ,aAGX,MAAO,CAAE,SADI,KAAK,MAAM,EAAK,EAAG,IAAM,GAAK,EAAK,EAAG,IAAM,CAAC,EACjC,EAAG,CAAE,EAI/B,IAAI,IAAM,EAAK,EAAG,GAAK,GAAM,EAAK,EAAG,GAAK,GAAM,EAChD,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,EAG9B,IAAM,EAAW,EAAG,EAAI,EAAI,EACtB,EAAW,EAAG,EAAI,EAAI,EAGtB,EAAO,KAAK,MAAM,EAAK,IAAa,GAAK,EAAK,IAAa,CAAC,EAOlE,MAAO,CAAE,UAHK,GAAM,EAAK,EAAG,GAAK,GAAM,EAAK,EAAG,IACzB,EAAI,EAAI,IAEJ,EAAM,GAAE,EAO5B,SAAS,EAAyB,CACxC,EACA,EACA,EACA,EACA,EACuB,CAKvB,IAAM,EAAK,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,EAC1B,EAAK,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,EAC1B,EAAM,GAAK,EAAG,EAAI,EAAG,GACrB,EAAM,GAAK,EAAG,EAAI,EAAG,GACrB,EAAK,EAAG,EAAI,EACZ,EAAK,EAAG,EAAI,EAMd,EAAU,IACV,EAAO,EACP,EAAU,EAGR,EAAQ,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACzC,GAAI,EAAQ,EACX,EAAU,EACV,EAAO,EAGR,IAAM,EAAK,EAAG,EAAI,EACZ,EAAK,EAAG,EAAI,EACZ,EAAQ,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE,EACzC,GAAI,EAAQ,EACX,EAAU,EACV,EAAO,EAIR,IAAM,EAAU,EAChB,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAI,EAAI,EAAI,EAGZ,QAAS,EAAO,EAAG,EAAO,EAAG,IAAQ,CACpC,IAAM,EAAK,EAAI,EAGT,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EACvD,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EAGvD,EAAK,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,GAAK,EAAG,EAAI,EAAG,IAC9C,EAAK,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,GAAK,EAAG,EAAI,EAAG,IAG9C,EAAM,EAAI,EACV,EAAM,EAAI,EAGV,EAAK,EAAO,EACZ,EAAK,EAAO,EACZ,EAAI,EAAK,EAAK,EAAK,EAGnB,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAM,EAAK,EAE/C,GAAI,KAAK,IAAI,EAAE,EAAI,aAAO,MAE1B,IAAM,EAAK,EAAI,GAGf,GAFA,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAI,CAAE,CAAC,EAE/B,KAAK,IAAI,CAAE,EAAI,SAAM,MAI1B,IAAM,EAAK,EAAI,EACT,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EACvD,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EACvD,EAAO,KAAK,MAAM,EAAO,IAAO,GAAK,EAAO,IAAO,CAAC,EAE1D,GAAI,EAAO,EACV,EAAU,EACV,EAAO,EAKT,IAAM,EAAK,EAAI,EACT,EAAW,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,GAAQ,EAAG,EAAI,EAAG,IACvD,EAAW,GAAK,GAAM,EAAG,EAAI,EAAG,GAAK,GAAQ,EAAG,EAAI,EAAG,IAEvD,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAO,EAAG,EAAI,EAAO,EAAO,EAAG,EAChE,EAAO,EAAK,EAAK,EAAG,EAAI,EAAI,EAAK,EAAO,EAAG,EAAI,EAAO,EAAO,EAAG,EAMtE,OAFA,EADc,GAAY,EAAK,GAAQ,GAAY,EAAK,IACrC,EAAI,EAAI,GAEpB,CAAE,SAAU,EAAU,EAAS,EAAG,CAAK,EAOxC,SAAS,EAAqB,CACpC,EACA,EACA,EACA,EACA,EACA,EACuB,CAGvB,IAAI,EAAU,IACV,EAAO,EACP,EAAU,EAGR,EAAQ,KAAK,MAAM,EAAG,EAAI,IAAO,GAAK,EAAG,EAAI,IAAO,CAAC,EAC3D,GAAI,EAAQ,EACX,EAAU,EACV,EAAO,EAGR,IAAM,EAAQ,KAAK,MAAM,EAAG,EAAI,IAAO,GAAK,EAAG,EAAI,IAAO,CAAC,EAC3D,GAAI,EAAQ,EACX,EAAU,EACV,EAAO,EAIR,IAAM,EAAU,GAChB,QAAS,EAAI,EAAG,EAAI,EAAS,IAAK,CACjC,IAAI,EAAI,EAAI,EAGZ,QAAS,EAAO,EAAG,EAAO,EAAG,IAAQ,CACpC,IAAM,EAAK,EAAI,EACT,EAAM,EAAK,EACX,EAAM,EAAM,EACZ,EAAK,EAAI,EACT,EAAK,EAAK,EAGV,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAI,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAC1D,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAI,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAG1D,EACL,EAAI,GAAO,EAAG,EAAI,EAAG,GACrB,EAAI,EAAK,GAAK,EAAG,EAAI,EAAG,GACxB,EAAI,GAAM,EAAG,EAAI,EAAG,GACf,EACL,EAAI,GAAO,EAAG,EAAI,EAAG,GACrB,EAAI,EAAK,GAAK,EAAG,EAAI,EAAG,GACxB,EAAI,GAAM,EAAG,EAAI,EAAG,GAGf,GACL,EAAI,GAAM,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,GAAK,EAAI,GAAK,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,GAC7D,EACL,EAAI,GAAM,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,GAAK,EAAI,GAAK,EAAG,EAAI,EAAI,EAAG,EAAI,EAAG,GAG7D,GAAK,EAAO,EACZ,GAAK,EAAO,EACZ,GAAI,GAAK,EAAK,GAAK,EAGnB,GAAK,EAAK,EAAK,EAAK,EAAK,GAAK,GAAM,GAAK,EAE/C,GAAI,KAAK,IAAI,EAAE,EAAI,aAAO,MAE1B,IAAM,GAAK,GAAI,GAGf,GAFA,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAI,EAAE,CAAC,EAE/B,KAAK,IAAI,EAAE,EAAI,SAAM,MAI1B,IAAM,EAAK,EAAI,EACT,EAAM,EAAK,EACX,EAAM,EAAM,EACZ,EAAK,EAAI,EACT,EAAK,EAAK,EAEV,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAI,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAC1D,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAI,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAC1D,EAAO,KAAK,MAAM,EAAO,IAAO,GAAK,EAAO,IAAO,CAAC,EAE1D,GAAI,EAAO,EACV,EAAU,EACV,EAAO,EAKT,IAAM,EAAK,EAAI,EACT,EAAM,EAAK,EACX,EAAK,EAAO,EAEZ,EACL,EAAI,GAAO,EAAG,EAAI,EAAG,GACrB,EAAI,EAAK,GAAQ,EAAG,EAAI,EAAG,GAC3B,EAAI,GAAM,EAAG,EAAI,EAAG,GACf,EACL,EAAI,GAAO,EAAG,EAAI,EAAG,GACrB,EAAI,EAAK,GAAQ,EAAG,EAAI,EAAG,GAC3B,EAAI,GAAM,EAAG,EAAI,EAAG,GAEf,EAAM,EAAM,EACZ,EAAK,EAAK,EACV,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAO,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAC7D,EACL,EAAM,EAAG,EAAI,EAAI,EAAM,EAAO,EAAG,EAAI,EAAI,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAMnE,OAFA,EADc,GAAY,EAAK,GAAQ,GAAY,EAAK,IACrC,EAAI,EAAI,GAEpB,CAAE,SAAU,EAAU,EAAS,EAAG,CAAK,EAM/C,SAAS,EAAqB,CAAC,EAAuB,CACrD,OAAQ,EAAK,UACP,OACJ,MAAO,CAAE,EAAG,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,EAAG,EAAK,GAAG,EAAI,EAAK,GAAG,CAAE,MACxD,YAEJ,MAAO,CAAE,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,GAAI,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,MACpE,QAEJ,MAAO,CAAE,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,GAAI,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,GAO3E,SAAS,EAAmB,CAAC,EAAuB,CACnD,OAAQ,EAAK,UACP,OACJ,MAAO,CAAE,EAAG,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,EAAG,EAAK,GAAG,EAAI,EAAK,GAAG,CAAE,MACxD,YAEJ,MAAO,CAAE,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,GAAI,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,MACpE,QAEJ,MAAO,CAAE,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,GAAI,EAAG,GAAK,EAAK,GAAG,EAAI,EAAK,GAAG,EAAG,GAO3E,SAAS,EAAS,CAAC,EAAiB,CACnC,IAAM,EAAM,KAAK,KAAK,EAAE,EAAI,EAAE,EAAI,EAAE,EAAI,EAAE,CAAC,EAC3C,GAAI,EAAM,aAAO,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EACrC,MAAO,CAAE,EAAG,EAAE,EAAI,EAAK,EAAG,EAAE,EAAI,CAAI,EAMrC,SAAS,EAAG,CAAC,EAAU,EAAkB,CACxC,OAAO,EAAE,EAAI,EAAE,EAAI,EAAE,EAAI,EAAE,EAM5B,SAAS,EAAa,CACrB,EACA,EACA,EAAY,KAAK,GAAK,EACZ,CACV,IAAM,EAAK,GAAU,CAAI,EACnB,EAAK,GAAU,CAAI,EACnB,EAAW,GAAI,EAAI,CAAE,EAErB,EAAQ,KAAK,KAAK,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,CAAQ,CAAC,CAAC,EAG3D,OAAO,EAAQ,GAAa,EAAQ,KAAK,GAAK,EAOxC,SAAS,EAAgB,CAAC,EAA8B,CAC9D,IAAM,EAAmB,KAAK,GAAK,EAEnC,QAAW,KAAW,EAAU,CAC/B,GAAI,EAAQ,SAAW,EAAG,SAE1B,GAAI,EAAQ,SAAW,EAAG,CAEzB,EAAQ,GAAG,MAAQ,EACnB,SAID,IAAI,EAA0B,EAE9B,QAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACxC,IAAM,EAAO,EAAQ,GACf,EAAW,EAAS,GAAI,EAAI,EAAQ,QAAU,EAAQ,QAE5D,GAAI,IAAM,EAET,EAAK,MAAQ,EACP,KAEN,IAAM,EAAU,GAAoB,CAAQ,EACtC,EAAU,GAAsB,CAAI,EAE1C,GAAI,GAAc,EAAS,EAAS,CAAgB,EAEnD,GAAiB,EAAe,GAAK,EAGtC,EAAK,MAAQ,GAKf,GAAI,EAAQ,QAAU,EAAG,CACxB,IAAM,EAAW,EAAQ,EAAQ,OAAS,GACpC,EAAY,EAAQ,GAEpB,EAAU,GAAoB,CAAQ,EACtC,EAAW,GAAsB,CAAS,EAEhD,GAAI,GAAc,EAAS,EAAU,CAAgB,GAEpD,GAAI,EAAS,QAAU,EAAU,MAAO,CAGvC,IAAM,EAAY,EAAQ,EAAQ,OAAS,IAAI,OAAS,EAClD,EAAa,EAAQ,IAAI,OAAS,EAGxC,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,GAAI,IAAM,EAAU,OAAS,IAAM,EAAW,CAC7C,EAAS,MAAQ,EACjB,WAYP,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACA,EACe,CACf,IAAM,EAAyB,CAAC,EAC5B,EAA6B,CAAC,EAC9B,EAA6B,KAC7B,EAA2B,KAEzB,EAAY,CAAC,EAAW,KAAsB,CACnD,EAAG,EAAI,EAAQ,EACf,EAAG,EAAQ,EAAE,EAAI,GAAS,EAAU,EAAI,EAAQ,CACjD,GAEA,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IAEJ,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAC5B,EAAiB,CAAC,EAEnB,EAAe,EAAU,EAAI,EAAG,EAAI,CAAC,EACrC,EAAa,EACb,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EAEjC,GACC,KAAK,IAAI,EAAG,EAAI,EAAa,CAAC,EAAI,UAClC,KAAK,IAAI,EAAG,EAAI,EAAa,CAAC,EAAI,SAElC,EAAe,KAAK,CACnB,KAAM,OACN,GAAI,EACJ,KACA,MAAO,CACR,CAAC,EAEF,EAAe,EAEhB,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EACjC,EAAe,KAAK,CACnB,KAAM,YACN,GAAI,EACJ,KACA,KACA,MAAO,CACR,CAAC,EACD,EAAe,EAEhB,UAEI,IACJ,GAAI,EAAc,CACjB,IAAM,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,GAAI,EAAI,EAAE,EAC7B,EAAK,EAAU,EAAI,EAAG,EAAI,CAAC,EACjC,EAAe,KAAK,CACnB,KAAM,QACN,GAAI,EACJ,KACA,KACA,KACA,MAAO,CACR,CAAC,EACD,EAAe,EAEhB,UAEI,IACJ,GAAI,GAAgB,EAAY,CAE/B,GACC,KAAK,IAAI,EAAa,EAAI,EAAW,CAAC,EAAI,UAC1C,KAAK,IAAI,EAAa,EAAI,EAAW,CAAC,EAAI,SAE1C,EAAe,KAAK,CACnB,KAAM,OACN,GAAI,EACJ,GAAI,EACJ,MAAO,CACR,CAAC,EAEF,EAAe,EAEhB,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAC5B,EAAiB,CAAC,EAEnB,MAKH,GAAI,EAAe,OAAS,EAC3B,EAAS,KAAK,CAAc,EAG7B,OAAO,EAMR,SAAS,EAAoB,CAC5B,EACA,EACA,EACuB,CACvB,OAAQ,EAAK,UACP,OACJ,OAAO,GAAqB,EAAI,EAAI,EAAK,GAAI,EAAK,EAAE,MAChD,YACJ,OAAO,GAA0B,EAAI,EAAI,EAAK,GAAI,EAAK,GAAI,EAAK,EAAE,MAC9D,QACJ,OAAO,GAAsB,EAAI,EAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,EAAE,GAO1E,SAAS,EAAa,CACrB,EACA,EACA,EACU,CACV,IAAI,EAAY,EAEhB,QAAW,KAAW,EACrB,QAAW,KAAQ,EAAS,CAE3B,IAAM,EAAS,GAAY,CAAI,EAE/B,QAAS,EAAI,EAAG,EAAI,EAAO,OAAS,EAAG,IAAK,CAC3C,IAAM,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAGtB,GAAI,EAAG,EAAI,IAAO,EAAG,EAAI,EAAI,CAC5B,IAAM,GAAS,EAAG,EAAI,EAAG,IAAM,EAAG,EAAI,EAAG,GACnC,EAAI,EAAG,EAAI,GAAS,EAAK,EAAG,GAElC,GAAI,EAAK,EACR,MAOL,OAAQ,EAAY,KAAO,EAM5B,SAAS,EAAW,CAAC,EAAyB,CAC7C,OAAQ,EAAK,UACP,OACJ,MAAO,CAAC,EAAK,GAAI,EAAK,EAAE,MAEpB,YAAa,CACjB,IAAM,EAAkB,CAAC,EAAK,EAAE,EAC1B,EAAU,EAChB,QAAS,EAAI,EAAG,GADA,EACc,IAAK,CAClC,IAAM,EAAI,EAFK,EAGT,EAAK,EAAI,EACf,EAAO,KAAK,CACX,EAAG,EAAK,EAAK,EAAK,GAAG,EAAI,EAAI,EAAK,EAAI,EAAK,GAAG,EAAI,EAAI,EAAI,EAAK,GAAG,EAClE,EAAG,EAAK,EAAK,EAAK,GAAG,EAAI,EAAI,EAAK,EAAI,EAAK,GAAG,EAAI,EAAI,EAAI,EAAK,GAAG,CACnE,CAAC,EAEF,OAAO,CACR,KAEK,QAAS,CACb,IAAM,EAAkB,CAAC,EAAK,EAAE,EAC1B,EAAU,EAChB,QAAS,EAAI,EAAG,GADA,EACc,IAAK,CAClC,IAAM,EAAI,EAFK,EAGT,EAAK,EAAI,EACT,EAAM,EAAK,EACX,EAAM,EAAM,EACZ,EAAK,EAAI,EACT,EAAK,EAAK,EAChB,EAAO,KAAK,CACX,EACC,EAAM,EAAK,GAAG,EACd,EAAI,EAAM,EAAI,EAAK,GAAG,EACtB,EAAI,EAAK,EAAK,EAAK,GAAG,EACtB,EAAK,EAAK,GAAG,EACd,EACC,EAAM,EAAK,GAAG,EACd,EAAI,EAAM,EAAI,EAAK,GAAG,EACtB,EAAI,EAAK,EAAK,EAAK,GAAG,EACtB,EAAK,EAAK,GAAG,CACf,CAAC,EAEF,OAAO,CACR,GAOK,SAAS,EAAU,CAAC,EAAiB,EAA8B,CACzE,IACC,QACA,SACA,QACA,UAAU,EACV,UAAU,EACV,QAAQ,GACR,SAAS,GACN,EAGE,EAAS,EAAa,EAAO,GAAqB,EAGlD,EAAW,GAAa,EAAM,EAAO,EAAS,EAAS,CAAK,EAGlE,GAAI,EAAS,SAAW,GAAK,EAAS,MAAM,CAAC,IAAM,EAAE,SAAW,CAAC,EAEhE,OADA,EAAO,OAAO,KAAK,CAAC,EACb,EAIR,GAAiB,CAAQ,EAGzB,IAAM,EAAuB,EAAS,KAAK,EAGrC,EAAW,EAAS,OAAO,CAAC,IAAM,EAAE,QAAU,CAAC,EAC/C,EAAa,EAAS,OAAO,CAAC,IAAM,EAAE,QAAU,CAAC,EACjD,EAAY,EAAS,OAAO,CAAC,IAAM,EAAE,QAAU,CAAC,EAGhD,EAAc,CAAC,IAAkC,CACtD,GAAI,EAAM,OAAS,EAAG,OAAO,EAC7B,OAAO,GAGF,EAAS,EAAY,CAAQ,EAC7B,EAAS,EAAY,CAAU,EAC/B,EAAS,EAAY,CAAS,EAGpC,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,IAAK,CAC/B,IAAM,EAAK,EAAI,IACT,EAAK,EAAI,IAGX,EAAO,IACP,EAAO,IACP,EAAO,IAEX,QAAW,KAAQ,EAAQ,CAC1B,IAAM,EAAS,GAAqB,EAAI,EAAI,CAAI,EAChD,GAAI,KAAK,IAAI,EAAO,QAAQ,EAAI,KAAK,IAAI,CAAI,EAC5C,EAAO,EAAO,SAIhB,QAAW,KAAQ,EAAQ,CAC1B,IAAM,EAAS,GAAqB,EAAI,EAAI,CAAI,EAChD,GAAI,KAAK,IAAI,EAAO,QAAQ,EAAI,KAAK,IAAI,CAAI,EAC5C,EAAO,EAAO,SAIhB,QAAW,KAAQ,EAAQ,CAC1B,IAAM,EAAS,GAAqB,EAAI,EAAI,CAAI,EAChD,GAAI,KAAK,IAAI,EAAO,QAAQ,EAAI,KAAK,IAAI,CAAI,EAC5C,EAAO,EAAO,SAKhB,IAAM,EAAW,GAAO,EAAM,EAAM,CAAI,EAKlC,EAJS,GAAc,EAAI,EAAI,CAAQ,EAIb,EAAI,GAC9B,EAAQ,KAAK,IAAI,CAAI,EAAI,EACzB,EAAQ,KAAK,IAAI,CAAI,EAAI,EACzB,EAAQ,KAAK,IAAI,CAAI,EAAI,EAGzB,EAAS,CAAC,IAAsB,CACrC,IAAM,EAAa,IAAO,EAAI,EAAU,IACxC,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,KAAK,MAAM,CAAU,CAAC,CAAC,GAGnD,EAAM,EAAI,EAAO,MAAQ,EAAI,EACnC,EAAO,OAAO,GAAO,EAAO,CAAK,EACjC,EAAO,OAAO,EAAM,GAAK,EAAO,CAAK,EACrC,EAAO,OAAO,EAAM,GAAK,EAAO,CAAK,EAIvC,OAAO,EAwBR,SAAS,EAAU,CAClB,EACA,EACA,EAC6D,CAC7D,IAAM,EAAmB,CAAC,EACpB,EAA0B,CAAC,EAE7B,EAAa,EACb,EAAc,EAElB,QAAW,KAAQ,EAAO,CACzB,IAAI,EAAS,GACT,EAAY,GACZ,EAAQ,EAGZ,QAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACxC,IAAM,EAAQ,EAAQ,GAGtB,GAAI,EAAM,MAAQ,EAAK,OAAS,GAAY,EAAK,QAAU,EAAM,QAChE,GAAI,EAAM,EAAI,EACb,EAAY,EACZ,EAAQ,EAAM,GAKjB,GAAI,GAAa,EAAG,CAEnB,IAAM,EAAQ,EAAQ,GACtB,EAAW,KAAK,CACf,EAAG,EAAM,MACT,EAAG,EAAM,EACT,OAAQ,EACT,CAAC,EACD,EAAM,OAAS,EAAK,MACpB,EAAa,KAAK,IAAI,EAAY,EAAM,KAAK,EAC7C,EAAS,GACH,KAEN,IAAM,EAAO,EAEb,GAAI,EAAO,EAAK,QAAU,GAAa,EAAK,OAAS,EACpD,EAAQ,KAAK,CACZ,EAAG,EACH,OAAQ,EAAK,OACb,MAAO,EAAK,KACb,CAAC,EACD,EAAW,KAAK,CACf,EAAG,EACH,EAAG,EACH,OAAQ,EACT,CAAC,EACD,EAAc,EAAO,EAAK,OAC1B,EAAa,KAAK,IAAI,EAAY,EAAK,KAAK,EAC5C,EAAS,GAIX,GAAI,CAAC,EACJ,EAAW,KAAK,CAAE,EAAG,EAAG,EAAG,EAAG,OAAQ,EAAM,CAAC,EAK/C,IAAM,EAAa,GAAa,CAAU,EACpC,EAAc,GAAa,CAAW,EAE5C,MAAO,CACN,MAAO,KAAK,IAAI,EAAY,CAAQ,EACpC,OAAQ,KAAK,IAAI,EAAa,CAAS,EACvC,YACD,EAMD,SAAS,EAAY,CAAC,EAAmB,CACxC,GAAI,GAAK,EAAG,MAAO,GAOnB,OANA,IACA,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,EACV,GAAK,GAAK,GACH,EAAI,EAMZ,SAAS,EAAa,CACrB,EACA,EACA,EACA,EACO,CACP,QAAS,EAAI,EAAG,EAAI,EAAI,KAAM,IAAK,CAClC,IAAM,EAAS,EAAI,EAAI,MACjB,GAAU,EAAO,GAAK,EAAI,MAAQ,EAAO,EAE/C,QAAS,EAAI,EAAG,EAAI,EAAI,MAAQ,EAAG,IAClC,EAAI,OAAO,EAAS,GAAK,EAAI,OAAO,EAAS,IAQzC,SAAS,EAAc,CAC7B,EACA,EACA,EACa,CACb,IACC,WACA,UAAU,EACV,WAAW,KACX,YAAY,KACZ,SAAS,GACN,EAEE,EAAQ,EAAW,EAAK,WAGxB,EAMD,CAAC,EAEN,QAAW,KAAW,EAAU,CAC/B,IAAM,EAAO,GAAa,EAAM,CAAO,EACvC,GAAI,CAAC,GAAQ,CAAC,EAAK,OAAQ,SAE3B,IAAM,EAAS,EAAK,OAGd,EACL,KAAK,MAAM,EAAO,KAAO,EAAO,MAAQ,CAAK,EAAI,EAAS,EACrD,EACL,KAAK,MAAM,EAAO,KAAO,EAAO,MAAQ,CAAK,EAAI,EAAS,EAE3D,GAAI,GAAc,GAAK,GAAe,EAAG,SAGzC,IAAM,EAAS,GAAW,EAAM,CAC/B,MAAO,EACP,OAAQ,EACR,QACA,QAAS,CAAC,EAAO,KAAO,EAAQ,EAChC,QAAS,EAAO,KAAO,EAAQ,EAC/B,MAAO,GACP,QACD,CAAC,EAEK,EAAU,EAAK,aAAa,CAAO,EAAI,EACvC,EAAW,EAAO,KAAO,EAAQ,EACjC,EAAW,EAAO,KAAO,EAAQ,EAEvC,EAAU,KAAK,CACd,UACA,SACA,WACA,WACA,SACD,CAAC,EAIF,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,OAAO,KAAO,EAAE,OAAO,IAAI,EAGtD,IACC,MAAO,EACP,OAAQ,EACR,cACG,GACH,EAAU,IAAI,CAAC,KAAO,CACrB,MAAO,EAAE,OAAO,MAAQ,EAAU,EAClC,OAAQ,EAAE,OAAO,KAAO,EAAU,CACnC,EAAE,EACF,EACA,CACD,EAGM,EAAQ,EAAa,EAAY,GAA0B,EAG3D,EAAe,IAAI,IAEzB,QAAS,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CAC1C,IAAM,EAAQ,EAAU,GAClB,EAAY,EAAW,GAE7B,GAAI,CAAC,EAAU,OAAQ,SAGvB,GACC,EAAM,OACN,EACA,EAAU,EAAI,EACd,EAAU,EAAI,CACf,EAGA,EAAa,IAAI,EAAM,QAAS,CAC/B,QAAS,EAAM,QACf,OAAQ,EAAU,EAAI,EACtB,OAAQ,EAAU,EAAI,EACtB,MAAO,EAAM,OAAO,MACpB,OAAQ,EAAM,OAAO,KACrB,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAS,EAAM,OAChB,CAAC,EAGF,MAAO,CACN,OAAQ,EACR,OAAQ,EACR,UACD,EAMM,SAAS,EAAmB,CAClC,EACA,EACa,CACb,IAAM,EAAqB,CAAC,EAE5B,QAAS,EAAY,GAAI,GAAa,IAAK,IAAa,CACvD,IAAM,EAAU,EAAK,QAAQ,CAAS,EACtC,GAAI,IAAY,QAAa,IAAY,EACxC,EAAS,KAAK,CAAO,EAIvB,OAAO,GAAe,EAAM,EAAU,CAAO,EAMvC,SAAS,EAAoB,CACnC,EACA,EACA,EACa,CACb,IAAM,EAAa,IAAI,IAEvB,QAAW,KAAQ,EAAM,CACxB,IAAM,EAAY,EAAK,YAAY,CAAC,EACpC,GAAI,IAAc,OAAW,SAE7B,IAAM,EAAU,EAAK,QAAQ,CAAS,EACtC,GAAI,IAAY,QAAa,IAAY,EACxC,EAAW,IAAI,CAAO,EAIxB,OAAO,GAAe,EAAM,MAAM,KAAK,CAAU,EAAG,CAAO,EAMrD,SAAS,EAAc,CAAC,EAA+B,CAC7D,IAAQ,UAAW,EAEnB,GAAI,EAAO,QAAU,EAAO,MAAQ,EACnC,OAAO,EAAO,OAIf,IAAM,EAAM,IAAI,WAAW,EAAO,MAAQ,EAAO,KAAO,CAAC,EACzD,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAQ,EAAG,IACrC,EAAI,EAAI,EAAO,MAAQ,EAAI,GAAK,EAAO,OAAO,EAAI,EAAO,MAAQ,GAInE,OAAO,EAMD,SAAS,EAAe,CAAC,EAA+B,CAC9D,IAAQ,UAAW,EACb,EAAO,IAAI,WAAW,EAAO,MAAQ,EAAO,KAAO,CAAC,EAE1D,QAAS,EAAI,EAAG,EAAI,EAAO,KAAM,IAChC,QAAS,EAAI,EAAG,EAAI,EAAO,MAAO,IAAK,CACtC,IAAM,EAAS,EAAI,EAAO,MAAQ,EAAI,EAChC,GAAU,EAAI,EAAO,MAAQ,GAAK,EAExC,EAAK,GAAU,EAAO,OAAO,GAC7B,EAAK,EAAS,GAAK,EAAO,OAAO,EAAS,GAC1C,EAAK,EAAS,GAAK,EAAO,OAAO,EAAS,GAC1C,EAAK,EAAS,GAAK,IAIrB,OAAO,ECrlCD,SAAS,EAAU,EAAa,CACtC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAMlB,SAAS,EAAW,EAAc,CACxC,MAAO,CACN,CAAC,EAAG,EAAG,CAAC,EACR,CAAC,EAAG,EAAG,CAAC,EACR,CAAC,EAAG,EAAG,CAAC,CACT,EAMM,SAAS,EAAW,CAAC,EAAY,EAAsB,CAC7D,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAI,CAAE,EAMpB,SAAS,EAAO,CAAC,EAAY,EAAsB,CACzD,MAAO,CAAC,EAAI,EAAG,EAAG,EAAI,EAAG,CAAC,EAMpB,SAAS,EAAQ,CAAC,EAAyB,CACjD,IAAM,EAAM,KAAK,IAAI,CAAK,EACpB,EAAM,KAAK,IAAI,CAAK,EAC1B,MAAO,CAAC,EAAK,EAAK,CAAC,EAAK,EAAK,EAAG,CAAC,EAM3B,SAAS,EAAO,CAAC,EAAgB,EAA0B,CACjE,MAAO,CAAC,EAAG,EAAQ,EAAQ,EAAG,EAAG,CAAC,EAM5B,SAAS,EAAU,CAAC,EAAa,EAAuB,CAC9D,MAAO,CACN,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GACvB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GACvB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GACvB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GACvB,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GAC9B,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,GAAK,EAAE,EAC/B,EAMM,SAAS,EAAW,CAAC,EAAc,EAAyB,CAClE,IAAM,EAAoB,CACzB,CAAC,EAAG,EAAG,CAAC,EACR,CAAC,EAAG,EAAG,CAAC,EACR,CAAC,EAAG,EAAG,CAAC,CACT,EACA,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,QAAS,EAAI,EAAG,EAAI,EAAG,IACtB,EAAO,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAGxE,OAAO,EAMD,SAAS,EAAgB,CAC/B,EACA,EACA,EAC2B,CAC3B,MAAO,CACN,EAAG,EAAE,GAAK,EAAI,EAAE,GAAK,EAAI,EAAE,GAC3B,EAAG,EAAE,GAAK,EAAI,EAAE,GAAK,EAAI,EAAE,EAC5B,EAMM,SAAS,EAAiB,CAChC,EACA,EACA,EAC2B,CAC3B,IAAM,EAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,GAC3C,GAAI,KAAK,IAAI,CAAC,EAAI,aAEjB,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAErB,MAAO,CACN,GAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,IAAM,EAC3C,GAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,GAAK,EAAI,EAAE,GAAG,IAAM,CAC5C,EAOM,SAAS,EAAe,CAC9B,EACA,EAAkB,EAClB,EAAkB,EACN,CAEZ,IAAM,EAAW,EAAK,SAAS,IAAI,CAAC,IAAqB,CACxD,OAAQ,EAAI,UACN,QACA,IACJ,MAAO,CACN,KAAM,EAAI,KACV,EAAG,CAAC,EAAI,EAAI,EACZ,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,CAAC,EAAI,GAAK,EACd,GAAI,EAAI,GAAK,EACb,EAAG,CAAC,EAAI,EAAI,EACZ,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,CAAC,EAAI,GAAK,EACd,GAAI,EAAI,GAAK,EACb,GAAI,CAAC,EAAI,GAAK,EACd,GAAI,EAAI,GAAK,EACb,EAAG,CAAC,EAAI,EAAI,EACZ,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAGG,EAA6B,KACjC,GAAI,EAAK,OAAQ,CAChB,IAAM,EAAI,EAAK,OAQf,GAPA,EAAS,CACR,KAAM,CAAC,EAAE,KAAO,EAChB,KAAM,EAAE,KAAO,EACf,KAAM,CAAC,EAAE,KAAO,EAChB,KAAM,EAAE,KAAO,CAChB,EAEI,EAAO,KAAO,EAAO,KACxB,CAAC,EAAO,KAAM,EAAO,IAAI,EAAI,CAAC,EAAO,KAAM,EAAO,IAAI,EAEvD,GAAI,EAAO,KAAO,EAAO,KACxB,CAAC,EAAO,KAAM,EAAO,IAAI,EAAI,CAAC,EAAO,KAAM,EAAO,IAAI,EAIxD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAQvC,SAAS,EAAgB,CAC/B,EACA,EACA,EACY,CACZ,IAAM,EAAS,GAAa,EAAI,GAAK,EAAY,GAAK,GAAK,CAAC,GACtD,EAAS,GAAa,EAAI,GAAK,EAAY,GAAK,GAAK,CAAC,GAEtD,EAAW,EAAK,SAAS,IAAI,CAAC,IAAqB,CACxD,OAAQ,EAAI,UACN,QACA,IACJ,MAAO,CACN,KAAM,EAAI,KACV,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GAAK,EACb,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CACN,KAAM,IACN,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GAAK,EACb,GAAI,EAAI,GAAK,EACb,EAAG,EAAI,EAAI,EACX,EAAG,EAAI,EAAI,CACZ,MACI,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAEG,EAA6B,KACjC,GAAI,EAAK,OACR,EAAS,CACR,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,EACzB,KAAM,EAAK,OAAO,KAAO,CAC1B,EAGD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAMvC,SAAS,EAAkB,CAAC,EAAiB,EAAwB,CAC3E,IAAM,EAAW,EAAK,SAAS,IAAI,CAAC,IAAqB,CACxD,OAAQ,EAAI,UACN,QACA,IAAK,CACT,IAAM,EAAI,GAAiB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC1C,MAAO,CAAE,KAAM,EAAI,KAAM,EAAG,EAAE,EAAG,EAAG,EAAE,CAAE,CACzC,KACK,IAAK,CACT,IAAM,EAAK,GAAiB,EAAI,GAAI,EAAI,GAAI,CAAC,EACvC,EAAI,GAAiB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC1C,MAAO,CAAE,KAAM,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAE,EAAG,EAAG,EAAE,CAAE,CACxD,KACK,IAAK,CACT,IAAM,EAAM,GAAiB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAM,GAAiB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAI,GAAiB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC1C,MAAO,CACN,KAAM,IACN,GAAI,EAAI,EACR,GAAI,EAAI,EACR,GAAI,EAAI,EACR,GAAI,EAAI,EACR,EAAG,EAAE,EACL,EAAG,EAAE,CACN,CACD,KACK,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAGG,EAA6B,KACjC,GAAI,EAAK,OAAQ,CAChB,IAAM,EAAI,EAAK,OACT,EAAU,CACf,GAAiB,EAAE,KAAM,EAAE,KAAM,CAAC,EAClC,GAAiB,EAAE,KAAM,EAAE,KAAM,CAAC,EAClC,GAAiB,EAAE,KAAM,EAAE,KAAM,CAAC,EAClC,GAAiB,EAAE,KAAM,EAAE,KAAM,CAAC,CACnC,EACA,EAAS,CACR,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,CAC1C,EAGD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAOvC,SAAS,EAAkB,CAAC,EAAiB,EAAyB,CAC5E,IAAM,EAAW,EAAK,SAAS,IAAI,CAAC,IAAqB,CACxD,OAAQ,EAAI,UACN,QACA,IAAK,CACT,IAAM,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,MAAO,CAAE,KAAM,EAAI,KAAM,EAAG,EAAE,EAAG,EAAG,EAAE,CAAE,CACzC,KACK,IAAK,CAIT,IAAM,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,MAAO,CAAE,KAAM,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAE,EAAG,EAAG,EAAE,CAAE,CACxD,KACK,IAAK,CACT,IAAM,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,MAAO,CACN,KAAM,IACN,GAAI,EAAG,EACP,GAAI,EAAG,EACP,GAAI,EAAG,EACP,GAAI,EAAG,EACP,EAAG,EAAE,EACL,EAAG,EAAE,CACN,CACD,KACK,IACJ,MAAO,CAAE,KAAM,GAAI,UAEnB,OAAO,GAET,EAGG,EAA6B,KACjC,GAAI,EAAK,OAAQ,CAChB,IAAM,EAAI,EAAK,OACT,EAAU,CACf,GAAkB,EAAE,KAAM,EAAE,KAAM,CAAC,EACnC,GAAkB,EAAE,KAAM,EAAE,KAAM,CAAC,EACnC,GAAkB,EAAE,KAAM,EAAE,KAAM,CAAC,EACnC,GAAkB,EAAE,KAAM,EAAE,KAAM,CAAC,CACpC,EACA,EAAS,CACR,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,EACzC,KAAM,KAAK,IAAI,GAAG,EAAQ,IAAI,CAAC,IAAM,EAAE,CAAC,CAAC,CAC1C,EAGD,MAAO,CAAE,WAAU,SAAQ,MAAO,EAAK,KAAM,EAOvC,SAAS,EAAiB,CAAC,EAA6B,CAC9D,IAAI,EAAO,IACP,EAAO,IACP,EAAO,KACP,EAAO,KAEX,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,QACA,IACJ,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,UACI,IACJ,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,CAAC,EACnC,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,CAAC,EACnC,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,CAAC,EACnC,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,CAAC,EACnC,UACI,IACJ,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAC3C,MAIH,GAAI,CAAC,OAAO,SAAS,CAAI,EACxB,MAAO,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,CAAE,EAG7C,MAAO,CAAE,OAAM,OAAM,OAAM,MAAK,EAOjC,SAAS,EAAgB,CAAC,EAAY,EAAY,EAAsB,CAGvE,IAAM,EAAQ,EAAK,EAAI,EAAK,EAC5B,GAAI,KAAK,IAAI,CAAK,EAAI,aAAO,MAAO,CAAC,EACrC,IAAM,GAAK,EAAK,GAAM,EACtB,GAAI,EAAI,GAAK,EAAI,EAAG,MAAO,CAAC,CAAC,EAC7B,MAAO,CAAC,EAOT,SAAS,EAAY,CACpB,EACA,EACA,EACA,EACW,CAEX,IAAM,EAAI,CAAC,EAAK,EAAI,EAAK,EAAI,EAAK,EAC5B,EAAI,GAAK,EAAK,EAAI,EAAK,GACvB,EAAI,CAAC,EAAK,EAEV,EAAmB,CAAC,EAE1B,GAAI,KAAK,IAAI,CAAC,EAAI,cAEjB,GAAI,KAAK,IAAI,CAAC,EAAI,aAAO,CACxB,IAAM,EAAI,CAAC,EAAI,EACf,GAAI,EAAI,GAAK,EAAI,EAAG,EAAO,KAAK,CAAC,GAE5B,KAEN,IAAM,EAAO,EAAI,EAAI,EAAI,EAAI,EAC7B,GAAI,GAAQ,EAAG,CACd,IAAM,EAAW,KAAK,KAAK,CAAI,EACzB,GAAM,CAAC,EAAI,IAAa,EAAI,GAC5B,GAAM,CAAC,EAAI,IAAa,EAAI,GAClC,GAAI,EAAK,GAAK,EAAK,EAAG,EAAO,KAAK,CAAE,EACpC,GAAI,EAAK,GAAK,EAAK,EAAG,EAAO,KAAK,CAAE,GAItC,OAAO,EAMR,SAAS,EAAa,CAAC,EAAY,EAAY,EAAY,EAAmB,CAC7E,IAAM,EAAK,EAAI,EACf,OAAO,EAAK,EAAK,EAAK,EAAI,EAAK,EAAI,EAAK,EAAI,EAAI,EAMjD,SAAS,EAAS,CACjB,EACA,EACA,EACA,EACA,EACS,CACT,IAAM,EAAK,EAAI,EACf,OACC,EAAK,EAAK,EAAK,EACf,EAAI,EAAK,EAAK,EAAI,EAClB,EAAI,EAAK,EAAI,EAAI,EACjB,EAAI,EAAI,EAAI,EAOP,SAAS,EAAkB,CAAC,EAA8B,CAChE,IAAI,EAAO,IACP,EAAO,IACP,EAAO,KACP,EAAO,KAEP,EAAO,EACP,EAAO,EAEX,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,IACJ,EAAO,EAAI,EACX,EAAO,EAAI,EACX,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,UACI,IACJ,EAAO,EAAI,EACX,EAAO,EAAI,EACX,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,EAAO,KAAK,IAAI,EAAM,CAAI,EAC1B,UACI,IAAK,CAET,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAE3B,QAAW,KAAK,GAAiB,EAAM,EAAI,GAAI,EAAI,CAAC,EAAG,CACtD,IAAM,EAAI,GAAc,EAAM,EAAI,GAAI,EAAI,EAAG,CAAC,EAC9C,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EAExB,QAAW,KAAK,GAAiB,EAAM,EAAI,GAAI,EAAI,CAAC,EAAG,CACtD,IAAM,EAAI,GAAc,EAAM,EAAI,GAAI,EAAI,EAAG,CAAC,EAC9C,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EAExB,EAAO,EAAI,EACX,EAAO,EAAI,EACX,KACD,KACK,IAAK,CAET,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAC3B,EAAO,KAAK,IAAI,EAAM,EAAI,CAAC,EAE3B,QAAW,KAAK,GAAa,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAAG,CAC1D,IAAM,EAAI,GAAU,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EAClD,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EAExB,QAAW,KAAK,GAAa,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,CAAC,EAAG,CAC1D,IAAM,EAAI,GAAU,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,CAAC,EAClD,EAAO,KAAK,IAAI,EAAM,CAAC,EACvB,EAAO,KAAK,IAAI,EAAM,CAAC,EAExB,EAAO,EAAI,EACX,EAAO,EAAI,EACX,KACD,EAIF,GAAI,CAAC,OAAO,SAAS,CAAI,EACxB,MAAO,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,CAAE,EAG7C,MAAO,CAAE,OAAM,OAAM,OAAM,MAAK,EAO1B,SAAS,EAAqB,CACpC,EACA,EACA,EACS,CACT,IAAI,EAAO,EAEX,QAAW,KAAO,EAAK,SACtB,OAAQ,EAAI,UACN,QACA,IAAK,CACT,IAAM,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAE,CAAC,EACzB,KACD,KACK,IAAK,CACT,IAAM,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAG,EAAG,EAAE,CAAC,EAC/B,KACD,KACK,IAAK,CACT,IAAM,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAK,GAAkB,EAAI,GAAI,EAAI,GAAI,CAAC,EACxC,EAAI,GAAkB,EAAI,EAAG,EAAI,EAAG,CAAC,EAC3C,EAAO,KAAK,IAAI,EAAM,EAAG,EAAG,EAAG,EAAG,EAAE,CAAC,EACrC,KACD,EAIF,OAAO,EAMD,SAAS,EAAgB,CAC/B,EACA,EACA,EACY,CACZ,OAAO,GAAmB,EAAM,GAAY,EAAI,CAAE,CAAC,EAM7C,SAAS,EAAY,CAC3B,EACA,EACA,EAAa,EACD,CACZ,OAAO,GAAmB,EAAM,GAAQ,EAAI,CAAE,CAAC,EAMzC,SAAS,EAAa,CAAC,EAAiB,EAA0B,CACxE,OAAO,GAAmB,EAAM,GAAS,CAAK,CAAC,EAOzC,SAAS,EAAgB,CAAC,EAAiB,EAA0B,CAC3E,IAAM,EAAS,KAAK,IAAK,EAAQ,KAAK,GAAM,GAAG,EAC/C,OAAO,GAAmB,EAAM,GAAQ,EAAQ,CAAC,CAAC,EAS5C,SAAS,EAAiB,CAChC,EACA,EACA,EACY,CACZ,MAAO,CACN,CAAC,EAAG,EAAG,CAAC,EAAkB,CAAQ,EAClC,CAAC,EAAG,EAAG,CAAC,EAAkB,CAAQ,EAClC,CAAC,EAAG,EAAG,CAAC,CACT,EAMM,SAAS,EAAY,CAAC,EAA+B,CAC3D,IAAM,EAA0B,CAAC,EAC7B,EAAO,IACP,EAAO,IACP,EAAO,KACP,EAAO,KAEX,QAAW,KAAQ,EAElB,GADA,EAAS,KAAK,GAAG,EAAK,QAAQ,EAC1B,EAAK,OACR,EAAO,KAAK,IAAI,EAAM,EAAK,OAAO,IAAI,EACtC,EAAO,KAAK,IAAI,EAAM,EAAK,OAAO,IAAI,EACtC,EAAO,KAAK,IAAI,EAAM,EAAK,OAAO,IAAI,EACtC,EAAO,KAAK,IAAI,EAAM,EAAK,OAAO,IAAI,EAIxC,IAAM,EAAS,OAAO,SAAS,CAAI,EAAI,CAAE,OAAM,OAAM,OAAM,MAAK,EAAI,KACpE,MAAO,CAAE,WAAU,QAAO,EAMpB,SAAS,EAAS,CAAC,EAA4B,CACrD,MAAO,CACN,SAAU,EAAK,SAAS,IAAI,CAAC,KAAS,IAAK,CAAI,EAAE,EACjD,OAAQ,EAAK,OAAS,IAAK,EAAK,MAAO,EAAI,KAC3C,MAAO,EAAK,KACb,EC3tBM,IAAK,IAAL,CAAK,IAAL,CAEN,SAAO,GAAP,OAEA,cAAY,GAAZ,YAEA,YAAU,GAAV,UAEA,SAAO,GAAP,SARW,SAeL,SAAS,EAAiB,CAAC,EAAoB,CAUrD,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAa,CAAE,EACxD,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,IAG1B,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAa,CAAE,EACxD,GAAI,IAAO,KAAQ,MAAO,IAE1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KAGzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GAGzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,KAG1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAG1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAW,CAAE,EACtD,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAW,CAAE,EAGtD,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAc,CAAE,EACzD,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAc,CAAE,EACzD,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KAGzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAG1B,GAAI,GAAM,OAAU,GAAM,MAAQ,OAAO,GAAa,CAAE,EACxD,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GAGzC,GAAI,GAAM,KAAU,GAAM,IAAQ,OAAO,GAAY,CAAE,EAGvD,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAa,CAAE,EAGxD,GAAI,GAAM,MAAU,GAAM,KAAQ,OAAO,GAAa,CAAE,EAGxD,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,KAEzC,MAAO,GAGR,SAAS,EAAU,CAAC,EAAoB,CAEvC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAE1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,MAAO,GAGR,SAAS,EAAa,CAAC,EAAoB,CAC1C,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,MAAO,GAGR,SAAS,EAAY,CAAC,EAAoB,CACzC,GAAI,IAAO,MAAQ,MAAO,KAC1B,GAAI,IAAO,MAAQ,MAAO,KAC1B,GAAI,IAAO,MAAQ,MAAO,KAC1B,GAAI,IAAO,MAAQ,MAAO,KAC1B,GAAI,IAAO,MAAQ,MAAO,KAC1B,GAAI,IAAO,MAAQ,MAAO,KAC1B,MAAO,GAGR,SAAS,EAAY,CAAC,EAAoB,CAEzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,MAAO,KAGR,SAAS,EAAY,CAAC,EAAoB,CAEzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,MAAO,KAGR,SAAS,EAAY,CAAC,EAAoB,CAEzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,CAEjC,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAE3B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,MAAO,GAGR,SAAS,EAAY,CAAC,EAAoB,CACzC,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,IAAO,KAAQ,MAAO,KAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,KACzC,MAAO,GAGR,SAAS,EAAW,CAAC,EAAoB,CAExC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,GACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,IAAO,IAAQ,MAAO,KAC1B,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,IAAO,IAAQ,MAAO,GAC1B,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,KACzC,MAAO,GAMD,SAAS,EAAY,CAAC,EAA0B,CAEtD,IAAM,EAAI,EAAM,OACZ,EAAI,EAER,MAAO,EAAI,EAAG,CACb,IAAM,EAAO,EAAM,GACnB,GAAI,CAAC,EAAM,CACV,IACA,SAGD,IAAM,EAAM,GAAkB,EAAK,SAAS,EAC5C,GAAI,IAAQ,EAAG,CAEd,IACA,SAID,IAAI,EAAI,EACR,MAAO,EAAI,EAAG,CACb,IAAM,EAAW,EAAM,EAAI,GAC3B,GAAI,CAAC,EAAU,MAEf,IAAM,EAAU,GAAkB,EAAS,SAAS,EACpD,GAAI,IAAY,EAAG,MACnB,GAAI,GAAW,EAAK,MAGpB,EAAM,GAAK,EACX,EAAM,EAAI,GAAK,EACf,IAGD,KAOF,IAAM,GAAwC,IAAI,IAAI,CAErD,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EAEzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EAEzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,IAAQ,CAAC,IAAQ,GAAM,CAAC,EAEzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,IAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC,GAAQ,GAAM,CAAC,EACzB,CAAC,KAAQ,CAAC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O,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,IAAO,KAAQ,MAAO,IAI1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,IAAO,KAAQ,MAAO,IAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,IACzC,GAAI,GAAM,MAAU,GAAM,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AM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAA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,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,IAAO,MAAS,MAAO,GAC3B,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C,GAAI,GAAM,OAAW,GAAM,MAAS,MAAO,GAC3C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,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,MAAU,IAAO,KAAQ,MAAO,GAC3C,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GAGzC,GAAI,GAAM,KAAU,GAAM,IAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,IAAO,KAAQ,MAAO,GAC1B,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,MAAU,GAAM,KAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,GAAM,OAAU,GAAM,MAAQ,MAAO,GACzC,GAAI,IAAO,MAAQ,MAAO,GAC1B,GAAI,IAAO,M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",
126
+ "debugId": "D97CC864CE69D23964756E2164756E21",
122
127
  "names": []
123
128
  }