@weasel-js/labkit 0.1.0 → 0.7.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/_dts/{fitViewToBounds-rWrBI4a6.d.ts → DrawCommand-CEvS5AdV.d.ts} +124 -23
- package/dist/{chunk-B5ZUYRKN.js → chunk-5XDFILHZ.js} +5178 -5352
- package/dist/chunk-5XDFILHZ.js.map +1 -0
- package/dist/chunk-BG6NLMOL.js +6037 -0
- package/dist/chunk-BG6NLMOL.js.map +1 -0
- package/dist/{chunk-SD3HDXR7.js → chunk-ERZQAU4N.js} +8 -8
- package/dist/chunk-ERZQAU4N.js.map +1 -0
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/opentype-BYRB6NOX.js +15965 -0
- package/dist/opentype-BYRB6NOX.js.map +1 -0
- package/dist/passthrough/weasel-canvas.d.ts +1 -1
- package/dist/passthrough/weasel-canvas.js +1 -1
- package/dist/passthrough/weasel-ui.d.ts +2220 -744
- package/dist/passthrough/weasel-ui.js +2 -2
- package/dist/ui/layers/index.js +3 -3
- package/package.json +38 -19
- package/dist/chunk-6FO7G5BB.js +0 -6095
- package/dist/chunk-6FO7G5BB.js.map +0 -1
- package/dist/chunk-B5ZUYRKN.js.map +0 -1
- package/dist/chunk-SD3HDXR7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../font/node_modules/opentype.js/dist/opentype.mjs"],"names":[],"mappings":"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,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ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AAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,CAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,E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N,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EAC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AAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO;AAAA;AAAA,EAE7B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO;AAAA;AAAA,EAE7B,EAAE,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,OAAA,EAAQ;AAAA;AAAA,EAE/B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO;AAAA;AAAA,EAE7B,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO;AAAA;AAAA,EAE7B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO;AAAA;AAAA,EAE7B,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,EAAK;AAAA;AAAA,EAEzB,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE1B,EAAE,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AAAA;AAAA,EAE3B,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,MAAA;AAAO;AAE/B,CAAA;AACA,SAAS,gBAAgB,OAAA,EAAS;AAChC,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAA,EAAQ,KAAK,CAAA,EAAG;AAChD,IAAA,MAAM,KAAA,GAAQ,cAAc,CAAC,CAAA;AAC7B,IAAA,IAAI,OAAA,IAAW,KAAA,CAAM,KAAA,IAAS,OAAA,GAAU,MAAM,GAAA,EAAK;AACjD,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;AACA,SAAS,aAAA,CAAc,MAAM,KAAA,EAAO;AAClC,EAAA,MAAM,MAAM,EAAC;AACb,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,GAAA,CAAI,OAAA,GAAU,EAAE,WAAA,EAAY;AAC5B,EAAA,GAAA,CAAI,aAAA,GAAgB,EAAE,UAAA,EAAW;AACjC,EAAA,GAAA,CAAI,aAAA,GAAgB,EAAE,WAAA,EAAY;AAClC,EAAA,GAAA,CAAI,YAAA,GAAe,EAAE,WAAA,EAAY;AACjC,EAAA,GAAA,CAAI,MAAA,GAAS,EAAE,WAAA,EAAY;AAC3B,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACrC,EAAA,GAAA,CAAI,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACrC,EAAA,GAAA,CAAI,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACrC,EAAA,GAAA,CAAI,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACrC,EAAA,GAAA,CAAI,mBAAA,GAAsB,EAAE,UAAA,EAAW;AACvC,EAAA,GAAA,CAAI,mBAAA,GAAsB,EAAE,UAAA,EAAW;AACvC,EAAA,GAAA,CAAI,cAAA,GAAiB,EAAE,UAAA,EAAW;AAClC,EAAA,GAAA,CAAI,kBAAA,GAAqB,EAAE,UAAA,EAAW;AACtC,EAAA,GAAA,CAAI,YAAA,GAAe,EAAE,UAAA,EAAW;AAChC,EAAA,GAAA,CAAI,SAAS,EAAC;AACd,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA,CAAE,SAAA,EAAU;AAAA,EAC9B;AACA,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,UAAA,EAAW;AACnC,EAAA,GAAA,CAAI,SAAA,GAAY,MAAA,CAAO,YAAA,CAAa,CAAA,CAAE,WAAU,EAAG,CAAA,CAAE,SAAA,EAAU,EAAG,CAAA,CAAE,SAAA,EAAU,EAAG,CAAA,CAAE,WAAW,CAAA;AAC9F,EAAA,GAAA,CAAI,WAAA,GAAc,EAAE,WAAA,EAAY;AAChC,EAAA,GAAA,CAAI,gBAAA,GAAmB,EAAE,WAAA,EAAY;AACrC,EAAA,GAAA,CAAI,eAAA,GAAkB,EAAE,WAAA,EAAY;AACpC,EAAA,GAAA,CAAI,aAAA,GAAgB,EAAE,UAAA,EAAW;AACjC,EAAA,GAAA,CAAI,cAAA,GAAiB,EAAE,UAAA,EAAW;AAClC,EAAA,GAAA,CAAI,YAAA,GAAe,EAAE,UAAA,EAAW;AAChC,EAAA,GAAA,CAAI,WAAA,GAAc,EAAE,WAAA,EAAY;AAChC,EAAA,GAAA,CAAI,YAAA,GAAe,EAAE,WAAA,EAAY;AACjC,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,IAAA,GAAA,CAAI,gBAAA,GAAmB,EAAE,UAAA,EAAW;AACpC,IAAA,GAAA,CAAI,gBAAA,GAAmB,EAAE,UAAA,EAAW;AAAA,EACtC;AACA,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,IAAA,GAAA,CAAI,QAAA,GAAW,EAAE,UAAA,EAAW;AAC5B,IAAA,GAAA,CAAI,UAAA,GAAa,EAAE,UAAA,EAAW;AAC9B,IAAA,GAAA,CAAI,aAAA,GAAgB,EAAE,WAAA,EAAY;AAClC,IAAA,GAAA,CAAI,WAAA,GAAc,EAAE,WAAA,EAAY;AAChC,IAAA,GAAA,CAAI,YAAA,GAAe,EAAE,WAAA,EAAY;AAAA,EACnC;AACA,EAAA,OAAO,GAAA;AACT;AACA,SAAS,aAAa,OAAA,EAAS;AAC7B,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IACrC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC5C,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAClD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACrD,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACrD,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACrD,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACvD,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACvD,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACvD,EAAE,IAAA,EAAM,qBAAA,EAAuB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACvD,EAAE,IAAA,EAAM,qBAAA,EAAuB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACzD,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,OAAA,EAAS,OAAO,EAAA,EAAG;AAAA,IACnD,EAAE,IAAA,EAAM,oBAAA,EAAsB,IAAA,EAAM,OAAA,EAAS,OAAO,GAAA,EAAI;AAAA,IACxD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC1C,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC5C,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC5C,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,WAAA,EAAa,OAAO,MAAA,EAAO;AAAA,IACtD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACrD,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACpD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAClD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACpD,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACpD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAC5C,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAE,KAChD,OAAO,CAAA;AACZ;AACA,IAAI,cAAc,EAAE,KAAA,EAAO,eAAe,IAAA,EAAM,YAAA,EAAc,eAAe,eAAA,EAAgB;AAG7F,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,YAAA,EAAa;AAC9B,EAAA,IAAA,CAAK,WAAA,GAAc,EAAE,UAAA,EAAW;AAChC,EAAA,IAAA,CAAK,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACtC,EAAA,IAAA,CAAK,kBAAA,GAAqB,EAAE,UAAA,EAAW;AACvC,EAAA,IAAA,CAAK,YAAA,GAAe,EAAE,UAAA,EAAW;AACjC,EAAA,IAAA,CAAK,YAAA,GAAe,EAAE,UAAA,EAAW;AACjC,EAAA,IAAA,CAAK,YAAA,GAAe,EAAE,UAAA,EAAW;AACjC,EAAA,IAAA,CAAK,WAAA,GAAc,EAAE,UAAA,EAAW;AAChC,EAAA,IAAA,CAAK,WAAA,GAAc,EAAE,UAAA,EAAW;AAChC,EAAA,QAAQ,KAAK,OAAA;AAAS,IACpB,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,KAAA,GAAQ,cAAc,KAAA,EAAM;AACjC,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,IAAA,CAAK,cAAA,GAAiB,EAAE,WAAA,EAAY;AACpC,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,KAAA,CAAM,IAAA,CAAK,cAAc,CAAA;AACnD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,gBAAgB,CAAA,EAAA,EAAK;AAC5C,QAAA,IAAA,CAAK,cAAA,CAAe,CAAC,CAAA,GAAI,CAAA,CAAE,WAAA,EAAY;AAAA,MACzC;AACA,MAAA,IAAA,CAAK,QAAQ,EAAC;AACd,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,gBAAgB,CAAA,EAAA,EAAK;AAC5C,QAAA,IAAI,IAAA,CAAK,cAAA,CAAe,CAAC,CAAA,IAAK,cAAc,MAAA,EAAQ;AAClD,UAAA,MAAM,UAAA,GAAa,EAAE,SAAA,EAAU;AAC/B,UAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,WAAA,CAAY,UAAU,CAAC,CAAA;AAAA,QAC3C;AAAA,MACF;AACA,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,IAAA,CAAK,cAAA,GAAiB,EAAE,WAAA,EAAY;AACpC,MAAA,IAAA,CAAK,MAAA,GAAS,IAAI,KAAA,CAAM,IAAA,CAAK,cAAc,CAAA;AAC3C,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,gBAAgB,CAAA,EAAA,EAAK;AAC5C,QAAA,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA,CAAE,SAAA,EAAU;AAAA,MAC/B;AACA,MAAA;AAAA;AAEJ,EAAA,OAAO,IAAA;AACT;AACA,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,MAAM;AAAA,IACJ,cAAc,IAAA,CAAK,KAAA,CAAA,CAAO,IAAA,CAAK,WAAA,IAAe,KAAK,KAAK,CAAA;AAAA,IACxD,iBAAA,GAAoB,CAAA;AAAA,IACpB,kBAAA,GAAqB,CAAA;AAAA,IACrB,YAAA,GAAe,CAAA;AAAA,IACf,YAAA,GAAe,CAAA;AAAA,IACf,YAAA,GAAe,CAAA;AAAA,IACf,WAAA,GAAc,CAAA;AAAA,IACd,WAAA,GAAc;AAAA,GAChB,GAAI,IAAA,CAAK,MAAA,CAAO,IAAA,IAAQ,EAAC;AACzB,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IACrC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,MAAA,EAAO;AAAA,IAChD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,OAAO,WAAA,EAAY;AAAA,IACzD,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,OAAO,iBAAA,EAAkB;AAAA,IACrE,EAAE,IAAA,EAAM,oBAAA,EAAsB,IAAA,EAAM,OAAA,EAAS,OAAO,kBAAA,EAAmB;AAAA,IACvE,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,YAAA,EAAa;AAAA,IAC3D,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,YAAA,EAAa;AAAA,IAC3D,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,YAAA,EAAa;AAAA,IAC3D,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,OAAO,WAAA,EAAY;AAAA,IACzD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,OAAO,WAAA;AAAY,GAC1D,CAAA;AACH;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,IAAI,eAAA,GAAkB,IAAI,KAAA,CAAM,CAAC,CAAA;AACjC,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,cAAA;AACjC,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,YAAA,EAAc,KAAK,UAAA;AAAW,KAChC;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,UAAA,EAAY,KAAK,iBAAA;AAAkB,KACrC;AAAA,EACF;AACA,EAAA,aAAA,CAAc,OAAO,KAAA,EAAO,IAAA,GAAO,MAAM,QAAA,CAAS,EAAE,IAAI,wCAAwC,CAAA;AAClG,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,iEAAiE,CAAA;AAC3G,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,SAAA,EAAW,KAAK,gBAAA;AAAiB,GACnC;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,kEAAkE,CAAA;AAC5G,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,aAAA,EAAe,KAAK,gBAAA;AAAiB,GACvC;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,iDAAiD,CAAA;AAC3F,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,YAAA,EAAc,IAAA,CAAK,gBAAA,CAAiB,WAAW;AAC7C,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,KAAK,WAAA,EAAY;AAAA,QAC3B,YAAY,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,WAAA,KAAgB,CAAC;AAAA,OACzD;AAAA,IACF,CAAC;AAAA,GACH;AACF,CAAA;AACA,IAAI,gBAAA,GAAmB;AAAA,EACrB,eAAe,MAAA,CAAO,MAAA;AAAA,EACtB,iBAAiB,MAAA,CAAO;AAC1B,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,cAAA;AACjC,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,QAAA,EAAU,IAAA,CAAK,gBAAA,CAAiB,WAAW;AACzC,QAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,QAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,IAAA,CAAK,eAAA,CAAgB,UAAA,GAAa,CAAC,CAAA;AAAA,UAC1C,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,UAAA,EAAY,gBAAgB;AAAA,SAClE;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,SAAA,EAAW,IAAA,CAAK,gBAAA,CAAiB,WAAW;AAC1C,QAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,QAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA,CAAK,eAAA,CAAgB,UAAA,GAAa,CAAC,CAAA;AAAA,UAC5C,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,UAAA,EAAY,gBAAgB;AAAA,SAClE;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,IAAA,MAAM,UAAA,GAAa,KAAK,WAAA,EAAY;AACpC,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA,SAAA,EAAW,KAAK,SAAA,CAAU,UAAA,EAAY,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MACrE,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,UAAA,EAAY,gBAAgB;AAAA,KAClE;AAAA,EACF;AACA,EAAA,aAAA,CAAc,OAAO,KAAA,EAAO,IAAA,GAAO,MAAM,QAAA,CAAS,EAAE,IAAI,2CAA2C,CAAA;AACrG,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,cAAA;AACjC,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,aAAA,EAAe,IAAA,CAAK,gBAAA,CAAiB,WAAW;AAC9C,QAAA,OAAO;AAAA,UACL,SAAA,EAAW,KAAK,eAAA,EAAgB;AAAA,UAChC,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,UAAA,KAAe,CAAC,CAAA;AAAA,UACjD,SAAA,EAAW,KAAK,eAAA,EAAgB;AAAA,UAChC,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,gBAAgB;AAAA,SACtD;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,iBAAA,EAAmB,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MACpD,aAAA,EAAe,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAChD,iBAAA,EAAmB,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MACpD,aAAA,EAAe,IAAA,CAAK,gBAAA,CAAiB,WAAW;AAC9C,QAAA,OAAO;AAAA,UACL,SAAA,EAAW,KAAK,eAAA,EAAgB;AAAA,UAChC,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,UAAA,KAAe,CAAC,CAAA;AAAA,UACjD,SAAA,EAAW,KAAK,eAAA,EAAgB;AAAA,UAChC,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,gBAAgB;AAAA,SACtD;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,OAAO;AAAA,MACL,WAAA,EAAa,CAAA;AAAA,MACb,mBAAmB,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MACjE,eAAe,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MAC7D,mBAAmB,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MACjE,aAAA,EAAe,IAAA,CAAK,eAAA,CAAgB,gBAAgB;AAAA,KACtD;AAAA,EACF;AACA,EAAA,aAAA,CAAc,OAAO,KAAA,EAAO,IAAA,GAAO,MAAM,QAAA,CAAS,EAAE,IAAI,2CAA2C,CAAA;AACrG,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,kEAAkE,CAAA;AAC5G,EAAA,MAAM,mBAAA,GAAsB,KAAK,WAAA,EAAY;AAC7C,EAAA,MAAM,eAAA,GAAkB,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,UAAA,EAAY,CAAA;AAC7E,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,CAAA;AAAA,IACb,UAAA,EAAY,mBAAA;AAAA,IACZ,SAAA,EAAW,eAAA,CAAgB,mBAAmB,CAAA,CAAE,KAAK,eAAe;AAAA,GACtE;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,2FAA2F,CAAA;AACrI,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,mBAAmB,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,IACjE,mBAAmB,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,IACjE,WAAA,EAAa,KAAK,eAAA;AAAgB,GACpC;AACF,CAAA;AACA,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAChC,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,YAAA,CAAa,CAAC,CAAA;AACrC,EAAA,aAAA,CAAc,QAAA,CAAS,YAAA,KAAiB,CAAA,IAAK,YAAA,KAAiB,KAAK,iCAAiC,CAAA;AACpG,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,EAAE,eAAA,EAAgB;AAAA,MAC3B,QAAA,EAAU,EAAE,gBAAA,EAAiB;AAAA,MAC7B,OAAA,EAAS,CAAA,CAAE,eAAA,CAAgB,eAAe;AAAA,KAC5C;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,EAAE,eAAA,EAAgB;AAAA,MAC3B,QAAA,EAAU,EAAE,gBAAA,EAAiB;AAAA,MAC7B,OAAA,EAAS,CAAA,CAAE,eAAA,CAAgB,eAAe,CAAA;AAAA,MAC1C,UAAA,EAAY,EAAE,0BAAA;AAA2B,KAC3C;AAAA,EACF;AACF;AACA,IAAI,cAAA,GAAiB,IAAI,KAAA,CAAM,CAAC,CAAA;AAChC,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,IAAI,QAAA,CAAS,gBAAgB,CAAA,EAAG;AAC9B,IAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,MAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,MAChD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAE;AAAA,MACxF,EAAE,IAAA,EAAM,cAAA,EAAgB,MAAM,OAAA,EAAS,KAAA,EAAO,SAAS,YAAA;AAAa,KACrE,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG;AACrC,IAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,MAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,MAChD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,KAC1F,CAAE,OAAO,aAAA,CAAc,UAAA,CAAW,cAAc,QAAA,CAAS,UAAU,CAAC,CAAC,CAAA;AAAA,EACvE;AACA,EAAA,aAAA,CAAc,KAAK,2CAA2C,CAAA;AAChE,CAAA;AACA,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,aAAA,CAAc,MAAA,CAAO,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,sCAAsC,CAAA;AACvF,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,IAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,GAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,UAAU,QAAA,CAAS,SAAA,EAAW,SAAS,WAAA,EAAa;AACnF,IAAA,OAAO,IAAI,cAAc,KAAA,CAAM,kBAAA,EAAoB,cAAc,UAAA,CAAW,UAAA,EAAY,WAAW,CAAC,CAAA;AAAA,EACtG,CAAC,CAAC,CAAC,CAAA;AACL,CAAA;AACA,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,aAAA,CAAc,MAAA,CAAO,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,sCAAsC,CAAA;AACvF,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,IAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,GAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,UAAU,QAAA,CAAS,aAAA,EAAe,SAAS,YAAA,EAAc;AACxF,IAAA,OAAO,IAAI,cAAc,KAAA,CAAM,mBAAA,EAAqB,cAAc,UAAA,CAAW,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,EACzG,CAAC,CAAC,CAAC,CAAA;AACL,CAAA;AACA,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,aAAA,CAAc,MAAA,CAAO,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG,sCAAsC,CAAA;AACvF,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,IAClD,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,GAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,UAAU,QAAA,CAAS,YAAA,EAAc,SAAS,WAAA,EAAa;AACtF,IAAA,OAAO,IAAI,cAAc,KAAA,CAAM,kBAAA,EAAoB,cAAc,SAAA,CAAU,UAAA,EAAY,WAAA,EAAa,SAAS,QAAA,EAAU;AACrH,MAAA,OAAO,IAAI,aAAA,CAAc,KAAA;AAAA,QACvB,eAAA;AAAA,QACA,CAAC,EAAE,IAAA,EAAM,UAAA,EAAY,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,QAAA,EAAU,EAAE,MAAA,CAAO,aAAA,CAAc,WAAW,WAAA,EAAa,QAAA,CAAS,YAAY,QAAA,CAAS,UAAA,CAAW,MAAA,GAAS,CAAC,CAAC;AAAA,OACpK;AAAA,IACF,CAAC,CAAC,CAAA;AAAA,EACJ,CAAC,CAAC,CAAC,CAAA;AACL,CAAA;AACA,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,IAAI,QAAA,CAAS,gBAAgB,CAAA,EAAG;AAC9B,IAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,6BAAA,EAA+B;AAAA,MAC5D,EAAE,IAAA,EAAM,aAAA,EAAe,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,WAAA,EAAY;AAAA,MACnE,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,KAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,mBAAmB,QAAA,CAAS,QAAA,EAAU,SAAS,eAAA,EAAiB;AAC/F,MAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,IAAI,CAAA;AAAA,MAC7C;AACA,MAAA,OAAO,IAAI,cAAc,KAAA,CAAM,sBAAA,EAAwB,cAAc,SAAA,CAAU,cAAA,EAAgB,eAAA,EAAiB,SAAS,YAAA,EAAc;AACrI,QAAA,IAAI,SAAA,GAAY,cAAc,UAAA,CAAW,WAAA,EAAa,EAAC,EAAG,YAAA,CAAa,cAAc,MAAM,CAAA,CAAE,OAAO,aAAA,CAAc,UAAA,CAAW,iBAAiB,YAAA,CAAa,KAAA,EAAO,aAAa,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA;AAChM,QAAA,CAAC,SAAA,CAAU,CAAC,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAA,GAAI,CAAC,SAAA,CAAU,CAAC,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC1D,UAAA,MAAM,MAAA,GAAS,YAAA,CAAa,aAAA,CAAc,CAAC,CAAA;AAC3C,UAAA,SAAA,GAAY,SAAA,CAAU,OAAO,EAAE,IAAA,EAAM,kBAAkB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,QAChM;AACA,QAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB,SAAS,CAAA;AAAA,MAC/D,CAAC,CAAC,CAAA;AAAA,IACJ,CAAC,CAAC,CAAC,CAAA;AAAA,EACL,CAAA,MAAA,IAAW,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG;AACrC,IAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,6BAAA,EAA+B;AAAA,MAC5D,EAAE,IAAA,EAAM,aAAA,EAAe,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,WAAA,EAAY;AAAA,MACnE,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAE;AAAA,MACxF,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,KAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,mBAAmB,QAAA,CAAS,SAAA,EAAW,SAAS,eAAA,EAAiB;AAChG,MAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,IAAI,CAAA;AAAA,MAC7C;AACA,MAAA,OAAO,IAAI,cAAc,KAAA,CAAM,sBAAA,EAAwB,cAAc,SAAA,CAAU,cAAA,EAAgB,eAAA,EAAiB,SAAS,YAAA,EAAc;AACrI,QAAA,IAAI,SAAA,GAAY,cAAc,UAAA,CAAW,SAAA,EAAW,aAAa,OAAA,EAAS,YAAA,CAAa,QAAQ,MAAA,GAAS,CAAC,EAAE,MAAA,CAAO,aAAA,CAAc,WAAW,gBAAA,EAAkB,IAAI,YAAA,CAAa,aAAA,CAAc,MAAM,CAAC,CAAA;AACnM,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC1D,UAAA,MAAM,MAAA,GAAS,YAAA,CAAa,aAAA,CAAc,CAAC,CAAA;AAC3C,UAAA,SAAA,GAAY,SAAA,CAAU,OAAO,EAAE,IAAA,EAAM,kBAAkB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,QAChM;AACA,QAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB,SAAS,CAAA;AAAA,MAC/D,CAAC,CAAC,CAAA;AAAA,IACJ,CAAC,CAAC,CAAC,CAAA;AAAA,EACL,CAAA,MAAA,IAAW,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG;AACrC,IAAA,IAAI,SAAA,GAAY;AAAA,MACd,EAAE,IAAA,EAAM,aAAA,EAAe,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,WAAA;AAAY,KACrE;AACA,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,SAAA,CAAU,MAAA,EAAQ,CAAA;AAC5F,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,aAAA,CAAc,MAAA,EAAQ,CAAA;AAClG,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAClD,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA;AACrC,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,GAAkB,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAQ,GAAG,CAAA;AAAA,IAC1G;AACA,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACtD,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,CAAC,CAAA;AACvC,MAAA,SAAA,GAAY,SAAA,CAAU,OAAO,EAAE,IAAA,EAAM,kBAAkB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,IAChM;AACA,IAAA,IAAI,WAAA,GAAc,IAAI,aAAA,CAAc,KAAA,CAAM,+BAA+B,SAAS,CAAA;AAClF,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,aAAA,CAAc,MAAA,CAAO,OAAO,yCAAyC,CAAA;AACvE,CAAA;AACA,cAAA,CAAe,CAAC,CAAA,GAAI,SAAS,WAAA,CAAY,QAAA,EAAU;AACjD,EAAA,IAAI,QAAA,CAAS,gBAAgB,CAAA,EAAG;AAC9B,IAAA,IAAI,WAAA,GAAc,IAAI,aAAA,CAAc,KAAA,CAAM,mBAAA,EAAqB;AAAA,MAC7D,EAAE,IAAA,EAAM,aAAA,EAAe,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,WAAA,EAAY;AAAA,MACnE,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AAAE,KAC1F,CAAE,OAAO,aAAA,CAAc,SAAA,CAAU,gBAAgB,QAAA,CAAS,aAAA,EAAe,SAAS,YAAA,EAAc;AAC9F,MAAA,OAAO,IAAI,cAAc,KAAA,CAAM,mBAAA,EAAqB,cAAc,SAAA,CAAU,WAAA,EAAa,YAAA,EAAc,SAAS,SAAA,EAAW;AACzH,QAAA,IAAI,YAAY,aAAA,CAAc,UAAA,CAAW,kBAAkB,SAAA,CAAU,SAAA,EAAW,UAAU,SAAA,CAAU,MAAM,EAAE,MAAA,CAAO,aAAA,CAAc,WAAW,YAAA,EAAc,SAAA,CAAU,OAAO,SAAA,CAAU,KAAA,CAAM,SAAS,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,cAAc,UAAA,CAAW,gBAAA,EAAkB,UAAU,SAAA,EAAW,SAAA,CAAU,UAAU,MAAM,CAAC,EAAE,MAAA,CAAO,aAAA,CAAc,WAAW,cAAA,EAAgB,IAAI,SAAA,CAAU,aAAA,CAAc,MAAM,CAAC,CAAA;AAC/X,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACvD,UAAA,MAAM,MAAA,GAAS,SAAA,CAAU,aAAA,CAAc,CAAC,CAAA;AACxC,UAAA,SAAA,GAAY,SAAA,CAAU,OAAO,EAAE,IAAA,EAAM,kBAAkB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,QAChM;AACA,QAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,gBAAA,EAAkB,SAAS,CAAA;AAAA,MAC5D,CAAC,CAAC,CAAA;AAAA,IACJ,CAAC,CAAC,CAAC,CAAA;AACH,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,MAAA,IAAW,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG;AACrC,IAAA,aAAA,CAAc,MAAA,CAAO,OAAO,8CAA8C,CAAA;AAAA,EAC5E,CAAA,MAAA,IAAW,QAAA,CAAS,WAAA,KAAgB,CAAA,EAAG;AACrC,IAAA,IAAI,SAAA,GAAY;AAAA,MACd,EAAE,IAAA,EAAM,aAAA,EAAe,MAAM,QAAA,EAAU,KAAA,EAAO,SAAS,WAAA;AAAY,KACrE;AACA,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,iBAAA,CAAkB,MAAA,EAAQ,CAAA;AACxG,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AAC1D,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,iBAAA,CAAkB,CAAC,CAAA;AAC7C,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,mBAAA,GAAsB,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAQ,GAAG,CAAA;AAAA,IAC9G;AACA,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,aAAA,CAAc,MAAA,EAAQ,CAAA;AAChG,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACtD,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,aAAA,CAAc,CAAC,CAAA;AACzC,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,GAAkB,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAQ,GAAG,CAAA;AAAA,IAC1G;AACA,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,iBAAA,CAAkB,MAAA,EAAQ,CAAA;AACxG,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AAC1D,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,iBAAA,CAAkB,CAAC,CAAA;AAC7C,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,mBAAA,GAAsB,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,QAAA,CAAS,QAAQ,GAAG,CAAA;AAAA,IAC9G;AACA,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,UAAU,KAAA,EAAO,QAAA,CAAS,aAAA,CAAc,MAAA,EAAQ,CAAA;AAClG,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACtD,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,CAAC,CAAA;AACvC,MAAA,SAAA,GAAY,SAAA,CAAU,OAAO,EAAE,IAAA,EAAM,kBAAkB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,EAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,IAChM;AACA,IAAA,IAAI,WAAA,GAAc,IAAI,aAAA,CAAc,KAAA,CAAM,qBAAqB,SAAS,CAAA;AACxE,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,aAAA,CAAc,MAAA,CAAO,OAAO,yCAAyC,CAAA;AACvE,CAAA;AACA,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IACrC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,KAAA,EAAM;AAAA,IAC/C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,EAAE;AAAA,IACpF,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAE;AAAA,IACvF,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,UAAA,CAAW,IAAA,CAAK,OAAA,EAAS,cAAc,CAAA;AAAE,GACrG,CAAA;AACH;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,EAAE,UAAA,EAAW;AAClC,EAAA,aAAA,CAAc,QAAA,CAAS,YAAA,KAAiB,CAAA,EAAG,iCAAiC,CAAA;AAC5E,EAAA,CAAA,CAAE,UAAA,EAAW;AACb,EAAA,CAAA,CAAE,UAAA,EAAW;AACb,EAAA,MAAM,WAAA,GAAc,EAAE,UAAA,EAAW;AACjC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,GAAA,GAAM,EAAE,QAAA,EAAS;AACvB,IAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAW;AAChC,IAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAW;AAChC,IAAA,IAAI,GAAA,KAAQ,UAAU,GAAA,KAAQ,MAAA;AAC5B,MAAA;AACF,IAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,KAAA,GAAQ,YAAY,UAAU,CAAA;AAC7D,IAAA,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA;AAAA,EACd;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA;AAClC,EAAA,IAAI,UAAA,GAAa,EAAA;AACjB,EAAA,MAAM,gBAAA,GAAmB,KAAK,OAAA,GAAU,EAAA;AACxC,EAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC7C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACzC,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,OAAO,gBAAA,EAAiB;AAAA,IACzD,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA;AAAQ,GAClD,CAAA;AACD,EAAA,KAAA,IAAS,OAAO,IAAA,EAAM;AACpB,IAAA,MAAM,MAAM,UAAA,CAAW,MAAA;AACvB,IAAA,UAAA,IAAc,KAAK,GAAG,CAAA;AACtB,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,GAAS,KAAK,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK,CAAA;AAClE,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,GAAY,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,gBAAA,GAAmB,GAAA,EAAK,CAAA;AAC1F,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,GAAY,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA,CAAE,QAAQ,CAAA;AAAA,EACtF;AACA,EAAA,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,UAAA,EAAY,CAAA;AAC/E,EAAA,OAAO,MAAA;AACT;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,EAAE,WAAA,EAAY;AAC9B,EAAA,IAAI,YAAY,CAAA,EAAG;AACjB,IAAA,OAAA,CAAQ,KAAK,kIAAkI,CAAA;AAAA,EACjJ;AACA,EAAA,MAAM,mBAAA,GAAsB,EAAE,WAAA,EAAY;AAC1C,EAAA,MAAM,sBAAA,GAAyB,EAAE,aAAA,EAAc;AAC/C,EAAA,MAAM,kBAAA,GAAqB,EAAE,aAAA,EAAc;AAC3C,EAAA,MAAM,eAAA,GAAkB,EAAE,WAAA,EAAY;AACtC,EAAA,CAAA,CAAE,cAAA,GAAiB,sBAAA;AACnB,EAAA,MAAM,gBAAA,GAAmB,CAAA,CAAE,eAAA,CAAgB,mBAAA,EAAqB;AAAA,IAC9D,SAAS,MAAA,CAAO,MAAA;AAAA,IAChB,iBAAiB,MAAA,CAAO,MAAA;AAAA,IACxB,WAAW,MAAA,CAAO;AAAA,GACnB,CAAA;AACD,EAAA,CAAA,CAAE,cAAA,GAAiB,kBAAA;AACnB,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,eAAA,CAAgB,eAAA,EAAiB;AAAA,IACtD,SAAS,MAAA,CAAO,MAAA;AAAA,IAChB,cAAc,MAAA,CAAO;AAAA,GACtB,CAAA;AACD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,SAAS,aAAA,CAAc,EAAE,OAAA,GAAU,CAAA,EAAG,gBAAA,GAAmB,EAAC,EAAG,YAAA,GAAe,EAAC,EAAE,EAAG;AAChF,EAAA,aAAA,CAAc,QAAA,CAAS,OAAA,KAAY,CAAA,EAAG,wBAAwB,CAAA;AAC9D,EAAA,MAAM,sBAAA,GAAyB,EAAA;AAC/B,EAAA,MAAM,kBAAA,GAAqB,sBAAA,GAAyB,gBAAA,CAAiB,MAAA,GAAS,CAAA;AAC9E,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IACrC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,OAAO,OAAA,EAAQ;AAAA,IAClD,EAAE,IAAA,EAAM,qBAAA,EAAuB,MAAM,QAAA,EAAU,KAAA,EAAO,iBAAiB,MAAA,EAAO;AAAA,IAC9E,EAAE,IAAA,EAAM,wBAAA,EAA0B,IAAA,EAAM,OAAA,EAAS,OAAO,sBAAA,EAAuB;AAAA,IAC/E,EAAE,IAAA,EAAM,oBAAA,EAAsB,IAAA,EAAM,OAAA,EAAS,OAAO,kBAAA,EAAmB;AAAA,IACvE,EAAE,IAAA,EAAM,iBAAA,EAAmB,MAAM,QAAA,EAAU,KAAA,EAAO,aAAa,MAAA,EAAO;AAAA,IACtE,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,OAAO,CAAA,KAAM;AAAA,MACpC,EAAE,MAAM,UAAA,GAAa,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAM,OAAA,EAAQ;AAAA,MAC7D,EAAE,MAAM,kBAAA,GAAqB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAM,eAAA,EAAgB;AAAA,MAC7E,EAAE,MAAM,YAAA,GAAe,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAM,SAAA;AAAU,KAClE,EAAE,IAAA,EAAK;AAAA,IACR,GAAG,YAAA,CAAa,GAAA,CAAI,CAAC,OAAO,CAAA,KAAM;AAAA,MAChC,EAAE,MAAM,eAAA,GAAkB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAM,OAAA,EAAQ;AAAA,MAClE,EAAE,MAAM,eAAA,GAAkB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,MAAM,YAAA;AAAa,KACxE,EAAE,IAAA;AAAK,GACT,CAAA;AACH;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,SAAS,YAAA,CAAa,GAAG,IAAA,EAAM;AAC7B,EAAA,OAAO;AAAA,IACL,EAAE,MAAM,MAAA,GAAS,CAAA,EAAG,MAAM,KAAA,EAAO,KAAA,EAAO,KAAK,GAAA,EAAI;AAAA,IACjD,EAAE,MAAM,WAAA,GAAc,CAAA,EAAG,MAAM,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,QAAA,IAAY,EAAA,EAAG;AAAA,IACnE,EAAE,MAAM,eAAA,GAAkB,CAAA,EAAG,MAAM,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,YAAA,IAAgB,EAAA,EAAG;AAAA,IAC3E,EAAE,MAAM,WAAA,GAAc,CAAA,EAAG,MAAM,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,QAAA,IAAY,EAAA,EAAG;AAAA,IACnE,EAAE,IAAA,EAAM,QAAA,GAAW,GAAG,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC/C,EAAE,MAAM,SAAA,GAAY,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,UAAA;AAAW,GAChE;AACF;AACA,SAAS,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO;AACzC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,IAAA,CAAK,GAAA,GAAM,EAAE,QAAA,EAAS;AACtB,EAAA,IAAA,CAAK,QAAA,GAAW,EAAE,UAAA,EAAW;AAC7B,EAAA,IAAA,CAAK,YAAA,GAAe,EAAE,UAAA,EAAW;AACjC,EAAA,IAAA,CAAK,QAAA,GAAW,EAAE,UAAA,EAAW;AAC7B,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,MAAM,UAAA,GAAa,EAAE,WAAA,EAAY;AACjC,EAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,EAAA,IAAA,CAAK,IAAA,GAAO,WAAA,CAAY,KAAA,EAAO,UAAU,CAAA;AACzC,EAAA,OAAO,IAAA;AACT;AACA,SAAS,iBAAiB,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,cAAA,GAAiB,EAAC,EAAG;AAC5D,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,EAAE,MAAM,SAAA,GAAY,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,eAAA,EAAgB;AAAA,IACnE,EAAE,IAAA,EAAM,QAAA,GAAW,GAAG,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAE,GACjD;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,EAAE,CAAA,EAAG;AACpC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,CAAC,CAAA,CAAE,GAAA;AACxB,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,IAAA,EAAM,OAAA,GAAU,CAAA,GAAI,GAAA,GAAM,OAAA;AAAA,MAC1B,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,OAAO,CAAA,IAAK;AAAA,KACrC,CAAA;AAAA,EACH;AACA,EAAA,IAAI,cAAA,IAAkB,eAAe,gBAAA,EAAkB;AACrD,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,IAAA,EAAM,mBAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,IAAA,CAAK,gBAAA,KAAqB,MAAA,GAAS,KAAK,gBAAA,GAAmB;AAAA,KACnE,CAAA;AAAA,EACH;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,OAAO,YAAA,EAAc;AACjE,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,eAAA,GAAkB,EAAE,WAAA,EAAY;AACtC,EAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AACvB,EAAA,IAAA,CAAK,OAAO,WAAA,CAAY,KAAA,EAAO,iBAAiB,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AACvD,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,IAAA,CAAK,cAAc,EAAC;AACpB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,EAAE,CAAA,EAAG;AACpC,IAAA,IAAA,CAAK,YAAY,IAAA,CAAK,CAAC,EAAE,GAAG,CAAA,GAAI,EAAE,UAAA,EAAW;AAAA,EAC/C;AACA,EAAA,IAAI,CAAA,CAAE,mBAAmB,YAAA,EAAc;AACrC,IAAA,IAAA,CAAK,gBAAA,GAAmB,MAAA;AACxB,IAAA,IAAA,CAAK,cAAA,GAAiB,MAAA;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,gBAAA,GAAmB,EAAE,WAAA,EAAY;AACvC,EAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA,IAAoB,KAAA,GAAQ,MAAA,GAAS,gBAAA;AAC7D,EAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,gBAAA,KAAqB,MAAA,GAAS,WAAA,CAAY,OAAO,gBAAA,EAAkB,CAAC,CAAC,CAAC,CAAA,GAAI,EAAA;AACrG,EAAA,OAAO,IAAA;AACT;AACA,SAAS,aAAA,CAAc,MAAM,KAAA,EAAO;AAClC,EAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC7C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,KAAA,EAAM;AAAA,IAC/C,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,UAAU,KAAA,EAAO,IAAA,CAAK,KAAK,MAAA,EAAO;AAAA,IAC7D,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,QAAA,EAAU,OAAO,EAAA,EAAG;AAAA,IAC9C,EAAE,MAAM,eAAA,EAAiB,IAAA,EAAM,UAAU,KAAA,EAAO,IAAA,CAAK,UAAU,MAAA,EAAO;AAAA,IACtE,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA;AAAE,GACzE,CAAA;AACD,EAAA,MAAA,CAAO,YAAA,GAAe,OAAO,MAAA,EAAO;AACpC,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACzC,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,CAAC,CAAQ,CAAC,CAAA;AAAA,EAC3E;AACA,EAAA,MAAM,iBAAiB,EAAC;AACxB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC9C,IAAA,IAAI,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,qBAAqB,MAAA,EAAQ;AACjD,MAAA,MAAA,CAAO,YAAA,IAAgB,CAAA;AACvB,MAAA,cAAA,CAAe,gBAAA,GAAmB,IAAA;AAClC,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC9C,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,gBAAA;AAAA,MACnC,CAAA;AAAA,MACA,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,MAChB,IAAA,CAAK,IAAA;AAAA,MACL;AAAA,KACD,CAAA;AAAA,EACH;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO;AAC1C,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,EAAE,UAAA,EAAW;AAClC,EAAA,aAAA,CAAc,QAAA,CAAS,YAAA,KAAiB,KAAA,EAAO,iCAAiC,CAAA;AAChF,EAAA,MAAM,YAAA,GAAe,EAAE,aAAA,EAAc;AACrC,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,MAAM,SAAA,GAAY,EAAE,WAAA,EAAY;AAChC,EAAA,MAAM,QAAA,GAAW,EAAE,WAAA,EAAY;AAC/B,EAAA,MAAM,aAAA,GAAgB,EAAE,WAAA,EAAY;AACpC,EAAA,MAAM,YAAA,GAAe,EAAE,WAAA,EAAY;AACnC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,IAAA,IAAA,CAAK,IAAA,CAAK,cAAc,IAAA,EAAM,KAAA,GAAQ,eAAe,CAAA,GAAI,QAAA,EAAU,KAAK,CAAC,CAAA;AAAA,EAC3E;AACA,EAAA,MAAM,YAAY,EAAC;AACnB,EAAA,MAAM,aAAA,GAAgB,KAAA,GAAQ,YAAA,GAAe,SAAA,GAAY,QAAA;AACzD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,EAAe,CAAA,EAAA,EAAK;AACtC,IAAA,SAAA,CAAU,IAAA,CAAK,kBAAkB,IAAA,EAAM,aAAA,GAAgB,IAAI,YAAA,EAAc,IAAA,EAAM,KAAA,EAAO,YAAY,CAAC,CAAA;AAAA,EACrG;AACA,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,IAAI,gBAAA,GAAmB;AAAA,EACrB,KAAK,MAAA,CAAO,GAAA;AAAA,EACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,EACf,UAAU,MAAA,CAAO;AACnB,CAAA;AACA,IAAI,gBAAA,GAAmB,IAAI,KAAA,CAAM,CAAC,CAAA;AAClC,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,gBAAA,GAAmB;AAChD,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,KAAK,WAAA,EAAY;AAAA,IAC5B,KAAA,EAAO,KAAK,WAAA,EAAY;AAAA,IACxB,WAAA,EAAa,KAAK,WAAA,EAAY;AAAA,IAC9B,KAAA,EAAO,KAAK,UAAA;AAAW,GACzB;AACF,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,gBAAA,GAAmB;AAChD,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,KAAK,WAAA,EAAY;AAAA,IAC5B,KAAA,EAAO,KAAK,WAAA,EAAY;AAAA,IACxB,WAAA,EAAa,KAAK,WAAA,EAAY;AAAA,IAC9B,YAAA,EAAc,KAAK,UAAA,EAAW;AAAA,IAC9B,aAAA,EAAe,KAAK,UAAA,EAAW;AAAA,IAC/B,aAAA,EAAe,KAAK,UAAA;AAAW,GACjC;AACF,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,gBAAA,GAAmB;AAChD,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,KAAK,WAAA,EAAY;AAAA,IAC5B,KAAA,EAAO,KAAK,WAAA,EAAY;AAAA,IACxB,WAAA,EAAa,KAAK,WAAA,EAAY;AAAA,IAC9B,KAAA,EAAO,KAAK,UAAA,EAAW;AAAA,IACvB,WAAA,EAAa,KAAK,UAAA;AAAW,GAC/B;AACF,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,gBAAA,GAAmB;AAChD,EAAA,MAAM,SAAA,GAAY,KAAK,WAAA,EAAY;AACnC,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,KAAK,WAAA,EAAY;AAAA,IACxB,WAAA,EAAa,KAAK,WAAA,EAAY;AAAA,IAC9B,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,WAAW;AAC/C,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,KAAK,WAAA,EAAY;AAAA,QAC5B,KAAA,EAAO,KAAK,UAAA;AAAW,OACzB;AAAA,IACF,CAAC;AAAA,GACH;AACF,CAAA;AACA,SAAS,kBAAA,GAAqB;AAC5B,EAAA,MAAM,gBAAA,GAAmB,KAAK,WAAA,EAAY;AAC1C,EAAA,MAAM,eAAA,GAAkB,iBAAiB,gBAAgB,CAAA;AACzD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AACA,EAAA,IAAI,oBAAoB,MAAA,EAAQ;AAC9B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,gCAAA,EAAmC,gBAAgB,CAAA,CAAE,CAAA;AAClE,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,OAAO,UAAA,EAAY,IAAA,CAAK,YAAY,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AAC/E;AACA,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM;AACzC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,KAAA,GAAQ,CAAA;AAAA,EACV;AACA,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,iBAAiB,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,CAAA;AAAA,EACzF;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,iBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiB,EAAE,WAAA,EAAY;AACrC,EAAA,MAAM,eAAA,GAAkB,EAAE,WAAA,EAAY;AACtC,EAAA,MAAM,gBAAA,GAAmB,EAAE,aAAA,EAAc;AACzC,EAAA,MAAM,cAAA,GAAiB,EAAE,WAAA,EAAY;AACrC,EAAA,MAAM,wBAAA,GAA2B,EAAE,aAAA,EAAc;AACjD,EAAA,MAAM,uBAAuB,iBAAA,GAAoB,CAAA,IAAK,oBAAoB,CAAA,GAAI,CAAA,CAAE,aAAY,GAAI,MAAA;AAChG,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,aAAA,CAAc,QAAA,CAAS,eAAA,IAAmB,IAAA,CAAK,IAAA,CAAK,QAAQ,kEAAkE,CAAA;AAAA,EAChI;AACA,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,IAAA,aAAA,CAAc,QAAA,CAAS,eAAA,IAAmB,CAAA,EAAG,mFAAmF,CAAA;AAAA,EAClI;AACA,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,eAAA,EAAiB,CAAA,EAAA,EAAK;AACxC,IAAA,CAAA,CAAE,SAAS,KAAA,GAAQ,gBAAA;AACnB,IAAA,CAAA,CAAE,iBAAiB,CAAA,GAAI,cAAA;AACvB,IAAA,IAAA,CAAK,IAAA,CAAK,CAAA,CAAE,WAAA,CAAY,gBAAgB,CAAC,CAAA;AAAA,EAC3C;AACA,EAAA,CAAA,CAAE,MAAA,GAAS,KAAA;AACX,EAAA,CAAA,CAAE,cAAA,GAAiB,wBAAA;AACnB,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,eAAA,CAAgB,cAAc,CAAA;AACrD,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,EAAgB,CAAA,EAAA,EAAK;AACvC,IAAA,CAAA,CAAE,SAAS,KAAA,GAAQ,wBAAA;AACnB,IAAA,CAAA,CAAE,cAAA,GAAiB,aAAa,CAAC,CAAA;AACjC,IAAA,MAAA,CAAO,IAAA,CAAK,kBAAA,CAAmB,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EACzC;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,IAAI,eAAA,GAAkB,IAAI,KAAA,CAAM,CAAC,CAAA;AACjC,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,eAAA,CAAgB,GAAG,KAAA,EAAO;AACtD,EAAA,OAAO;AAAA,IACL,EAAE,MAAM,CAAA,MAAA,EAAS,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC/C,EAAE,MAAM,CAAA,SAAA,EAAY,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,SAAA,EAAU;AAAA,IAChE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,IACxD,EAAE,MAAM,CAAA,WAAA,EAAc,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,WAAA,EAAY;AAAA,IACpE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,KAAA;AAAM,GACzD;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,eAAA,CAAgB,GAAG,KAAA,EAAO;AACtD,EAAA,OAAO;AAAA,IACL,EAAE,MAAM,CAAA,MAAA,EAAS,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC/C,EAAE,MAAM,CAAA,SAAA,EAAY,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,SAAA,EAAU;AAAA,IAChE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,IACxD,EAAE,MAAM,CAAA,WAAA,EAAc,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,WAAA,EAAY;AAAA,IACpE,EAAE,MAAM,CAAA,YAAA,EAAe,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,YAAA,EAAa;AAAA,IACrE,EAAE,MAAM,CAAA,aAAA,EAAgB,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,aAAA,EAAc;AAAA,IACvE,EAAE,MAAM,CAAA,aAAA,EAAgB,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,aAAA;AAAc,GACzE;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,eAAA,CAAgB,GAAG,KAAA,EAAO;AACtD,EAAA,OAAO;AAAA,IACL,EAAE,MAAM,CAAA,MAAA,EAAS,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC/C,EAAE,MAAM,CAAA,SAAA,EAAY,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,SAAA,EAAU;AAAA,IAChE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,IACxD,EAAE,MAAM,CAAA,WAAA,EAAc,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,WAAA,EAAY;AAAA,IACpE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,IACvD,EAAE,MAAM,CAAA,WAAA,EAAc,CAAC,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,WAAA;AAAY,GACrE;AACF,CAAA;AACA,eAAA,CAAgB,CAAC,CAAA,GAAI,SAAS,eAAA,CAAgB,GAAG,KAAA,EAAO;AACtD,EAAA,IAAI,YAAA,GAAe;AAAA,IACjB,EAAE,MAAM,CAAA,MAAA,EAAS,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC/C,EAAE,IAAA,EAAM,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,EAAI,MAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,UAAA,CAAW,MAAA,EAAO;AAAA,IACxE,EAAE,MAAM,CAAA,KAAA,EAAQ,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM;AAAA,IACxD,EAAE,MAAM,CAAA,WAAA,EAAc,CAAC,IAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,WAAA;AAAY,GACtE;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAChD,IAAA,YAAA,GAAe,aAAa,MAAA,CAAO;AAAA,MACjC,EAAE,IAAA,EAAM,CAAA,MAAA,EAAS,CAAC,YAAY,CAAC,CAAA,CAAA,EAAI,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,UAAA,CAAW,CAAC,EAAE,SAAA,EAAU;AAAA,MACxF,EAAE,IAAA,EAAM,CAAA,MAAA,EAAS,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,UAAA,CAAW,CAAC,EAAE,KAAA;AAAM,KAChF,CAAA;AAAA,EACH;AACA,EAAA,OAAO,YAAA;AACT,CAAA;AACA,SAAS,kBAAA,CAAmB,GAAG,IAAA,EAAM;AACnC,EAAA,OAAO,IAAI,aAAA,CAAc,MAAA,CAAO,aAAA,GAAgB,CAAA,EAAG;AAAA,IACjD,EAAE,MAAM,UAAA,GAAa,CAAA,EAAG,MAAM,KAAA,EAAO,KAAA,EAAO,KAAK,GAAA,EAAI;AAAA,IACrD,EAAE,MAAM,aAAA,GAAgB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,MAAA,EAAO;AAAA,IAC9D,EAAE,MAAM,eAAA,GAAkB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,QAAA;AAAS,GACnE,CAAA;AACH;AACA,SAAS,kBAAA,CAAmB,GAAG,SAAA,EAAW;AACxC,EAAA,MAAM,mBAAmB,SAAA,CAAU,MAAA;AACnC,EAAA,MAAM,cAAA,GAAiB,gBAAgB,gBAAgB,CAAA;AACvD,EAAA,aAAA,CAAc,QAAA,CAAS,cAAA,KAAmB,MAAA,EAAQ,CAAA,gCAAA,EAAmC,gBAAgB,CAAA,CAAE,CAAA;AACvG,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,CAAA,EAAG,SAAS,CAAA;AAC1C,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,iBAAA,GAAoB,GAAG,MAAM,CAAA;AAC9D;AACA,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC7C,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACnD,EAAE,MAAM,iBAAA,EAAmB,IAAA,EAAM,UAAU,KAAA,EAAO,IAAA,CAAK,KAAK,MAAA,EAAO;AAAA,IACnE,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IACpD,EAAE,MAAM,gBAAA,EAAkB,IAAA,EAAM,UAAU,KAAA,EAAO,IAAA,CAAK,OAAO,MAAA,EAAO;AAAA,IACpE,EAAE,IAAA,EAAM,0BAAA,EAA4B,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,IAC5D,EAAE,IAAA,EAAM,sBAAA,EAAwB,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,oBAAA;AAAqB,GAClF,CAAA;AACD,EAAA,MAAA,CAAO,gBAAA,GAAmB,MAAA,CAAO,wBAAA,GAA2B,MAAA,CAAO,MAAA,EAAO;AAC1E,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACzC,IAAA,MAAM,aAAa,kBAAA,CAAmB,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA;AACrD,IAAA,MAAA,CAAO,wBAAA,IAA4B,WAAW,MAAA,EAAO;AACrD,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,WAAW,MAAM,CAAA;AAAA,EACxD;AACA,EAAA,MAAM,mBAAmB,EAAC;AAC1B,EAAA,IAAI,kBAAkB,EAAC;AACvB,EAAA,IAAI,oBAAA,GAAuB,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA;AAChD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC3C,IAAA,MAAM,iBAAiB,kBAAA,CAAmB,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAC3D,IAAA,gBAAA,CAAiB,IAAA,CAAK;AAAA,MACpB,MAAM,SAAA,GAAY,CAAA;AAAA,MAClB,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,oBAAA,IAAwB,eAAe,MAAA,EAAO;AAC9C,IAAA,eAAA,GAAkB,eAAA,CAAgB,MAAA,CAAO,cAAA,CAAe,MAAM,CAAA;AAAA,EAChE;AACA,EAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,gBAAgB,CAAA;AACrD,EAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,eAAe,CAAA;AACpD,EAAA,OAAO,MAAA;AACT;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,SAAS,oBAAA,CAAqB,GAAG,YAAA,EAAc;AAC7C,EAAA,OAAO,IAAI,aAAA,CAAc,MAAA,CAAO,eAAA,GAAkB,CAAA,EAAG;AAAA,IACnD,EAAE,MAAM,iBAAA,GAAoB,CAAA,EAAG,MAAM,SAAA,EAAW,KAAA,EAAO,aAAa,cAAA,EAAe;AAAA,IACnF,EAAE,MAAM,eAAA,GAAkB,CAAA,EAAG,MAAM,SAAA,EAAW,KAAA,EAAO,aAAa,YAAA;AAAa,GAChF,CAAA;AACH;AACA,SAAS,kBAAA,CAAmB,GAAG,IAAA,EAAM;AACnC,EAAA,MAAM,WAAA,GAAc,IAAI,aAAA,CAAc,MAAA,CAAO,gBAAgB,CAAA,EAAG;AAAA,IAC9D,EAAE,MAAM,mBAAA,GAAsB,CAAA,EAAG,MAAM,QAAA,EAAU,KAAA,EAAO,IAAA,CAAK,aAAA,CAAc,MAAA;AAAO,GACnF,CAAA;AACD,EAAA,IAAI,gBAAgB,EAAC;AACrB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAClD,IAAA,MAAM,QAAA,GAAW,oBAAA,CAAqB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,aAAA,CAAc,CAAC,CAAC,CAAA;AACxE,IAAA,aAAA,GAAgB,aAAA,CAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAAA,EACtD;AACA,EAAA,WAAA,CAAY,MAAA,GAAS,WAAA,CAAY,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA;AAC5D,EAAA,OAAO,WAAA;AACT;AACA,SAAS,aAAA,CAAc,MAAM,IAAA,EAAM;AACjC,EAAA,aAAA,CAAc,SAAS,IAAA,CAAK,eAAA,CAAgB,WAAW,IAAA,CAAK,IAAA,CAAK,QAAQ,oDAAoD,CAAA;AAC7H,EAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC7C,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IACjD,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC7C,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,UAAU,KAAA,EAAO,IAAA,CAAK,gBAAgB,MAAA;AAAO,GACzE,CAAA;AACD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AACpD,IAAA,MAAM,aAAa,kBAAA,CAAmB,CAAA,EAAG,IAAA,CAAK,eAAA,CAAgB,CAAC,CAAC,CAAA;AAChE,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,WAAW,MAAM,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM;AACzC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,KAAA,GAAQ,CAAA;AAAA,EACV;AACA,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAChC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,iBAAiB,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,CAAA;AAAA,EACzF;AACA,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,MAAM,SAAA,GAAY,EAAE,WAAA,EAAY;AAChC,EAAA,aAAA,CAAc,QAAA,CAAS,SAAA,KAAc,IAAA,CAAK,IAAA,CAAK,QAAQ,oDAAoD,CAAA;AAC3G,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,IAAA,MAAM,gBAAgB,EAAC;AACvB,IAAA,MAAM,gBAAA,GAAmB,EAAE,WAAA,EAAY;AACvC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,gBAAA,EAAkB,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,cAAA,GAAiB,EAAE,YAAA,EAAa;AACtC,MAAA,MAAM,YAAA,GAAe,EAAE,YAAA,EAAa;AACpC,MAAA,aAAA,CAAc,IAAA,CAAK;AAAA,QACjB,cAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AACA,IAAA,eAAA,CAAgB,IAAA,CAAK;AAAA,MACnB;AAAA,KACD,CAAA;AAAA,EACH;AACA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAC,iBAAA,EAAmB,iBAAiB,CAAA;AAAA,IAC9C;AAAA,GACF;AACF;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK;AAC9C,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,gBAAgB,CAAA,CAAE,wBAAA;AAAA,IACtB,CAAA,CAAE,cAAA;AAAA,IACF,KAAK,IAAA,CAAK,MAAA;AAAA,IACV,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,iBAAiB,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,CAAA;AAAA,EACzF;AACA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAC,iBAAA,EAAmB,iBAAiB,CAAA;AAAA,IAC9C,GAAG;AAAA,GACL;AACF;AACA,SAAS,aAAA,GAAgB;AACvB,EAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAC7D;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ;AACjD,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,iBAAiB,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,CAAA;AAAA,EACzF;AACA,EAAA,MAAM,SAAA,GAAY,EAAE,WAAA,EAAY;AAChC,EAAA,IAAI,SAAA,KAAc,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ;AAClC,IAAA,OAAA,CAAQ,KAAK,CAAA,UAAA,EAAa,SAAS,oDAAoD,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,mBAAA,CAAqB,CAAA;AAAA,EAC9H;AACA,EAAA,MAAM,gBAAA,GAAmB,EAAE,WAAA,EAAY;AACvC,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,cAAA,CAAe,WAAW;AAC/C,IAAA,OAAO,IAAA,CAAK,iBAAA,CAAkB,gBAAA,EAAkB,SAAS,CAAA;AAAA,EAC3D,CAAC,CAAA;AACD,EAAA,MAAM,eAAA,GAAkB,CAAA,CAAE,4BAAA,CAA6B,SAAA,EAAW,QAAQ,MAAM,CAAA;AAChF,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAC,iBAAA,EAAmB,iBAAiB,CAAA;AAAA,IAC9C,YAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,SAAS,aAAA,GAAgB;AACvB,EAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAC7D;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,WAAA,EAAY;AAC7B,EAAA,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,OAAA,IAAW,CAAA,EAAG,iCAAiC,CAAA;AAC3E,EAAA,IAAA,CAAK,SAAA,GAAY,EAAE,WAAA,EAAY;AAC/B,EAAA,IAAA,CAAK,aAAa,EAAC;AACnB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,WAAW,CAAA,EAAA,EAAK;AACvC,IAAA,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,GAAI;AAAA,MACnB,YAAA,EAAc,EAAE,WAAA,EAAY;AAAA,MAC5B,iBAAA,EAAmB,EAAE,WAAA;AAAY,KACnC;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,MAAM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC7C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC5C,EAAE,IAAA,EAAM,WAAA,EAAa,MAAM,QAAA,EAAU,KAAA,EAAO,KAAK,SAAA;AAAU,GAC5D,CAAA;AACD,EAAA,KAAA,IAAS,CAAA,IAAK,KAAK,UAAA,EAAY;AAC7B,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,CAAE,cAAc,CAAA;AACnG,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,CAAE,mBAAmB,CAAA;AAAA,EAC/G;AACA,EAAA,OAAO,MAAA;AACT;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,SAAS,aAAA,CAAc,MAAM,MAAA,EAAQ;AACnC,EAAA,MAAM,QAAA,uBAA+B,GAAA,EAAI;AACzC,EAAA,MAAM,MAAM,IAAA,CAAK,MAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,EAAE,WAAA,EAAY;AAC9B,EAAA,IAAI,OAAA,KAAY,GAAG,OAAO,QAAA;AAC1B,EAAA,CAAA,CAAE,cAAA,GAAiB,EAAE,aAAA,EAAc;AACnC,EAAA,MAAM,qBAAA,GAAwB,IAAA,CAAK,UAAA,GAAa,MAAA,GAAS,CAAA,CAAE,cAAA;AAC3D,EAAA,MAAM,UAAA,GAAa,EAAE,WAAA,EAAY;AACjC,EAAA,MAAM,SAAA,uBAAgC,GAAA,EAAI;AAC1C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,YAAA,GAAe,EAAE,WAAA,EAAY;AACnC,IAAA,MAAM,UAAA,GAAa,EAAE,WAAA,EAAY;AACjC,IAAA,MAAM,YAAA,GAAe,qBAAA,GAAwB,CAAA,CAAE,aAAA,EAAc;AAC7D,IAAA,MAAM,YAAA,GAAe,EAAE,UAAA,EAAW;AAClC,IAAA,IAAI,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,YAAY,CAAA;AACvC,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,MAAA,GAAS,IAAI,UAAA,CAAW,GAAA,EAAK,YAAA,EAAc,YAAY,CAAA;AACvD,MAAA,SAAA,CAAU,GAAA,CAAI,cAAc,MAAM,CAAA;AAAA,IACpC;AACA,IAAA,KAAA,IAAS,EAAA,GAAK,YAAA,EAAc,EAAA,IAAM,UAAA,EAAY,EAAA,EAAA,EAAM;AAClD,MAAA,QAAA,CAAS,GAAA,CAAI,IAAI,MAAM,CAAA;AAAA,IACzB;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AACA,SAAS,aAAa,QAAA,EAAU;AAC9B,EAAA,MAAM,WAAW,KAAA,CAAM,IAAA,CAAK,SAAS,IAAA,EAAM,EAAE,IAAA,EAAK;AAClD,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAA,MAAM,eAAA,uBAAsC,GAAA,EAAI;AAChD,EAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,EAAA,IAAI,MAAA,GAAS,EAAE,UAAA,EAAY,IAAA,EAAK;AAChC,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAS,MAAA,EAAQ,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC/C,IAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AACnC,IAAA,IAAI,YAAA,GAAe,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA;AAC7C,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,YAAA,GAAe,gBAAA;AACf,MAAA,eAAA,CAAgB,KAAK,MAAM,CAAA;AAC3B,MAAA,eAAA,CAAgB,GAAA,CAAI,QAAQ,YAAY,CAAA;AACxC,MAAA,gBAAA,IAAoB,MAAA,CAAO,UAAA;AAAA,IAC7B;AACA,IAAA,IAAI,UAAU,CAAA,KAAM,MAAA,CAAO,UAAA,IAAc,YAAA,KAAiB,OAAO,YAAA,EAAc;AAC7E,MAAA,MAAA,CAAO,UAAA,GAAa,OAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,MAAA,GAAS;AAAA,QACP,YAAA,EAAc,OAAA;AAAA,QACd,UAAA,EAAY,OAAA;AAAA,QACZ,YAAA;AAAA,QACA,cAAc,MAAA,CAAO;AAAA,OACvB;AACA,MAAA,eAAA,CAAgB,KAAK,MAAM,CAAA;AAAA,IAC7B;AAAA,EACF;AACA,EAAA,MAAM,aAAa,eAAA,CAAgB,MAAA;AACnC,EAAA,MAAM,eAAe,eAAA,CAAgB,MAAA;AACrC,EAAA,MAAM,eAAA,GAAkB,CAAA,GAAI,UAAA,IAAc,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA,CAAA;AACtD,EAAA,MAAM,SAAS,IAAI,KAAA,CAAM,IAAI,CAAA,GAAI,UAAA,GAAa,IAAI,YAAY,CAAA;AAC9D,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AACnE,EAAA,MAAA,CAAO,UAAA,EAAY,CAAA,GAAI,EAAE,IAAA,EAAM,uBAAA,EAAyB,MAAM,OAAA,EAAS,KAAA,EAAO,CAAA,GAAI,CAAA,GAAI,CAAA,EAAE;AACxF,EAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AACnE,EAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,QAAA,EAAU,OAAO,UAAA,EAAW;AAC/E,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,aAAa,iBAAA,GAAoB,CAAA;AACvC,IAAA,MAAM,EAAE,YAAA,EAAc,UAAA,EAAY,cAAc,YAAA,EAAa,GAAI,gBAAgB,CAAC,CAAA;AAClF,IAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,aAAa,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,YAAA,EAAa;AACjG,IAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,aAAa,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,UAAA,EAAW;AAC7F,IAAA,MAAA,CAAO,UAAA,EAAY,CAAA,GAAI,EAAE,IAAA,EAAM,UAAA,GAAa,iBAAiB,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,eAAA,GAAkB,YAAA,EAAa;AAClH,IAAA,MAAA,CAAO,UAAA,EAAY,IAAI,EAAE,IAAA,EAAM,aAAa,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,YAAA,EAAa;AAAA,EAClG;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,EAAc,CAAA,EAAA,EAAK;AACrC,IAAA,MAAA,CAAO,UAAA,EAAY,CAAA,GAAI,EAAE,IAAA,EAAM,SAAA,GAAY,CAAA,EAAG,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,eAAA,CAAgB,CAAC,CAAA,EAAE;AAAA,EAC3F;AACA,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,MAAM,CAAA;AAC/C;AACA,IAAI,WAAA,GAAc;AAAA,EAChB,IAAA,EAAM,YAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAGA,SAAS,KAAK,CAAA,EAAG;AACf,EAAA,OAAO,KAAK,GAAA,CAAI,CAAC,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA;AACrC;AACA,SAAS,gBAAgB,KAAA,EAAO;AAC9B,EAAA,OAAO,KAAA,CAAM,MAAA,GAAS,CAAA,KAAM,CAAA,EAAG;AAC7B,IAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EACd;AACA,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,IAAA,GAAA,IAAA,CAAQ,MAAM,CAAC,CAAA,IAAK,EAAA,KAAO,KAAA,CAAM,IAAI,CAAC,CAAA,IAAK,EAAA,CAAA,IAAO,KAAA,CAAM,IAAI,CAAC,CAAA,IAAK,CAAA,CAAA,GAAK,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,EACpF;AACA,EAAA,GAAA,IAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAE,CAAA;AACrB,EAAA,OAAO,GAAA;AACT;AACA,SAAS,eAAA,CAAgB,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ;AACtD,EAAA,OAAO,IAAI,aAAA,CAAc,MAAA,CAAO,cAAA,EAAgB;AAAA,IAC9C,EAAE,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,KAAA,EAAO,GAAA,KAAQ,MAAA,GAAS,GAAA,GAAM,EAAA,EAAG;AAAA,IAC7D,EAAE,MAAM,UAAA,EAAY,IAAA,EAAM,SAAS,KAAA,EAAO,QAAA,KAAa,MAAA,GAAS,QAAA,GAAW,CAAA,EAAE;AAAA,IAC7E,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,SAAS,KAAA,EAAO,MAAA,KAAW,MAAA,GAAS,MAAA,GAAS,CAAA,EAAE;AAAA,IACvE,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,SAAS,KAAA,EAAO,MAAA,KAAW,MAAA,GAAS,MAAA,GAAS,CAAA;AAAE,GACxE,CAAA;AACH;AACA,SAAS,cAAc,MAAA,EAAQ;AAC7B,EAAA,MAAM,IAAA,GAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IAC3C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,OAAO,MAAA,EAAO;AAAA,IAC9C,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC9C,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAChD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAClD,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAE,GAChD,CAAA;AACD,EAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,EAAA,IAAA,CAAK,YAAY,MAAA,CAAO,MAAA;AACxB,EAAA,MAAM,kBAAkB,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,IAAA,CAAK,SAAS,CAAC,CAAA;AACxD,EAAA,IAAA,CAAK,cAAc,EAAA,GAAK,eAAA;AACxB,EAAA,IAAA,CAAK,aAAA,GAAgB,KAAK,eAAe,CAAA;AACzC,EAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,SAAA,GAAY,EAAA,GAAK,IAAA,CAAK,WAAA;AAC7C,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,MAAM,cAAc,EAAC;AACrB,EAAA,IAAI,MAAA,GAAS,KAAK,MAAA,EAAO,GAAI,iBAAgB,CAAE,MAAA,KAAW,IAAA,CAAK,SAAA;AAC/D,EAAA,OAAO,MAAA,GAAS,MAAM,CAAA,EAAG;AACvB,IAAA,MAAA,IAAU,CAAA;AACV,IAAA,WAAA,CAAY,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,MAAA,EAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,EAC9D;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,IAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,IAAA,aAAA,CAAc,QAAA,CAAS,EAAE,SAAA,CAAU,MAAA,KAAW,GAAG,YAAA,GAAe,CAAA,CAAE,YAAY,cAAc,CAAA;AAC5F,IAAA,MAAM,WAAA,GAAc,EAAE,MAAA,EAAO;AAC7B,IAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,CAAA,CAAE,SAAA,EAAW,eAAA,CAAgB,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,WAAW,CAAA;AACjG,IAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,WAAA,CAAY,GAAA,GAAM,iBAAiB,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,WAAA,EAAa,CAAA;AACjG,IAAA,WAAA,CAAY,IAAA,CAAK,EAAE,IAAA,EAAM,CAAA,CAAE,SAAA,GAAY,UAAU,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA,EAAG,CAAA;AAC3E,IAAA,MAAA,IAAU,WAAA;AACV,IAAA,aAAA,CAAc,QAAA,CAAS,CAAC,KAAA,CAAM,MAAM,GAAG,8CAA8C,CAAA;AACrF,IAAA,OAAO,MAAA,GAAS,MAAM,CAAA,EAAG;AACvB,MAAA,MAAA,IAAU,CAAA;AACV,MAAA,WAAA,CAAY,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,MAAA,EAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,IAC9D;AAAA,EACF;AACA,EAAA,YAAA,CAAa,IAAA,CAAK,SAAS,EAAA,EAAI,EAAA,EAAI;AACjC,IAAA,IAAI,EAAA,CAAG,KAAA,CAAM,GAAA,GAAM,EAAA,CAAG,MAAM,GAAA,EAAK;AAC/B,MAAA,OAAO,CAAA;AAAA,IACT,CAAA,MAAO;AACL,MAAA,OAAO,EAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AACD,EAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAC7C,EAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA;AAC5C,EAAA,OAAO,IAAA;AACT;AACA,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,eAAA,EAAiB;AACpD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,gBAAA,CAAiB,KAAA,CAAM,CAAC,CAAC,CAAA;AACjD,IAAA,IAAI,aAAa,CAAA,EAAG;AAClB,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AACxC,MAAA,OAAO,MAAM,UAAA,EAAW;AAAA,IAC1B;AAAA,EACF;AACA,EAAA,OAAO,eAAA;AACT;AACA,SAAS,QAAQ,EAAA,EAAI;AACnB,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,EAAA,CAAG,MAAA,EAAQ,KAAK,CAAA,EAAG;AACrC,IAAA,GAAA,IAAO,GAAG,CAAC,CAAA;AAAA,EACb;AACA,EAAA,OAAO,MAAM,EAAA,CAAG,MAAA;AAClB;AACA,SAAS,gBAAgB,IAAA,EAAM;AAC7B,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,MAAM,gBAAgB,EAAC;AACvB,EAAA,MAAM,mBAAmB,EAAC;AAC1B,EAAA,MAAM,oBAAoB,EAAC;AAC3B,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC9C,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAC/B,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,GAAU,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA,EAAG;AAC7B,MAAA,MAAM,IAAI,KAAA,CAAM,QAAA,GAAW,MAAM,IAAA,GAAO,IAAA,GAAO,IAAI,kCAAkC,CAAA;AAAA,IACvF;AACA,IAAA,IAAI,cAAA,GAAiB,OAAA,IAAW,cAAA,KAAmB,MAAA,EAAQ;AACzD,MAAA,IAAI,UAAU,CAAA,EAAG;AACf,QAAA,cAAA,GAAiB,OAAA;AAAA,MACnB;AAAA,IACF;AACA,IAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,MAAA,aAAA,GAAgB,OAAA;AAAA,IAClB;AACA,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,eAAA,CAAgB,OAAO,CAAA;AACpD,IAAA,IAAI,WAAW,EAAA,EAAI;AACjB,MAAA,eAAA,IAAmB,CAAA,IAAK,QAAA;AAAA,IAC1B,CAAA,MAAA,IAAW,WAAW,EAAA,EAAI;AACxB,MAAA,eAAA,IAAmB,KAAK,QAAA,GAAW,EAAA;AAAA,IACrC,CAAA,MAAA,IAAW,WAAW,EAAA,EAAI;AACxB,MAAA,eAAA,IAAmB,KAAK,QAAA,GAAW,EAAA;AAAA,IACrC,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,MAAA,eAAA,IAAmB,KAAK,QAAA,GAAW,EAAA;AAAA,IACrC,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,IAC7E;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC9B,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,EAAW;AACjC,IAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAI,CAAA;AACvB,IAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAI,CAAA;AACvB,IAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAI,CAAA;AACvB,IAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAI,CAAA;AACvB,IAAA,gBAAA,CAAiB,IAAA,CAAK,QAAQ,eAAe,CAAA;AAC7C,IAAA,iBAAA,CAAkB,IAAA,CAAK,QAAQ,gBAAgB,CAAA;AAC/C,IAAA,aAAA,CAAc,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,EACvC;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,IAChC,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,IAChC,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,IAChC,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,IAChC,eAAA,EAAiB,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,aAAa,CAAA;AAAA,IACnD,eAAA,EAAiB,QAAQ,aAAa,CAAA;AAAA,IACtC,kBAAA,EAAoB,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,gBAAgB,CAAA;AAAA,IACzD,kBAAA,EAAoB,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,gBAAgB,CAAA;AAAA,IACzD,mBAAA,EAAqB,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAM,iBAAiB;AAAA,GAC7D;AACA,EAAA,OAAA,CAAQ,WAAW,IAAA,CAAK,QAAA;AACxB,EAAA,OAAA,CAAQ,YAAY,IAAA,CAAK,SAAA;AACzB,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,IAAA,CAAK,eAAe,GAAA,EAAK;AAC3B,IAAA,QAAA,IAAY,KAAK,cAAA,CAAe,IAAA;AAAA,EAClC;AACA,EAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AACxB,IAAA,QAAA,IAAY,KAAK,cAAA,CAAe,MAAA;AAAA,EAClC;AACA,EAAA,MAAM,SAAA,GAAY,aAAa,IAAA,CAAK;AAAA,IAClC,KAAA,EAAO,CAAA;AAAA;AAAA,IAEP,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,aAAA,EAAe,CAAA;AAAA,IACf,QAAA;AAAA,IACA,kBAAkB,IAAA,CAAK;AAAA,GACxB,CAAA;AACD,EAAA,MAAM,SAAA,GAAY,aAAa,IAAA,CAAK;AAAA,IAClC,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,iBAAiB,OAAA,CAAQ,eAAA;AAAA,IACzB,oBAAoB,OAAA,CAAQ,kBAAA;AAAA,IAC5B,qBAAqB,OAAA,CAAQ,mBAAA;AAAA,IAC7B,UAAA,EAAY,OAAA,CAAQ,kBAAA,IAAsB,OAAA,CAAQ,OAAO,OAAA,CAAQ,IAAA,CAAA;AAAA,IACjE,gBAAA,EAAkB,KAAK,MAAA,CAAO;AAAA,GAC/B,CAAA;AACD,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,OAAO,MAAM,CAAA;AACtD,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO;AAAA,IAC9C,aAAA,EAAe,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAA;AAAA,IACjD,gBAAA,EAAkB,cAAA;AAAA,IAClB,eAAA,EAAiB,aAAA;AAAA,IACjB,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe,OAAA,CAAQ,QAAA;AAAA,IACvB,gBAAgB,OAAA,CAAQ,SAAA;AAAA,IACxB,YAAA,EAAc,CAAA;AAAA,IACd,aAAa,OAAA,CAAQ,IAAA;AAAA,IACrB,YAAA,EAAc,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA;AAAA,IACnC,gBAAA,EAAkB,CAAA;AAAA;AAAA,IAElB,QAAA,EAAU,cAAA,CAAe,IAAA,EAAM,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,QAAA,GAAW,CAAC,CAAA,EAAG,CAAA,CAAE,IAAA;AAAA,IACnF,UAAA,EAAY,cAAA,CAAe,IAAA,EAAM,2BAAA,EAA6B,OAAO,CAAA,CAAE,IAAA;AAAA,IACvE,aAAA,EAAe,IAAA,CAAK,OAAA,CAAQ,GAAG,IAAI,EAAA,GAAK,CAAA;AAAA;AAAA,IAExC,WAAA,EAAa,IAAA,CAAK,OAAA,CAAQ,GAAG,IAAI,EAAA,GAAK;AAAA;AAAA,GAExC,EAAG,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA;AACnB,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC/C,EAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,cAAA,CAAe,YAAY,CAAA;AAC1D,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,cAAA,CAAe,eAAe,CAAA;AAC5D,EAAA,MAAM,eAAA,GAAkB,oBAAoB,GAAA,GAAM,gBAAA;AAClD,EAAA,IAAI,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,gBAAgB,CAAA;AACzD,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,cAAA,GAAiB,iBAAA,CAAkB,OAAA,CAAQ,KAAA,EAAO,EAAE,IAAI,GAAA,GAAM,gBAAA;AAAA,EAChE;AACA,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,KAAA,IAAS,CAAA,IAAK,KAAK,KAAA,EAAO;AACxB,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAAA,EACzB;AACA,EAAA,KAAA,CAAM,OAAA,GAAU,KAAA,CAAM,OAAA,IAAW,EAAC;AAClC,EAAA,KAAA,CAAM,SAAA,GAAY,KAAA,CAAM,SAAA,IAAa,EAAC;AACtC,EAAA,KAAA,CAAM,OAAA,GAAU,KAAA,CAAM,OAAA,IAAW,EAAC;AAClC,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,EAAC;AAChD,EAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,KAAA,CAAM,SAAA,IAAa,EAAC;AACpD,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,EAAC;AAChD,EAAA,KAAA,MAAW,YAAY,KAAA,EAAO;AAC5B,IAAA,KAAA,CAAM,QAAQ,CAAA,GAAI,KAAA,CAAM,QAAQ,KAAK,EAAC;AACtC,IAAA,IAAI,CAAC,KAAA,CAAM,QAAQ,CAAA,CAAE,QAAA,EAAU;AAC7B,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,cAAA,CAAe,cAAc,CAAA,IAAK,EAAA;AAC5D,MAAA,KAAA,CAAM,QAAQ,EAAE,QAAA,GAAW,EAAE,IAAI,CAAA,EAAG,YAAY,CAAA,EAAA,EAAK,eAAe,CAAA,CAAA,EAAG;AAAA,IACzE;AACA,IAAA,IAAI,CAAC,KAAA,CAAM,QAAQ,CAAA,CAAE,cAAA,EAAgB;AACnC,MAAA,KAAA,CAAM,QAAQ,CAAA,CAAE,cAAA,GAAiB,EAAE,IAAI,cAAA,EAAe;AAAA,IACxD;AAAA,EACF;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,eAAA,EAAiB;AAClC,IAAA,KAAA,CAAM,QAAQ,eAAA,GAAkB,gBAAA,CAAiB,UAAA,IAAc,kBAAA,CAAmB,cAAc,gBAAA,CAAiB,UAAA;AAAA,EACnH;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,eAAA,EAAiB;AACpC,IAAA,KAAA,CAAM,UAAU,eAAA,GAAkB,kBAAA,CAAmB,UAAA,IAAc,gBAAA,CAAiB,cAAc,gBAAA,CAAiB,UAAA;AAAA,EACrH;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,eAAA,EAAiB;AAClC,IAAA,KAAA,CAAM,QAAQ,eAAA,GAAkB,gBAAA,CAAiB,UAAA,IAAc,gBAAA,CAAiB,cAAc,kBAAA,CAAmB,UAAA;AAAA,EACnH;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,kBAAA,EAAoB;AACrC,IAAA,KAAA,CAAM,QAAQ,kBAAA,GAAqB,gBAAA,CAAiB,aAAA,IAAiB,kBAAA,CAAmB,iBAAiB,gBAAA,CAAiB,aAAA;AAAA,EAC5H;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,kBAAA,EAAoB;AACvC,IAAA,KAAA,CAAM,UAAU,kBAAA,GAAqB,kBAAA,CAAmB,aAAA,IAAiB,gBAAA,CAAiB,iBAAiB,gBAAA,CAAiB,aAAA;AAAA,EAC9H;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,kBAAA,EAAoB;AACrC,IAAA,KAAA,CAAM,QAAQ,kBAAA,GAAqB,gBAAA,CAAiB,aAAA,IAAiB,gBAAA,CAAiB,iBAAiB,kBAAA,CAAmB,aAAA;AAAA,EAC5H;AACA,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,YAAY,CAAA;AACvD,EAAA,MAAM,YAAY,YAAA,CAAa,MAAA,GAAS,IAAI,YAAA,CAAa,IAAA,CAAK,YAAY,CAAA,GAAI,MAAA;AAC9E,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AACxC,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ;AAAA,IAC7C,OAAA,EAAS,IAAA,CAAK,cAAA,CAAe,SAAS,CAAA;AAAA,IACtC,QAAA,EAAU,eAAA;AAAA,IACV,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,gBAAA;AAAA,IACZ,cAAA;AAAA,IACA,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,QAAA,EAAU,CAAC,CAAA,EAAG,OAAA,CAAQ,MAAM,OAAA,CAAQ,QAAA,EAAU,QAAQ,eAAe,CAAA;AAAA,IACrE,OAAA,EAAS,KAAK,MAAA,CAAO,GAAA,IAAO,KAAK,MAAA,CAAO,GAAA,CAAI,WAAW;AAAC,GACzD,CAAA;AACD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,IAAS,MAAA,CAAO,KAAK,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AACrG,EAAA,MAAM,MAAA,GAAS,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAU,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA;AAC/G,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AACA,EAAA,MAAM,iBAAA,GAAoB;AAAA,IACxB,IAAA,EAAM,CAAC,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,IACvB,IAAA,EAAM,CAAC,IAAA,CAAK,KAAK;AAAA,GACnB;AACA,EAAA,KAAA,IAAS,aAAa,cAAA,EAAgB;AACpC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACnC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAM,SAAA,GAAY,cAAA,CAAe,SAAS,CAAA,CAAE,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,GAAG,iBAAA,CAAkB,SAAS,CAAA,IAAK,EAAE,CAAA;AACxG,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,SAAA,GAAY,cAAc,MAAM,CAAA;AACtC,EAAA,MAAM,KAAA,GAAQ,UAAU,MAAA,EAAO;AAC/B,EAAA,MAAM,QAAA,GAAW,gBAAgB,KAAK,CAAA;AACtC,EAAA,MAAM,cAAc,SAAA,CAAU,MAAA;AAC9B,EAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC9C,IAAA,IAAI,WAAA,CAAY,CAAC,CAAA,CAAE,IAAA,KAAS,YAAA,EAAc;AACxC,MAAA,WAAA,CAAY,CAAC,CAAA,CAAE,KAAA,CAAM,kBAAA,GAAqB,UAAA,GAAa,QAAA;AACvD,MAAA,gBAAA,GAAmB,IAAA;AACnB,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACtE;AACA,EAAA,OAAO,SAAA;AACT;AACA,IAAI,eAAe,EAAE,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,iBAAiB,eAAA,EAAgB;AAGxF,SAAS,SAAA,CAAU,KAAK,GAAA,EAAK;AAC3B,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,IAAA,GAAO,IAAI,MAAA,GAAS,CAAA;AACxB,EAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,IAAA,MAAM,IAAA,GAAO,OAAO,IAAA,KAAS,CAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA;AACtB,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,CAAC,IAAA,GAAO,CAAA;AACjB;AACA,SAAS,SAAA,CAAU,KAAK,KAAA,EAAO;AAC7B,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,IAAA,GAAO,IAAI,MAAA,GAAS,CAAA;AACxB,EAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,IAAA,MAAM,IAAA,GAAO,OAAO,IAAA,KAAS,CAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,IAAI,IAAI,CAAA;AACpB,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,MAAA,IAAW,MAAM,KAAA,EAAO;AACtB,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,CAAC,IAAA,GAAO,CAAA;AACjB;AACA,SAAS,WAAA,CAAY,QAAQ,KAAA,EAAO;AAClC,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,IAAA,GAAO,OAAO,MAAA,GAAS,CAAA;AAC3B,EAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,IAAA,MAAM,IAAA,GAAO,OAAO,IAAA,KAAS,CAAA;AAC7B,IAAA,KAAA,GAAQ,OAAO,IAAI,CAAA;AACnB,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,OAAO,KAAA;AAAA,IACT,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,IAAI,OAAO,CAAA,EAAG;AACZ,IAAA,KAAA,GAAQ,MAAA,CAAO,OAAO,CAAC,CAAA;AACvB,IAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAC9B,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AACA,SAAS,MAAA,CAAO,MAAM,SAAA,EAAW;AAC/B,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,EAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACnB;AACA,MAAA,CAAO,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,EAAU,SAAS,MAAA,EAAQ;AACzB,IAAA,IAAI,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,KAAK,SAAS,CAAA;AAC5C,IAAA,IAAI,CAAC,UAAU,MAAA,EAAQ;AACrB,MAAA,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA,CAAO,KAAK,SAAS,CAAA,GAAI,KAAK,kBAAA,EAAmB;AAAA,IACtE;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB,WAAW;AACzB,IAAA,IAAI,MAAA,GAAS,KAAK,QAAA,EAAS;AAC3B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,SAAS,MAAA,EAAQ;AACzC,MAAA,OAAO,MAAA,CAAO,GAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,sBAAsB,WAAW;AAC/B,IAAA,IAAI,MAAA,GAAS,KAAK,QAAA,EAAS;AAC3B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AAC9C,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,CAAE,GAAA;AAC/B,MAAA,IAAI,IAAA,KAAS,QAAQ,OAAO,IAAA;AAC5B,MAAA,IAAI,IAAA,KAAS,QAAQ,OAAA,GAAU,IAAA;AAAA,IACjC;AACA,IAAA,IAAI,SAAS,OAAO,MAAA;AAAA,EACtB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAA,EAAgB,SAAS,MAAA,EAAQ,MAAA,EAAQ;AACvC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AACnC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,GAAS,MAAA,IAAU,MAAA;AACnB,MAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,MAAM,CAAA;AAC5C,MAAA,IAAI,OAAO,CAAA,EAAG;AACZ,QAAA,OAAO,OAAA,CAAQ,GAAG,CAAA,CAAE,MAAA;AAAA,MACtB,WAAW,MAAA,EAAQ;AACjB,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,GAAA,EAAK,MAAA;AAAA,UACL,MAAA,EAAQ;AAAA,YACN,cAAA,EAAgB,EAAE,QAAA,EAAU,CAAA,EAAG,iBAAiB,KAAA,EAAO,cAAA,EAAgB,EAAC,EAAE;AAAA,YAC1E,gBAAgB;AAAC;AACnB,SACF;AACA,QAAA,OAAA,CAAQ,MAAA,CAAO,EAAA,GAAK,GAAA,EAAK,CAAA,EAAG,GAAG,CAAA;AAC/B,QAAA,OAAO,GAAA,CAAI,MAAA;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,eAAA,EAAiB,SAAS,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ;AAClD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,MAAM,CAAA;AACtD,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,IAAI,CAAC,QAAA,IAAY,QAAA,KAAa,MAAA,IAAU,aAAa,MAAA,EAAQ;AAC3D,QAAA,OAAO,WAAA,CAAY,cAAA;AAAA,MACrB;AACA,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,WAAA,CAAY,cAAA,EAAgB,QAAQ,CAAA;AAC1D,MAAA,IAAI,OAAO,CAAA,EAAG;AACZ,QAAA,OAAO,WAAA,CAAY,cAAA,CAAe,GAAG,CAAA,CAAE,OAAA;AAAA,MACzC,WAAW,MAAA,EAAQ;AACjB,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,GAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,EAAE,QAAA,EAAU,CAAA,EAAG,iBAAiB,KAAA,EAAO,cAAA,EAAgB,EAAC;AAAE,SACrE;AACA,QAAA,WAAA,CAAY,cAAA,CAAe,MAAA,CAAO,EAAA,GAAK,GAAA,EAAK,GAAG,aAAa,CAAA;AAC5D,QAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,eAAA,EAAiB,SAAS,MAAA,EAAQ,QAAA,EAAU,SAAS,MAAA,EAAQ;AAC3D,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,UAAU,MAAM,CAAA;AACnE,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAI,aAAA;AACJ,MAAA,MAAM,cAAc,aAAA,CAAc,cAAA;AAClC,MAAA,MAAM,cAAc,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,QAAA;AACrD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,QAAA,aAAA,GAAgB,WAAA,CAAY,WAAA,CAAY,CAAC,CAAC,CAAA;AAC1C,QAAA,IAAI,aAAA,CAAc,QAAQ,OAAA,EAAS;AACjC,UAAA,OAAO,aAAA,CAAc,OAAA;AAAA,QACvB;AAAA,MACF;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,QAAQ,WAAA,CAAY,MAAA;AAC1B,QAAA,aAAA,CAAc,MAAA,CAAO,UAAU,CAAA,IAAK,OAAA,IAAW,YAAY,KAAA,GAAQ,CAAC,CAAA,CAAE,GAAA,EAAK,+CAA+C,CAAA;AAC1H,QAAA,aAAA,GAAgB;AAAA,UACd,GAAA,EAAK,OAAA;AAAA,UACL,SAAS,EAAE,MAAA,EAAQ,CAAA,EAAG,iBAAA,EAAmB,EAAC;AAAE,SAC9C;AACA,QAAA,WAAA,CAAY,KAAK,aAAa,CAAA;AAC9B,QAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AACtB,QAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,iBAAiB,SAAS,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,YAAY,MAAA,EAAQ;AACvE,IAAA,MAAM,eAAe,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,SAAS,MAAM,CAAA;AAC3E,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAI,WAAA;AACJ,MAAA,MAAM,oBAAoB,YAAA,CAAa,iBAAA;AACvC,MAAA,MAAM,aAAa,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAA;AACpD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AACjD,QAAA,WAAA,GAAc,UAAA,CAAW,iBAAA,CAAkB,CAAC,CAAC,CAAA;AAC7C,QAAA,IAAI,WAAA,CAAY,eAAe,UAAA,EAAY;AACzC,UAAA,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,QACzB;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,MAAA,EAAQ;AACjC,QAAA,WAAA,GAAc;AAAA,UACZ,UAAA;AAAA,UACA,UAAA,EAAY,CAAA;AAAA,UACZ,WAAW,EAAC;AAAA,UACZ,gBAAA,EAAkB;AAAA,SACpB;AACA,QAAA,MAAM,QAAQ,UAAA,CAAW,MAAA;AACzB,QAAA,UAAA,CAAW,KAAK,WAAW,CAAA;AAC3B,QAAA,iBAAA,CAAkB,KAAK,KAAK,CAAA;AAC5B,QAAA,OAAO,CAAC,WAAW,CAAA;AAAA,MACrB;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAA,EAAe,SAAS,aAAA,EAAe,UAAA,EAAY;AACjD,IAAA,QAAQ,cAAc,MAAA;AAAQ,MAC5B,KAAK,CAAA,EAAG;AACN,QAAA,IAAI,aAAA,CAAc,cAAc,UAAA,IAAc,UAAA,GAAa,cAAc,UAAA,GAAa,aAAA,CAAc,QAAQ,MAAA,EAAQ;AAClH,UAAA,OAAO,aAAA,CAAc,OAAA,CAAQ,UAAA,GAAa,aAAA,CAAc,UAAU,CAAA;AAAA,QACpE;AACA,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MACA,KAAK,CAAA,EAAG;AACN,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,aAAA,CAAc,MAAA,EAAQ,UAAU,CAAA;AAC1D,QAAA,OAAO,KAAA,GAAQ,MAAM,OAAA,GAAU,CAAA;AAAA,MACjC;AAAA;AACF,EACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAA,EAAkB,SAAS,aAAA,EAAe,UAAA,EAAY;AACpD,IAAA,QAAQ,cAAc,MAAA;AAAQ,MAC5B,KAAK,CAAA,EAAG;AACN,QAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,aAAA,CAAc,MAAA,EAAQ,UAAU,CAAA;AACxD,QAAA,OAAO,KAAA,IAAS,IAAI,KAAA,GAAQ,EAAA;AAAA,MAC9B;AAAA,MACA,KAAK,CAAA,EAAG;AACN,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,aAAA,CAAc,MAAA,EAAQ,UAAU,CAAA;AAC1D,QAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,KAAA,GAAQ,UAAA,GAAa,MAAM,KAAA,GAAQ,EAAA;AAAA,MAC1D;AAAA;AACF,EACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAA,EAAgB,SAAS,aAAA,EAAe;AACtC,IAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,MAAA,OAAO,aAAA,CAAc,MAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,MAAM,SAAS,aAAA,CAAc,MAAA;AAC7B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,QAAA,KAAA,IAAS,CAAA,GAAI,KAAA,EAAO,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,EAAK;AACjC,UAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QACf;AAAA,MACF;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AACF,CAAA;AACA,IAAI,cAAA,GAAiB,MAAA;AAGrB,SAAS,SAAS,IAAA,EAAM;AACtB,EAAA,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AACxC;AACA,QAAA,CAAS,YAAY,cAAA,CAAe,SAAA;AACpC,QAAA,CAAS,SAAA,CAAU,OAAO,WAAW;AACnC,EAAA,MAAM,MAAA,GAAS,KAAK,oBAAA,EAAqB;AACzC,EAAA,IAAA,CAAK,oBAAA,GAAuB,IAAA,CAAK,gBAAA,CAAiB,MAAM,CAAA;AAC1D,CAAA;AACA,QAAA,CAAS,SAAA,CAAU,eAAA,GAAkB,SAAS,cAAA,EAAgB,WAAW,UAAA,EAAY;AACnF,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,QAAQ,CAAA,EAAA,EAAK;AAC9C,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,CAAC,CAAA,CAAE,SAAA;AACpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,gBAAA,CAAiB,QAAA,CAAS,UAAU,SAAS,CAAA;AACnE,MAAA,IAAI,WAAW,CAAA,EAAG;AAClB,MAAA,QAAQ,SAAS,SAAA;AAAW,QAC1B,KAAK,CAAA,EAAG;AACN,UAAA,IAAI,OAAA,GAAU,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AACxC,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,YAAA,IAAI,IAAA,GAAO,QAAQ,CAAC,CAAA;AACpB,YAAA,IAAI,IAAA,CAAK,gBAAgB,UAAA,EAAY;AACnC,cAAA,OAAO,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,MAAA,CAAO,QAAA,IAAY,CAAA;AAAA,YAChD;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,CAAA,EAAG;AACN,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,WAAW,SAAS,CAAA;AAC/D,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,WAAW,UAAU,CAAA;AAChE,UAAA,MAAM,IAAA,GAAO,QAAA,CAAS,YAAA,CAAa,MAAM,EAAE,MAAM,CAAA;AACjD,UAAA,OAAO,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,MAAA,CAAO,QAAA,IAAY,CAAA;AAAA,QAChD;AAAA;AACF,IACF;AAAA,EACF;AACA,EAAA,OAAO,CAAA;AACT,CAAA;AACA,QAAA,CAAS,SAAA,CAAU,gBAAA,GAAmB,SAAS,MAAA,EAAQ,QAAA,EAAU;AAC/D,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM;AACzB,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,QAAQ,CAAC,CAAA;AAAA,EACzD;AACF,CAAA;AACA,IAAI,gBAAA,GAAmB,QAAA;AAGvB,SAAS,WAAA,CAAY,KAAK,GAAA,EAAK;AAC7B,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,IAAI,CAAA,KAAM,IAAI,MAAA,EAAQ;AACpB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAA,EAAG;AACrB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,YAAA,CAAa,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO;AACvC,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,GAAO,KAAA,CAAM,MAAA,GAAS,CAAA;AACnC,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAO,GAAA,GAAM,QAAQ,CAAC,CAAA;AACvC,IAAA,MAAM,MAAA,GAAS,MAAM,GAAG,CAAA;AACxB,IAAA,MAAM,WAAA,GAAc,OAAO,GAAG,CAAA;AAC9B,IAAA,IAAI,cAAc,KAAA,EAAO;AACvB,MAAA,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,IACd,CAAA,MAAA,IAAW,cAAc,KAAA,EAAO;AAC9B,MAAA,IAAA,GAAO,GAAA,GAAM,CAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,MAAA,GAAS,MAAA;AACT,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,iBAAA,CAAkB,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO;AAC5C,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,GAAO,KAAA,CAAM,MAAA,GAAS,CAAA;AACnC,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAO,GAAA,GAAM,QAAQ,CAAC,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU,MAAM,GAAG,CAAA;AACzB,IAAA,IAAI,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA,EAAO;AACxB,MAAA,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,IACd,CAAA,MAAA,IAAW,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA,EAAO;AAC/B,MAAA,IAAA,GAAO,GAAA,GAAM,CAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;AACA,SAAS,kBAAA,CAAmB,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO;AAC7C,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,GAAO,KAAA,CAAM,MAAA;AAC1B,EAAA,MAAM,OAAA,GAAU,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,GAAG,CAAA,GAAI,EAAE,GAAG,CAAA;AACxC,EAAA,OAAO,MAAM,IAAA,EAAM;AACjB,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,KAAS,CAAA;AAC3B,IAAA,IAAI,OAAA,CAAQ,MAAM,GAAG,CAAA,EAAG,KAAK,CAAA,GAAI,CAAA,QAAS,GAAA,GAAM,CAAA;AAAA,SAC3C,IAAA,GAAO,GAAA;AAAA,EACd;AACA,EAAA,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAA,EAAG,KAAK,CAAA;AAC1B,EAAA,OAAO,GAAA;AACT;AACA,SAAS,OAAO,GAAA,EAAK;AACnB,EAAA,OAAO,GAAA,CAAI,CAAC,CAAA,KAAM,EAAA,IAAM,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,IAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA;AACvD;AACA,SAAS,OAAO,IAAA,EAAM;AACpB,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,CAAK,QAAQ,IAAA,CAAK,UAAA,EAAY,KAAK,UAAU,CAAA;AACvE,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,MAAM,GAAA,GAAM,KAAK,UAAA,GAAa,CAAA;AAC9B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAC1B,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,KAAA,IAAS,CAAA,GAAI,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,IAAI,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,OAAO,QAAQ,GAAA,EAAK,IAAI,IAAA,CAAK,KAAA,EAAO,MAAM,CAAA,EAAG;AAAA,EAC/C;AACA,EAAA,IAAI,MAAM,EAAA,EAAI;AACZ,IAAA,OAAO,QAAQ,GAAA,EAAK,IAAI,IAAA,CAAK,KAAA,EAAO,MAAM,CAAA,EAAG;AAAA,EAC/C;AACA,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,KAAA,IAAS,CAAA;AAAA,EACX;AACA,EAAA,IAAI,KAAA,IAAS,GAAA,EAAK,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAChE,EAAA,MAAM,QAAQ,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,UAAA,GAAa,GAAG,IAAI,CAAA;AACtD,EAAA,OAAO,eAAA,CAAgB,KAAK,QAAA,CAAS,KAAA,EAAO,GAAG,CAAA,EAAG,IAAI,UAAA,CAAW,KAAK,CAAC,CAAA;AACzE;AACA,SAAS,UAAU,CAAA,EAAG;AACpB,EAAA,OAAO;AAAA,IACL,GAAG,CAAA,CAAE,CAAA;AAAA,IACL,GAAG,CAAA,CAAE,CAAA;AAAA,IACL,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,oBAAoB,CAAA,CAAE;AAAA,GACxB;AACF;AACA,SAAS,cAAc,CAAA,EAAG;AACxB,EAAA,OAAO;AAAA,IACL,YAAY,CAAA,CAAE,UAAA;AAAA,IACd,QAAQ,CAAA,CAAE,MAAA;AAAA,IACV,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,QAAQ,CAAA,CAAE,MAAA;AAAA,IACV,IAAI,CAAA,CAAE,EAAA;AAAA,IACN,IAAI,CAAA,CAAE;AAAA,GACR;AACF;AAGA,SAAS,aAAa,IAAA,EAAM;AAC1B,EAAA,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AACxC;AACA,SAAS,cAAA,CAAe,WAAA,EAAa,MAAA,EAAQ,eAAA,EAAiB;AAC5D,EAAA,MAAM,YAAY,WAAA,CAAY,SAAA;AAC9B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,IAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,IAAA,IAAI,QAAA,CAAS,gBAAgB,MAAA,EAAQ;AACnC,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,SAAA,CAAU,KAAK,eAAe,CAAA;AAC9B,IAAA,OAAO,eAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AACA,YAAA,CAAa,YAAY,cAAA,CAAe,SAAA;AACxC,YAAA,CAAa,SAAA,CAAU,qBAAqB,WAAW;AACrD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAA;AAAA,IACT,SAAS,CAAC;AAAA,MACR,GAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAQ;AAAA,QACN,cAAA,EAAgB,EAAE,QAAA,EAAU,CAAA,EAAG,iBAAiB,KAAA,EAAO,cAAA,EAAgB,EAAC,EAAE;AAAA,QAC1E,gBAAgB;AAAC;AACnB,KACD,CAAA;AAAA,IACD,UAAU,EAAC;AAAA,IACX,SAAS;AAAC,GACZ;AACF,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,SAAA,GAAY,SAAS,OAAA,EAAS,QAAQ,QAAA,EAAU;AACrE,EAAA,MAAM,gBAAgB,EAAC;AACvB,EAAA,MAAM,eAAe,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAC,CAAA;AACtE,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,QAAQ,GAAA,EAAA,EAAO;AAClD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAG,CAAA,CAAE,SAAA;AACpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA;AACpD,MAAA,IAAI,CAAA;AACJ,MAAA,IAAI,QAAA,CAAS,gBAAgB,CAAA,EAAG;AAC9B,QAAA,MAAM,QAAQ,QAAA,CAAS,YAAA;AACvB,QAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAClC,UAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,UAAA,aAAA,CAAc,KAAK,EAAE,GAAA,EAAK,OAAO,EAAA,EAAI,KAAA,GAAQ,OAAO,CAAA;AAAA,QACtD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,aAAa,QAAA,CAAS,UAAA;AAC5B,QAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAClC,UAAA,aAAA,CAAc,IAAA,CAAK,EAAE,GAAA,EAAK,MAAA,CAAO,CAAC,GAAG,EAAA,EAAI,UAAA,CAAW,CAAC,CAAA,EAAG,CAAA;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,WAAA,GAAc,SAAS,OAAA,EAAS,QAAQ,QAAA,EAAU;AACvE,EAAA,MAAM,gBAAgB,EAAC;AACvB,EAAA,MAAM,eAAe,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAC,CAAA;AACtE,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,QAAQ,GAAA,EAAA,EAAO;AAClD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAG,CAAA,CAAE,SAAA;AACpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA;AACpD,MAAA,IAAI,CAAA;AACJ,MAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAClC,QAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA;AACzC,QAAA,aAAA,CAAc,KAAK,EAAE,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,cAAc,CAAA;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,aAAA,GAAgB,SAAS,OAAA,EAAS,QAAQ,QAAA,EAAU;AACzE,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,MAAM,eAAe,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAC,CAAA;AACtE,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,QAAQ,GAAA,EAAA,EAAO;AAClD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAG,CAAA,CAAE,SAAA;AACpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA;AACpD,MAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAC/B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,UAAA,CAAW,IAAA,CAAK,EAAE,GAAA,EAAK,MAAA,CAAO,CAAC,GAAG,EAAA,EAAI,aAAA,CAAc,CAAC,CAAA,EAAG,CAAA;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,UAAA;AACT,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,YAAA,GAAe,SAAS,OAAA,EAAS,QAAQ,QAAA,EAAU;AACxE,EAAA,MAAM,YAAY,EAAC;AACnB,EAAA,MAAM,eAAe,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAC,CAAA;AACtE,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,YAAA,CAAa,QAAQ,GAAA,EAAA,EAAO;AAClD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAG,CAAA,CAAE,SAAA;AACpC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA;AACpD,MAAA,MAAM,eAAe,QAAA,CAAS,YAAA;AAC9B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,UAAA,GAAa,OAAO,CAAC,CAAA;AAC3B,QAAA,MAAM,MAAA,GAAS,aAAa,CAAC,CAAA;AAC7B,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,UAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,UAAA,SAAA,CAAU,IAAA,CAAK;AAAA,YACb,KAAK,CAAC,UAAU,CAAA,CAAE,MAAA,CAAO,IAAI,UAAU,CAAA;AAAA,YACvC,IAAI,GAAA,CAAI;AAAA,WACT,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,SAAA;AACT,CAAA;AACA,YAAA,CAAa,UAAU,SAAA,GAAY,SAAS,OAAA,EAAS,YAAA,EAAc,QAAQ,QAAA,EAAU;AACnF,EAAA,MAAM,WAAA,GAAc,KAAK,eAAA,CAAgB,MAAA,EAAQ,UAAU,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC,CAAA;AAC9E,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA,IAE9C,WAAA,EAAa,CAAA;AAAA,IACb,UAAU,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,EAAC,EAAE;AAAA,IAClC,YAAY;AAAC,GACd,CAAA;AACD,EAAA,aAAA,CAAc,MAAA,CAAO,SAAS,QAAA,CAAS,MAAA,KAAW,GAAG,iDAAA,GAAoD,QAAA,CAAS,SAAS,MAAM,CAAA;AACjI,EAAA,MAAM,gBAAgB,YAAA,CAAa,GAAA;AACnC,EAAA,IAAI,MAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAQ,aAAa,CAAA;AAChE,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,GAAA,GAAM,EAAA,GAAK,GAAA;AACX,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,GAAG,aAAa,CAAA;AACrD,IAAA,QAAA,CAAS,UAAA,CAAW,MAAA,CAAO,GAAA,EAAK,CAAA,EAAG,CAAC,CAAA;AAAA,EACtC;AACA,EAAA,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,GAAI,YAAA,CAAa,EAAA;AAC1C,CAAA;AACA,YAAA,CAAa,UAAU,WAAA,GAAc,SAAS,OAAA,EAAS,YAAA,EAAc,QAAQ,QAAA,EAAU;AACrF,EAAA,aAAA,CAAc,MAAA,CAAO,aAAa,EAAA,YAAc,KAAA,IAAS,aAAa,EAAA,CAAG,MAAA,GAAS,GAAG,oDAAoD,CAAA;AACzI,EAAA,MAAM,WAAA,GAAc,KAAK,eAAA,CAAgB,MAAA,EAAQ,UAAU,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC,CAAA;AAC9E,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA,IAE9C,WAAA,EAAa,CAAA;AAAA,IACb,UAAU,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,EAAC,EAAE;AAAA,IAClC,WAAW;AAAC,GACb,CAAA;AACD,EAAA,aAAA,CAAc,MAAA,CAAO,SAAS,QAAA,CAAS,MAAA,KAAW,GAAG,mDAAA,GAAsD,QAAA,CAAS,SAAS,MAAM,CAAA;AACnI,EAAA,MAAM,gBAAgB,YAAA,CAAa,GAAA;AACnC,EAAA,IAAI,MAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAQ,aAAa,CAAA;AAChE,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,GAAA,GAAM,EAAA,GAAK,GAAA;AACX,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,GAAG,aAAa,CAAA;AACrD,IAAA,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,GAAA,EAAK,CAAA,EAAG,CAAC,CAAA;AAAA,EACrC;AACA,EAAA,QAAA,CAAS,SAAA,CAAU,GAAG,CAAA,GAAI,YAAA,CAAa,EAAA;AACzC,CAAA;AACA,YAAA,CAAa,UAAU,YAAA,GAAe,SAAS,OAAA,EAAS,YAAA,EAAc,QAAQ,QAAA,EAAU;AACtF,EAAA,MAAM,WAAA,GAAc,KAAK,eAAA,CAAgB,MAAA,EAAQ,UAAU,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC,CAAA;AAC9E,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,WAAA,EAAa,CAAA,EAAG;AAAA;AAAA,IAE9C,WAAA,EAAa,CAAA;AAAA,IACb,UAAU,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,EAAC,EAAE;AAAA,IAClC,eAAe;AAAC,GACjB,CAAA;AACD,EAAA,aAAA,CAAc,MAAA,CAAO,SAAS,QAAA,CAAS,MAAA,KAAW,GAAG,oDAAA,GAAuD,QAAA,CAAS,SAAS,MAAM,CAAA;AACpI,EAAA,MAAM,gBAAgB,YAAA,CAAa,GAAA;AACnC,EAAA,IAAI,MAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAQ,aAAa,CAAA;AAChE,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,GAAA,GAAM,EAAA,GAAK,GAAA;AACX,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,GAAG,aAAa,CAAA;AACrD,IAAA,QAAA,CAAS,aAAA,CAAc,MAAA,CAAO,GAAA,EAAK,CAAA,EAAG,CAAC,CAAA;AAAA,EACzC;AACA,EAAA,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA,GAAI,YAAA,CAAa,EAAA;AAC7C,CAAA;AACA,YAAA,CAAa,UAAU,WAAA,GAAc,SAAS,OAAA,EAAS,QAAA,EAAU,QAAQ,QAAA,EAAU;AACjF,EAAA,MAAM,WAAA,GAAc,KAAK,eAAA,CAAgB,MAAA,EAAQ,UAAU,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC,CAAA;AAC9E,EAAA,IAAI,QAAA,GAAW,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,QAAA,GAAW;AAAA;AAAA,MAET,WAAA,EAAa,CAAA;AAAA,MACb,UAAU,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAA,EAAQ,EAAC,EAAE;AAAA,MAClC,cAAc;AAAC,KACjB;AACA,IAAA,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA,GAAI,QAAA;AAAA,EAC7B;AACA,EAAA,aAAA,CAAc,MAAA,CAAO,SAAS,QAAA,CAAS,MAAA,KAAW,GAAG,mDAAA,GAAsD,QAAA,CAAS,SAAS,MAAM,CAAA;AACnI,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,UAAU,QAAA,CAAS,EAAA;AAAA,IACnB,UAAA,EAAY;AAAA,GACd;AACA,EAAA,IAAI,MAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAQ,aAAa,CAAA;AAChE,EAAA,IAAI,OAAO,CAAA,EAAG;AACZ,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,YAAA,CAAa,GAAG,CAAA;AAC7C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,MAAA,IAAI,YAAY,WAAA,CAAY,CAAC,CAAA,CAAE,UAAA,EAAY,aAAa,CAAA,EAAG;AACzD,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,WAAA,CAAY,KAAK,aAAa,CAAA;AAAA,EAChC,CAAA,MAAO;AACL,IAAA,GAAA,GAAM,EAAA,GAAK,GAAA;AACX,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,GAAG,aAAa,CAAA;AACrD,IAAA,QAAA,CAAS,aAAa,MAAA,CAAO,GAAA,EAAK,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAAA,EACtD;AACF,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,UAAA,GAAa,SAAS,OAAA,EAAS,QAAQ,QAAA,EAAU;AACtE,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1B,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,EACjD;AACA,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACvG,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACpD,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACxG,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA;AAErD,EAAA,OAAO,MAAA;AACT,CAAA;AACA,YAAA,CAAa,UAAU,GAAA,GAAM,SAAS,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAA,EAAU;AACpE,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1B,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA,EACtD;AACA,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,IAAI,OAAO,GAAA,CAAI,EAAA,KAAO,QAAA,EAAU;AAC9B,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA,MACtD;AACA,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA,IACzD,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA,IACxD,KAAK,MAAA;AACH,MAAA,IAAI,GAAA,CAAI,cAAc,KAAA,EAAO;AAC3B,QAAA,OAAO,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA,MACxD;AACA,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,GAAA,EAAK,QAAQ,QAAQ,CAAA;AAAA;AAE1D,EAAA,OAAO,MAAA;AACT,CAAA;AACA,IAAI,oBAAA,GAAuB,YAAA;AAG3B,IAAI,iBAAiB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAazB,YAAY,IAAA,EAAM;AAChB,IAAA,IAAA,CAAK,YAAA,GAAe,GAAA;AACpB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,IAAI,KAAK,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,IAAA,CAAK,OAAO,IAAA,EAAM;AAC7C,MAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,IAC1B;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,WAAA,EAAa;AAClB,IAAA,MAAM,WAAW,EAAC;AAClB,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,IAAI,CAAC,MAAM,OAAO,QAAA;AAClB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAA,EAAA,EAAK;AACvD,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,kBAAA,CAAmB,CAAC,CAAA;AAC5C,MAAA,MAAM,gBAAgB,EAAC;AACvB,MAAA,KAAA,IAAS,IAAI,UAAA,EAAY,CAAA,GAAI,UAAA,GAAa,IAAA,CAAK,mBAAmB,CAAA,EAAA,EAAK;AACrE,QAAA,aAAA,CAAc,IAAA,CAAK,YAAY,IAAA,CAAK,YAAA,CAAa,CAAC,CAAA,EAAG,WAAA,IAAe,MAAM,CAAC,CAAA;AAAA,MAC7E;AACA,MAAA,QAAA,CAAS,KAAK,aAAa,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,KAAA,EAAO;AACjB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,OAAO,MAAM,GAAA,CAAI,CAAC,WAAW,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,IACxD;AACA,IAAA,OAAO,UAAA,CAAW,OAAO,KAAK,CAAA;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WAAA,CAAY,SAAS,MAAA,GAAS,IAAI,WAAA,GAAc,IAAA,CAAK,IAAA,EAAK,CAAE,iBAAA,EAAmB;AAC7E,IAAA,OAAA,GAAU,MAAA,CAAO,UAAU,OAAO,CAAA,GAAI,KAAK,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA,GAAI,OAAA;AACjE,IAAA,OAAO,OAAO,MAAA,CAAO,KAAA,CAAM,WAAW,CAAA,CAAE,IAAA,CAAK,KAAK,YAAY,CAAA,EAAG,IAAA,CAAK,WAAA,CAAY,OAAO,CAAA,CAAE,MAAA,CAAO,KAAK,WAAA,CAAY,MAAM,CAAC,CAAC,CAAA;AAAA,EAC7H;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,GAAA,EAAK;AACV,IAAA,IAAI,IAAA,CAAK,WAAW,KAAA,CAAM,GAAG,EAAE,IAAA,CAAK,IAAA,CAAK,YAAY,CAAC,CAAA,EAAG;AACvD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,MAAM,QAAA,GAAW,KAAK,iBAAA,GAAoB,GAAA;AAC1C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,OAAA,KAAY,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,EAAC,EAAG,QAAQ,CAAC,CAAA;AACvF,IAAA,IAAA,CAAK,iBAAA,GAAoB,QAAA;AACzB,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA;AACpD,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GAAA,CAAI,YAAA,EAAc,WAAA,GAAc,MAAA,EAAQ;AACtC,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,CAAE,YAAY,CAAA,IAAK,IAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAA,CAAS,KAAA,EAAO,YAAA,GAAe,CAAA,EAAG,cAAc,MAAA,EAAQ;AACtD,IAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,cAAc,WAAW,CAAA;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAA,CAAS,KAAA,EAAO,MAAA,EAAQ,YAAA,GAAe,CAAA,EAAG;AACxC,IAAA,KAAA,GAAQ,SAAS,KAAK,CAAA;AACtB,IAAA,YAAA,GAAe,SAAS,YAAY,CAAA;AACpC,IAAA,IAAI,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAChC,IAAA,IAAI,OAAA,GAAU,SAAS,YAAY,CAAA;AACnC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,KAAA,CAAM,CAAA,aAAA,EAAgB,YAAY,CAAA,aAAA,CAAe,CAAA;AAAA,IACzD;AACA,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,MAAM,aAAa,IAAA,CAAK,iBAAA;AACxB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC1B,MAAA,MAAA,GAAS,CAAC,MAAM,CAAA;AAAA,IAClB;AACA,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,KAAA,GAAQ,UAAA,EAAY;AACtC,MAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,KAAA,GAAQ,UAAU,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAA,CAAK,OAAO,KAAK,CAAA;AAC5B,MAAA,OAAA,GAAU,SAAS,YAAY,CAAA;AAAA,IACjC;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,GAAI,KAAK,WAAA,CAAY,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IACjD;AACA,IAAA,IAAA,CAAK,YAAA,GAAe,SAAS,IAAA,EAAK;AAClC,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAA,EAAQ;AACV,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,MAAM,aAAa,IAAA,CAAK,iBAAA;AACxB,IAAA,IAAI,MAAA,IAAU,OAAO,MAAA,EAAQ;AAC3B,MAAA,MAAA,GAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,MAAA,IAAI,MAAA,CAAO,SAAS,UAAA,EAAY;AAC9B,QAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,UAAU,CAAA;AAAA,MACxC,CAAA,MAAA,IAAW,MAAA,CAAO,MAAA,GAAS,UAAA,EAAY;AACrC,QAAA,MAAA,GAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,MAClC;AACA,MAAA,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA;AACrD,MAAA,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,GAAG,MAAM,CAAA;AAAA,IAClC,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA;AACrD,MAAA,IAAA,CAAK,YAAA,CAAa,KAAK,GAAG,KAAA,CAAM,UAAU,CAAA,CAAE,IAAA,CAAK,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA,IACrE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,YAAA,EAAc;AACnB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAClC,IAAA,OAAO,SAAS,YAAY,CAAA;AAC5B,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,IAAA,CAAK,mBAAmB,GAAA,EAAI;AAC5B,IAAA,IAAA,CAAK,YAAA,GAAe,SAAS,IAAA,EAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,CAAY,YAAY,gBAAA,EAAkB;AACxC,IAAA,IAAI,eAAe,gBAAA,EAAkB;AACnC,MAAA,MAAM,MAAM,mDAAmD,CAAA;AAAA,IACjE;AACA,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAClC,IAAA,MAAM,kBAAkB,EAAC;AACzB,IAAA,IAAI,gBAAA,GAAmB,IAAA,CAAK,iBAAA,GAAoB,CAAA,EAAG;AACjD,MAAA,MAAM,MAAM,CAAA,kEAAA,EAAqE,IAAA,CAAK,oBAAoB,CAAC,CAAA,oBAAA,EAAuB,gBAAgB,CAAA,CAAA,CAAG,CAAA;AAAA,IACvJ;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,MAAA,MAAM,iBAAiB,OAAA,CAAQ,MAAA,CAAO,CAAC,KAAA,EAAO,KAAA,KAAU,UAAU,UAAU,CAAA;AAC5E,MAAA,eAAA,CAAgB,KAAK,cAAc,CAAA;AAAA,IACrC;AACA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA;AACnC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,eAAe,SAAA,CAAU,YAAA;AAC/B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AAC5C,QAAA,MAAM,YAAA,GAAe,YAAA,CAAa,CAAC,CAAA,CAAE,YAAA;AACrC,QAAA,IAAI,eAAe,UAAA,EAAY;AAC7B,UAAA,MAAM,WAAA,GAAc,CAAA;AACpB,UAAA,YAAA,CAAa,CAAC,EAAE,YAAA,IAAgB,WAAA;AAAA,QAClC,CAAA,MAAA,IAAW,iBAAiB,UAAA,EAAY;AACtC,UAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,YAAA,IAAI,mBAAmB,UAAA,IAAc,gBAAA,IAAoB,aAAa,QAAA,CAAS,CAAC,EAAE,MAAA,EAAQ;AACxF,cAAA,gBAAA,EAAA;AACA,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA,YAAA,CAAa,CAAC,CAAA,CAAE,YAAA,GAAe,gBAAA,GAAmB,gBAAA;AAAA,QACpD;AAAA,MACF;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,OAAO,IAAA,GAAO;AAAA,QACtB,GAAG,SAAA;AAAA,QACH;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,iBAAA,GAAoB,gBAAgB,IAAA,EAAK;AAC/C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,IAAA,CAAK,kBAAA,CAAmB,CAAC,CAAA,IAAK,CAAA;AAAA,IAChC;AACA,IAAA,IAAA,CAAK,oBAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,oBAAoB,CAAC,CAAA;AAC/D,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,WAAA,CAAY,iBAAiB,CAAA;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,MAAA,EAAQ;AACjB,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAK,EAAG;AAChB,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,MAAA,EAAQ;AAC7B,QAAA,MAAA,GAAS,CAAC,KAAK,YAAY,CAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,MAClC;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,OAAO,IAAA,GAAO;AAAA,QACtB,OAAA,EAAS,CAAA;AAAA,QACT,mBAAmB,MAAA,CAAO,MAAA;AAAA,QAC1B,YAAA,EAAc,MAAA;AAAA,QACd,kBAAA,EAAoB,CAAC,CAAC;AAAA,OACxB;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,aAAA,GAAgB;AACd,IAAA,MAAM,IAAA,GAAO,KAAK,IAAA,EAAK;AACvB,IAAA,MAAM,eAAe,IAAA,CAAK,IAAA,CAAK,KAAK,YAAA,CAAa,MAAA,GAAS,KAAK,iBAAiB,CAAA;AAChF,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,EAAc,CAAA,EAAA,EAAK;AACrC,MAAA,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,iBAAiB,CAAA;AAAA,IACzD;AAAA,EACF;AACF,CAAA;AAGA,IAAI,eAAe,MAAM;AAAA;AAAA;AAAA;AAAA,EAIvB,YAAY,IAAA,EAAM;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAa;AACX,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM;AAC1B,MAAA,IAAA,CAAK,IAAA,CAAK,OAAO,IAAA,GAAO;AAAA,QACtB,OAAA,EAAS,CAAA;AAAA,QACT,kBAAkB,EAAC;AAAA,QACnB,cAAc;AAAC,OACjB;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA;AACzB,IAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA;AACzB,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAA,EAAM;AAClB,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,gBAAA,EAAkB,WAAW,UAAU,CAAA;AAC3E,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,MAAM,aAAa,SAAA,CAAU,eAAA;AAC7B,IAAA,MAAM,YAAY,SAAA,CAAU,SAAA;AAC5B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,UAAA,GAAa,CAAC,CAAA;AAC9C,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,OAAO,CAAA;AAAA,QACpC,cAAc,KAAA,CAAM;AAAA,OACrB,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GAAA,CAAI,UAAA,EAAY,MAAA,EAAQ,QAAA,EAAU;AAChC,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA;AACzC,IAAA,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAM,CAAA,GAAI,MAAA,GAAS,CAAC,MAAM,CAAA;AACjD,IAAA,IAAI,aAAa,MAAA,IAAU,QAAA,KAAa,QAAA,IAAY,QAAA,GAAW,cAAc,MAAA,EAAQ;AACnF,MAAA,QAAA,GAAW,aAAA,CAAc,MAAA;AAAA,IAC3B,CAAA,MAAA,IAAW,WAAW,CAAA,EAAG;AACvB,MAAA,QAAA,GAAW,aAAA,CAAc,MAAA,GAAS,CAAA,GAAI,QAAA,IAAY,cAAc,MAAA,GAAS,CAAA,CAAA;AACzE,MAAA,IAAI,QAAA,IAAY,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACxC,QAAA,QAAA,IAAY,cAAc,MAAA,GAAS,CAAA;AAAA,MACrC;AAAA,IACF;AACA,IAAA,MAAM,YAAY,EAAC;AACnB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,EAAU,CAAA,EAAA,EAAK;AACjC,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,SAAA,CAAU,aAAA,CAAc,CAAC,CAAA,CAAE,KAAK,CAAA,GAAI,aAAA,CAAc,CAAC,CAAA,CAAE,KAAA,GAAQ,aAAA,CAAc,CAAC,EAAE,KAAA,CAAM,KAAA;AAC3G,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,OAAA;AAAA,QACA,YAAA,EAAc,aAAA,CAAc,CAAC,CAAA,CAAE;AAAA,OAChC,CAAA;AAAA,IACH;AACA,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,OAAA,GAAU,OAAO,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,KAAA;AAC1E,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,OAAA;AAAA,QACA,cAAc,KAAA,CAAM;AAAA,OACrB,CAAA;AAAA,IACH;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,QAAA,EAAU,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACpD,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,SAAA,CAAU,aAAA,CAAc,CAAC,CAAA,CAAE,KAAK,CAAA,GAAI,aAAA,CAAc,CAAC,CAAA,CAAE,KAAA,GAAQ,aAAA,CAAc,CAAC,EAAE,KAAA,CAAM,KAAA;AAC3G,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,OAAA;AAAA,QACA,YAAA,EAAc,aAAA,CAAc,CAAC,CAAA,CAAE;AAAA,OAChC,CAAA;AAAA,IACH;AACA,IAAA,IAAA,CAAK,eAAA,CAAgB,YAAY,SAAS,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAA,CAAgB,UAAA,EAAY,UAAA,EAAY,YAAA,EAAc;AACpD,IAAA,IAAI,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA;AAChC,IAAA,IAAI,MAAA,CAAO,UAAU,CAAA,EAAG;AACtB,MAAA,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,MAAW;AAAA,QACrC,OAAA,EAAS,MAAM,KAAA,CAAM,KAAA;AAAA,QACrB,YAAA,EAAc,KAAA,KAAU,UAAA,GAAa,YAAA,GAAe,KAAA,CAAM;AAAA,OAC5D,CAAE,CAAA;AACF,MAAA,IAAA,CAAK,eAAA,CAAgB,YAAY,MAAM,CAAA;AAAA,IACzC,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAM,qBAAqB,CAAA;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAA,CAAO,UAAA,EAAY,KAAA,EAAO,GAAA,GAAM,KAAA,EAAO;AACrC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA;AACvC,IAAA,aAAA,GAAgB,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,MAC5C,OAAA,EAAS,MAAM,KAAA,CAAM,KAAA;AAAA,MACrB,cAAc,KAAA,CAAM;AAAA,KACtB,CAAE,CAAA;AACF,IAAA,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,GAAA,GAAM,KAAA,GAAQ,CAAC,CAAA;AAC3C,IAAA,IAAA,CAAK,eAAA,CAAgB,YAAY,aAAa,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAA,CAAgB,YAAY,MAAA,EAAQ;AAClC,IAAA,IAAA,CAAK,UAAA,EAAW;AAChB,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,IAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA;AACzB,IAAA,IAAI,KAAA,GAAQ,iBAAA,CAAkB,IAAA,CAAK,gBAAA,EAAkB,WAAW,UAAU,CAAA;AAC1E,IAAA,MAAM,eAAe,KAAA,KAAU,EAAA;AAC/B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAM,kBAAA,GAAqB,EAAE,OAAA,EAAS,UAAA,EAAY,iBAAiB,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,SAAA,EAAW,CAAA,EAAE;AAC1G,MAAA,KAAA,GAAQ,kBAAA,CAAmB,IAAA,CAAK,gBAAA,EAAkB,SAAA,EAAW,kBAAkB,CAAA;AAAA,IACjF;AACA,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAA;AACnD,IAAA,MAAM,oBAAoB,eAAA,CAAgB,SAAA;AAC1C,IAAA,MAAM,eAAe,MAAA,CAAO,MAAA;AAC5B,IAAA,MAAM,YAAY,YAAA,GAAe,iBAAA;AACjC,IAAA,IAAI,YAAY,CAAA,EAAG;AACjB,MAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,iBAAiB,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAChE,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,cAAc,KAAA,CAAM;AAAA,OACtB,CAAE,CAAA;AACF,MAAA,IAAA,CAAK,aAAa,MAAA,CAAO,eAAA,CAAgB,kBAAkB,iBAAA,EAAmB,CAAA,EAAG,GAAG,SAAS,CAAA;AAAA,IAC/F,CAAA,MAAA,IAAW,YAAY,CAAA,EAAG;AACxB,MAAA,IAAA,CAAK,aAAa,MAAA,CAAO,eAAA,CAAgB,eAAA,GAAkB,YAAA,EAAc,CAAC,SAAS,CAAA;AAAA,IACrF;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,IAAI,iBAAA,EAAmB,YAAY,GAAG,CAAA,EAAA,EAAK;AAClE,MAAA,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB,eAAA,GAAkB,CAAC,CAAA,GAAI;AAAA,QACvD,OAAA,EAAS,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA;AAAA,QACnB,YAAA,EAAc,MAAA,CAAO,CAAC,CAAA,CAAE;AAAA,OAC1B;AAAA,IACF;AACA,IAAA,eAAA,CAAgB,SAAA,GAAY,YAAA;AAC5B,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,gBAAA,CAAiB,QAAQ,CAAA,EAAA,EAAK;AACrD,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,gBAAA,CAAiB,CAAC,CAAA;AACvC,QAAA,IAAI,CAAA,KAAM,KAAA,IAAS,OAAA,CAAQ,eAAA,GAAkB,gBAAgB,eAAA,EAAiB;AAC9E,QAAA,IAAA,CAAK,gBAAA,CAAiB,CAAC,CAAA,CAAE,eAAA,IAAmB,SAAA;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AACF,CAAA;AAGA,IAAI,kBAAkB,MAAM;AAAA;AAAA;AAAA;AAAA,EAI1B,YAAY,IAAA,EAAM;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,KAAA,uBAA4B,OAAA,EAAQ;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,6BAAA,CAA8B,UAAU,CAAA;AACxE,IAAA,OAAO,sBAAsB,kBAAA,CAAmB,KAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,UAAA,EAAY;AACnB,IAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,6BAAA,CAA8B,UAAU,CAAA;AACxE,IAAA,OAAO,sBAAsB,kBAAA,CAAmB,OAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,8BAA8B,UAAA,EAAY;AACxC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAA;AAC7B,IAAA,IAAI,QAAQ,MAAA,EAAQ;AACpB,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,UAAU,CAAA;AACjC,IAAA,IAAI,WAAW,MAAA,EAAQ;AACvB,IAAA,IAAI,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA;AAC5C,IAAA,IAAI,qBAAqB,MAAA,EAAQ;AAC/B,MAAA,gBAAA,GAAmB,uBAAuB,MAAM,CAAA;AAChD,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,MAAA,EAAQ,gBAAgB,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,kBAAA,GAAqB,gBAAA,CAAiB,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AAC/D,IAAA,IAAI,uBAAuB,MAAA,EAAQ;AACjC,MAAA,kBAAA,GAAqB,wBAAA,CAAyB,IAAA,CAAK,IAAA,EAAM,gBAAA,CAAiB,UAAU,UAAU,CAAA;AAC9F,MAAA,kBAAA,CAAmB,OAAA,CAAQ,IAAA,CAAK,CAAC,QAAA,KAAa;AAC5C,QAAA,kBAAA,CAAmB,KAAA,GAAQ,QAAA;AAC3B,QAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,cAAA,KAAmB,UAAA,EAAY;AAClD,UAAA,IAAI;AACF,YAAA,IAAA,CAAK,IAAA,CAAK,eAAe,UAAU,CAAA;AAAA,UACrC,SAAS,KAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,qBAAA,EAAuB,UAAA,EAAY,KAAK,CAAA;AAAA,UACxD;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,gBAAA,CAAiB,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,kBAAkB,CAAA;AAAA,IAC5D;AACA,IAAA,OAAO,kBAAA;AAAA,EACT;AACF,CAAA;AACA,SAAS,uBAAuB,MAAA,EAAQ;AACtC,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,iBAAA,CAAkB,MAAM,CAAA,CAAE,KAAK,eAAe,CAAA;AAAA,IACxD,MAAA,sBAA4B,GAAA;AAAI,GAClC;AACF;AACA,SAAS,wBAAA,CAAyB,IAAA,EAAM,kBAAA,EAAoB,UAAA,EAAY;AACtE,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,kBAAA,CAAmB,IAAA,CAAK,CAAC,WAAA,KAAgB;AAChD,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,QAAA,OAAA,GAAU,WAAA;AAAA,MACZ,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,CAAC,CAAA,GAAI,UAAA;AACjB,QAAA,OAAA,GAAU,WAAA,CAAY,KAAK,EAAE,CAAA;AAAA,MAC/B;AACA,MAAA,MAAM,QAAA,GAAW,YAAA,CAAa,OAAA,EAAS,IAAA,CAAK,UAAU,CAAA;AACtD,MAAA,OAAO,SAAS,KAAA,CAAM,MAAA,EAAO,CAAE,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,IACpD,CAAC,CAAA;AAAA,IACD,KAAA,EAAO;AAAA,GACT;AACF;AACA,IAAI,iBAAA,GAAoB,OAAO,mBAAA,KAAwB,UAAA,GAAa,wCAAA,GAA2C,gCAAA;AAC/G,SAAS,iCAAiC,GAAA,EAAK;AAC7C,EAAA,IAAI;AACF,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAO,GAAG,CAAA,GAAI,GAAG,CAAC,CAAA;AAAA,EAClF,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,EAC7B;AACF;AACA,SAAS,yCAAyC,GAAA,EAAK;AACrD,EAAA,IAAI,MAAA,CAAO,GAAG,CAAA,EAAG;AACf,IAAA,OAAO,IAAI,QAAA,CAAS,IAAI,QAAA,CAAS,GAAG,CAAA,CAAE,IAAA,CAAK,WAAA,CAAY,IAAI,mBAAA,CAAoB,MAAM,CAAC,CAAC,EAAE,IAAA,EAAK;AAAA,EAChG;AACA,EAAA,IAAI;AACF,IAAA,OAAO,QAAQ,OAAA,CAAQ,IAAI,aAAY,CAAE,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EACtD,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,EAC7B;AACF;AACA,SAAS,gBAAgB,IAAA,EAAM;AAC7B,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AACzC,EAAA,MAAM,eAAe,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,aAAA,GAAgB,CAAC,CAAA,GAAI,CAAA;AAC5D,EAAA,IAAI,uBAAuB,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,EAAe,YAAY,CAAC,CAAA,EAAG;AAC5E,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,WAAA,CAAY,QAAQ,CAAA;AAC5C,EAAA,OAAO;AAAA,IACL,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,YAAY,CAAA;AAAA,IAC9B,QAAA;AAAA,IACA,IAAA,CAAK,SAAA,CAAU,YAAA,EAAc,UAAU,CAAA;AAAA,IACvC,0BAAA;AAAA,IACA,EAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,CAAK,UAAU,UAAU;AAAA,GAC3B;AACF;AACA,SAAS,YAAA,CAAa,MAAM,UAAA,EAAY;AACtC,EAAA,MAAM,cAAc,IAAI,SAAA,EAAU,CAAE,eAAA,CAAgB,MAAM,eAAe,CAAA;AACzE,EAAA,MAAM,MAAM,WAAA,CAAY,eAAA;AACxB,EAAA,MAAM,UAAA,GAAa,IAAI,OAAA,CAAQ,OAAA;AAC/B,EAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAM,OAAA;AAC3B,EAAA,MAAM,SAAA,GAAY,IAAI,MAAA,CAAO,OAAA;AAC7B,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,UAAA,CAAW,KAAA,GAAQ,CAAA,IAAK,UAAA,CAAW,SAAS,CAAA,EAAG;AACjD,IAAA,IAAI,QAAA,CAAS,aAAa,CAAA,EAAG;AAC3B,MAAA,MAAA,GAAS,QAAA,CAAS,wBAAwB,UAAA,CAAW,KAAA;AACrD,MAAA,MAAA,GAAS,UAAU,QAAA,KAAa,CAAA,GAAI,SAAA,CAAU,qBAAA,GAAwB,WAAW,MAAA,GAAS,MAAA;AAAA,IAC5F,CAAA,MAAA,IAAW,SAAA,CAAU,QAAA,KAAa,CAAA,EAAG;AACnC,MAAA,MAAA,GAAS,SAAA,CAAU,wBAAwB,UAAA,CAAW,MAAA;AACtD,MAAA,MAAA,GAAS,MAAA;AAAA,IACX,WAAW,UAAA,EAAY;AACrB,MAAA,MAAA,GAAS,aAAa,UAAA,CAAW,KAAA;AACjC,MAAA,MAAA,GAAS,aAAa,UAAA,CAAW,MAAA;AAAA,IACnC;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AACxC,EAAA,GAAA,CAAI,MAAM,QAAA,GAAW,OAAA;AACrB,EAAA,GAAA,CAAI,MAAM,UAAA,GAAa,QAAA;AACvB,EAAA,GAAA,CAAI,YAAY,GAAG,CAAA;AACnB,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,GAAG,CAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,IAAI,OAAA,EAAQ;AACzB,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,GAAG,CAAA;AAC7B,EAAA,MAAM,eAAA,GAAA,CAAmB,IAAA,CAAK,CAAA,GAAI,UAAA,CAAW,CAAA,IAAK,MAAA;AAClD,EAAA,MAAM,QAAA,GAAA,CAAY,UAAA,CAAW,CAAA,GAAI,IAAA,CAAK,CAAA,IAAK,MAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,GAAQ,MAAA;AAC3B,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,GAAS,MAAA;AAC7B,EAAA,GAAA,CAAI,YAAA,CAAa,SAAA,EAAW,CAAC,IAAA,CAAK,GAAG,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAC/E,EAAA,IAAI,MAAA,KAAW,CAAA,EAAG,GAAA,CAAI,YAAA,CAAa,SAAS,KAAK,CAAA;AACjD,EAAA,IAAI,MAAA,KAAW,CAAA,EAAG,GAAA,CAAI,YAAA,CAAa,UAAU,MAAM,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AACrC,EAAA,KAAA,CAAM,GAAA,GAAM,mCAAA,GAAsC,kBAAA,CAAmB,GAAA,CAAI,SAAS,CAAA;AAClF,EAAA,OAAO,EAAE,eAAA,EAAiB,QAAA,EAAU,KAAA,EAAM;AAC5C;AAGA,IAAI,UAAA,uBAAiC,OAAA,EAAQ;AAC7C,SAAS,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,aAAA,EAAe,oBAAoB,WAAA,EAAa;AACrF,EAAA,IAAI,CAAA;AACJ,EAAA,IAAA,CAAK,IAAA,GAAO,sBAAsB,CAAA,EAAG;AACnC,IAAA,CAAA,GAAI,EAAE,SAAA,EAAU;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAiB,CAAA,EAAG;AAC9B,MAAA,CAAA,GAAI,CAAC,CAAA;AAAA,IACP;AACA,IAAA,CAAA,GAAI,aAAA,GAAgB,CAAA;AAAA,EACtB,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,IAAA,GAAO,eAAe,CAAA,EAAG;AAC5B,MAAA,CAAA,GAAI,aAAA;AAAA,IACN,CAAA,MAAO;AACL,MAAA,CAAA,GAAI,aAAA,GAAgB,EAAE,UAAA,EAAW;AAAA,IACnC;AAAA,EACF;AACA,EAAA,OAAO,CAAA;AACT;AACA,SAAS,UAAA,CAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO;AACtC,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,KAAA,CAAM,iBAAA,GAAoB,EAAE,UAAA,EAAW;AACvC,EAAA,KAAA,CAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,EAAA,KAAA,CAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,EAAA,KAAA,CAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,EAAA,KAAA,CAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,KAAA,CAAM,oBAAoB,CAAA,EAAG;AAC/B,IAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,eAAA,GAAkB,EAAC;AACjD,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,iBAAA,EAAmB,KAAK,CAAA,EAAG;AACnD,MAAA,eAAA,CAAgB,IAAA,CAAK,CAAA,CAAE,WAAA,EAAa,CAAA;AAAA,IACtC;AACA,IAAA,KAAA,CAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,IAAA,KAAA,CAAM,eAAe,EAAC;AACtB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,iBAAA,EAAmB,KAAK,CAAA,EAAG;AACnD,MAAA,KAAA,CAAM,YAAA,CAAa,IAAA,CAAK,CAAA,CAAE,SAAA,EAAW,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,eAAA,CAAgB,MAAA,GAAS,CAAC,CAAA,GAAI,CAAA;AAC1E,IAAA,KAAA,GAAQ,EAAC;AACT,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,EAAqB,KAAK,CAAA,EAAG;AAC/C,MAAA,IAAA,GAAO,EAAE,SAAA,EAAU;AACnB,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,IAAA,CAAK,IAAA,GAAO,KAAK,CAAA,EAAG;AAClB,QAAA,MAAM,WAAA,GAAc,EAAE,SAAA,EAAU;AAChC,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,KAAK,CAAA,EAAG;AACvC,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,UAAA,CAAA,IAAK,CAAA;AAAA,QACP;AAAA,MACF;AAAA,IACF;AACA,IAAA,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,MAAA,KAAW,mBAAA,EAAqB,YAAY,CAAA;AACzE,IAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,KAAA;AACJ,MAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,EAAqB,KAAK,CAAA,EAAG;AAC/C,UAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,UAAA,KAAA,GAAQ,EAAC;AACT,UAAA,KAAA,CAAM,OAAA,GAAU,CAAC,EAAE,IAAA,GAAO,CAAA,CAAA;AAC1B,UAAA,KAAA,CAAM,kBAAA,GAAqB,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,IAAK,CAAA;AACzD,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACnB;AACA,QAAA,IAAI,EAAA,GAAK,CAAA;AACT,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,EAAqB,KAAK,CAAA,EAAG;AAC/C,UAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,UAAA,KAAA,GAAQ,OAAO,CAAC,CAAA;AAChB,UAAA,KAAA,CAAM,IAAI,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,EAAA,EAAI,GAAG,EAAE,CAAA;AACjD,UAAA,EAAA,GAAK,KAAA,CAAM,CAAA;AAAA,QACb;AACA,QAAA,IAAI,EAAA,GAAK,CAAA;AACT,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,EAAqB,KAAK,CAAA,EAAG;AAC/C,UAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,UAAA,KAAA,GAAQ,OAAO,CAAC,CAAA;AAChB,UAAA,KAAA,CAAM,IAAI,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,EAAA,EAAI,GAAG,EAAE,CAAA;AACjD,UAAA,EAAA,GAAK,KAAA,CAAM,CAAA;AAAA,QACb;AAAA,MACF;AACA,MAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,SAAS,EAAC;AAAA,IAClB;AAAA,EACF,CAAA,MAAA,IAAW,KAAA,CAAM,iBAAA,KAAsB,CAAA,EAAG;AACxC,IAAA,KAAA,CAAM,SAAS,EAAC;AAAA,EAClB,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,IAAA,KAAA,CAAM,SAAS,EAAC;AAChB,IAAA,KAAA,CAAM,aAAa,EAAC;AACpB,IAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,IAAA,OAAO,cAAA,EAAgB;AACrB,MAAA,KAAA,GAAQ,EAAE,WAAA,EAAY;AACtB,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,UAAA,EAAY,EAAE,WAAA,EAAY;AAAA,QAC1B,MAAA,EAAQ,CAAA;AAAA,QACR,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS,CAAA;AAAA,QACT,MAAA,EAAQ,CAAA;AAAA,QACR,EAAA,EAAI,CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AACA,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,CAAA,EAAG;AACnB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,CAAA,EAAG;AACnB,UAAA,SAAA,CAAU,EAAA,GAAK,EAAE,UAAA,EAAW;AAC5B,UAAA,SAAA,CAAU,EAAA,GAAK,EAAE,UAAA,EAAW;AAAA,QAC9B,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,gBAAgB,CAAC,CAAA,CAAE,aAAY,EAAG,CAAA,CAAE,aAAa,CAAA;AAAA,QAC7D;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,CAAA,EAAG;AACnB,UAAA,SAAA,CAAU,EAAA,GAAK,EAAE,SAAA,EAAU;AAC3B,UAAA,SAAA,CAAU,EAAA,GAAK,EAAE,SAAA,EAAU;AAAA,QAC7B,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,gBAAgB,CAAC,CAAA,CAAE,WAAU,EAAG,CAAA,CAAE,WAAW,CAAA;AAAA,QACzD;AAAA,MACF;AACA,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,CAAA,EAAG;AACnB,QAAA,SAAA,CAAU,MAAA,GAAS,SAAA,CAAU,MAAA,GAAS,CAAA,CAAE,YAAA,EAAa;AAAA,MACvD,CAAA,MAAA,IAAA,CAAY,KAAA,GAAQ,EAAA,IAAM,CAAA,EAAG;AAC3B,QAAA,SAAA,CAAU,MAAA,GAAS,EAAE,YAAA,EAAa;AAClC,QAAA,SAAA,CAAU,MAAA,GAAS,EAAE,YAAA,EAAa;AAAA,MACpC,CAAA,MAAA,IAAA,CAAY,KAAA,GAAQ,GAAA,IAAO,CAAA,EAAG;AAC5B,QAAA,SAAA,CAAU,MAAA,GAAS,EAAE,YAAA,EAAa;AAClC,QAAA,SAAA,CAAU,OAAA,GAAU,EAAE,YAAA,EAAa;AACnC,QAAA,SAAA,CAAU,OAAA,GAAU,EAAE,YAAA,EAAa;AACnC,QAAA,SAAA,CAAU,MAAA,GAAS,EAAE,YAAA,EAAa;AAAA,MACpC;AACA,MAAA,KAAA,CAAM,UAAA,CAAW,KAAK,SAAS,CAAA;AAC/B,MAAA,cAAA,GAAiB,CAAC,EAAE,KAAA,GAAQ,EAAA,CAAA;AAAA,IAC9B;AACA,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,KAAA,CAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,MAAA,KAAA,CAAM,eAAe,EAAC;AACtB,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,iBAAA,EAAmB,KAAK,CAAA,EAAG;AACnD,QAAA,KAAA,CAAM,YAAA,CAAa,IAAA,CAAK,CAAA,CAAE,SAAA,EAAW,CAAA;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACF;AACA,SAAS,eAAA,CAAgB,QAAQ,SAAA,EAAW;AAC1C,EAAA,MAAM,YAAY,EAAC;AACnB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,CAAA,EAAG,UAAU,MAAA,GAAS,EAAA,CAAG,IAAI,SAAA,CAAU,OAAA,GAAU,EAAA,CAAG,CAAA,GAAI,SAAA,CAAU,EAAA;AAAA,MAClE,CAAA,EAAG,UAAU,OAAA,GAAU,EAAA,CAAG,IAAI,SAAA,CAAU,MAAA,GAAS,EAAA,CAAG,CAAA,GAAI,SAAA,CAAU,EAAA;AAAA,MAClE,SAAS,EAAA,CAAG,OAAA;AAAA,MACZ,oBAAoB,EAAA,CAAG;AAAA,KACzB;AACA,IAAA,SAAA,CAAU,KAAK,KAAK,CAAA;AAAA,EACtB;AACA,EAAA,OAAO,SAAA;AACT;AACA,SAAS,YAAY,MAAA,EAAQ;AAC3B,EAAA,MAAM,WAAW,EAAC;AAClB,EAAA,IAAI,iBAAiB,EAAC;AACtB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,cAAA,CAAe,KAAK,EAAE,CAAA;AACtB,IAAA,IAAI,GAAG,kBAAA,EAAoB;AACzB,MAAA,QAAA,CAAS,KAAK,cAAc,CAAA;AAC5B,MAAA,cAAA,GAAiB,EAAC;AAAA,IACpB;AAAA,EACF;AACA,EAAA,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,qDAAqD,CAAA;AACzG,EAAA,OAAO,QAAA;AACT;AACA,SAAS,QAAQ,MAAA,EAAQ;AACvB,EAAA,MAAM,CAAA,GAAI,IAAI,YAAA,EAAa;AAC3B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,YAAY,MAAM,CAAA;AACnC,EAAA,KAAA,IAAS,eAAe,CAAA,EAAG,YAAA,GAAe,QAAA,CAAS,MAAA,EAAQ,EAAE,YAAA,EAAc;AACzE,IAAA,MAAM,OAAA,GAAU,SAAS,YAAY,CAAA;AACrC,IAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA;AACrC,IAAA,IAAI,IAAA,GAAO,QAAQ,CAAC,CAAA;AACpB,IAAA,IAAI,KAAK,OAAA,EAAS;AAChB,MAAA,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA;AAAA,IACzB,CAAA,MAAO;AACL,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,EAAE,CAAA,EAAA,CAAI,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,CAAI,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAK,GAAA,EAAI;AACvE,QAAA,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA;AAAA,MAC3B;AAAA,IACF;AACA,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA,EAAG;AACvC,MAAA,IAAA,GAAO,IAAA;AACP,MAAA,IAAA,GAAO,OAAA,CAAA,CAAS,CAAA,GAAI,CAAA,IAAK,OAAA,CAAQ,MAAM,CAAA;AACvC,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,KAAA,GAAQ,EAAE,CAAA,EAAA,CAAI,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,CAAI,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,CAAA,IAAK,GAAA,EAAI;AAAA,QACnE;AACA,QAAA,CAAA,CAAE,gBAAA,CAAiB,KAAK,CAAA,EAAG,IAAA,CAAK,GAAG,KAAA,CAAM,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,MACrD;AAAA,IACF;AACA,IAAA,CAAA,CAAE,SAAA,EAAU;AAAA,EACd;AACA,EAAA,OAAO,CAAA;AACT;AACA,SAAS,SAAA,CAAU,QAAQ,KAAA,EAAO;AAChC,EAAA,IAAI,MAAM,WAAA,EAAa;AACrB,IAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAI,MAAM,CAAA,EAAG;AAC3B,MAAA,UAAA,CAAW,GAAA,CAAI,MAAA,kBAAwB,IAAI,GAAA,EAAK,CAAA;AAAA,IAClD;AACA,IAAA,MAAM,SAAA,GAAY,UAAA,CAAW,GAAA,CAAI,MAAM,CAAA;AACvC,IAAA,SAAA,CAAU,GAAA,CAAI,MAAM,KAAK,CAAA;AACzB,IAAA,IAAI;AACF,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAA,EAAG;AACnD,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA;AACpC,QAAA,IAAI,SAAA,CAAU,GAAA,CAAI,SAAA,CAAU,UAAU,CAAA,EAAG;AACvC,UAAA;AAAA,QACF;AACA,QAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,GAAA,CAAI,SAAA,CAAU,UAAU,CAAA;AACtD,QAAA,cAAA,CAAe,OAAA,EAAQ;AACvB,QAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,UAAA,IAAI,iBAAA;AACJ,UAAA,IAAI,SAAA,CAAU,kBAAkB,KAAA,CAAA,EAAQ;AACtC,YAAA,iBAAA,GAAoB,eAAA,CAAgB,cAAA,CAAe,MAAA,EAAQ,SAAS,CAAA;AAAA,UACtE,CAAA,MAAO;AACL,YAAA,IAAI,SAAA,CAAU,aAAA,CAAc,CAAC,CAAA,GAAI,MAAM,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,SAAA,CAAU,cAAc,CAAC,CAAA,GAAI,cAAA,CAAe,MAAA,CAAO,SAAS,CAAA,EAAG;AACzH,cAAA,MAAM,KAAA,CAAM,iCAAA,GAAoC,KAAA,CAAM,IAAI,CAAA;AAAA,YAC5D;AACA,YAAA,MAAM,UAAU,KAAA,CAAM,MAAA,CAAO,SAAA,CAAU,aAAA,CAAc,CAAC,CAAC,CAAA;AACvD,YAAA,IAAI,WAAW,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,aAAA,CAAc,CAAC,CAAC,CAAA;AAC/D,YAAA,MAAM,SAAA,GAAY;AAAA,cAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,cAClB,SAAS,SAAA,CAAU,OAAA;AAAA,cACnB,SAAS,SAAA,CAAU,OAAA;AAAA,cACnB,QAAQ,SAAA,CAAU,MAAA;AAAA,cAClB,EAAA,EAAI,CAAA;AAAA,cACJ,EAAA,EAAI;AAAA,aACN;AACA,YAAA,QAAA,GAAW,gBAAgB,CAAC,QAAQ,CAAA,EAAG,SAAS,EAAE,CAAC,CAAA;AACnD,YAAA,SAAA,CAAU,EAAA,GAAK,OAAA,CAAQ,CAAA,GAAI,QAAA,CAAS,CAAA;AACpC,YAAA,SAAA,CAAU,EAAA,GAAK,OAAA,CAAQ,CAAA,GAAI,QAAA,CAAS,CAAA;AACpC,YAAA,iBAAA,GAAoB,eAAA,CAAgB,cAAA,CAAe,MAAA,EAAQ,SAAS,CAAA;AAAA,UACtE;AACA,UAAA,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,MAAA,CAAO,iBAAiB,CAAA;AAAA,QACtD;AAAA,MACF;AAAA,IACF,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,IAC9B;AAAA,EACF;AACA,EAAA,OAAO,OAAA,CAAQ,MAAM,MAAM,CAAA;AAC7B;AACA,SAAS,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM;AAClD,EAAA,MAAM,MAAA,GAAS,IAAI,gBAAA,CAAiB,QAAA,CAAS,IAAI,CAAA;AACjD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG;AAC3C,IAAA,MAAM,MAAA,GAAS,KAAK,CAAC,CAAA;AACrB,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,gBAAA,CAAiB,cAAA,CAAe,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,IAAA,EAAM,KAAA,GAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA;AAAA,IACtG,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,CAAA,EAAG,gBAAA,CAAiB,WAAA,CAAY,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,IACtD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,yBAAA,CAA0B,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM;AAC1D,EAAA,MAAM,MAAA,GAAS,IAAI,gBAAA,CAAiB,QAAA,CAAS,IAAI,CAAA;AACjD,EAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,CAAA,EAAG;AACvB,IAAA,MAAM,MAAA,GAAS,KAAK,CAAC,CAAA;AACrB,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,gBAAA,CAAiB,cAAA,CAAe,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,IAAA,EAAM,KAAA,GAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA;AAAA,IACtG,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,CAAA,EAAG,gBAAA,CAAiB,WAAA,CAAY,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,IACtD;AAAA,EACF,CAAA;AACA,EAAA,OAAO,MAAA;AACT;AACA,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,MAAM,GAAA,EAAK;AACpD,EAAA,IAAI,GAAA,CAAI,SAAA;AACN,IAAA,OAAO,yBAAA,CAA0B,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AAAA;AAExD,IAAA,OAAO,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AACpD;AACA,IAAI,YAAA,GAAe,EAAE,OAAA,EAAS,KAAA,EAAO,cAAA,EAAe;AAGpD,IAAI,qBAAqB,MAAM;AAAA,EAC7B,YAAY,IAAA,EAAM;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB,MAAA,EAAQ;AACzB,IAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,MAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AAClB,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,CAAA,EAAG,GAAG,CAAA;AAChC,QAAA,MAAA,CAAO,MAAM,CAAA,KAAM,MAAA,KAAW,OAAO,MAAM,CAAA,GAAI,OAAO,GAAG,CAAA,CAAA;AACzD,QAAA,OAAO,OAAO,GAAG,CAAA;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,MAAA,EAAQ;AAC1B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,EAAI;AAAA,IACnC;AACA,IAAA,IAAI,aAAa,EAAC;AAClB,IAAA,IAAA,CAAK,mBAAmB,MAAM,CAAA;AAC9B,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,MAAK,CAAE,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAChD,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,EAAK,CAAE,KAAK,CAAC,CAAA;AAC/B,MAAA,IAAI,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AAC9B,MAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,QAAA,QAAA,GAAW,IAAA,CAAK,YAAA;AAAA,MAClB;AACA,MAAA,IAAI,QAAA,GAAW,KAAK,YAAA,EAAc;AAChC,QAAA,UAAA,CAAW,IAAA,CAAA,CAAM,QAAA,GAAW,IAAA,CAAK,YAAA,GAAe,MAAA,CAAO,OAAA,KAAY,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,CAAA;AAAA,MACxH,CAAA,MAAO;AACL,QAAA,UAAA,CAAW,IAAA,CAAA,CAAM,QAAA,GAAW,IAAA,CAAK,YAAA,GAAe,MAAA,CAAO,OAAA,KAAY,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,CAAA;AAAA,MACxH;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,MAAK,EAAG;AACf,MAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,MAAK,CAAE,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AAC3D,QAAA,IAAI,OAAA,GAAU,IAAA,CAAK,IAAA,EAAK,CAAE,gBAAgB,CAAC,CAAA;AAC3C,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACrD,UAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,aAAA,CAAc,CAAC,CAAA;AAClC,UAAA,IAAI,KAAK,CAAA,IAAK,UAAA,CAAW,CAAC,CAAA,GAAI,KAAK,cAAA,EAAgB;AACjD,YAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,aAAA,CAAc,CAAA,GAAI,CAAC,CAAA;AACtC,YAAA,UAAA,CAAW,CAAC,CAAA,GAAA,CAAA,CAAM,UAAA,CAAW,CAAC,CAAA,GAAI,IAAA,CAAK,mBAAmB,IAAA,CAAK,YAAA,GAAe,KAAK,YAAA,CAAA,GAAgB,MAAA,CAAO,YAAY,IAAA,CAAK,cAAA,GAAiB,KAAK,cAAA,GAAiB,MAAA,CAAO,WAAW,IAAA,CAAK,YAAA;AACzL,YAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,UAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAA,CAAkB,MAAA,EAAQ,WAAA,EAAa,QAAA,EAAU;AAC/C,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,OAAO,UAAA,GAAa,OAAO,MAAA,EAAQ;AACjC,MAAA,IAAI,UAAA,GAAa,UAAA;AACjB,MAAA,IAAI,QAAA,GAAW,UAAA;AACf,MAAA,IAAI,KAAA,GAAQ,OAAO,QAAQ,CAAA;AAC3B,MAAA,OAAO,CAAC,MAAM,kBAAA,EAAoB;AAChC,QAAA,KAAA,GAAQ,MAAA,CAAO,EAAE,QAAQ,CAAA;AAAA,MAC3B;AACA,MAAA,OAAO,UAAA,IAAc,QAAA,IAAY,CAAC,QAAA,CAAS,UAAU,CAAA,EAAG;AACtD,QAAA,UAAA,EAAA;AAAA,MACF;AACA,MAAA,IAAI,aAAa,QAAA,EAAU;AACzB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,UAAA,GAAa,UAAA;AACjB,MAAA,IAAI,QAAA,GAAW,UAAA;AACf,MAAA,UAAA,EAAA;AACA,MAAA,OAAO,cAAc,QAAA,EAAU;AAC7B,QAAA,IAAI,QAAA,CAAS,UAAU,CAAA,EAAG;AACxB,UAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,CAAA,EAAG,UAAA,GAAa,GAAG,QAAA,EAAU,UAAA,EAAY,aAAa,MAAM,CAAA;AAC7F,UAAA,QAAA,GAAW,UAAA;AAAA,QACb;AACA,QAAA,UAAA,EAAA;AAAA,MACF;AACA,MAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,QAAA,IAAA,CAAK,UAAA,CAAW,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,aAAa,MAAM,CAAA;AAAA,MACrE,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,iBAAiB,QAAA,GAAW,CAAA,EAAG,UAAU,QAAA,EAAU,UAAA,EAAY,aAAa,MAAM,CAAA;AACvF,QAAA,IAAI,aAAa,CAAA,EAAG;AAClB,UAAA,IAAA,CAAK,iBAAiB,UAAA,EAAY,UAAA,GAAa,GAAG,QAAA,EAAU,UAAA,EAAY,aAAa,MAAM,CAAA;AAAA,QAC7F;AAAA,MACF;AACA,MAAA,UAAA,GAAa,QAAA,GAAW,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,iBAAiB,EAAA,EAAI,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,aAAa,MAAA,EAAQ;AACxD,IAAA,IAAI,KAAK,EAAA,EAAI;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,QAAA,GAAW,CAAC,GAAA,EAAK,GAAG,CAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,IAAI,CAAA,GAAI,SAAS,CAAC,CAAA;AAClB,MAAA,IAAI,WAAA,CAAY,IAAI,CAAA,CAAE,CAAC,IAAI,WAAA,CAAY,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AAC/C,QAAA,IAAI,CAAA,GAAI,IAAA;AACR,QAAA,IAAA,GAAO,IAAA;AACP,QAAA,IAAA,GAAO,CAAA;AAAA,MACT;AACA,MAAA,IAAI,GAAA,GAAM,WAAA,CAAY,IAAI,CAAA,CAAE,CAAC,CAAA;AAC7B,MAAA,IAAI,GAAA,GAAM,WAAA,CAAY,IAAI,CAAA,CAAE,CAAC,CAAA;AAC7B,MAAA,IAAI,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,CAAE,CAAC,CAAA;AACzB,MAAA,IAAI,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,CAAE,CAAC,CAAA;AACzB,MAAA,IAAI,GAAA,KAAQ,GAAA,IAAO,IAAA,KAAS,IAAA,EAAM;AAChC,QAAA,IAAI,QAAQ,GAAA,KAAQ,GAAA,GAAM,CAAA,GAAA,CAAK,IAAA,GAAO,SAAS,GAAA,GAAM,GAAA,CAAA;AACrD,QAAA,KAAA,IAAS,EAAA,GAAK,EAAA,EAAI,EAAA,IAAM,EAAA,EAAI,EAAA,EAAA,EAAM;AAChC,UAAA,IAAI,GAAA,GAAM,WAAA,CAAY,EAAE,CAAA,CAAE,CAAC,CAAA;AAC3B,UAAA,IAAI,OAAO,GAAA,EAAK;AACd,YAAA,GAAA,IAAO,IAAA,GAAO,GAAA;AAAA,UAChB,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,GAAA,IAAO,IAAA,GAAO,GAAA;AAAA,UAChB,CAAA,MAAO;AACL,YAAA,GAAA,GAAM,IAAA,GAAA,CAAQ,MAAM,GAAA,IAAO,KAAA;AAAA,UAC7B;AACA,UAAA,MAAA,CAAO,EAAE,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,aAAa,MAAA,EAAQ;AAC3C,IAAA,IAAI,SAAS,MAAA,CAAO,GAAG,EAAE,CAAA,GAAI,WAAA,CAAY,GAAG,CAAA,CAAE,CAAA;AAC9C,IAAA,IAAI,SAAS,MAAA,CAAO,GAAG,EAAE,CAAA,GAAI,WAAA,CAAY,GAAG,CAAA,CAAE,CAAA;AAC9C,IAAA,IAAI,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,CAAA,EAAG;AAChC,MAAA;AAAA,IACF;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,EAAA,EAAI,CAAA,IAAK,EAAA,EAAI,CAAA,EAAA,EAAK;AAC7B,MAAA,IAAI,MAAM,GAAA,EAAK;AACb,QAAA,MAAA,CAAO,CAAC,EAAE,CAAA,IAAK,MAAA;AACf,QAAA,MAAA,CAAO,CAAC,EAAE,CAAA,IAAK,MAAA;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,oBAAoB,KAAA,EAAO,iBAAA,EAAmB,MAAA,EAAQ,WAAA,EAAa,QAAQ,MAAA,EAAQ;AACjF,IAAA,IAAI,WAAA,GAAc,CAAA;AAClB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAChD,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA;AACpC,MAAA,MAAM,iBAAiB,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,UAAU,CAAA;AAChE,MAAA,MAAM,kBAAA,GAAqB,cAAc,SAAS,CAAA;AAClD,MAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAA;AACxC,MAAA,IAAI,aAAa,EAAA,EAAI;AACnB,QAAA,kBAAA,CAAmB,MAAM,IAAA,CAAK,KAAA,CAAM,OAAO,MAAA,CAAO,UAAU,IAAI,MAAM,CAAA;AACtE,QAAA,kBAAA,CAAmB,MAAM,IAAA,CAAK,KAAA,CAAM,OAAO,OAAA,CAAQ,UAAU,IAAI,MAAM,CAAA;AAAA,MACzE;AACA,MAAA,MAAM,0BAAA,GAA6B,gBAAgB,IAAA,CAAK,YAAA,CAAa,gBAAgB,MAAM,CAAA,CAAE,QAAQ,kBAAkB,CAAA;AACvH,MAAA,iBAAA,CAAkB,MAAA,CAAO,WAAA,EAAa,0BAAA,CAA2B,MAAA,EAAQ,GAAG,0BAA0B,CAAA;AACtG,MAAA,WAAA,IAAe,eAAe,MAAA,CAAO,MAAA;AAAA,IACvC;AAAA,EACF;AAAA,EACA,wBAAA,CAAyB,eAAe,MAAA,EAAQ,MAAA,EAAQ,SAAS,MAAA,EAAQ,IAAA,GAAO,EAAC,EAAG;AAClF,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,EAAI;AAAA,IACnC;AACA,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,MAAM,CAAA;AACxD,IAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAa,GAAI,aAAA;AAClC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,EAAK,CAAE,IAAA,CAAK,MAAA;AACnC,IAAA,IAAI,iBAAA;AACJ,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,iBAAA,GAAoB,MAAA,CAAO,IAAI,SAAS,CAAA;AAAA,IAC1C,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,MAAA,iBAAA,GAAoB,CAAC,GAAG,MAAM,CAAA;AAAA,IAChC;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAS,QAAQ,CAAC,CAAA;AACxB,MAAA,IAAI,MAAA,GAAS,CAAA;AACb,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,QAAA,IAAI,WAAA,GAAc,CAAC,CAAC,CAAA;AACpB,QAAA,QAAQ,MAAA;AAAQ,UACd,KAAK,MAAA;AACH,YAAA,WAAA,GAAc,MAAA,CAAO,YAAY,MAAA,CAAO,SAAA,GAAY,KAAK,IAAA,EAAK,CAAE,YAAA,CAAa,MAAA,CAAO,uBAAuB,CAAA;AAC3G,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,WAAA,GAAc,MAAA,CAAO,SAAA;AACrB,YAAA;AAAA;AAEJ,QAAA,IAAI,WAAA,CAAY,CAAC,CAAA,KAAM,CAAA,EAAG;AACxB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,gBAAA,CAAiB,CAAC,CAAA,KAAM,CAAA,EAAG;AAC7B,UAAA,MAAA,GAAS,CAAA;AACT,UAAA;AAAA,QACF;AACA,QAAA,IAAI,CAAC,OAAO,sBAAA,EAAwB;AAClC,UAAA,IAAI,iBAAiB,CAAC,CAAA,GAAI,KAAK,GAAA,CAAI,CAAA,EAAG,YAAY,CAAC,CAAC,KAAK,gBAAA,CAAiB,CAAC,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,WAAA,CAAY,CAAC,CAAC,CAAA,EAAG;AAC1G,YAAA,MAAA,GAAS,CAAA;AACT,YAAA;AAAA,UACF;AACA,UAAA,MAAA,GAAA,CAAU,MAAA,GAAS,iBAAiB,CAAC,CAAA,GAAI,OAAO,OAAA,KAAY,WAAA,CAAY,CAAC,CAAA,GAAI,MAAA,CAAO,OAAA,CAAA;AAAA,QACtF,CAAA,MAAO;AACL,UAAA,IAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,MAAA,CAAO,sBAAA,CAAuB,CAAC,CAAA,IAAK,gBAAA,CAAiB,CAAC,CAAA,GAAI,MAAA,CAAO,oBAAA,CAAqB,CAAC,CAAA,EAAG;AAClH,YAAA,MAAA,GAAS,CAAA;AACT,YAAA;AAAA,UACF,WAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAC/C,YAAA,MAAA,GAAS,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,MAAA,CAAO,uBAAuB,CAAC,CAAA,GAAI,MAAA,CAAO,OAAA,CAAA,IAAY,YAAY,CAAC,CAAA,GAAI,OAAO,sBAAA,CAAuB,CAAC,IAAI,MAAA,CAAO,OAAA,CAAA;AAAA,UAC5J,CAAA,MAAO;AACL,YAAA,MAAA,GAAS,UAAU,MAAA,CAAO,oBAAA,CAAqB,CAAC,CAAA,GAAI,iBAAiB,CAAC,CAAA,GAAI,MAAA,CAAO,OAAA,CAAA,IAAY,OAAO,oBAAA,CAAqB,CAAC,IAAI,WAAA,CAAY,CAAC,IAAI,MAAA,CAAO,OAAA,CAAA;AAAA,UACxJ;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,WAAW,CAAA,EAAG;AAChB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,aAAA,CAAc,MAAA,GAAS,OAAO,aAAA,GAAgB,YAAA;AACzE,MAAA,IAAI,WAAW,MAAA,IAAU,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,MAAM,WAAA,EAAa;AAC7D,QAAA,IAAA,CAAK,oBAAoB,IAAA,CAAK,KAAA,EAAO,mBAAmB,MAAA,EAAQ,WAAA,EAAa,QAAQ,MAAM,CAAA;AAAA,MAC7F,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,KAAW,CAAA,EAAG;AACnC,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AACjD,UAAA,MAAM,KAAA,GAAQ,kBAAkB,CAAC,CAAA;AACjC,UAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,YAAA,iBAAA,CAAkB,CAAC,CAAA,GAAI;AAAA,cACrB,CAAA,EAAG,KAAK,KAAA,CAAM,KAAA,CAAM,IAAI,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAI,MAAM,CAAA;AAAA,cACjD,CAAA,EAAG,KAAK,KAAA,CAAM,KAAA,CAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAM,CAAA;AAAA,cAClD,SAAS,KAAA,CAAM,OAAA;AAAA,cACf,oBAAoB,KAAA,CAAM;AAAA,aAC5B;AAAA,UACF,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,YAAA,iBAAA,CAAkB,CAAC,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAI,MAAM,CAAA;AAAA,UACrE;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAI,kBAAA;AACJ,QAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,UAAA,kBAAA,GAAqB,iBAAA,CAAkB,IAAI,SAAS,CAAA;AAAA,QACtD,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,UAAA,kBAAA,GAAqB,iBAAA;AAAA,QACvB;AACA,QAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAE,KAAK,KAAK,CAAA;AAChD,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,UAAA,IAAI,UAAA,GAAa,YAAY,CAAC,CAAA;AAC9B,UAAA,IAAI,UAAA,GAAa,OAAO,MAAA,EAAQ;AAC9B,YAAA,IAAI,KAAA,GAAQ,mBAAmB,UAAU,CAAA;AACzC,YAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,cAAA,QAAA,CAAS,UAAU,CAAA,GAAI,IAAA;AACvB,cAAA,KAAA,CAAM,CAAA,IAAK,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA;AAC9B,cAAA,KAAA,CAAM,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA;AAAA,YACjC,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,cAAA,iBAAA,CAAkB,UAAU,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAI,MAAM,CAAA;AAAA,YAC9E;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,UAAA,IAAA,CAAK,iBAAA,CAAkB,kBAAA,EAAoB,iBAAA,EAAmB,QAAQ,CAAA;AACtE,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,YAAA,IAAI,SAAS,kBAAA,CAAmB,CAAC,EAAE,CAAA,GAAI,iBAAA,CAAkB,CAAC,CAAA,CAAE,CAAA;AAC5D,YAAA,IAAI,SAAS,kBAAA,CAAmB,CAAC,EAAE,CAAA,GAAI,iBAAA,CAAkB,CAAC,CAAA,CAAE,CAAA;AAC5D,YAAA,iBAAA,CAAkB,CAAC,EAAE,CAAA,GAAI,IAAA,CAAK,MAAM,iBAAA,CAAkB,CAAC,CAAA,CAAE,CAAA,GAAI,MAAM,CAAA;AACnE,YAAA,iBAAA,CAAkB,CAAC,EAAE,CAAA,GAAI,IAAA,CAAK,MAAM,iBAAA,CAAkB,CAAC,CAAA,CAAE,CAAA,GAAI,MAAM,CAAA;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,iBAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAA,CAAa,OAAO,MAAA,EAAQ;AAC1B,IAAA,IAAI,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,EAAG;AAC3B,MAAA,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA;AAAA,IACpC;AACA,IAAA,MAAM,WAAW,KAAA,CAAM,YAAA;AACvB,IAAA,MAAM,YAAY,CAAC,EAAE,KAAA,CAAM,MAAA,IAAU,MAAM,MAAA,CAAO,MAAA,CAAA;AAClD,IAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,IAAA,IAAI,YAAY,SAAA,EAAW;AACzB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,EAAI;AAAA,MACnC;AACA,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,MAAM,aAAA,GAAgB,KAAK,IAAA,EAAK,IAAK,KAAK,IAAA,EAAK,CAAE,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AAC5E,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAM,cAAc,KAAA,CAAM,MAAA;AAC1B,UAAA,IAAI,iBAAA,GAAoB,KAAK,wBAAA,CAAyB,aAAA,EAAe,aAAa,MAAA,EAAQ,MAAA,EAAQ,EAAE,KAAA,EAAO,CAAA;AAC3G,UAAA,gBAAA,GAAmB,IAAI,aAAA,CAAc,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,KAAA,EAAO,EAAE,MAAA,EAAQ,mBAAmB,IAAA,EAAM,OAAA,CAAQ,iBAAiB,CAAA,EAAG,CAAC,CAAA;AAAA,QAChI;AAAA,MACF,WAAW,QAAA,EAAU;AACnB,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,YAAA,CAAa,MAAM,CAAA;AAC3C,QAAA,gBAAA,GAAmB,IAAI,aAAA,CAAc,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACpF;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM;AACzB,MAAA,KAAA,CAAM,gBAAgB,OAAO,KAAA,CAAM,kBAAkB,WAAA,GAAc,KAAA,CAAM,gBAAgB,KAAA,CAAM,YAAA;AAC/F,MAAA,KAAA,CAAM,YAAA,GAAe,gBAAA,CAAiB,YAAA,GAAe,IAAA,CAAK,MAAM,KAAA,CAAM,aAAA,GAAgB,IAAA,CAAK,qBAAA,CAAsB,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,MAAM,CAAC,CAAA;AACxK,MAAA,KAAA,CAAM,mBAAmB,OAAO,KAAA,CAAM,qBAAqB,WAAA,GAAc,KAAA,CAAM,mBAAmB,KAAA,CAAM,eAAA;AACxG,MAAA,KAAA,CAAM,eAAA,GAAkB,gBAAA,CAAiB,eAAA,GAAkB,IAAA,CAAK,MAAM,KAAA,CAAM,gBAAA,GAAmB,IAAA,CAAK,qBAAA,CAAsB,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IAC1K;AACA,IAAA,OAAO,gBAAA;AAAA,EACT;AAAA,EACA,iBAAiB,MAAA,EAAQ;AACvB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAA;AAC7B,IAAA,MAAM,aAAA,GAAgB,KAAK,IAAA,EAAK;AAChC,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,GAAA,CAAI,MAAA,IAAU,CAAC,aAAA,IAAiB,CAAC,aAAA,CAAc,OAAA,CAAQ,MAAA,EAAQ,OAAO,GAAA;AACnF,IAAA,OAAO,IAAA,CAAK,wBAAA,CAAyB,aAAA,EAAe,GAAA,EAAK,QAAQ,MAAM,CAAA;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAA,CAAsB,GAAA,EAAK,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ;AACvD,IAAA,MAAA,GAAS,MAAA,IAAU,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,EAAI;AAC3C,IAAA,IAAI,UAAA,EAAY,UAAA;AAChB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACxC,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,KAAA,CAAM,CAAA,4DAAA,EAA+D,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,IACrF;AACA,IAAA,IAAI,CAAC,MAAM,kBAAA,EAAoB;AAC7B,MAAA,MAAM,KAAA,CAAM,CAAA,+CAAA,EAAkD,KAAK,CAAA,2CAAA,CAA6C,CAAA;AAAA,IAClH;AACA,IAAA,MAAM,UAAU,KAAA,CAAM,SAAS,KAAK,KAAA,CAAM,SAAS,EAAE,GAAA,CAAI,MAAA;AACzD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAI,CAAA,GAAI,GAAA;AACR,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,CAAA,GAAI,OAAA,GAAU,CAAA;AAAA,MAChB;AACA,MAAA,CAAC,EAAE,YAAY,UAAA,EAAW,GAAI,MAAM,SAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACtD,CAAA,MAAO;AACL,MAAA,UAAA,GAAa,CAAA;AACb,MAAA,UAAA,GAAa,GAAA;AAAA,IACf;AACA,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA,CAAM,kBAAA,EAAoB,UAAA,EAAY,YAAY,MAAM,CAAA;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAA,CAAS,SAAA,EAAW,UAAA,EAAY,UAAA,EAAY,MAAA,EAAQ;AAClD,IAAA,IAAI,UAAA,IAAc,SAAA,CAAU,sBAAA,CAAuB,MAAA,EAAQ;AACzD,MAAA,OAAO,CAAA;AAAA,IACT;AACA,IAAA,IAAI,OAAA,GAAU,SAAA,CAAU,sBAAA,CAAuB,UAAU,CAAA;AACzD,IAAA,IAAI,UAAA,IAAc,OAAA,CAAQ,SAAA,CAAU,MAAA,EAAQ;AAC1C,MAAA,OAAO,CAAA;AAAA,IACT;AACA,IAAA,IAAI,QAAA,GAAW,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA;AAC3C,IAAA,IAAI,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,SAAA,EAAW,YAAY,MAAM,CAAA;AACnE,IAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,IAAA,KAAA,IAAS,SAAS,CAAA,EAAG,MAAA,GAAS,OAAA,CAAQ,aAAA,CAAc,QAAQ,MAAA,EAAA,EAAU;AACpE,MAAA,aAAA,IAAiB,QAAA,CAAS,MAAM,CAAA,GAAI,WAAA,CAAY,MAAM,CAAA;AAAA,IACxD;AACA,IAAA,OAAO,aAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAA,CAAe,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ;AAC3C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,GAAA,EAAI;AAAA,IACnC;AACA,IAAA,IAAI,OAAA,GAAU,SAAA,CAAU,sBAAA,CAAuB,SAAS,CAAA;AACxD,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,MAAM,CAAA;AACxD,IAAA,IAAI,cAAc,EAAC;AACnB,IAAA,KAAA,IAAS,SAAS,CAAA,EAAG,MAAA,GAAS,OAAA,CAAQ,aAAA,CAAc,QAAQ,MAAA,EAAA,EAAU;AACpE,MAAA,IAAI,MAAA,GAAS,CAAA;AACb,MAAA,IAAI,WAAA,GAAc,OAAA,CAAQ,aAAA,CAAc,MAAM,CAAA;AAC9C,MAAA,IAAI,IAAA,GAAO,SAAA,CAAU,gBAAA,CAAiB,WAAW,CAAA,CAAE,UAAA;AACnD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,QAAA,IAAI,IAAA,GAAO,KAAK,CAAC,CAAA;AACjB,QAAA,IAAI,UAAA;AACJ,QAAA,IAAI,KAAK,UAAA,GAAa,IAAA,CAAK,aAAa,IAAA,CAAK,SAAA,GAAY,KAAK,QAAA,EAAU;AACtE,UAAA,UAAA,GAAa,CAAA;AAAA,QACf,CAAA,MAAA,IAAW,KAAK,UAAA,GAAa,CAAA,IAAK,KAAK,QAAA,GAAW,CAAA,IAAK,IAAA,CAAK,SAAA,KAAc,CAAA,EAAG;AAC3E,UAAA,UAAA,GAAa,CAAA;AAAA,QACf,CAAA,MAAA,IAAW,IAAA,CAAK,SAAA,KAAc,CAAA,EAAG;AAC/B,UAAA,UAAA,GAAa,CAAA;AAAA,QACf,CAAA,MAAA,IAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,IAAA,CAAK,cAAc,gBAAA,CAAiB,CAAC,CAAA,GAAI,IAAA,CAAK,QAAA,EAAU;AACvF,UAAA,UAAA,GAAa,CAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,IAAI,gBAAA,CAAiB,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,EAAW;AAC1C,YAAA,UAAA,GAAa,CAAA;AAAA,UACf,CAAA,MAAA,IAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,KAAK,SAAA,EAAW;AAC/C,YAAA,UAAA,GAAA,CAAc,gBAAA,CAAiB,CAAC,CAAA,GAAI,IAAA,CAAK,UAAA,GAAa,MAAA,CAAO,OAAA,KAAY,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,UAAA,GAAa,MAAA,CAAO,OAAA,CAAA;AAAA,UACrH,CAAA,MAAO;AACL,YAAA,UAAA,GAAA,CAAc,IAAA,CAAK,QAAA,GAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,MAAA,CAAO,OAAA,KAAY,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,GAAY,MAAA,CAAO,OAAA,CAAA;AAAA,UACjH;AAAA,QACF;AACA,QAAA,MAAA,IAAU,UAAA;AAAA,MACZ;AACA,MAAA,WAAA,CAAY,MAAM,CAAA,GAAI,MAAA;AAAA,IACxB;AACA,IAAA,OAAO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AACF,CAAA;AAGA,IAAI,mBAAmB,MAAM;AAAA,EAC3B,YAAY,IAAA,EAAM;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAA;AAC/C,IAAA,IAAA,CAAK,wBAAA,EAAyB;AAC9B,IAAA,IAAA,CAAK,eAAe,IAAA,CAAK,OAAA,CAAQ,YAAA,CAAa,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAA,GAA2B;AACzB,IAAA,MAAM,eAAA,GAAkB,KAAK,uBAAA,EAAwB;AACrD,IAAA,IAAI,kBAAkB,EAAA,EAAI;AACxB,MAAA,IAAA,CAAK,IAAI,eAAe,CAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,qBAAA,EAAuB,CAAA;AAAA,IACvC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAA,GAAwB;AACtB,IAAA,OAAO,KAAK,IAAA,EAAK,CAAE,KAAK,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS;AAC5C,MAAA,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA,CAAK,YAAA;AACrB,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAA,GAA0B;AACxB,IAAA,MAAM,kBAAA,GAAqB,KAAK,qBAAA,EAAsB;AACtD,IAAA,IAAI,oBAAA,GAAuB,IAAA,CAAK,gBAAA,CAAiB,kBAAkB,CAAA;AACnE,IAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,MAAA,oBAAA,GAAuB,IAAA,CAAK,IAAA,EAAK,CAAE,SAAA,CAAU,SAAA,CAAU,CAAC,QAAA,KAAa,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,CAAK,EAAA,KAAO,SAAS,CAAA;AAAA,IACtH;AACA,IAAA,OAAO,oBAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,WAAA,EAAa;AAC5B,IAAA,OAAO,IAAA,CAAK,IAAA,EAAK,CAAE,SAAA,CAAU,SAAA;AAAA,MAC3B,CAAC,QAAA,KAAa,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,KAAA;AAAA,QACrC,CAAC,IAAA,KAAS,QAAA,CAAS,YAAY,IAAI,CAAA,KAAM,YAAY,IAAI;AAAA;AAC3D,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,KAAA,EAAO;AACjB,IAAA,OAAO,IAAA,CAAK,MAAK,CAAE,SAAA,IAAa,KAAK,IAAA,EAAK,CAAE,UAAU,KAAK,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,kBAAA,EAAoB;AACtB,IAAA,IAAI,aAAA;AACJ,IAAA,IAAI,MAAA,CAAO,SAAA,CAAU,kBAAkB,CAAA,EAAG;AACxC,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,WAAA,CAAY,kBAAkB,CAAA;AACpD,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,KAAA,CAAM,CAAA,uBAAA,EAA0B,kBAAkB,CAAA,CAAE,CAAA;AAAA,MAC5D;AACA,MAAA,aAAA,GAAgB,EAAE,GAAG,QAAA,CAAS,WAAA,EAAY;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,aAAA,GAAgB,kBAAA;AAChB,MAAA,IAAA,CAAK,OAAA,CAAQ,mBAAmB,aAAa,CAAA;AAAA,IAC/C;AACA,IAAA,aAAA,GAAgB,MAAA,CAAO,MAAA;AAAA,MACrB,EAAC;AAAA,MACD,IAAA,CAAK,KAAK,oBAAA,CAAqB,SAAA;AAAA,MAC/B;AAAA,KACF;AACA,IAAA,IAAA,CAAK,IAAA,CAAK,uBAAuB,MAAA,CAAO,MAAA;AAAA,MACtC,EAAC;AAAA,MACD,KAAK,IAAA,CAAK,oBAAA;AAAA,MACV,EAAE,WAAW,aAAA;AAAc,KAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,GAAA,GAAM;AACJ,IAAA,OAAO,OAAO,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,CAAK,qBAAqB,SAAS,CAAA;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA,GAAO;AACL,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA;AAAA,EAC1B;AACF,CAAA;AAGA,IAAI,gBAAA,GAAmB,GAAA;AACvB,IAAI,eAAA,GAAkB,EAAA;AACtB,IAAI,cAAA,GAAiB,GAAA;AACrB,IAAI,gBAAA;AACJ,IAAI,IAAA;AACJ,IAAI,SAAA;AACJ,IAAI,aAAA;AACJ,SAAS,QAAQ,IAAA,EAAM;AACrB,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,EAAA,IAAA,CAAK,WAAA,GAAc,SAAS,OAAA,EAAS;AACnC,IAAA,OAAO,YAAA,CAAa,OAAA,CAAQ,OAAO,CAAA,CAAE,QAAA;AAAA,EACvC,CAAA;AACA,EAAA,IAAA,CAAK,UAAA,GAAa,KAAK,UAAA,GAAa,MAAA;AACpC,EAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACrB;AACA,SAAS,SAAS,CAAA,EAAG;AACnB,EAAA,OAAO,CAAA;AACT;AACA,SAAS,YAAY,CAAA,EAAG;AACtB,EAAA,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,GAAI,KAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAC9C;AACA,SAAS,kBAAkB,CAAA,EAAG;AAC5B,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAC,CAAA,GAAI,CAAA;AACtD;AACA,SAAS,gBAAgB,CAAA,EAAG;AAC1B,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,CAAA;AACzD;AACA,SAAS,cAAc,CAAA,EAAG;AACxB,EAAA,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,GAAI,KAAK,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAC7C;AACA,SAAS,gBAAgB,CAAA,EAAG;AAC1B,EAAA,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,GAAI,KAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAC9C;AACA,IAAI,UAAA,GAAa,SAAS,CAAA,EAAG;AAC3B,EAAA,MAAM,SAAS,IAAA,CAAK,QAAA;AACpB,EAAA,IAAI,QAAQ,IAAA,CAAK,OAAA;AACjB,EAAA,MAAM,YAAY,IAAA,CAAK,WAAA;AACvB,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,IAAI,CAAA,EAAG;AACT,IAAA,CAAA,GAAI,CAAC,CAAA;AACL,IAAA,IAAA,GAAO,EAAA;AAAA,EACT;AACA,EAAA,CAAA,IAAK,SAAA,GAAY,KAAA;AACjB,EAAA,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,MAAM,CAAA,GAAI,MAAA;AAC7B,EAAA,CAAA,IAAK,KAAA;AACL,EAAA,IAAI,CAAA,GAAI,CAAA,EAAG,OAAO,KAAA,GAAQ,IAAA;AAC1B,EAAA,OAAO,CAAA,GAAI,IAAA;AACb,CAAA;AACA,IAAI,WAAA,GAAc;AAAA,EAChB,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,IAAA,EAAM,GAAA;AAAA;AAAA;AAAA,EAGN,QAAA,EAAU,SAAS,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI;AACjC,IAAA,OAAA,CAAQ,EAAA,GAAK,GAAG,EAAA,GAAK,EAAA,CAAG,MAAM,EAAA,GAAK,EAAA,CAAG,KAAK,EAAA,CAAG,CAAA,CAAA;AAAA,EAChD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,EAAa,SAAS,CAAA,EAAG,GAAA,EAAK,KAAK,EAAA,EAAI;AACrC,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,EAAM;AACtB,MAAA,GAAA,GAAM,CAAA,CAAE,KAAK,GAAA,CAAI,EAAA;AACjB,MAAA,GAAA,GAAM,CAAA,CAAE,KAAK,GAAA,CAAI,EAAA;AACjB,MAAA,GAAA,GAAM,GAAA,CAAI,IAAI,GAAA,CAAI,EAAA;AAClB,MAAA,GAAA,GAAM,GAAA,CAAI,IAAI,GAAA,CAAI,EAAA;AAClB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,MAAA,EAAA,GAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAI,OAAO,CAAA,EAAG;AACZ,QAAA,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,EAAA,GAAA,CAAM,GAAA,GAAM,GAAA,IAAO,CAAA;AAC3B,QAAA;AAAA,MACF;AACA,MAAA,CAAA,CAAE,IAAI,CAAA,CAAE,EAAA,GAAA,CAAM,GAAA,GAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,EAAA;AACzC,MAAA;AAAA,IACF;AACA,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,IAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,IAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,IAAA,EAAA,GAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,WAAA,CAAY,YAAY,CAAA,EAAG,CAAA,EAAA,CAAI,MAAM,GAAA,IAAO,CAAA,EAAG,IAAI,IAAI,CAAA;AACvD,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,WAAA,CAAY,GAAG,CAAA,EAAA,CAAI,GAAA,GAAM,OAAO,GAAA,GAAM,IAAA,IAAQ,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA;AAAA,EACxE,CAAA;AAAA;AAAA,EAEA,aAAa,MAAA,CAAO,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWpB,aAAa,SAAS,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,IAAI,GAAA,EAAK;AACvC,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,EAAM;AACtB,MAAA,CAAA,CAAE,CAAA,GAAA,CAAK,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,GAAG,CAAA,IAAK,CAAA;AAC7B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,IAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,IAAA,CAAA,CAAE,CAAA,GAAI,IAAA,GAAA,CAAQ,CAAA,CAAE,CAAA,GAAI,QAAQ,EAAA,CAAG,WAAA;AAAA,EACjC,CAAA;AAAA;AAAA,EAEA,KAAA,EAAO,CAAA;AAAA;AAAA,EAEP,KAAA,EAAO,SAAS,CAAA,EAAG;AACjB,IAAA,CAAA,CAAE,QAAA,GAAW,IAAA;AAAA,EACf,CAAA;AAAA;AAAA,EAEA,OAAA,EAAS,SAAS,CAAA,EAAG;AACnB,IAAA,OAAO,CAAA,CAAE,QAAA;AAAA,EACX,CAAA;AAAA;AAAA,EAEA,OAAA,EAAS,SAAS,CAAA,EAAG;AACnB,IAAA,CAAA,CAAE,QAAA,GAAW,KAAA;AAAA,EACf;AACF,CAAA;AACA,IAAI,WAAA,GAAc;AAAA,EAChB,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,IAAA,EAAM,GAAA;AAAA;AAAA;AAAA,EAGN,QAAA,EAAU,SAAS,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI;AACjC,IAAA,OAAA,CAAQ,EAAA,GAAK,GAAG,EAAA,GAAK,EAAA,CAAG,MAAM,EAAA,GAAK,EAAA,CAAG,KAAK,EAAA,CAAG,CAAA,CAAA;AAAA,EAChD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,EAAa,SAAS,CAAA,EAAG,GAAA,EAAK,KAAK,EAAA,EAAI;AACrC,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,EAAM;AACtB,MAAA,GAAA,GAAM,CAAA,CAAE,KAAK,GAAA,CAAI,EAAA;AACjB,MAAA,GAAA,GAAM,CAAA,CAAE,KAAK,GAAA,CAAI,EAAA;AACjB,MAAA,GAAA,GAAM,GAAA,CAAI,IAAI,GAAA,CAAI,EAAA;AAClB,MAAA,GAAA,GAAM,GAAA,CAAI,IAAI,GAAA,CAAI,EAAA;AAClB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,MAAA,EAAA,GAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAI,OAAO,CAAA,EAAG;AACZ,QAAA,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,EAAA,GAAA,CAAM,GAAA,GAAM,GAAA,IAAO,CAAA;AAC3B,QAAA;AAAA,MACF;AACA,MAAA,CAAA,CAAE,IAAI,CAAA,CAAE,EAAA,GAAA,CAAM,GAAA,GAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,EAAA;AACzC,MAAA;AAAA,IACF;AACA,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,IAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,IAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,IAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,IAAA,EAAA,GAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,WAAA,CAAY,YAAY,CAAA,EAAG,CAAA,EAAA,CAAI,MAAM,GAAA,IAAO,CAAA,EAAG,IAAI,IAAI,CAAA;AACvD,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,WAAA,CAAY,GAAG,CAAA,EAAA,CAAI,GAAA,GAAM,OAAO,GAAA,GAAM,IAAA,IAAQ,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA;AAAA,EACxE,CAAA;AAAA;AAAA,EAEA,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWb,aAAa,SAAS,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,IAAI,GAAA,EAAK;AACvC,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,KAAO,IAAA,EAAM;AACtB,MAAA,CAAA,CAAE,CAAA,GAAA,CAAK,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,GAAG,CAAA,IAAK,CAAA;AAC7B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,IAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,IAAA,CAAA,CAAE,CAAA,GAAI,IAAA,GAAO,EAAA,CAAG,WAAA,IAAe,EAAE,CAAA,GAAI,IAAA,CAAA;AAAA,EACvC,CAAA;AAAA;AAAA,EAEA,OAAO,MAAA,CAAO,iBAAA;AAAA;AAAA,EAEd,KAAA,EAAO,SAAS,CAAA,EAAG;AACjB,IAAA,CAAA,CAAE,QAAA,GAAW,IAAA;AAAA,EACf,CAAA;AAAA;AAAA,EAEA,OAAA,EAAS,SAAS,CAAA,EAAG;AACnB,IAAA,OAAO,CAAA,CAAE,QAAA;AAAA,EACX,CAAA;AAAA;AAAA,EAEA,OAAA,EAAS,SAAS,CAAA,EAAG;AACnB,IAAA,CAAA,CAAE,QAAA,GAAW,KAAA;AAAA,EACf;AACF,CAAA;AACA,MAAA,CAAO,OAAO,WAAW,CAAA;AACzB,MAAA,CAAO,OAAO,WAAW,CAAA;AACzB,SAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AACxB,EAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,EAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,EAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AACZ,EAAA,IAAA,CAAK,QAAQ,CAAA,GAAI,CAAA;AACjB,EAAA,IAAA,CAAK,WAAA,GAAc,CAAC,CAAA,GAAI,CAAA;AACxB,EAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AACpB;AACA,UAAA,CAAW,UAAU,QAAA,GAAW,SAAS,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI;AACvD,EAAA,OAAO,KAAK,CAAA,GAAI,WAAA,CAAY,QAAA,CAAS,EAAA,EAAI,IAAI,EAAA,EAAI,EAAE,CAAA,GAAI,IAAA,CAAK,IAAI,WAAA,CAAY,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE,CAAA;AACrG,CAAA;AACA,UAAA,CAAW,UAAU,WAAA,GAAc,SAAS,CAAA,EAAG,GAAA,EAAK,KAAK,EAAA,EAAI;AAC3D,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,EAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,GAAA,EAAK,MAAM,IAAI,CAAA;AACpC,EAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,EAAA,GAAA,GAAM,EAAA,CAAG,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,OAAO,IAAI,CAAA;AACvC,EAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,EAAA,IAAA,GAAO,IAAA,CAAK,IAAI,GAAG,CAAA;AACnB,EAAA,EAAA,GAAK,IAAA,GAAO,IAAA;AACZ,EAAA,IAAI,OAAO,CAAA,EAAG;AACZ,IAAA,IAAA,CAAK,YAAY,CAAA,EAAG,CAAA,EAAA,CAAI,MAAM,GAAA,IAAO,CAAA,EAAG,IAAI,IAAI,CAAA;AAChD,IAAA;AAAA,EACF;AACA,EAAA,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA,EAAA,CAAI,GAAA,GAAM,OAAO,GAAA,GAAM,IAAA,IAAQ,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA;AACjE,CAAA;AACA,UAAA,CAAW,UAAU,WAAA,GAAc,SAAS,GAAG,EAAA,EAAI,CAAA,EAAG,IAAI,GAAA,EAAK;AAC7D,EAAA,EAAA,GAAK,EAAA,IAAM,IAAA;AACX,EAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,EAAA,MAAM,GAAA,GAAM,GAAA,GAAM,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,CAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,EAAA,MAAM,IAAA,GAAO,GAAA,GAAM,CAAA,GAAI,EAAA,CAAG,CAAA;AAC1B,EAAA,MAAM,OAAO,EAAA,CAAG,WAAA;AAChB,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AACjB,EAAA,MAAM,KAAK,CAAA,CAAE,CAAA;AACb,EAAA,MAAM,KAAK,CAAA,CAAE,CAAA;AACb,EAAA,CAAA,CAAE,KAAK,GAAA,GAAM,EAAA,GAAK,OAAO,IAAA,GAAO,IAAA,GAAO,OAAO,GAAA,GAAM,IAAA,CAAA;AACpD,EAAA,CAAA,CAAE,CAAA,GAAI,GAAA,IAAO,CAAA,CAAE,CAAA,GAAI,EAAA,CAAA,GAAM,EAAA;AAC3B,CAAA;AACA,UAAA,CAAW,SAAA,CAAU,KAAA,GAAQ,SAAS,CAAA,EAAG;AACvC,EAAA,CAAA,CAAE,QAAA,GAAW,IAAA;AACb,EAAA,CAAA,CAAE,QAAA,GAAW,IAAA;AACf,CAAA;AACA,SAAS,aAAA,CAAc,GAAG,CAAA,EAAG;AAC3B,EAAA,MAAM,IAAI,IAAA,CAAK,IAAA,CAAK,CAAA,GAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AACjC,EAAA,CAAA,IAAK,CAAA;AACL,EAAA,CAAA,IAAK,CAAA;AACL,EAAA,IAAI,CAAA,KAAM,CAAA,IAAK,CAAA,KAAM,CAAA,EAAG,OAAO,WAAA;AAAA,OAAA,IACtB,CAAA,KAAM,CAAA,IAAK,CAAA,KAAM,CAAA,EAAG,OAAO,WAAA;AAAA,OAC/B,OAAO,IAAI,UAAA,CAAW,CAAA,EAAG,CAAC,CAAA;AACjC;AACA,SAAS,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,kBAAA,EAAoB,OAAA,EAAS;AACjD,EAAA,IAAA,CAAK,IAAI,IAAA,CAAK,EAAA,GAAK,KAAK,KAAA,CAAM,CAAA,GAAI,EAAE,CAAA,GAAI,EAAA;AACxC,EAAA,IAAA,CAAK,IAAI,IAAA,CAAK,EAAA,GAAK,KAAK,KAAA,CAAM,CAAA,GAAI,EAAE,CAAA,GAAI,EAAA;AACxC,EAAA,IAAA,CAAK,kBAAA,GAAqB,kBAAA;AAC1B,EAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,EAAA,IAAA,CAAK,kBAAA,GAAqB,MAAA;AAC1B,EAAA,IAAA,CAAK,kBAAA,GAAqB,MAAA;AAC1B,EAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,EAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,EAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAC/B;AACA,MAAA,CAAO,SAAA,CAAU,WAAA,GAAc,SAAS,CAAA,EAAG;AACzC,EAAA,IAAI,IAAI,IAAA,CAAK,kBAAA;AACb,EAAA,OAAO,CAAC,EAAE,OAAA,CAAQ,CAAC,KAAK,CAAA,KAAM,IAAA,MAAU,CAAA,CAAE,kBAAA;AAC1C,EAAA,OAAO,CAAA;AACT,CAAA;AACA,MAAA,CAAO,SAAA,CAAU,WAAA,GAAc,SAAS,CAAA,EAAG;AACzC,EAAA,IAAI,IAAI,IAAA,CAAK,kBAAA;AACb,EAAA,OAAO,CAAC,EAAE,OAAA,CAAQ,CAAC,KAAK,CAAA,KAAM,IAAA,MAAU,CAAA,CAAE,kBAAA;AAC1C,EAAA,OAAO,CAAA;AACT,CAAA;AACA,IAAI,SAAS,MAAA,CAAO,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA;AAC3C,IAAI,YAAA,GAAe;AAAA,EACjB,SAAS,EAAA,GAAK,EAAA;AAAA;AAAA,EAEd,SAAA,EAAW,CAAA;AAAA,EACX,UAAA,EAAY,KAAA;AAAA,EACZ,IAAA,EAAM,CAAA;AAAA;AAAA,EAEN,MAAA,EAAQ,CAAA;AAAA;AAAA,EAER,QAAA,EAAU;AACZ,CAAA;AACA,SAAS,KAAA,CAAM,KAAK,IAAA,EAAM;AACxB,EAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,EAAA,IAAA,CAAK,QAAQ,EAAC;AACd,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,MAAA;AACH,MAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,CAAA;AACjC,MAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,CAAA;AAAA;AAAA,IAEnC,KAAK,MAAA;AACH,MAAA,IAAA,CAAK,EAAA,GAAK,IAAA,CAAK,EAAA,GAAK,IAAA,CAAK,GAAA,GAAM,WAAA;AAC/B,MAAA,IAAA,CAAK,KAAA,GAAQ,WAAA;AAAA;AAEnB;AACA,OAAA,CAAQ,SAAA,CAAU,IAAA,GAAO,SAAS,KAAA,EAAO,IAAA,EAAM;AAC7C,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AAC1B,EAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,EAAA,IAAI,YAAY,IAAA,CAAK,UAAA;AACrB,EAAA,IAAI,CAAC,SAAA,IAAa,SAAA,CAAU,IAAA,KAAS,IAAA,EAAM;AACzC,IAAA,IAAI,YAAY,IAAA,CAAK,UAAA;AACrB,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,KAAA,CAAM,SAAA,GAAY,YAAA;AAClB,MAAA,SAAA,GAAY,KAAK,UAAA,GAAa,IAAI,MAAM,MAAA,EAAQ,IAAA,CAAK,OAAO,IAAI,CAAA;AAChE,MAAA,SAAA,CAAU,QAAQ,EAAC;AACnB,MAAA,SAAA,CAAU,IAAA,GAAO,IAAA;AACjB,MAAA,SAAA,CAAU,gBAAA,GAAmB,CAAA;AAC7B,MAAA,SAAA,CAAU,SAAA,GAAY,CAAA;AAKtB,MAAA,IAAI;AACF,QAAA,IAAA,CAAK,SAAS,CAAA;AAAA,MAChB,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,GAAA,CAAI,2BAA2B,CAAC,CAAA;AACxC,QAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACnB,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,KAAA,CAAM,SAAA,GAAY,SAAA;AAClB,IAAA,SAAA,GAAY,KAAK,UAAA,GAAa,IAAI,MAAM,MAAA,EAAQ,IAAA,CAAK,OAAO,IAAI,CAAA;AAChE,IAAA,SAAA,CAAU,IAAA,GAAO,IAAA;AACjB,IAAA,SAAA,CAAU,gBAAA,GAAmB,CAAA;AAC7B,IAAA,SAAA,CAAU,SAAA,GAAY,CAAA;AACtB,IAAA,MAAM,IAAA,GAAO,KAAK,SAAA,IAAa,IAAA,CAAK,UAAU,OAAA,CAAQ,gBAAA,EAAiB,IAAK,IAAA,CAAK,MAAA,CAAO,GAAA;AACxF,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,MAAM,SAAA,CAAU,GAAA,GAAM,IAAI,KAAA,CAAM,KAAK,MAAM,CAAA;AACjD,MAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,UAAA;AAC1B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,GAAI,KAAA;AAAA,MACrB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,MAAM,EAAC;AAAA,IACnB;AAKA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,SAAS,CAAA;AAAA,IAChB,SAAS,CAAA,EAAG;AACV,MAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AACxB,QAAA,OAAA,CAAQ,GAAA,CAAI,2BAA2B,CAAC,CAAA;AAAA,MAC1C;AACA,MAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AAAA,IACrB;AAAA,EACF;AACA,EAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AAC1B,EAAA,IAAI;AACF,IAAA,OAAO,SAAA,CAAU,OAAO,SAAS,CAAA;AAAA,EACnC,SAAS,CAAA,EAAG;AACV,IAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AACxB,MAAA,OAAA,CAAQ,GAAA,CAAI,mBAAmB,CAAC,CAAA;AAChC,MAAA,OAAA,CAAQ,IAAI,2CAA2C,CAAA;AAAA,IACzD;AACA,IAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;AACA,SAAA,GAAY,SAAS,OAAO,SAAA,EAAW;AACrC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,GAAO,SAAA,CAAU,IAAA,CAAK,UAAA;AAC/C,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,aAAa,KAAA,CAAM,UAAA;AACvB,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,KAAA;AACJ,EAAA,KAAA,CAAM,SAAA,GAAY,SAAA;AAClB,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,YAAY,CAAA;AAC5C,IAAA,KAAA,CAAM,gBAAA,GAAmB,CAAA;AACzB,IAAA,KAAA,CAAM,SAAA,GAAY,CAAA;AAKlB,IAAA,aAAA,CAAc,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA;AAC1C,IAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AAAA,EAChB,CAAA,MAAO;AACL,IAAA,MAAM,OAAO,SAAA,CAAU,IAAA;AACvB,IAAA,KAAA,GAAQ,EAAC;AACT,IAAA,QAAA,GAAW,EAAC;AACZ,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,MAAA,MAAM,CAAA,GAAI,WAAW,CAAC,CAAA;AACtB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,EAAE,UAAU,CAAA;AACvC,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,EAAQ,EAAA,CAAG,YAAY,CAAA;AACzC,MAAA,KAAA,CAAM,gBAAA,GAAmB,CAAA;AACzB,MAAA,KAAA,CAAM,SAAA,GAAY,CAAA;AAKlB,MAAA,aAAA,CAAc,EAAA,EAAI,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA;AACvC,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,MAAM,CAAA;AACnC,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,MAAM,CAAA;AACnC,MAAA,MAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA,MAAM,KAAK,KAAA,CAAM,QAAA;AACjB,MAAA,KAAA,IAAS,EAAA,GAAK,CAAA,EAAG,EAAA,GAAK,EAAA,CAAG,QAAQ,EAAA,EAAA,EAAM;AACrC,QAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AACf,QAAA,CAAA,CAAE,QAAA,GAAW,EAAE,QAAA,GAAW,KAAA;AAC1B,QAAA,CAAA,CAAE,EAAA,GAAK,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAA,GAAI,EAAA;AACnB,QAAA,CAAA,CAAE,EAAA,GAAK,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAA,GAAI,EAAA;AAAA,MACrB;AACA,MAAA,MAAM,OAAO,KAAA,CAAM,MAAA;AACnB,MAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,EAAE,CAAA;AAC1B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,CAAG,QAAQ,CAAA,EAAA,EAAK;AAClC,QAAA,QAAA,CAAS,IAAA,CAAK,EAAA,CAAG,CAAC,CAAA,GAAI,IAAI,CAAA;AAAA,MAC5B;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,YAAA,IAAgB,CAAC,KAAA,CAAM,cAAA,EAAgB;AAC/C,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,YAAY,CAAA;AAC5C,MAAA,KAAA,CAAM,QAAQ,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,EAAA,GAAK,MAAM,EAAA,GAAK,KAAA;AAC/C,MAAA,KAAA,CAAM,QAAA,GAAW,QAAA;AACjB,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,IAAI,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AAAA,QACf,IAAI,OAAO,IAAA,CAAK,KAAA,CAAM,MAAM,YAAA,GAAe,MAAM,GAAG,CAAC;AAAA,OACvD;AAKA,MAAA,IAAA,CAAK,KAAK,CAAA;AACV,MAAA,KAAA,CAAM,MAAA,IAAU,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AACA,aAAA,GAAgB,SAAS,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ;AACrD,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,IAAU,EAAC;AAChC,EAAA,MAAM,OAAO,MAAA,CAAO,MAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAK,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,EAAA,GAAK,EAAC;AAC9D,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,GAAW,EAAC;AACnC,EAAA,IAAI,EAAA;AACJ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,IAAA,EAAA,GAAK,OAAO,CAAC,CAAA;AACb,IAAA,KAAA,CAAM,CAAC,IAAI,IAAI,MAAA;AAAA,MACb,GAAG,CAAA,GAAI,MAAA;AAAA,MACP,GAAG,CAAA,GAAI,MAAA;AAAA,MACP,EAAA,CAAG,kBAAA;AAAA,MACH,EAAA,CAAG;AAAA,KACL;AAAA,EACF;AACA,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,IAAA,EAAA,GAAK,MAAM,CAAC,CAAA;AACZ,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,EAAA,GAAK,EAAA;AACL,MAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,IACjB;AACA,IAAA,IAAI,GAAG,kBAAA,EAAoB;AACzB,MAAA,EAAA,CAAG,kBAAA,GAAqB,EAAA;AACxB,MAAA,EAAA,CAAG,kBAAA,GAAqB,EAAA;AACxB,MAAA,EAAA,GAAK,MAAA;AAAA,IACP,CAAA,MAAO;AACL,MAAA,EAAA,GAAK,KAAA,CAAM,IAAI,CAAC,CAAA;AAChB,MAAA,EAAA,CAAG,kBAAA,GAAqB,EAAA;AACxB,MAAA,EAAA,CAAG,kBAAA,GAAqB,EAAA;AAAA,IAC1B;AAAA,EACF;AACA,EAAA,IAAI,MAAM,cAAA,EAAgB;AAO1B,EAAA,KAAA,CAAM,IAAA;AAAA,IACJ,IAAI,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IACf,IAAI,OAAO,IAAA,CAAK,KAAA,CAAM,MAAM,YAAA,GAAe,MAAM,GAAG,CAAC;AAAA,GACvD;AACA,EAAA,IAAA,CAAK,KAAK,CAAA;AACV,EAAA,KAAA,CAAM,MAAA,IAAU,CAAA;AAOlB,CAAA;AACA,IAAA,GAAO,SAAS,KAAA,EAAO;AACrB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,EAAA,IAAI,CAAC,IAAA,EAAM;AACX,EAAA,MAAM,OAAO,IAAA,CAAK,MAAA;AAClB,EAAA,IAAI,GAAA;AACJ,EAAA,KAAK,MAAM,EAAA,GAAK,CAAA,EAAG,MAAM,EAAA,GAAK,IAAA,EAAM,MAAM,EAAA,EAAA,EAAM;AAC9C,IAAA,IAAI,EAAE,KAAA,CAAM,gBAAA,GAAmB,gBAAA,EAAkB;AAC/C,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,2CAAA,GAA8C;AAAA,OAChD;AAAA,IACF;AAEA,IAAA,GAAA,GAAM,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAM,EAAE,CAAC,CAAA;AACrC,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,yBAAA,GAA4B,OAAO,IAAA,CAAK,KAAA,CAAM,EAAE,CAAC,CAAA,CAAE,SAAS,EAAE;AAAA,OAChE;AAAA,IACF;AACA,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EACX;AACF,CAAA;AACA,SAAS,UAAU,KAAA,EAAO;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,CAAM,MAAM,MAAM,CAAA;AACxD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAI,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EAC5B;AACF;AACA,SAAS,IAAA,CAAK,OAAO,UAAA,EAAY;AAC/B,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AACf,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,IAAI,GAAA;AACJ,EAAA,GAAG;AACD,IAAA,GAAA,GAAM,IAAA,CAAK,EAAE,EAAE,CAAA;AACf,IAAA,IAAI,GAAA,KAAQ,EAAA;AACV,MAAA,OAAA,EAAA;AAAA,SAAA,IACO,GAAA,KAAQ,EAAA;AACf,MAAA,OAAA,EAAA;AAAA,SAAA,IACO,GAAA,KAAQ,EAAA;AACf,MAAA,EAAA,IAAM,IAAA,CAAK,EAAA,GAAK,CAAC,CAAA,GAAI,CAAA;AAAA,SAAA,IACd,GAAA,KAAQ,EAAA;AACf,MAAA,EAAA,IAAM,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,CAAC,CAAA,GAAI,CAAA;AAAA,SAAA,IAClB,GAAA,IAAO,OAAO,GAAA,IAAO,GAAA;AAC5B,MAAA,EAAA,IAAM,MAAM,GAAA,GAAM,CAAA;AAAA,SAAA,IACX,GAAA,IAAO,OAAO,GAAA,IAAO,GAAA;AAC5B,MAAA,EAAA,IAAA,CAAO,GAAA,GAAM,MAAM,CAAA,IAAK,CAAA;AAAA,SAAA,IACjB,UAAA,IAAc,OAAA,KAAY,CAAA,IAAK,GAAA,KAAQ,EAAA;AAC9C,MAAA;AAAA,EACJ,SAAS,OAAA,GAAU,CAAA;AACnB,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACb;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AAEvB,EAAA,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,GAAA,GAAM,CAAA;AACpC;AACA,SAAS,MAAA,CAAO,GAAG,KAAA,EAAO;AAExB,EAAA,KAAA,CAAM,EAAA,GAAK,MAAM,GAAA,GAAM,CAAA;AACzB;AACA,SAAS,MAAA,CAAO,GAAG,KAAA,EAAO;AAExB,EAAA,KAAA,CAAM,EAAA,GAAK,CAAA;AACb;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AACvB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AACvB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AAEvB,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,CAAC,CAAA,EAAG;AACN,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB,CAAA,MAAO;AACL,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB;AACA,EAAA,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,GAAA,GAAM,aAAA,CAAc,IAAI,EAAE,CAAA;AAC7C;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AACvB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AACvB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AAEvB,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,CAAC,CAAA,EAAG;AACN,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB,CAAA,MAAO;AACL,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB;AACA,EAAA,KAAA,CAAM,EAAA,GAAK,aAAA,CAAc,EAAA,EAAI,EAAE,CAAA;AACjC;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,GAAA,GAAM,aAAA,CAAc,GAAG,CAAC,CAAA;AAC3C;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA;AAC/B;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AAEjB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,CAAA,GAAI,KAAK,CAAA;AACvB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,CAAA,GAAI,KAAK,CAAA;AACzB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AAEjB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,CAAA,GAAI,KAAK,CAAA;AACvB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,CAAA,GAAI,KAAK,CAAA;AACzB;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,KAAA,CAAM,KAAK,KAAA,CAAM,EAAA;AAEnB;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AACvB,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AACvB,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AACvB,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AACvB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA;AACnB,EAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA;AACnB,EAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA;AACnB,EAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AAErB,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,KAAK,GAAA,CAAI,CAAA;AACf,EAAA,MAAM,OAAO,EAAA,GAAK,EAAA,KAAO,KAAK,EAAA,CAAA,GAAA,CAAO,EAAA,GAAK,OAAO,EAAA,GAAK,EAAA,CAAA;AACtD,EAAA,MAAM,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC1B,EAAA,CAAA,CAAE,KAAK,EAAA,IAAM,EAAA,GAAK,EAAA,CAAA,GAAM,EAAA,IAAM,KAAK,EAAA,CAAA,IAAO,GAAA;AAC1C,EAAA,CAAA,CAAE,KAAK,EAAA,IAAM,EAAA,GAAK,EAAA,CAAA,GAAM,EAAA,IAAM,KAAK,EAAA,CAAA,IAAO,GAAA;AAC5C;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE9B;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE9B;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE9B;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,GAAA,GAAM,CAAA;AACZ,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,SAAA,CAAU,KAAK,CAAA;AACjC,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE5C;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,GAAA,GAAM,CAAA;AACZ,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,SAAA,CAAU,KAAK,CAAA;AACjC,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE5C;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,GAAA,GAAM,CAAA;AACZ,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,SAAA,CAAU,KAAK,CAAA;AACjC,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACjB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE5C;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,GAAA,GAAM,CAAA;AACpC,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,IAAI,CAAC,KAAA,CAAM,KAAA,EAAO,SAAA,CAAU,KAAK,CAAA;AACjC,MAAA,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACvC,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA;AACvC,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE5C;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAC7B,EAAA,IAAI,KAAA,CAAM,OAAO,cAAA,EAAgB;AAC/B,IAAA,KAAA,CAAM,IAAA,GAAO,cAAA;AAAA,EACf;AAEF;AACA,SAAS,IAAI,KAAA,EAAO;AAElB,EAAA,KAAA,CAAM,KAAA,GAAQ,WAAA;AAChB;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,KAAA,CAAM,KAAA,GAAQ,eAAA;AAChB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,SAAS,CAAA,GAAI,EAAA;AACrB;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AACnB;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,MAAM,CAAA,GAAI,CAAA;AAClB;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE1B,EAAA,KAAA,CAAM,UAAU,CAAA,GAAI,EAAA;AACtB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA;AACpC;AACA,SAAS,IAAI,KAAA,EAAO;AAElB,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAClB;AACA,SAAS,MAAM,KAAA,EAAO;AAEpB,EAAA,KAAA,CAAM,MAAM,MAAA,GAAS,CAAA;AACvB;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACd;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,MAAM,MAAM,CAAA;AACzB;AACA,SAAS,SAAS,KAAA,EAAO;AACvB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,IAAI,CAAA,GAAI,MAAM,GAAA,EAAI;AAClB,EAAA,IAAI,CAAA,GAAI,gBAAgB,CAAA,GAAI,cAAA;AAE5B,EAAA,IAAI,EAAE,KAAA,CAAM,SAAA,GAAY,eAAA,EAAiB;AACvC,IAAA,MAAM,IAAI,KAAA,CAAM,yCAAA,GAA4C,eAAe,CAAA;AAAA,EAC7E;AACA,EAAA,MAAM,MAAM,KAAA,CAAM,EAAA;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA;AACpB,EAAA,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAC3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAA,CAAK,KAAK,CAAA;AAKV,EACF;AACA,EAAA,KAAA,CAAM,EAAA,GAAK,GAAA;AACX,EAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,EAAA,KAAA,CAAM,SAAA,EAAA;AACR;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAE3B,EAAA,IAAI,EAAE,KAAA,CAAM,SAAA,GAAY,eAAA,EAAiB;AACvC,IAAA,MAAM,IAAI,KAAA,CAAM,yCAAA,GAA4C,eAAe,CAAA;AAAA,EAC7E;AACA,EAAA,MAAM,MAAM,KAAA,CAAM,EAAA;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA;AACpB,EAAA,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAC3B,EAAA,IAAA,CAAK,KAAK,CAAA;AACV,EAAA,KAAA,CAAM,EAAA,GAAK,GAAA;AACX,EAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,EAAA,KAAA,CAAM,SAAA,EAAA;AAER;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA;AACpC;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,MAAM,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AACjD;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,IAAI,MAAM,GAAA,KAAQ,MAAA,EAAQ,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACjE,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AACf,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,OAAA,GAAU,EAAA;AAEhB,EAAA,OAAO,IAAA,CAAK,EAAE,EAAE,CAAA,KAAM,EAAA,EAAI;AAC1B,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACX,EAAA,KAAA,CAAM,MAAM,EAAE,CAAA,GAAI,KAAK,KAAA,CAAM,OAAA,GAAU,GAAG,EAAE,CAAA;AAC9C;AACA,SAAS,IAAA,CAAK,OAAO,KAAA,EAAO;AAC1B,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAC3B,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AAEjB,EAAA,IAAI,CAAA,GAAI,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAC7B,EAAA,IAAI,KAAA,EAAO,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAC5B,EAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,EAAE,CAAA;AAC/B,EAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AACV,EAAA,KAAA,CAAM,GAAA,GAAM,MAAM,GAAA,GAAM,EAAA;AAC1B;AACA,SAAS,GAAA,CAAI,GAAG,KAAA,EAAO;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,IAAA,GAAO,GAAG,MAAA,GAAS,CAAA;AACzB,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AAEJ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,IAAA,EAAA,GAAK,GAAG,CAAC,CAAA;AACT,IAAA,IAAI,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA,EAAG;AACnB,IAAA,EAAA,GAAK,EAAA,CAAG,YAAY,CAAC,CAAA;AACrB,IAAA,IAAI,OAAO,EAAA,EAAI;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,YAAY,CAAC,CAAA;AACrB,IAAA,IAAI,OAAO,EAAA,EAAI;AACb,MAAA,CAAA,CAAE,WAAA,CAAY,EAAA,EAAI,EAAA,EAAI,CAAA,CAAE,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,KAAA,EAAO,IAAI,CAAA,EAAG,CAAA,EAAG,IAAI,CAAA;AAAA,IAChE;AACA,IAAA,CAAA,CAAE,WAAA,CAAY,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAC,CAAA;AAAA,EAC7B;AACF;AACA,SAAS,GAAA,CAAI,GAAG,KAAA,EAAO;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,CAAA,GAAI,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,GAAA;AAClC,EAAA,MAAM,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,IAAI,GAAG,CAAA;AACxC,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,OAAO,IAAA,EAAA,EAAQ;AACb,IAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,IAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AACf,IAAA,MAAM,IAAI,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,OAAO,IAAI,CAAA;AACzC,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA;AAC1B,IAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAOV,EACF;AACA,EAAA,KAAA,CAAM,IAAA,GAAO,CAAA;AACf;AACA,SAAS,GAAA,CAAI,GAAG,KAAA,EAAO;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,CAAA,GAAI,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,GAAA;AAClC,EAAA,MAAM,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,IAAI,GAAG,CAAA;AACxC,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CAAA;AACtC,EAAA,IAAI,CAAA,GAAI,EAAA;AAER,EAAA,MAAM,IAAI,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,OAAO,IAAI,CAAA;AACzC,EAAA,GAAG;AACD,IAAA,IAAI,MAAM,EAAA,EAAI,EAAA,CAAG,YAAY,CAAA,EAAG,CAAA,EAAG,GAAG,EAAE,CAAA;AACxC,IAAA,CAAA,GAAI,CAAA,CAAE,kBAAA;AAAA,EACR,SAAS,CAAA,KAAM,EAAA;AACjB;AACA,SAAS,GAAA,CAAI,GAAG,KAAA,EAAO;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,CAAA,GAAI,KAAA,CAAM,GAAA,GAAM,KAAA,CAAM,GAAA;AAClC,EAAA,MAAM,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,GAAK,KAAA,CAAM,IAAI,GAAG,CAAA;AACxC,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,IAAI,CAAA;AACJ,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,CAAA,GAAI,KAAA,CAAM,KAAA;AACV,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,CAAA,GAAI,KAAA,CAAM,KAAA;AACV,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA;AAElC,EAAA,IAAI,CAAA;AACJ,EAAA,MAAM,IAAI,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,OAAO,IAAI,CAAA;AACzC,EAAA,MAAM,IAAA,GAAO,EAAE,MAAA,GAAS,CAAA;AACxB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAC7B,IAAA,CAAA,GAAI,EAAE,CAAC,CAAA;AACP,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA;AAAA,EAC5B;AACF;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,GAAA,EAAI,GAAI,EAAA;AACxB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,OAAO,IAAA,EAAA,EAAQ;AACb,IAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,IAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AASf,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACtB,IAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,EACZ;AACA,EAAA,KAAA,CAAM,IAAA,GAAO,CAAA;AACf;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,OAAO,KAAA,CAAM,GAAA;AACnB,EAAA,MAAM,OAAO,KAAA,CAAM,GAAA;AACnB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA;AACzB,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA;AACzB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,GAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,OAAO,IAAA,EAAA,EAAQ;AACb,IAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,IAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AAWf,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,EAAE,CAAA;AAC9B,IAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,EACZ;AACA,EAAA,KAAA,CAAM,IAAA,GAAO,CAAA;AACf;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AACvB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,GAAA,EAAI,GAAI,EAAA;AACxB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACrB,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAE,CAAA;AAC5B,EAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAEV,EAAA,KAAA,CAAM,MAAM,KAAA,CAAM,GAAA;AAClB,EAAA,KAAA,CAAM,GAAA,GAAM,EAAA;AACZ,EAAA,IAAI,CAAA,QAAS,GAAA,GAAM,EAAA;AACrB;AACA,SAAS,QAAQ,KAAA,EAAO;AACtB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,OAAO,KAAA,CAAM,GAAA;AACnB,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA;AACzB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,OAAO,IAAA,EAAA,EAAQ;AACb,IAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,IAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AAQf,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAE,CAAA;AAC5B,IAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,EACZ;AACA,EAAA,KAAA,CAAM,IAAA,GAAO,CAAA;AACf;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,KAAA,CAAM,KAAA,GAAQ,iBAAA;AAChB;AACA,SAAS,IAAA,CAAK,OAAO,KAAA,EAAO;AAC1B,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,IAAI,EAAA,GAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA;AAYpB,EAAA,IAAI,CAAA,GAAI,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAC7B,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,IAAI,KAAK,GAAA,CAAI,CAAA,GAAI,EAAE,CAAA,GAAI,KAAA,CAAM,SAAS,CAAA,GAAI,EAAA;AAC1C,IAAA,CAAA,GAAI,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,EACnB;AACA,EAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,EAAE,CAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,IAAA,CAAA,CAAE,KAAK,CAAA,CAAE,CAAA;AACT,IAAA,CAAA,CAAE,KAAK,CAAA,CAAE,CAAA;AAAA,EACX;AACA,EAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AACV,EAAA,KAAA,CAAM,GAAA,GAAM,MAAM,GAAA,GAAM,EAAA;AAC1B;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AACf,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAE,EAAE,CAAA;AAEnB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,QAAW,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,CAAC,CAAA;AACjD,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACb;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AACf,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAE,EAAE,CAAA;AAEnB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,CAAA,GAAI,KAAK,EAAE,EAAE,KAAK,CAAA,GAAI,IAAA,CAAK,EAAE,EAAE,CAAA;AACnC,IAAA,IAAI,CAAA,GAAI,KAAA,EAAO,CAAA,GAAI,EAAA,CAAG,IAAI,KAAA,IAAS,CAAA,CAAA;AACnC,IAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EACd;AACA,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACb;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,IAAI,QAAQ,KAAA,CAAM,KAAA;AAClB,EAAA,IAAI,CAAC,KAAA,EAAO,KAAA,GAAQ,KAAA,CAAM,QAAQ,EAAC;AACnC,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AACb;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,MAAM,CAAA,GAAI,KAAA,IAAS,KAAA,CAAM,CAAC,CAAA,IAAK,CAAA;AAC/B,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACd;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA,GAAI,EAAA;AACrB;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AAEvB,EAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAI,IAAI,EAAE,CAAA;AACjC;AACA,SAAS,EAAA,CAAG,GAAG,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,MAAM,GAAA,CAAI,QAAA,CAAS,GAAG,MAAA,EAAQ,CAAA,EAAG,KAAK,CAAA,GAAI,EAAE,CAAA;AACzD;AACA,SAAS,EAAA,CAAG,GAAG,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AACvB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AACvB,EAAA,MAAM,IAAI,KAAA,CAAM,GAAA,CAAI,SAAS,EAAA,EAAI,EAAA,EAAI,GAAG,CAAC,CAAA;AAEzC,EAAA,KAAA,CAAM,MAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,EAAE,CAAC,CAAA;AACrC;AACA,SAAS,MAAM,KAAA,EAAO;AAEpB,EAAA,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B;AACA,SAAS,OAAO,KAAA,EAAO;AAErB,EAAA,KAAA,CAAM,QAAA,GAAW,IAAA;AACnB;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC5B;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,IAAM,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC7B;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC5B;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,IAAM,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC7B;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,KAAO,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC9B;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,KAAO,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC9B;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AACtC;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AACtC;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,IAAI,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAG3B,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AACkD,EACpE;AACF;AACA,SAAS,IAAI,KAAA,EAAO;AAEpB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,IAAM,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC7B;AACA,SAAS,GAAG,KAAA,EAAO;AACjB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,IAAM,EAAA,GAAK,CAAA,GAAI,CAAC,CAAA;AAC7B;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,GAAI,CAAA,GAAI,CAAC,CAAA;AACtB;AACA,SAAS,SAAA,CAAU,GAAG,KAAA,EAAO;AAC3B,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,SAAA,GAAA,CAAa,CAAA,GAAI,CAAA,IAAK,EAAA;AACzC,EAAA,MAAM,KAAK,KAAA,CAAM,UAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AAEjB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,IAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,IAAA,MAAM,KAAA,GAAQ,IAAA,IAAA,CAAS,GAAA,GAAM,GAAA,KAAQ,CAAA,CAAA;AACrC,IAAA,IAAI,UAAU,IAAA,EAAM;AACpB,IAAA,IAAI,GAAA,GAAA,CAAO,MAAM,EAAA,IAAM,CAAA;AACvB,IAAA,IAAI,OAAO,CAAA,EAAG,GAAA,EAAA;AAEd,IAAA,MAAM,CAAA,GAAI,GAAG,EAAE,CAAA;AACf,IAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,GAAA,GAAM,IAAI,EAAE,CAAA;AAAA,EACnC;AACF;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,SAAA,GAAY,CAAA;AACpB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAA;AACpC;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,KAAK,EAAE,CAAA;AACpB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,KAAK,EAAE,CAAA;AACpB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,EAAE,CAAA;AACzB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,EAAE,CAAA;AACzB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AACxB;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,IAAI,CAAA,GAAI,MAAM,GAAA,EAAI;AAElB,EAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAA;AACf;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,EAAE,IAAI,EAAE,CAAA;AACpC;AACA,SAAS,QAAQ,KAAA,EAAO;AACtB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,IAAA,CAAK,IAAA,CAAK,CAAA,GAAI,EAAE,IAAI,EAAE,CAAA;AACnC;AACA,SAAS,KAAA,CAAM,IAAI,KAAA,EAAO;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,KAAA,CAAM,KAAA,CAAM,CAAA,GAAI,EAAE,IAAI,EAAE,CAAA;AACrC;AACA,SAAS,MAAM,KAAA,EAAO;AACpB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,GAAI,IAAI,KAAA,CAAM,IAAA,GAAO,MAAM,IAAA,CAAK,UAAA;AAC7C;AACA,SAAS,SAAA,CAAU,GAAG,KAAA,EAAO;AAC3B,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,SAAA,GAAA,CAAa,CAAA,GAAI,CAAA,IAAK,EAAA;AACzC,EAAA,MAAM,KAAK,KAAA,CAAM,UAAA;AAEjB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,IAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,IAAA,MAAM,KAAA,GAAQ,IAAA,IAAA,CAAS,GAAA,GAAM,GAAA,KAAQ,CAAA,CAAA;AACrC,IAAA,IAAI,UAAU,IAAA,EAAM;AACpB,IAAA,IAAI,GAAA,GAAA,CAAO,MAAM,EAAA,IAAM,CAAA;AACvB,IAAA,IAAI,OAAO,CAAA,EAAG,GAAA,EAAA;AACd,IAAA,MAAM,QAAQ,GAAA,GAAM,EAAA;AAEpB,IAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,IAAK,KAAA;AAAA,EAClB;AACF;AACA,SAAS,OAAO,KAAA,EAAO;AACrB,EAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAExB,EAAA,KAAA,CAAM,KAAA,GAAQ,UAAA;AACd,EAAA,IAAI,MAAA;AACJ,EAAA,QAAQ,IAAI,GAAA;AAAK,IACf,KAAK,CAAA;AACH,MAAA,MAAA,GAAS,GAAA;AACT,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,MAAA,GAAS,CAAA;AACT,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,MAAA,GAAS,CAAA;AACT,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE1C,EAAA,KAAA,CAAM,QAAA,GAAW,MAAA;AACjB,EAAA,QAAQ,IAAI,EAAA;AAAI,IACd,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,OAAA,GAAU,CAAA;AAChB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,IAAA,GAAO,MAAA;AACvB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,GAAA,GAAM,MAAA;AACtB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,IAAA,GAAO,MAAA;AACvB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAAA;AAE1C,EAAA,CAAA,IAAK,EAAA;AACL,EAAA,IAAI,CAAA,KAAM,CAAA,EAAG,KAAA,CAAM,WAAA,GAAc,CAAA;AAAA,OAC5B,KAAA,CAAM,WAAA,GAAA,CAAe,CAAA,GAAI,CAAA,GAAI,GAAA,IAAO,MAAA;AAC3C;AACA,SAAS,SAAS,KAAA,EAAO;AACvB,EAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAExB,EAAA,KAAA,CAAM,KAAA,GAAQ,UAAA;AACd,EAAA,IAAI,MAAA;AACJ,EAAA,QAAQ,IAAI,GAAA;AAAK,IACf,KAAK,CAAA;AACH,MAAA,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA;AACxB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,MAAA,GAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AACpB,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA;AACxB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA;AAE5C,EAAA,KAAA,CAAM,QAAA,GAAW,MAAA;AACjB,EAAA,QAAQ,IAAI,EAAA;AAAI,IACd,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,OAAA,GAAU,CAAA;AAChB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,IAAA,GAAO,MAAA;AACvB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,GAAA,GAAM,MAAA;AACtB,MAAA;AAAA,IACF,KAAK,EAAA;AACH,MAAA,KAAA,CAAM,UAAU,IAAA,GAAO,MAAA;AACvB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA;AAE5C,EAAA,CAAA,IAAK,EAAA;AACL,EAAA,IAAI,CAAA,KAAM,CAAA,EAAG,KAAA,CAAM,WAAA,GAAc,CAAA;AAAA,OAC5B,KAAA,CAAM,WAAA,GAAA,CAAe,CAAA,GAAI,CAAA,GAAI,GAAA,IAAO,MAAA;AAC3C;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,KAAA,CAAM,KAAA,GAAQ,QAAA;AAChB;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,KAAA,CAAM,KAAA,GAAQ,aAAA;AAChB;AACA,SAAS,KAAK,KAAA,EAAO;AAEnB,EAAA,KAAA,CAAM,KAAA,GAAQ,eAAA;AAChB;AACA,SAAS,SAAS,KAAA,EAAO;AACvB,EAAU,KAAA,CAAM,KAAA,CAAM,GAAA;AAExB;AACA,SAAS,MAAA,CAAO,GAAG,KAAA,EAAO;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AACvB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA;AAEvB,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,IAAI,CAAC,CAAA,EAAG;AACN,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB,CAAA,MAAO;AACL,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AACf,IAAA,EAAA,GAAK,EAAA,CAAG,IAAI,EAAA,CAAG,CAAA;AAAA,EACjB;AACA,EAAA,KAAA,CAAM,GAAA,GAAM,aAAA,CAAc,EAAA,EAAI,EAAE,CAAA;AAClC;AACA,SAAS,QAAQ,KAAA,EAAO;AACtB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,EAAI;AACtB,EAAA,IAAI,CAAA,GAAI,CAAA;AAER,EAAA,IAAI,GAAA,GAAM,GAAG,CAAA,GAAI,EAAA;AACjB,EAAA,IAAI,GAAA,GAAM,IAAI,CAAA,IAAK,IAAA;AACnB,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACd;AACA,SAAS,KAAK,KAAA,EAAO;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AACpB,EAAA,MAAM,CAAA,GAAI,MAAM,GAAA,EAAI;AAEpB,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACd;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,CAAC,CAAA;AAC7B;AACA,SAAS,IAAI,KAAA,EAAO;AAClB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AAErB,EAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,CAAC,CAAA;AAC7B;AACA,SAAS,SAAS,KAAA,EAAO;AACvB,EAAU,KAAA,CAAM,KAAA,CAAM,GAAA;AAExB;AACA,SAAS,SAAS,KAAA,EAAO;AACvB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAC1B,EAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,GAAA,EAAI;AAExB,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,cAAA,GAAiB,CAAC,CAAC,CAAA;AACzB,MAAA;AAAA,IACF,KAAK,CAAA;AACH,MAAA,KAAA,CAAM,SAAA,GAAY,CAAC,CAAC,CAAA;AACpB,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA;AAEnD;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AACvB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AAEf,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,QAAW,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,CAAC,CAAA;AACjD,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACb;AACA,SAAS,KAAA,CAAM,GAAG,KAAA,EAAO;AACvB,EAAA,IAAI,KAAK,KAAA,CAAM,EAAA;AACf,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,CAAA,GAAI,KAAK,EAAE,EAAE,KAAK,CAAA,GAAI,IAAA,CAAK,EAAE,EAAE,CAAA;AACnC,IAAA,IAAI,CAAA,GAAI,KAAA,EAAO,CAAA,GAAI,EAAA,CAAG,IAAI,KAAA,IAAS,CAAA,CAAA;AACnC,IAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EACd;AACA,EAAA,KAAA,CAAM,EAAA,GAAK,EAAA;AACb;AACA,SAAS,UAAU,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,EAAA,EAAI,IAAI,KAAA,EAAO;AACzD,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,CAAM,GAAA,EAAI;AACnC,EAAA,MAAM,EAAA,GAAK,MAAM,GAAA,EAAI;AACrB,EAAA,MAAM,OAAO,KAAA,CAAM,GAAA;AACnB,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA;AACxB,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACrB,EAAA,MAAM,KAAK,KAAA,CAAM,MAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,EAAA;AACjB,EAAA,MAAM,KAAK,KAAA,CAAM,GAAA;AAEjB,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,CAAA,GAAS,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,EAAA,EAAI,MAAM,IAAI,CAAA;AACtC,EAAA,IAAA,GAAO,CAAA,IAAK,IAAI,CAAA,GAAI,EAAA;AACpB,EAAA,CAAA,GAAI,IAAA,CAAK,IAAI,CAAC,CAAA;AACd,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,EAAA,GAAK,KAAA,CAAM,IAAI,IAAI,CAAA;AACnB,IAAA,IAAI,EAAA,IAAM,KAAK,GAAA,CAAI,CAAA,GAAI,EAAE,CAAA,GAAI,KAAA,CAAM,SAAS,CAAA,GAAI,EAAA;AAAA,EAClD;AACA,EAAA,IAAI,KAAA,IAAS,CAAA,GAAI,EAAA,EAAI,CAAA,GAAI,EAAA;AACzB,EAAA,IAAI,EAAA,EAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AACzB,EAAA,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,EAAA,EAAI,IAAA,GAAO,GAAG,EAAE,CAAA;AAClC,EAAA,EAAA,CAAG,MAAM,CAAC,CAAA;AAcV,EAAA,KAAA,CAAM,MAAM,KAAA,CAAM,GAAA;AAClB,EAAA,KAAA,CAAM,GAAA,GAAM,EAAA;AACZ,EAAA,IAAI,MAAA,QAAc,GAAA,GAAM,EAAA;AAC1B;AACA,gBAAA,GAAmB;AAAA;AAAA,EAEjB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE9B,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE9B,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE/B,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE/B,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE/B,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE/B,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,QAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEnB,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEnB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE5B,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAE5B,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAElB,KAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,OAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEnB,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEnB,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,EAAA,CAAG,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEjB,EAAA,CAAG,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEjB,MAAA;AAAA;AAAA;AAAA,EAGA,EAAA,CAAG,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEjB,EAAA,CAAG,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEjB,KAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,EAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,EAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,OAAA;AAAA;AAAA,EAEA,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,KAAA;AAAA;AAAA,EAEA,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAExB,MAAA;AAAA;AAAA,EAEA,QAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,IAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,IAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA;AAAA,EAGA,GAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,QAAA;AAAA;AAAA,EAEA,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAErB,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAErB,OAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAGA,IAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,GAAA;AAAA;AAAA,EAEA,QAAA;AAAA;AAAA,EAEA,QAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA,EAEA,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA;AAAA,EAEpB,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA;AAAA,EAEpC,UAAU,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC;AACtC,CAAA;AACA,IAAI,iBAAA,GAAoB,OAAA;AAGxB,SAAS,MAAM,IAAA,EAAM;AACnB,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,EAAA,IAAA,CAAK,QAAQ,EAAC;AACd,EAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACrB;AACA,SAAS,YAAA,CAAa,UAAA,EAAY,SAAA,EAAW,WAAA,EAAa;AACxD,EAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,EAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,EAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACnB;AACA,SAAS,cAAA,CAAe,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU;AACzD,EAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,EAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,EAAA,IAAA,CAAK,SAAS,EAAC;AACf,EAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB;AACA,SAAS,aAAA,CAAc,SAAS,YAAA,EAAc;AAC5C,EAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,EAAA,IAAA,CAAK,KAAA,GAAQ,YAAA;AACb,EAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACtB,EAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,YAAY,CAAA;AACnC,EAAA,IAAA,CAAK,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AAC9C,EAAA,IAAA,CAAK,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,YAAA,GAAe,CAAC,CAAA;AACjD;AACA,SAAS,MAAM,OAAA,EAAS;AACtB,EAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,EAAA,IAAA,CAAK,cAAc,EAAC;AACtB;AACA,SAAS,qBAAqB,MAAA,EAAQ;AACpC,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,OAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,IAAA,MAAM,OAAA,GAAU,WAAW,CAAC,CAAA;AAC5B,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS;AAAA,MAC1C,KAAA,EAAO,IAAI,KAAA,CAAM,OAAO;AAAA,KACzB,CAAA;AAAA,EACH;AACA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,MAAA,MAAM,OAAA,GAAU,WAAW,CAAC,CAAA;AAC5B,MAAA,MAAM,KAAA,GAAQ,OAAO,OAAO,CAAA;AAC5B,MAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,QAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,SAAA,CAAU,KAAK,CAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACA,EAAA,MAAM,qBAAA,GAAwB;AAAA,IAC5B,aAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAA,EAAK;AACrD,IAAA,MAAM,OAAA,GAAU,sBAAsB,CAAC,CAAA;AACvC,IAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,SAAA;AAAA,MACnB,IAAA,CAAK;AAAA,KACP;AAAA,EACF;AACF;AACA,SAAS,UAAU,MAAA,EAAQ;AACzB,EAAA,IAAA,CAAK,SAAS,EAAC;AACf,EAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,EAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,EAAA,IAAA,CAAK,SAAS,EAAC;AACf,EAAA,IAAA,CAAK,sBAAsB,EAAC;AAC5B,EAAA,oBAAA,CAAqB,IAAA,CAAK,MAAM,MAAM,CAAA;AACxC;AACA,KAAA,CAAM,SAAA,CAAU,QAAA,GAAW,SAAS,GAAA,EAAK,KAAA,EAAO;AAC9C,EAAA,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAClB,EAAA,IAAA,CAAK,cAAc,EAAE,GAAA,EAAK,OAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,EAAE;AACjD,EAAA,OAAO,IAAA,CAAK,WAAA;AACd,CAAA;AACA,KAAA,CAAM,SAAA,CAAU,QAAA,GAAW,SAAS,OAAA,EAAS;AAC3C,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,IAAK,IAAA;AAChC,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,YAAA,GAAe,SAAS,KAAA,EAAO;AACjD,EAAA,OAAO,KAAA,IAAS,CAAA,IAAK,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,MAAA;AAC3C,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,UAAA,GAAa,SAAS,IAAA,EAAM;AAC9C,EAAA,MAAM,MAAA,GAAS,IAAA;AACf,EAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAA,CAAK,IAAI,CAAC,CAAC,EAAE,KAAA,CAAM,IAAA,EAAM,IAAI,KAAA,CAAM,CAAC,EAAE,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AACrF,EAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAQ,OAAO,GAAA,KAAQ,QAAA,IAAY,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,GAAA,EAAK,MAAM,CAAA;AAC1G,EAAA,IAAI,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,EAAG;AAC9B,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,kEAAA;AAAA,MACN,MAAA,EAAQ,KAAA,CAAM,MAAA,CAAO,aAAa;AAAA,KACpC;AAAA,EACF;AACA,EAAA,IAAA,CAAK,QAAA,CAAS,YAAA,EAAc,CAAC,KAAA,CAAM,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,aAAA,CAAc,EAAE,CAAC,CAAC,CAAC,CAAA;AACxE,CAAA;AACA,SAAA,CAAU,UAAU,YAAA,GAAe,SAAS,UAAA,EAAY,MAAA,EAAQ,QAAQ,MAAA,EAAQ;AAC9E,EAAA,MAAA,GAAS,MAAA,KAAW,IAAA,GAAO,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,MAAA;AAChD,EAAA,MAAM,cAAc,MAAA,CAAO,KAAA,CAAM,CAAC,KAAA,KAAU,iBAAiB,KAAK,CAAA;AAClE,EAAA,IAAI,CAAC,MAAM,UAAU,CAAA,IAAK,KAAK,YAAA,CAAa,UAAU,KAAK,WAAA,EAAa;AACtE,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAA;AAAA,MAClC,IAAA,CAAK,MAAA;AAAA,MACL,CAAC,UAAA,EAAY,MAAM,CAAA,CAAE,OAAO,MAAM;AAAA,KACpC;AACA,IAAA,IAAI,CAAC,QAAQ,IAAA,CAAK,QAAA,CAAS,gBAAgB,CAAC,UAAA,EAAY,MAAA,EAAQ,MAAM,CAAC,CAAA;AACvE,IAAA,OAAO,CAAC,UAAU,MAAM,CAAA;AAAA,EAC1B,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,MAAM,6CAAA,EAA8C;AAAA,EAC/D;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,YAAA,GAAe,SAAS,KAAA,EAAO,OAAO,MAAA,EAAQ;AAChE,EAAA,IAAI,CAAC,MAAM,KAAK,CAAA,IAAK,KAAK,YAAA,CAAa,KAAK,CAAA,IAAK,KAAA,YAAiB,KAAA,EAAO;AACvE,IAAA,MAAM,WAAW,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,GAAG,KAAK,CAAA;AACnD,IAAA,IAAI,CAAC,QAAQ,IAAA,CAAK,QAAA,CAAS,gBAAgB,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AACzD,IAAA,OAAO,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG,KAAK,CAAA;AAAA,EAC5B,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,MAAM,uCAAA,EAAwC;AAAA,EACzD;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,WAAA,GAAc,SAAS,UAAA,EAAY,QAAQ,MAAA,EAAQ;AACrE,EAAA,MAAA,GAAS,CAAC,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA,GAAS,KAAK,MAAA,CAAO,MAAA;AAC/C,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,MAAM,CAAA;AACpD,EAAA,IAAI,CAAC,QAAQ,IAAA,CAAK,QAAA,CAAS,eAAe,CAAC,MAAA,EAAQ,UAAA,EAAY,MAAM,CAAC,CAAA;AACtE,EAAA,OAAO,MAAA;AACT,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,WAAA,GAAc,SAAS,KAAA,EAAO,MAAA,EAAQ;AACxD,EAAA,IAAI,CAAC,KAAA,CAAM,KAAK,KAAK,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,EAAG;AAC7C,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAO,CAAC,CAAA;AACzC,IAAA,IAAI,CAAC,QAAQ,IAAA,CAAK,QAAA,CAAS,eAAe,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AACxD,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,MAAM,mCAAA,EAAoC;AAAA,EACrD;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,WAAA,GAAc,SAAS,MAAA,EAAQ,OAAO,MAAA,EAAQ;AAChE,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA;AAAA,IACvB,CAAC,UAAU,KAAA,YAAiB;AAAA,GAC9B;AACA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,IAAA,CAAK,OAAO,MAAA,CAAO,KAAA;AAAA,MACjB,IAAA,CAAK,MAAA;AAAA,MACL,CAAC,KAAA,EAAO,CAAC,CAAA,CAAE,OAAO,MAAM;AAAA,KAC1B;AACA,IAAA,IAAI,CAAC,QAAQ,IAAA,CAAK,QAAA,CAAS,eAAe,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AACzD,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,MAAM,gCAAA,EAAiC;AAAA,EAClD;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,gBAAA,GAAmB,SAAS,UAAA,EAAY,WAAW,QAAA,EAAU;AAC/E,EAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,SAAS,OAAO,aAAA,EAAe;AAC5D,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,aAAa,CAAA;AAC7C,IAAA,MAAM,mBAAmB,SAAA,KAAc,IAAA,IAAQ,UAAU,KAAA,CAAM,IAAA,EAAM,eAAe,CAAA,KAAM,IAAA;AAC1F,IAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,EAAO,aAAa,CAAA;AAC5C,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,IAAI,aAAA,GAAgB,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,cAAc,CAAA;AACvD,MAAA,KAAA,CAAM,QAAA,CAAS,YAAY,aAAa,CAAA;AAAA,IAC1C;AAAA,EACF,CAAC,CAAA;AACD,EAAA,IAAA,CAAK,mBAAA,CAAoB,KAAK,UAAU,CAAA;AAC1C,CAAA;AACA,KAAA,CAAM,SAAA,CAAU,SAAA,GAAY,SAAS,YAAA,EAAc;AACjD,EAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,YAAY,CAAA,GAAI,CAAA;AAAA,EAC/C,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,IAAA,EAAM,CAAA,SAAA,EAAY,IAAA,CAAK,OAAO,CAAA,eAAA,CAAA,EAAkB;AAAA,EAC3D;AACF,CAAA;AACA,KAAA,CAAM,SAAA,CAAU,WAAA,GAAc,SAAS,MAAA,EAAQ;AAC7C,EAAA,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,MAAA,EAAQ,CAAC,CAAA;AACnC,CAAA;AACA,aAAA,CAAc,SAAA,CAAU,eAAA,GAAkB,SAAS,KAAA,EAAO;AACxD,EAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,EAAA,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA;AACjC,EAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,GAAG,KAAK,CAAA;AAC5C,EAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAC,CAAA;AAC/C,CAAA;AACA,aAAA,CAAc,SAAA,CAAU,GAAA,GAAM,SAAS,MAAA,EAAQ;AAC7C,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,MAAA,KAAW,CAAA;AACd,MAAA,OAAO,IAAA,CAAK,OAAA;AAAA,IACd,MAAM,SAAS,CAAA,IAAK,IAAA,CAAK,IAAI,MAAM,CAAA,IAAK,KAAK,SAAA,CAAU,MAAA;AACrD,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,MAAM,EAAE,CAAC,CAAA;AAAA,IACvC,MAAM,MAAA,GAAS,CAAA,IAAK,MAAA,IAAU,KAAK,SAAA,CAAU,MAAA;AAC3C,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA;AAAA,IAClC;AACE,MAAA,OAAO,IAAA;AAAA;AAEb,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,WAAA,GAAc,SAAS,KAAA,EAAO;AAChD,EAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,EACtE;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,UAAU,WAAW;AACvC,EAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAI,CAAC,UAAU,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACvD,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,UAAA,GAAa,SAAS,WAAA,EAAa;AACrD,EAAA,IAAI,OAAA,GAAU,IAAA,CAAK,kBAAA,CAAmB,WAAW,CAAA;AACjD,EAAA,OAAO,UAAU,OAAA,GAAU,IAAA;AAC7B,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,EAAA,GAAK,SAAS,SAAA,EAAW,YAAA,EAAc;AACzD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACnC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,KAAA,CAAM,UAAU,YAAY,CAAA;AAAA,EACrC,CAAA,MAAO;AACL,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,QAAA,GAAW,SAAS,SAAA,EAAW,IAAA,EAAM;AACvD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACnC,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AACjD,MAAA,MAAM,UAAA,GAAa,KAAA,CAAM,WAAA,CAAY,CAAC,CAAA;AACtC,MAAA,UAAA,CAAW,KAAA,CAAM,IAAA,EAAM,IAAA,IAAQ,EAAE,CAAA;AAAA,IACnC;AAAA,EACF;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,sBAAA,GAAyB,SAAS,WAAA,EAAa,mBAAmB,eAAA,EAAiB;AACrG,EAAA,IAAI,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,EAAG,OAAO;AAAA,IACvC,IAAA,EAAM,iBAAiB,WAAW,CAAA,wBAAA;AAAA,GACpC;AACA,EAAA,IAAI,OAAO,iBAAA,KAAsB,UAAA,EAAY,OAAO;AAAA,IAClD,IAAA,EAAM;AAAA,GACR;AACA,EAAA,IAAI,OAAO,eAAA,KAAoB,UAAA,EAAY,OAAO;AAAA,IAChD,IAAA,EAAM;AAAA,GACR;AACA,EAAA,MAAM,kBAAkB,IAAI,cAAA;AAAA,IAC1B,WAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAA,CAAK,kBAAA,CAAmB,WAAW,CAAA,GAAI,eAAA;AACvC,EAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,eAAe,CAAA;AACzC,EAAA,OAAO,eAAA;AACT,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,cAAA,GAAiB,SAAS,KAAA,EAAO;AACnD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,SAAA;AAC1C,EAAA,OAAO,EAAC,CAAE,MAAA;AAAA,IACR,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,YAAY,QAAQ;AAAA,GAC9C;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,gBAAA,GAAmB,SAAS,WAAA,EAAa;AAC3D,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA;AAC3C,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,EACjB,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,IAAA,EAAM,CAAA,iBAAA,EAAoB,WAAW,CAAA,oBAAA,CAAA,EAAuB;AAAA,EACvE;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,sBAAsB,WAAW;AACnD,EAAA,MAAM,qBAAqB,IAAA,CAAK,kBAAA;AAChC,EAAA,KAAA,MAAW,eAAe,kBAAA,EAAoB;AAC5C,IAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,kBAAA,EAAoB,WAAW,CAAA,EAAG;AACzE,MAAA,MAAM,OAAA,GAAU,mBAAmB,WAAW,CAAA;AAC9C,MAAA,OAAA,CAAQ,SAAS,EAAC;AAAA,IACpB;AAAA,EACF;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,uBAAuB,WAAW;AACpD,EAAA,IAAA,CAAK,mBAAA,EAAoB;AACzB,EAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,MAAM,IAAI,CAAA;AACnD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,MAAM,aAAA,GAAgB,IAAI,aAAA,CAAc,KAAA,EAAO,CAAC,CAAA;AAChD,IAAA,IAAA,CAAK,gBAAgB,aAAa,CAAA;AAAA,EACpC;AACA,EAAA,IAAA,CAAK,QAAA,CAAS,sBAAA,EAAwB,CAAC,IAAA,CAAK,kBAAkB,CAAC,CAAA;AACjE,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,YAAA,GAAe,SAAS,MAAA,EAAQ,WAAA,EAAa;AAC/D,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,WAAW,EAAE,SAAA,CAAU,UAAA;AAC1D,EAAA,IAAI,KAAA,GAAQ,IAAI,YAAA,CAAa,UAAA,EAAY,QAAQ,WAAW,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,CAAE,MAAA;AAC5C,EAAA,KAAA,CAAM,OAAA,GAAU,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,OAAO,MAAM,CAAA,CAAA;AAC/C,EAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,EAAA,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,CAAE,SAAA,GAAY,IAAA;AACzC,EAAA,OAAO,KAAA;AACT,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,eAAA,GAAkB,SAAS,aAAA,EAAe;AAC5D,EAAA,MAAM,QAAQ,aAAA,CAAc,KAAA;AAC5B,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AACpD,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,eAAA,CAAgB,CAAC,CAAA;AAC7C,IAAA,IAAI,cAAc,cAAA,CAAe,WAAA;AACjC,IAAA,IAAI,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,CAAE,SAAA;AAC7C,IAAA,IAAI,CAAC,SAAA,IAAa,cAAA,CAAe,UAAA,CAAW,aAAa,CAAA,EAAG;AAC1D,MAAA,SAAA,GAAY,IAAI,YAAA,CAAa,KAAA,EAAO,IAAA,EAAM,WAAW,CAAA;AACrD,MAAA,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,CAAE,SAAA,GAAY,SAAA;AACzC,MAAA,IAAA,CAAK,QAAA,CAAS,cAAA,EAAgB,CAAC,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,IACpD;AACA,IAAA,IAAI,CAAC,CAAC,SAAA,IAAa,cAAA,CAAe,QAAA,CAAS,aAAa,CAAA,EAAG;AACzD,MAAA,MAAM,MAAA,GAAS,KAAA,GAAQ,SAAA,CAAU,UAAA,GAAa,CAAA;AAC9C,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,WAAW,CAAA;AACnD,MAAA,IAAA,CAAK,QAAA,CAAS,YAAA,EAAc,CAAC,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,IAClD;AAAA,EACF;AACF,CAAA;AACA,SAAA,CAAU,SAAA,CAAU,QAAA,GAAW,SAAS,IAAA,EAAM;AAC5C,EAAA,IAAA,CAAK,SAAS,EAAC;AACf,EAAA,IAAA,CAAK,mBAAA,EAAoB;AACzB,EAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAC3B,EAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,MAAM,aAAA,GAAgB,IAAI,aAAA,CAAc,KAAA,EAAO,CAAC,CAAA;AAChD,IAAA,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,CAAC,aAAa,CAAC,CAAA;AACrC,IAAA,IAAA,CAAK,gBAAgB,aAAa,CAAA;AAClC,IAAA,IAAI,KAAA,GAAQ,IAAI,KAAA,CAAM,IAAI,CAAA;AAC1B,IAAA,IAAA,CAAK,MAAA,CAAO,KAAK,KAAK,CAAA;AACtB,IAAA,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,CAAC,KAAA,EAAO,aAAa,CAAC,CAAA;AAAA,EAClD;AACA,EAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,CAAC,IAAA,CAAK,MAAM,CAAC,CAAA;AAClC,EAAA,OAAO,IAAA,CAAK,MAAA;AACd,CAAA;AACA,IAAI,iBAAA,GAAoB,SAAA;AAGxB,SAAS,aAAa,CAAA,EAAG;AACvB,EAAA,OAAO,2CAAA,CAA4C,KAAK,CAAC,CAAA;AAC3D;AACA,SAAS,qBAAqB,IAAA,EAAM;AAClC,EAAA,OAAO,kUAAA,CAAmU,KAAK,IAAI,CAAA;AACrV;AACA,SAAS,qBAAqB,IAAA,EAAM;AAClC,EAAA,OAAO,uHAAA,CAAwH,KAAK,IAAI,CAAA;AAC1I;AACA,SAAS,WAAW,CAAA,EAAG;AACrB,EAAA,OAAO,iBAAA,CAAkB,KAAK,CAAC,CAAA;AACjC;AACA,SAAS,YAAY,CAAA,EAAG;AACtB,EAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AACvB;AACA,SAAS,aAAa,CAAA,EAAG;AACvB,EAAA,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AACpB;AAGA,SAAS,aAAa,IAAA,EAAM;AAC1B,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,EAAA,IAAA,CAAK,WAAW,EAAC;AACnB;AACA,SAAS,mBAAmB,MAAA,EAAQ;AAClC,EAAA,IAAA,CAAK,KAAK,MAAA,CAAO,EAAA;AACjB,EAAA,IAAA,CAAK,MAAM,MAAA,CAAO,GAAA;AAClB,EAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC7B;AACA,SAAS,cAAA,CAAe,YAAY,QAAA,EAAU;AAC5C,EAAA,IAAI,CAAC,YAAY,OAAO,EAAA;AACxB,EAAA,QAAQ,SAAS,MAAA;AAAQ,IACvB,KAAK,CAAA;AACH,MAAA,OAAO,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AAAA,IAC3C,KAAK,CAAA,EAAG;AACN,MAAA,IAAI,SAAS,QAAA,CAAS,MAAA;AACtB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,QAAA,IAAI,UAAA,IAAc,KAAA,CAAM,KAAA,IAAS,UAAA,IAAc,MAAM,GAAA,EAAK;AACxD,UAAA,IAAI,MAAA,GAAS,aAAa,KAAA,CAAM,KAAA;AAChC,UAAA,OAAO,MAAM,KAAA,GAAQ,MAAA;AAAA,QACvB;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAAA,IACA;AACE,MAAA,OAAO,EAAA;AAAA;AAEX,EAAA,OAAO,EAAA;AACT;AACA,SAAS,yBAAA,CAA0B,YAAY,QAAA,EAAU;AACvD,EAAA,IAAI,eAAA,GAAkB,cAAA,CAAe,UAAA,EAAY,QAAA,CAAS,QAAQ,CAAA;AAClE,EAAA,IAAI,eAAA,KAAoB,IAAI,OAAO,IAAA;AACnC,EAAA,OAAO,aAAa,QAAA,CAAS,YAAA;AAC/B;AACA,SAAS,yBAAA,CAA0B,YAAY,QAAA,EAAU;AACvD,EAAA,IAAI,eAAA,GAAkB,cAAA,CAAe,UAAA,EAAY,QAAA,CAAS,QAAQ,CAAA;AAClE,EAAA,IAAI,eAAA,KAAoB,IAAI,OAAO,IAAA;AACnC,EAAA,OAAO,QAAA,CAAS,WAAW,eAAe,CAAA;AAC5C;AACA,SAAS,kBAAA,CAAmB,cAAc,aAAA,EAAe;AACvD,EAAA,IAAI,aAAa,EAAC;AAClB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AAC5C,IAAA,MAAM,QAAA,GAAW,aAAa,CAAC,CAAA;AAC/B,IAAA,IAAI,aAAa,aAAA,CAAc,OAAA;AAC/B,IAAA,UAAA,GAAa,MAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,UAAA,CAAW,CAAC,CAAA,GAAI,UAAA;AACzD,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,EAAY,QAAQ,CAAA;AACvD,IAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,MAAA,UAAA,CAAW,KAAK,WAAW,CAAA;AAAA,IAC7B;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,MAAA,KAAW,YAAA,CAAa,MAAA,EAAQ,OAAO,EAAA;AACtD,EAAA,OAAO,UAAA;AACT;AACA,SAAS,2BAAA,CAA4B,eAAe,QAAA,EAAU;AAC5D,EAAA,MAAM,YAAA,GAAe,SAAS,aAAA,CAAc,MAAA,GAAS,SAAS,iBAAA,CAAkB,MAAA,GAAS,SAAS,iBAAA,CAAkB,MAAA;AACpH,EAAA,IAAI,aAAA,CAAc,OAAA,CAAQ,MAAA,GAAS,YAAA,SAAqB,EAAC;AACzD,EAAA,IAAI,YAAA,GAAe,kBAAA;AAAA,IACjB,QAAA,CAAS,aAAA;AAAA,IACT;AAAA,GACF;AACA,EAAA,IAAI,YAAA,KAAiB,EAAA,EAAI,OAAO,EAAC;AACjC,EAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,aAAA,CAAc,MAAA,GAAS,CAAA;AACxD,EAAA,IAAI,cAAc,SAAA,CAAU,MAAA,GAAS,SAAS,iBAAA,CAAkB,MAAA,SAAe,EAAC;AAChF,EAAA,IAAI,gBAAA,GAAmB,aAAA,CAAc,SAAA,CAAU,KAAA,CAAM,eAAe,CAAA;AACpE,EAAA,OAAO,iBAAiB,MAAA,IAAU,oBAAA,CAAqB,iBAAiB,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AAChF,IAAA,gBAAA,CAAiB,KAAA,EAAM;AAAA,EACzB;AACA,EAAA,MAAM,eAAA,GAAkB,IAAI,aAAA,CAAc,gBAAA,EAAkB,CAAC,CAAA;AAC7D,EAAA,IAAI,gBAAA,GAAmB,kBAAA;AAAA,IACrB,QAAA,CAAS,iBAAA;AAAA,IACT;AAAA,GACF;AACA,EAAA,IAAI,gBAAA,GAAmB,EAAC,CAAE,MAAA,CAAO,cAAc,SAAS,CAAA;AACxD,EAAA,gBAAA,CAAiB,OAAA,EAAQ;AACzB,EAAA,OAAO,iBAAiB,MAAA,IAAU,oBAAA,CAAqB,iBAAiB,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AAChF,IAAA,gBAAA,CAAiB,KAAA,EAAM;AAAA,EACzB;AACA,EAAA,IAAI,iBAAiB,MAAA,GAAS,QAAA,CAAS,iBAAA,CAAkB,MAAA,SAAe,EAAC;AACzE,EAAA,MAAM,eAAA,GAAkB,IAAI,aAAA,CAAc,gBAAA,EAAkB,CAAC,CAAA;AAC7D,EAAA,IAAI,gBAAA,GAAmB,kBAAA;AAAA,IACrB,QAAA,CAAS,iBAAA;AAAA,IACT;AAAA,GACF;AACA,EAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,MAAA,KAAW,QAAA,CAAS,cAAc,MAAA,IAAU,gBAAA,CAAiB,MAAA,KAAW,QAAA,CAAS,iBAAA,CAAkB,MAAA,IAAU,gBAAA,CAAiB,MAAA,KAAW,SAAS,iBAAA,CAAkB,MAAA;AAC3M,EAAA,IAAI,gBAAgB,EAAC;AACrB,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACtD,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,aAAA,CAAc,CAAC,CAAA;AAC7C,MAAA,MAAM,kBAAkB,YAAA,CAAa,eAAA;AACrC,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,gBAAA,CAAiB,eAAe,CAAA;AACzD,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACrD,QAAA,IAAI,SAAA,GAAY,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA;AACvC,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,WAAA,EAAa,SAAS,CAAA;AACtE,QAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,UAAA,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,SAAA,CAAU,SAAS,CAAA;AAC1E,UAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,SAAA,CAAU,SAAS,CAAA;AAC5D,UAAA,SAAA,GAAY,SAAA,CAAU,SAAA;AAAA,QACxB,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,WAAA,EAAa,SAAS,CAAA;AAAA,QACtD;AACA,QAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,UAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA;AAC/D,UAAA,MAAM,YAAA,GAAe,OAAO,UAAU,CAAA;AACtC,UAAA,IAAI,YAAA,EAAc,aAAA,CAAc,IAAA,CAAK,YAAY,CAAA;AAAA,QACnD,CAAA,MAAA,IAAW,qBAAqB,IAAA,EAAM;AACpC,UAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA;AAC/D,UAAA,MAAM,YAAA,GAAe,OAAO,UAAU,CAAA;AACtC,UAAA,IAAI,YAAA,EAAc,aAAA,CAAc,IAAA,CAAK,YAAY,CAAA;AAAA,QACnD,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,gBAAgB,CAAA,0CAAA,CAA4C,CAAA;AAAA,QACnG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT;AACA,SAAS,2BAAA,CAA4B,eAAe,QAAA,EAAU;AAC5D,EAAA,IAAI,aAAa,aAAA,CAAc,OAAA;AAC/B,EAAA,IAAI,WAAA,GAAc,cAAA,CAAe,UAAA,EAAY,QAAA,CAAS,QAAQ,CAAA;AAC9D,EAAA,IAAI,WAAA,KAAgB,IAAI,OAAO,IAAA;AAC/B,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,WAAA,GAAc,QAAA,CAAS,YAAA,CAAa,WAAW,CAAA;AACnD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,IAAA,QAAA,GAAW,YAAY,CAAC,CAAA;AACxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AACnD,MAAA,MAAM,aAAA,GAAgB,aAAA,CAAc,SAAA,CAAU,CAAC,CAAA;AAC/C,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,UAAA,CAAW,CAAC,CAAA;AACvC,MAAA,IAAI,kBAAkB,SAAA,EAAW;AACjC,MAAA,IAAI,CAAA,KAAM,QAAA,CAAS,UAAA,CAAW,MAAA,GAAS,GAAG,OAAO,QAAA;AAAA,IACnD;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,0BAAA,CAA2B,eAAe,QAAA,EAAU;AAC3D,EAAA,IAAI,UAAU,aAAA,CAAc,OAAA;AAC5B,EAAA,IAAI,WAAA,GAAc,cAAA,CAAe,OAAA,EAAS,QAAA,CAAS,QAAQ,CAAA;AAC3D,EAAA,IAAI,WAAA,KAAgB,EAAA;AAClB,IAAA,OAAO,IAAA;AACT,EAAA,KAAA,MAAW,OAAA,IAAW,SAAS,QAAA,EAAU;AACvC,IAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,MAAA,IAAI,OAAA,GAAU,IAAA;AACd,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC1C,QAAA,IAAI,cAAc,SAAA,CAAU,CAAC,MAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG;AAChD,UAAA,OAAA,GAAU,KAAA;AACV,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,IAAI,gBAAgB,EAAC;AACrB,QAAA,aAAA,CAAc,KAAK,OAAO,CAAA;AAC1B,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC1C,UAAA,aAAA,CAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,QAClC;AACA,QAAA,MAAM,MAAA,GAAS,CAAC,cAAA,EAAgB,YAAA,KAAiB;AAC/C,UAAA,MAAM,EAAE,eAAA,EAAiB,aAAA,EAAc,GAAI,YAAA;AAC3C,UAAA,MAAM,EAAE,SAAA,EAAU,GAAI,IAAA,CAAK,iBAAiB,eAAe,CAAA;AAC3D,UAAA,KAAA,MAAW,aAAa,SAAA,EAAW;AACjC,YAAA,IAAI,eAAe,cAAA,CAAe,cAAA,CAAe,aAAa,CAAA,EAAG,UAAU,QAAQ,CAAA;AACnF,YAAA,IAAI,iBAAiB,EAAA,EAAI;AACvB,cAAA,cAAA,CAAe,aAAa,IAAI,SAAA,CAAU,YAAA;AAAA,YAC5C;AAAA,UACF;AAAA,QACF,CAAA;AACA,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAClD,UAAA,MAAM,YAAA,GAAe,IAAA,CAAK,aAAA,CAAc,CAAC,CAAA;AACzC,UAAA,MAAA,CAAO,eAAe,YAAY,CAAA;AAAA,QACpC;AACA,QAAA,OAAO,aAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,0BAAA,CAA2B,eAAe,QAAA,EAAU;AAC3D,EAAA,IAAI,aAAA,CAAc,OAAA,CAAQ,MAAA,GAAS,QAAA,CAAS,UAAU,MAAA,EAAQ;AAC5D,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAClD,IAAA,IAAI,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,IAAA,UAAA,GAAa,MAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,UAAA,CAAW,CAAC,CAAA,GAAI,UAAA;AACzD,IAAA,IAAI,eAAe,UAAA,EAAY,QAAA,CAAS,UAAU,CAAC,CAAC,MAAM,EAAA,EAAI;AAC5D,MAAA,OAAO,EAAC;AAAA,IACV;AAAA,EACF;AACA,EAAA,IAAI,gBAAgB,EAAC;AACrB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACtD,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,aAAA,CAAc,CAAC,CAAA;AAC7C,IAAA,MAAM,kBAAkB,YAAA,CAAa,eAAA;AACrC,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,gBAAA,CAAiB,eAAe,CAAA;AACzD,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACrD,MAAA,IAAI,SAAA,GAAY,WAAA,CAAY,SAAA,CAAU,CAAC,CAAA;AACvC,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,WAAA,EAAa,SAAS,CAAA;AACtE,MAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,QAAA,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,SAAA,CAAU,SAAS,CAAA;AAC1E,QAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,SAAA,CAAU,SAAS,CAAA;AAC5D,QAAA,SAAA,GAAY,SAAA,CAAU,SAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,WAAA,EAAa,SAAS,CAAA;AAAA,MACtD;AACA,MAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,QAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA;AAC/D,QAAA,MAAM,YAAA,GAAe,OAAO,UAAU,CAAA;AACtC,QAAA,IAAI,YAAA,EAAc,aAAA,CAAc,IAAA,CAAK,YAAY,CAAA;AAAA,MACnD,CAAA,MAAA,IAAW,qBAAqB,IAAA,EAAM;AACpC,QAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA;AAC/D,QAAA,MAAM,YAAA,GAAe,OAAO,UAAU,CAAA;AACtC,QAAA,IAAI,YAAA,EAAc,aAAA,CAAc,IAAA,CAAK,YAAY,CAAA;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT;AACA,SAAS,gCAAA,CAAiC,YAAY,QAAA,EAAU;AAC9D,EAAA,IAAI,eAAA,GAAkB,cAAA,CAAe,UAAA,EAAY,QAAA,CAAS,QAAQ,CAAA;AAClE,EAAA,IAAI,eAAA,KAAoB,IAAI,OAAO,IAAA;AACnC,EAAA,OAAO,QAAA,CAAS,UAAU,eAAe,CAAA;AAC3C;AACA,YAAA,CAAa,SAAA,CAAU,kCAAkC,WAAW;AAClE,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA;AACtC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,MAAA,GAAS,QAAQ,CAAC,CAAA;AACxB,IAAA,IAAI,OAAO,GAAA,KAAQ,MAAA,EAAQ,OAAO,MAAA,CAAO,OAAO,cAAA,CAAe,cAAA;AAAA,EACjE;AACA,EAAA,OAAO,EAAC;AACV,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,wBAAA,GAA2B,SAAS,SAAA,EAAW;AACpE,EAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,EAAA,IAAI,CAAC,MAAA,CAAO,IAAA,EAAM,OAAO,EAAC;AAC1B,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,IAAA,CAAK,+BAAA,EAAgC;AAC5D,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA;AACtC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,MAAA,GAAS,QAAQ,CAAC,CAAA;AACxB,IAAA,IAAI,MAAA,CAAO,GAAA,KAAQ,SAAA,IAAa,MAAA,CAAO,OAAO,cAAA,EAAgB;AAC5D,MAAA,OAAO,MAAA,CAAO,OAAO,cAAA,CAAe,cAAA;AAAA,IACtC,CAAA,MAAO;AACL,MAAA,IAAI,iBAAiB,MAAA,CAAO,cAAA;AAC5B,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,QAAQ,CAAA,EAAA,EAAK;AAC9C,UAAA,MAAM,aAAA,GAAgB,eAAe,CAAC,CAAA;AACtC,UAAA,IAAI,aAAA,CAAc,QAAQ,SAAA,EAAW;AACnC,YAAA,IAAI,UAAU,aAAA,CAAc,OAAA;AAC5B,YAAA,OAAO,OAAA,CAAQ,cAAA;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,KAAK,+BAAA,EAAgC;AAC9C,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,iBAAA,GAAoB,SAAS,QAAA,EAAU,SAAA,EAAW;AACvE,EAAA,IAAI,OAAO,EAAC;AACZ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAC,CAAA,CAAE,GAAA;AACxB,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA;AAC5B,IAAA,IAAA,CAAK,GAAG,CAAA,GAAI,OAAA;AAAA,EACd;AACA,EAAA,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,CAAE,IAAA,GAAO,IAAA;AAClC,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,iBAAA,GAAoB,SAAS,SAAA,EAAW;AAC7D,EAAA,IAAI,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA;AACtC,EAAA,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,KAAK,QAAA,EAAU,SAAS,GAAG,OAAO,QAAA;AAC3E,EAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,wBAAA,CAAyB,SAAS,CAAA;AAC/D,EAAA,IAAI,CAAC,iBAAiB,OAAO,IAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA;AAC9B,EAAA,QAAA,GAAW,gBAAgB,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC9D,EAAA,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,GAAI,QAAA;AAC3B,EAAA,IAAA,CAAK,iBAAA,CAAkB,UAAU,SAAS,CAAA;AAC1C,EAAA,OAAO,QAAA;AACT,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,mBAAA,GAAsB,SAAS,WAAA,EAAa,QAAA,EAAU;AAC3E,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,UAAA,CAAW,QAAA,EAAS;AACnD,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,WAAA,CAAY,QAAA,EAAS;AAClD,EAAA,OAAO,UAAA,GAAa,WAAA;AACtB,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,eAAA,GAAkB,SAAS,WAAA,EAAa,QAAA,EAAU;AACvE,EAAA,IAAI,gBAAA,GAAmB,IAAA,CAAK,mBAAA,CAAoB,WAAA,EAAa,QAAQ,CAAA;AACrE,EAAA,QAAQ,gBAAA;AAAkB,IACxB,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,eAAe,yBAAA,CAA0B,KAAA;AAAA,QAC/C,IAAA;AAAA,QACA,CAAC,YAAY,QAAQ;AAAA,OACvB;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,eAAe,yBAAA,CAA0B,KAAA;AAAA,QAC/C,IAAA;AAAA,QACA,CAAC,YAAY,QAAQ;AAAA,OACvB;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,kBAAkB,2BAAA,CAA4B,KAAA;AAAA,QACpD,IAAA;AAAA,QACA,CAAC,eAAe,QAAQ;AAAA,OAC1B;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,kBAAkB,2BAAA,CAA4B,KAAA;AAAA,QACpD,IAAA;AAAA,QACA,CAAC,eAAe,QAAQ;AAAA,OAC1B;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,eAAe,gCAAA,CAAiC,KAAA;AAAA,QACtD,IAAA;AAAA,QACA,CAAC,YAAY,QAAQ;AAAA,OACvB;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,kBAAkB,0BAAA,CAA2B,KAAA;AAAA,QACnD,IAAA;AAAA,QACA,CAAC,eAAe,QAAQ;AAAA,OAC1B;AAAA,IACF,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,kBAAkB,0BAAA,CAA2B,KAAA;AAAA,QACnD,IAAA;AAAA,QACA,CAAC,eAAe,QAAQ;AAAA,OAC1B;AAAA,IACF;AACE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,sBAAsB,gBAAgB,CAAA,aAAA,EAAgB,YAAY,UAAU,CAAA,gBAAA,EAAmB,SAAS,WAAW,CAAA,qBAAA;AAAA,OACrH;AAAA;AAEN,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,aAAA,GAAgB,SAAS,KAAA,EAAO;AACrD,EAAA,IAAI,gBAAgB,KAAA,CAAM,aAAA;AAC1B,EAAA,IAAI,eAAe,aAAA,CAAc,KAAA;AACjC,EAAA,MAAM,OAAA,GAAU,KAAK,UAAA,CAAW;AAAA,IAC9B,KAAK,KAAA,CAAM,GAAA;AAAA,IACX,QAAQ,KAAA,CAAM;AAAA,GACf,CAAA;AACD,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,IAAI,KAAA;AAAA,IACvB,CAAA,MAAA,EAAA,CAAU,KAAK,IAAA,CAAK,KAAA,CAAM,WAAW,IAAA,CAAK,IAAA,CAAK,MAAM,OAAA,IAAW,IAAA,CAAK,KAAK,KAAA,CAAM,SAAA,EAAW,SAAS,EAAE,CAAA,2BAAA,EAA8B,MAAM,GAAG,CAAA,cAAA,EAAiB,MAAM,MAAM,CAAA,EAAA;AAAA,GAC5K;AACA,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAA;AAC9C,EAAA,MAAM,aAAA,GAAgB,EAAC,CAAE,MAAA,CAAO,cAAc,OAAO,CAAA;AACrD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,WAAA,GAAc,QAAQ,CAAC,CAAA;AAC7B,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,kBAAA,CAAmB,WAAW,CAAA;AACrD,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,MAAA,IAAI,QAAA,GAAW,UAAU,CAAC,CAAA;AAC1B,MAAA,IAAI,SAAA,GAAY,IAAA,CAAK,mBAAA,CAAoB,WAAA,EAAa,QAAQ,CAAA;AAC9D,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,cAAc,IAAA,EAAM;AACtB,QAAA,SAAA,GAAY,IAAA,CAAK,mBAAA,CAAoB,QAAA,EAAU,QAAA,CAAS,SAAS,CAAA;AACjE,QAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,QAAA,EAAU,QAAA,CAAS,SAAS,CAAA;AAC1D,QAAA,QAAA,GAAW,QAAA,CAAS,SAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,WAAA,EAAa,QAAQ,CAAA;AAAA,MACrD;AACA,MAAA,IAAI,YAAA;AACJ,MAAA,QAAQ,SAAA;AAAW,QACjB,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,MAAA,CAAO,cAAc,OAAO,CAAA;AAC3C,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,EAAA;AAAA,cACJ,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,MAAA,CAAO,cAAc,OAAO,CAAA;AAC3C,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,EAAA;AAAA,cACJ,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,OAAO,aAAa,CAAA;AACnC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,IAAK,aAAa,MAAA,EAAQ;AACtD,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,EAAA;AAAA,cACJ,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,OAAO,aAAa,CAAA;AACnC,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,EAAA;AAAA,cACJ,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,MAAA,CAAO,cAAc,OAAO,CAAA;AAC3C,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,EAAA;AAAA,cACJ,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AACH,UAAA,YAAA,GAAe,OAAO,aAAa,CAAA;AACnC,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,IAAK,aAAa,MAAA,EAAQ;AACtD,YAAA,aAAA,CAAc,MAAA,CAAO,YAAA,EAAc,CAAA,EAAG,IAAI,kBAAA,CAAmB;AAAA,cAC3D,EAAA,EAAI,SAAS,SAAS,CAAA;AAAA,cACtB,KAAK,KAAA,CAAM,GAAA;AAAA,cACX;AAAA,aACD,CAAC,CAAA;AAAA,UACJ;AACA,UAAA;AAAA;AAEJ,MAAA,aAAA,GAAgB,IAAI,aAAA,CAAc,aAAA,EAAe,YAAY,CAAA;AAC7D,MAAA,IAAI,MAAM,OAAA,CAAQ,YAAY,CAAA,IAAK,CAAC,aAAa,MAAA,EAAQ;AACzD,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB;AAAA,EACF;AACA,EAAA,OAAO,aAAA,CAAc,SAAS,aAAA,GAAgB,IAAA;AAChD,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,QAAA,GAAW,SAAS,KAAA,EAAO;AAChD,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA;AAC1B,EAAA,IAAA,CAAK,iBAAA,CAAkB,MAAM,MAAM,CAAA;AACnC,EAAA,MAAM,eAAA,GAAkB,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,QAAA,EAAU,MAAM,MAAM,CAAA;AACxF,EAAA,IAAI,CAAC,KAAA,CAAM,GAAA,EAAK,OAAO,eAAA;AACvB,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,CAAQ,GAAA,KAAQ,KAAA,CAAM,GAAG,CAAA;AAChG,EAAA,OAAO,eAAA,IAAmB,gBAAA;AAC5B,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,kBAAA,GAAqB,SAAS,WAAA,EAAa;AAChE,EAAA,OAAO,YAAY,SAAA,IAAa,IAAA;AAClC,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,gBAAA,GAAmB,SAAS,KAAA,EAAO;AACxD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA;AACtC,EAAA,OAAO,OAAA,CAAQ,KAAK,CAAA,IAAK,IAAA;AAC3B,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,iBAAA,GAAoB,SAAS,OAAA,EAAS;AAC3D,EAAA,OAAO,QAAQ,iBAAA,CAAkB,GAAA,CAAI,KAAK,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAC,CAAA;AACvE,CAAA;AACA,YAAA,CAAa,SAAA,CAAU,UAAA,GAAa,SAAS,UAAA,CAAW,KAAA,EAAO;AAC7D,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,EAAE,MAAM,mBAAA,EAAoB;AACnD,EAAA,IAAI,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,QAAA,EAAU,KAAA,CAAM,MAAM,CAAA,EAAG;AACtE,IAAA,IAAA,CAAK,iBAAA,CAAkB,MAAM,MAAM,CAAA;AAAA,EACrC;AACA,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA;AACjD,EAAA,IAAI,CAAC,gBAAgB,OAAO,EAAE,MAAM,CAAA,sBAAA,EAAyB,KAAA,CAAM,MAAM,CAAA,CAAA,EAAG;AAC5E,EAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,KAAA,CAAM,GAAG,GAAG,OAAO,IAAA;AAC5C,EAAA,OAAO,KAAK,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,CAAE,IAAA,CAAK,MAAM,GAAG,CAAA;AACnD,CAAA;AACA,IAAI,oBAAA,GAAuB,YAAA;AAG3B,SAAS,qBAAqB,aAAA,EAAe;AAC3C,EAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACrC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA,IAAQ,YAAA,CAAa,IAAI,CAAA;AAAA,IACtC,CAAC,YAAA,CAAa,QAAQ,CAAA,IAAK,aAAa,IAAI;AAAA;AAEhD;AACA,SAAS,mBAAmB,aAAA,EAAe;AACzC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA;AAAA,IACb,CAAC,aAAa,QAAQ;AAAA;AAE1B;AACA,IAAI,kBAAA,GAAqB;AAAA,EACvB,UAAA,EAAY,oBAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,yBAAyB,aAAA,EAAe;AAC/C,EAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACrC,EAAA;AAAA;AAAA,IAAA,CAEG,YAAA,CAAa,IAAI,CAAA,IAAK,oBAAA,CAAqB,IAAI,CAAA,KAAM,CAAC,aAAa,QAAQ;AAAA;AAEhF;AACA,SAAS,uBAAuB,aAAA,EAAe;AAC7C,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,QAAA,KAAa,IAAA;AAChB,MAAA,OAAO,IAAA;AAAA,IACT,MAAM,CAAC,YAAA,CAAa,QAAQ,KAAK,CAAC,oBAAA,CAAqB,QAAQ,CAAA,GAAI;AACjE,MAAA,MAAM,gBAAA,GAAmB,aAAa,QAAQ,CAAA;AAC9C,MAAA,IAAI,CAAC,kBAAkB,OAAO,IAAA;AAC9B,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,QAAA,eAAA,GAAkB,cAAc,SAAA,CAAU,IAAA;AAAA,UACxC,CAAC,CAAA,KAAM,YAAA,CAAa,CAAC,CAAA,IAAK,qBAAqB,CAAC;AAAA,SAClD;AACA,QAAA,IAAI,CAAC,iBAAiB,OAAO,IAAA;AAAA,MAC/B;AACA,MAAA;AAAA,IACF;AAAA,IACA;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AACA,IAAI,sBAAA,GAAyB;AAAA,EAC3B,UAAA,EAAY,wBAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,0BAAA,CAA2B,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO;AACzD,EAAA,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,OAAO,YAAY,CAAA;AACxD;AACA,SAAS,0BAAA,CAA2B,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO;AACzD,EAAA,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,OAAO,YAAY,CAAA;AACxD;AACA,SAAS,4BAAA,CAA6B,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO;AAC3D,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AACnD,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,YAAA,CAAa,CAAC,CAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MACrC,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,QAAA,CAAS,WAAW,IAAI,CAAA;AAAA,MAChC;AACA,MAAA;AAAA,IACF;AACA,IAAA,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA;AAAA,EAClC;AACF;AACA,SAAS,4BAAA,CAA6B,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO;AAC3D,EAAA,IAAI,KAAA,GAAQ,OAAO,KAAK,CAAA;AACxB,EAAA,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,aAAa,QAAQ,CAAA;AACvD,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,YAAA,CAAa,UAAA,CAAW,MAAA;AAClD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACnC,IAAA,KAAA,GAAQ,MAAA,CAAO,KAAA,GAAQ,CAAA,GAAI,CAAC,CAAA;AAC5B,IAAA,KAAA,CAAM,QAAA,CAAS,WAAW,IAAI,CAAA;AAAA,EAChC;AACF;AACA,IAAI,aAAA,GAAgB;AAAA,EAClB,EAAA,EAAI,0BAAA;AAAA,EACJ,EAAA,EAAI,0BAAA;AAAA,EACJ,EAAA,EAAI,4BAAA;AAAA,EACJ,EAAA,EAAI,4BAAA;AAAA,EACJ,EAAA,EAAI,4BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AACA,SAAS,iBAAA,CAAkB,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO;AAChD,EAAA,IAAI,MAAA,YAAkB,kBAAA,IAAsB,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAG;AACpE,IAAA,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,CAAE,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,EAChD;AACF;AACA,IAAI,yBAAA,GAA4B,iBAAA;AAGhC,SAAS,gBAAgB,iBAAA,EAAmB;AAC1C,EAAA,IAAI,SAAA,GAAY,EAAC,CAAE,MAAA,CAAO,kBAAkB,SAAS,CAAA;AACrD,EAAA,KAAA,IAAS,IAAI,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC9C,IAAA,MAAM,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,IAAA,MAAM,QAAA,GAAW,qBAAqB,QAAQ,CAAA;AAC9C,IAAA,MAAM,QAAA,GAAW,qBAAqB,QAAQ,CAAA;AAC9C,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU,OAAO,IAAA;AACnC,IAAA,IAAI,UAAU,OAAO,KAAA;AAAA,EACvB;AACA,EAAA,OAAO,KAAA;AACT;AACA,SAAS,gBAAgB,iBAAA,EAAmB;AAC1C,EAAA,IAAI,oBAAA,CAAqB,iBAAA,CAAkB,OAAO,CAAA,EAAG,OAAO,KAAA;AAC5D,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,iBAAA,CAAkB,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC3D,IAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,SAAA,CAAU,CAAC,CAAA;AAC9C,IAAA,MAAM,QAAA,GAAW,qBAAqB,QAAQ,CAAA;AAC9C,IAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AAAA,EACxB;AACA,EAAA,OAAO,KAAA;AACT;AACA,SAAS,wBAAwB,KAAA,EAAO;AACtC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAClD,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACzB,EAAA,IAAI,gBAAgB,IAAI,aAAA;AAAA,IACtB,MAAA,CAAO,GAAA;AAAA,MACL,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,CAAS,YAAY;AAAA,KACxC;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,oBAAoB,IAAI,aAAA;AAAA,IAC5B,MAAA,CAAO,GAAA;AAAA,MACL,CAAC,UAAU,KAAA,CAAM;AAAA,KACnB;AAAA,IACA;AAAA,GACF;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,IAAI,oBAAA,CAAqB,KAAA,CAAM,IAAI,CAAA,EAAG;AACtC,IAAA,aAAA,CAAc,gBAAgB,CAAC,CAAA;AAC/B,IAAA,iBAAA,CAAkB,gBAAgB,CAAC,CAAA;AACnC,IAAA,IAAI,OAAA,GAAU,CAAA;AACd,IAAA,IAAI,eAAA,CAAgB,iBAAiB,CAAA,EAAG,OAAA,IAAW,CAAA;AACnD,IAAA,IAAI,eAAA,CAAgB,iBAAiB,CAAA,EAAG,OAAA,IAAW,CAAA;AACnD,IAAA,IAAI,GAAA;AACJ,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,CAAA;AACH,QAAA,GAAA,GAAM,MAAA;AACN,QAAA;AAAA,MACF,KAAK,CAAA;AACH,QAAA,GAAA,GAAM,MAAA;AACN,QAAA;AAAA,MACF,KAAK,CAAA;AACH,QAAA,GAAA,GAAM,MAAA;AACN,QAAA;AAAA;AAEJ,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AAC9B,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,yBAAyB,KAAA,EAAO;AAClC,MAAA,OAAA,CAAQ,IAAA,CAAK,cAAc,OAAO,CAAA;AAClC,MAAA;AAAA,IACF;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,MAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,MAAA,IAAI,kBAAkB,kBAAA,EAAoB;AACxC,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAC3C,QAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA,CAAO,YAAA;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACF;AACA,IAAI,+BAAA,GAAkC,uBAAA;AAGtC,SAAS,gBAAA,CAAiB,QAAQ,KAAA,EAAO;AACvC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAkB,CAAC,CAAA;AAC9C;AACA,SAAS,wBAAwB,KAAA,EAAO;AACtC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,iBAAiB,MAAM,CAAA;AAC3C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA,EAAK,MAAA;AAAA,MACL,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,iBAAiB,MAAM,CAAA;AAAA,IACzC;AAAA,EACF;AACF;AACA,IAAI,+BAAA,GAAkC,uBAAA;AAGtC,SAAS,0BAA0B,aAAA,EAAe;AAChD,EAAA,OAAO,aAAA,CAAc,KAAA,KAAU,CAAA,IAAK,aAAA,CAAc,QAAQ,MAAA,GAAS,CAAA;AACrE;AACA,SAAS,wBAAwB,aAAA,EAAe;AAC9C,EAAA,OAAO,aAAA,CAAc,KAAA,KAAU,aAAA,CAAc,OAAA,CAAQ,MAAA,GAAS,CAAA;AAChE;AACA,IAAI,uBAAA,GAA0B;AAAA,EAC5B,UAAA,EAAY,yBAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,iBAAA,CAAkB,QAAQ,KAAA,EAAO;AACxC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAkB,CAAC,CAAA;AAC9C;AACA,SAAS,yBAAyB,KAAA,EAAO;AACvC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,MAAM,GAAA,GAAM,MAAA;AACZ,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,kBAAkB,MAAM,CAAA;AAC5C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,IAAI,CAAC,KAAK,KAAA,CAAM,UAAA,CAAW,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAA,EAAe,CAAA,EAAG;AAC1D,MAAA;AAAA,IACF;AACA,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,kBAAkB,MAAM,CAAA;AAAA,IAC1C;AAAA,EACF;AACF;AACA,IAAI,gCAAA,GAAmC,wBAAA;AAGvC,SAAS,oBAAoB,aAAA,EAAe;AAC1C,EAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACrC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA,IAAQ,WAAA,CAAY,IAAI,CAAA;AAAA,IACrC,CAAC,WAAA,CAAY,QAAQ,CAAA,IAAK,YAAY,IAAI;AAAA;AAE9C;AACA,SAAS,kBAAkB,aAAA,EAAe;AACxC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA;AAAA,IACb,CAAC,YAAY,QAAQ;AAAA;AAEzB;AACA,IAAI,iBAAA,GAAoB;AAAA,EACtB,UAAA,EAAY,mBAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,iBAAA,CAAkB,QAAQ,KAAA,EAAO;AACxC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAkB,CAAC,CAAA;AAC9C;AACA,SAAS,cAAc,KAAA,EAAO;AAC5B,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,kBAAkB,MAAM,CAAA;AAC5C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA,EAAK,MAAA;AAAA,MACL,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,kBAAkB,MAAM,CAAA;AAAA,IAC1C;AAAA,EACF;AACF;AACA,IAAI,sBAAA,GAAyB,aAAA;AAG7B,SAAS,mBAAmB,aAAA,EAAe;AACzC,EAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACrC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA,IAAQ,UAAA,CAAW,IAAI,CAAA;AAAA,IACpC,CAAC,UAAA,CAAW,QAAQ,CAAA,IAAK,WAAW,IAAI;AAAA;AAE5C;AACA,SAAS,iBAAiB,aAAA,EAAe;AACvC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA;AAAA;AAAA,IAEE,QAAA,KAAa,IAAA;AAAA,IACb,CAAC,WAAW,QAAQ;AAAA;AAExB;AACA,IAAI,gBAAA,GAAmB;AAAA,EACrB,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,iBAAA,CAAkB,QAAQ,KAAA,EAAO;AACxC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAC9C;AACA,SAAS,qBAAqB,KAAA,EAAO;AACnC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,iBAAA,CAAkB,MAAA,EAAQ,CAAC,CAAA;AAC/C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA,EAAK,MAAA;AAAA,MACL,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,iBAAA,CAAkB,QAAQ,KAAK,CAAA;AAAA,IACjD;AAAA,EACF;AACF;AACA,IAAI,4BAAA,GAA+B,oBAAA;AAGnC,SAAS,iBAAA,CAAkB,QAAQ,KAAA,EAAO;AACxC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAC9C;AACA,SAAS,cAAc,KAAA,EAAO;AAC5B,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,iBAAA,CAAkB,MAAA,EAAQ,CAAC,CAAA;AAC/C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA,EAAK,MAAA;AAAA,MACL,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,iBAAA,CAAkB,QAAQ,KAAK,CAAA;AAAA,IACjD;AAAA,EACF;AACF;AACA,IAAI,qBAAA,GAAwB,aAAA;AAG5B,SAAS,iBAAA,CAAkB,QAAQ,KAAA,EAAO;AACxC,EAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,KAAK,CAAA;AAC7D,EAAA,OAAO,IAAI,aAAA,CAAc,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAC9C;AACA,SAAS,sBAAsB,KAAA,EAAO;AACpC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAChD,EAAA,IAAI,aAAA,GAAgB,iBAAA,CAAkB,MAAA,EAAQ,CAAC,CAAA;AAC/C,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,aAAA,CAAc,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACjE,IAAA,aAAA,CAAc,gBAAgB,KAAK,CAAA;AACnC,IAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc;AAAA,MAC3C,GAAA,EAAK,MAAA;AAAA,MACL,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,MAAA,GAAS,cAAc,CAAC,CAAA;AAC9B,QAAA,yBAAA,CAA0B,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,aAAA,GAAgB,iBAAA,CAAkB,QAAQ,KAAK,CAAA;AAAA,IACjD;AAAA,EACF;AACF;AACA,IAAI,6BAAA,GAAgC,qBAAA;AAGpC,SAAS,4BAA4B,IAAA,EAAM;AACzC,EAAA,IAAI,IAAA,KAAS,MAAM,OAAO,KAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA;AACnC,EAAA;AAAA;AAAA,IAEE,QAAA,IAAY,QAAQ,QAAA,IAAY,IAAA;AAAA,IAChC,QAAA,IAAY,SAAS,QAAA,IAAY,KAAA;AAAA,IACjC,QAAA,IAAY,UAAU,QAAA,IAAY;AAAA;AAEtC;AACA,SAAS,mCAAmC,aAAA,EAAe;AACzD,EAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA,OAAO,aAAa,IAAA,IAAQ,2BAAA,CAA4B,IAAI,CAAA,IAAK,4BAA4B,QAAQ,CAAA;AACvG;AACA,SAAS,iCAAiC,aAAA,EAAe;AACvD,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,EAAA,OAAO,QAAA,KAAa,IAAA,IAAQ,CAAC,2BAAA,CAA4B,QAAQ,CAAA;AACnE;AACA,IAAI,8BAAA,GAAiC;AAAA,EACnC,UAAA,EAAY,kCAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAGA,SAAS,yBAAyB,KAAA,EAAO;AACvC,EAAA,MAAM,IAAA,GAAO,KAAK,KAAA,CAAM,IAAA;AACxB,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AAClD,EAAA,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,SAAA,EAAW,IAAI,CAAA;AAClC,EAAA,IAAI,KAAK,MAAA,CAAO,IAAA,IAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,eAAA,EAAiB;AACxD,IAAA,MAAM,gBAAgB,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,CAAK,YAAY,CAAC,CAAA;AAClD,IAAA,MAAM,cAAc,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,CAAK,YAAY,CAAC,CAAA;AAChD,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,gBAAgB,WAAW,CAAA;AACnE,IAAA,IAAI,mBAAmB,MAAA,EAAQ;AAC7B,MAAA,IAAI,eAAe,aAAA,EAAe;AAChC,QAAA,MAAM,QAAA,GAAW,eAAe,aAAA,CAAc,WAAA;AAC9C,QAAA,IAAI,QAAA,CAAS,aAAa,CAAA,EAAG;AAC3B,UAAA,MAAM,kBAAA,GAAqB,QAAA,CAAS,aAAa,CAAA,CAAE,OAAA;AACnD,UAAA,IAAI,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,kBAAkB,MAAM,MAAA,EAAQ;AACrD,YAAA,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,YAAA,EAAc,kBAAkB,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AACA,IAAI,0BAAA,GAA6B,wBAAA;AAGjC,SAAS,KAAK,OAAA,EAAS;AACrB,EAAA,IAAA,CAAK,UAAU,OAAA,IAAW,KAAA;AAC1B,EAAA,IAAA,CAAK,SAAA,GAAY,IAAI,iBAAA,EAAkB;AACvC,EAAA,IAAA,CAAK,eAAe,EAAC;AACvB;AACA,IAAA,CAAK,SAAA,CAAU,OAAA,GAAU,SAAS,IAAA,EAAM;AACtC,EAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACd,CAAA;AACA,IAAA,CAAK,UAAU,aAAA,GAAgB;AAAA,EAC7B,oBAAA,EAAsB,uBAAA;AAAA,EACtB,cAAA,EAAgB,iBAAA;AAAA,EAChB,eAAA,EAAiB,kBAAA;AAAA,EACjB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,aAAA,EAAe,gBAAA;AAAA,EACf,6BAAA,EAA+B;AACjC,CAAA;AACA,SAAS,uBAAuB,OAAA,EAAS;AACvC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,CAAA,EAAG,OAAO,CAAA,KAAA,CAAO,CAAA;AAClD,EAAA,OAAO,KAAK,SAAA,CAAU,sBAAA;AAAA,IACpB,OAAA;AAAA,IACA,KAAA,CAAM,UAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACR;AACF;AACA,SAAS,YAAA,GAAe;AACtB,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,iBAAiB,CAAA;AACnD,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,WAAW,CAAA;AAC7C,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,YAAY,CAAA;AAC9C,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,gBAAgB,CAAA;AAClD,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,UAAU,CAAA;AAC5C,EAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,0BAA0B,CAAA;AAC5D,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAC1C;AACA,SAAS,sBAAA,GAAyB;AAChC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,gBAAgB,CAAA;AAC/D,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,IAAI,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAA;AACrD,IAAA,IAAA,CAAK,SAAA,CAAU,YAAA;AAAA,MACb,KAAA,CAAM,UAAA;AAAA,MACN,KAAA,CAAM,SAAA;AAAA,MACN,YAAY,OAAA;AAAQ,KACtB;AAAA,EACF;AACF;AACA,IAAA,CAAK,SAAA,CAAU,gBAAA,GAAmB,SAAS,MAAA,EAAQ,IAAA,EAAM;AACvD,EAAA,MAAM,gBAAgB,IAAA,CAAK,MAAA;AAAA,IACzB,CAAC,QAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,EAAE,MAAA,EAAQ,KAAK;AAAA,GAC9C;AACA,EAAA,IAAI,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,YAAA,EAAc,MAAM,CAAA,EAAG;AACpE,IAAA,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,GAAI,aAAA;AAAA,EAC9B,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,GAAI,IAAA,CAAK,aAAa,MAAM,CAAA,CAAE,OAAO,aAAa,CAAA;AAAA,EAC5E;AACF,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,aAAA,GAAgB,SAAS,IAAA,EAAM,QAAA,EAAU;AACtD,EAAA,IAAI,CAAC,IAAA,EAAM,MAAM,IAAI,KAAA;AAAA,IACnB;AAAA,GACF;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,KAAA,OAAY,KAAA,GAAQ,IAAI,qBAAqB,IAAI,CAAA;AAC3D,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,OAAA,GAAU,SAAS,CAAC,CAAA;AAC1B,IAAA,IAAI,CAAC,KAAK,KAAA,CAAM,QAAA,CAAS,EAAE,MAAA,EAAQ,OAAA,CAAQ,MAAA,EAAQ,CAAA,EAAG;AACtD,IAAA,IAAA,CAAK,gBAAA,CAAiB,OAAA,CAAQ,MAAA,EAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,EACpD;AACF,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,gBAAA,GAAmB,SAAS,UAAA,EAAY,WAAW,QAAA,EAAU;AAC1E,EAAA,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,UAAA,EAAY,SAAA,EAAW,QAAQ,CAAA;AACjE,CAAA;AACA,SAAS,qBAAA,GAAwB;AAC/B,EAAA,IAAI,KAAK,SAAA,CAAU,mBAAA,CAAoB,OAAA,CAAQ,YAAY,MAAM,EAAA,EAAI;AACnE,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACF;AACA,SAAS,4BAAA,GAA+B;AACtC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,IAAI,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,YAAA,EAAc,MAAM,CAAA,EAAG;AACtE,EAAA,qBAAA,CAAsB,KAAK,IAAI,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,YAAY,CAAA;AAC3D,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,+BAAA,CAAgC,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EAClD;AACF;AACA,SAAS,oBAAA,GAAuB;AAC9B,EAAA,qBAAA,CAAsB,KAAK,IAAI,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,iBAAiB,CAAA;AAChE,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,gCAAA,CAAiC,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACnD;AACF;AACA,SAAS,2BAAA,GAA8B;AACrC,EAAA,IAAI,CAAC,IAAA,CAAK,iBAAA,CAAkB,MAAA,EAAQ,MAAM,CAAA,EAAG;AAC7C,EAAA,qBAAA,CAAsB,KAAK,IAAI,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,YAAY,CAAA;AAC3D,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,+BAAA,CAAgC,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EAClD;AACF;AACA,SAAS,mBAAA,GAAsB;AAC7B,EAAA,IAAI,CAAC,IAAA,CAAK,iBAAA,CAAkB,MAAA,EAAQ,MAAM,CAAA,EAAG;AAC7C,EAAA,qBAAA,CAAsB,KAAK,IAAI,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,WAAW,CAAA;AAC1D,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,sBAAA,CAAuB,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACzC;AACF;AACA,SAAS,8BAAA,GAAiC;AACxC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,0BAA0B,CAAA;AACzE,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,0BAAA,CAA2B,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EAC7C;AACF;AACA,SAAS,iBAAA,GAAoB;AAC3B,EAAA,qBAAA,CAAsB,KAAK,IAAI,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,UAAU,CAAA;AACzD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,IAAI,IAAA,CAAK,kBAAkB,MAAA,EAAQ,MAAM,GAAG,qBAAA,CAAsB,IAAA,CAAK,MAAM,KAAK,CAAA;AAClF,IAAA,IAAI,IAAA,CAAK,kBAAkB,MAAA,EAAQ,MAAM,GAAG,6BAAA,CAA8B,IAAA,CAAK,MAAM,KAAK,CAAA;AAC1F,IAAA,IAAI,IAAA,CAAK,kBAAkB,MAAA,EAAQ,MAAM,GAAG,4BAAA,CAA6B,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EAC3F;AACF;AACA,IAAA,CAAK,SAAA,CAAU,iBAAA,GAAoB,SAAS,SAAA,EAAW;AACrD,EAAA,OAAO,CAAC,CAAC,IAAA,CAAK,SAAA,CAAU,WAAW,SAAS,CAAA;AAC9C,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,0BAA0B,WAAW;AAClD,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,iBAAiB,CAAA,EAAG;AAC7C,IAAA,oBAAA,CAAqB,KAAK,IAAI,CAAA;AAAA,EAChC;AACA,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,YAAY,CAAA,EAAG;AACxC,IAAA,4BAAA,CAA6B,KAAK,IAAI,CAAA;AACtC,IAAA,2BAAA,CAA4B,KAAK,IAAI,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,WAAW,CAAA,EAAG;AACvC,IAAA,mBAAA,CAAoB,KAAK,IAAI,CAAA;AAAA,EAC/B;AACA,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,gBAAgB,CAAA,EAAG;AAC5C,IAAA,sBAAA,CAAuB,KAAK,IAAI,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,UAAU,CAAA,EAAG;AACtC,IAAA,iBAAA,CAAkB,KAAK,IAAI,CAAA;AAAA,EAC7B;AACA,EAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,0BAA0B,CAAA,EAAG;AACtD,IAAA,8BAAA,CAA+B,KAAK,IAAI,CAAA;AAAA,EAC1C;AACF,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,iBAAA,GAAoB,SAAS,MAAA,EAAQ,GAAA,EAAK;AACvD,EAAA,OAAA,CAAQ,IAAA,CAAK,aAAa,MAAM,CAAA,IAAK,EAAC,EAAG,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA;AAC5D,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAA,GAAc,SAAS,IAAA,EAAM;AAC1C,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,SAAS,IAAA,EAAM;AACpC,IAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AACjB,IAAA,YAAA,CAAa,KAAK,IAAI,CAAA;AACtB,IAAA,IAAA,CAAK,uBAAA,EAAwB;AAAA,EAC/B;AACF,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAA,GAAc,SAAS,IAAA,EAAM;AAC1C,EAAA,IAAA,CAAK,YAAY,IAAI,CAAA;AACrB,EAAA,OAAO,IAAA,CAAK,UAAU,OAAA,EAAQ;AAChC,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,aAAA,GAAgB,SAAS,IAAA,EAAM;AAC5C,EAAA,IAAA,CAAK,YAAY,IAAI,CAAA;AACrB,EAAA,IAAI,UAAU,EAAC;AACf,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACrD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA;AACrC,IAAA,IAAI,KAAA,CAAM,MAAM,OAAA,EAAS;AACzB,IAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,CAAY,KAAA;AAChC,IAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,OAAA,CAAQ,KAAK,IAAI,KAAA,CAAM,CAAC,IAAI,KAAK,CAAA;AAAA,EACtD;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AACA,IAAI,YAAA,GAAe,IAAA;AAGnB,SAAS,uBAAuB,OAAA,EAAS;AACvC,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,EAAE,EAAA,EAAI,OAAA,CAAQ,cAAc,GAAA,EAAI;AAAA,IAC5C,aAAA,EAAe,EAAE,EAAA,EAAI,OAAA,CAAQ,aAAa,GAAA,EAAI;AAAA,IAC9C,QAAA,EAAU,EAAE,EAAA,EAAI,OAAA,CAAQ,YAAY,OAAA,CAAQ,UAAA,GAAa,GAAA,GAAM,OAAA,CAAQ,SAAA,EAAU;AAAA;AAAA,IAEjF,cAAA,EAAgB,EAAE,EAAA,EAAI,OAAA,CAAQ,cAAA,IAAA,CAAmB,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,EAAE;AAAA,IAC5G,QAAA,EAAU,EAAE,EAAA,EAAI,OAAA,CAAQ,YAAY,GAAA,EAAI;AAAA,IACxC,WAAA,EAAa,EAAE,EAAA,EAAI,OAAA,CAAQ,eAAe,GAAA,EAAI;AAAA,IAC9C,YAAA,EAAc,EAAE,EAAA,EAAI,OAAA,CAAQ,gBAAgB,GAAA,EAAI;AAAA,IAChD,eAAA,EAAiB,EAAE,EAAA,EAAI,OAAA,CAAQ,mBAAmB,GAAA,EAAI;AAAA,IACtD,OAAA,EAAS,EAAE,EAAA,EAAI,OAAA,CAAQ,WAAW,GAAA,EAAI;AAAA,IACtC,UAAA,EAAY,EAAE,EAAA,EAAI,OAAA,CAAQ,cAAc,GAAA,EAAI;AAAA,IAC5C,OAAA,EAAS,EAAE,EAAA,EAAI,OAAA,CAAQ,WAAW,aAAA,EAAc;AAAA,IAChD,WAAA,EAAa,EAAE,EAAA,EAAI,OAAA,CAAQ,eAAe,GAAA,EAAI;AAAA,IAC9C,SAAA,EAAW,EAAE,EAAA,EAAI,OAAA,CAAQ,aAAa,GAAA,EAAI;AAAA,IAC1C,SAAA,EAAW,EAAE,EAAA,EAAI,OAAA,CAAQ,aAAa,GAAA;AAAI,GAC5C;AACF;AACA,SAAS,KAAK,OAAA,EAAS;AACrB,EAAA,OAAA,GAAU,WAAW,EAAC;AACtB,EAAA,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,EAAC;AACpC,EAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,IAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,EAAY,MAAM,IAAI,MAAM,0DAA0D,CAAA;AACnG,IAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,EAAW,MAAM,IAAI,MAAM,yDAAyD,CAAA;AACjG,IAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,EAAY,MAAM,IAAI,MAAM,0DAA0D,CAAA;AACnG,IAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,EAAU,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAC/F,IAAA,IAAI,QAAQ,SAAA,GAAY,CAAA,EAAG,MAAM,IAAI,MAAM,wEAAwE,CAAA;AACnH,IAAA,IAAA,CAAK,QAAQ,EAAC;AACd,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,sBAAA,CAAuB,OAAO,CAAA;AACnD,IAAA,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,sBAAA,CAAuB,OAAO,CAAA;AACrD,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,sBAAA,CAAuB,OAAO,CAAA;AACnD,IAAA,IAAA,CAAK,UAAA,GAAa,QAAQ,UAAA,IAAc,GAAA;AACxC,IAAA,IAAA,CAAK,WAAW,OAAA,CAAQ,QAAA;AACxB,IAAA,IAAA,CAAK,YAAY,OAAA,CAAQ,SAAA;AACzB,IAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,gBAAA;AAChC,IAAA,IAAA,CAAK,WAAA,GAAc,QAAQ,WAAA,IAAe,CAAA;AAC1C,IAAA,IAAA,CAAK,WAAA,GAAc,QAAQ,WAAA,IAAe,CAAA;AAC1C,IAAA,IAAI,SAAA,GAAY,CAAA;AAChB,IAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,MAAA,SAAA,GAAY,OAAA,CAAQ,WAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AACxB,QAAA,SAAA,IAAa,KAAK,iBAAA,CAAkB,MAAA;AAAA,MACtC,CAAA,MAAA,IAAW,IAAA,CAAK,WAAA,GAAc,CAAA,EAAG;AAC/B,QAAA,SAAA,IAAa,KAAK,iBAAA,CAAkB,OAAA;AAAA,MACtC;AACA,MAAA,IAAI,IAAA,CAAK,eAAe,GAAA,EAAK;AAC3B,QAAA,SAAA,IAAa,KAAK,iBAAA,CAAkB,IAAA;AAAA,MACtC;AACA,MAAA,IAAI,cAAc,CAAA,EAAG;AACnB,QAAA,SAAA,GAAY,KAAK,iBAAA,CAAkB,OAAA;AAAA,MACrC;AAAA,IACF;AACA,IAAA,IAAI,CAAC,QAAQ,MAAA,IAAU,CAAC,MAAM,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,EAAG;AACrD,MAAA,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAAA,IAC7C;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ;AAAA,MAC1C,GAAA,EAAK,OAAO,MAAA,CAAO;AAAA,QACjB,aAAA,EAAe,OAAA,CAAQ,WAAA,IAAe,IAAA,CAAK,eAAA,CAAgB,MAAA;AAAA,QAC3D,YAAA,EAAc,OAAA,CAAQ,UAAA,IAAc,IAAA,CAAK,cAAA,CAAe,MAAA;AAAA,QACxD,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAClC,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAClC,OAAA,EAAS,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAC9B,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAClC,SAAA,EAAW,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAChC,gBAAA,EAAkB,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QACvC,SAAA,EAAW,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAChC,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAClC,QAAA,EAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAC/B,QAAA,EAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA;AAAA,QAC/B,WAAA,EAAa;AAAA,OACf,EAAG,OAAA,CAAQ,MAAA,CAAO,GAAG;AAAA,KACtB,CAAA;AAAA,EACH;AACA,EAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,EAAA,IAAA,CAAK,MAAA,GAAS,IAAI,gBAAA,CAAiB,QAAA,CAAS,MAAM,OAAA,CAAQ,MAAA,IAAU,EAAE,CAAA;AACtE,EAAA,IAAA,CAAK,QAAA,GAAW,IAAI,eAAA,CAAgB,IAAI,CAAA;AACxC,EAAA,IAAA,CAAK,QAAA,GAAW,IAAI,gBAAA,CAAiB,IAAI,CAAA;AACzC,EAAA,IAAA,CAAK,YAAA,GAAe,IAAI,oBAAA,CAAqB,IAAI,CAAA;AACjD,EAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,EAAC;AAC9B,EAAA,IAAA,CAAK,MAAA,GAAS,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ;AAAA,IACnC,GAAA,EAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAA,KAAc;AACrC,MAAA,MAAA,CAAO,SAAS,CAAA,GAAI,SAAA;AACpB,MAAA,IAAI,MAAA,CAAO,SAAS,MAAA,CAAO,IAAA,IAAQ,OAAO,IAAA,CAAA,IAAS,CAAC,KAAK,SAAA,EAAW;AAClE,QAAA,IAAA,CAAK,SAAA,GAAY,IAAI,gBAAA,CAAiB,IAAI,CAAA;AAAA,MAC5C;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACD,EAAA,IAAA,CAAK,QAAA,GAAW,IAAI,cAAA,CAAe,IAAI,CAAA;AACvC,EAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,IAAI,CAAA;AACnC,EAAA,IAAA,CAAK,SAAA,GAAY,IAAI,eAAA,CAAgB,IAAI,CAAA;AACzC,EAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,EAAA,IAAA,CAAK,iBAAiB,EAAC;AACvB,EAAA,MAAA,CAAO,cAAA,CAAe,MAAM,SAAA,EAAW;AAAA,IACrC,KAAK,WAAW;AACd,MAAA,IAAI,IAAA,CAAK,QAAA,EAAU,OAAO,IAAA,CAAK,QAAA;AAC/B,MAAA,IAAI,IAAA,CAAK,mBAAmB,UAAA,EAAY;AACtC,QAAA,OAAO,IAAA,CAAK,QAAA,GAAW,IAAI,iBAAA,CAAkB,IAAI,CAAA;AAAA,MACnD;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;AACA,IAAA,CAAK,SAAA,CAAU,OAAA,GAAU,SAAS,CAAA,EAAG;AACnC,EAAA,OAAO,IAAA,CAAK,QAAA,CAAS,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAC7C,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,gBAAA,GAAmB,SAAS,CAAA,EAAG;AAC5C,EAAA,OAAO,IAAA,CAAK,QAAA,CAAS,gBAAA,CAAiB,CAAC,CAAA;AACzC,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAA,GAAc,SAAS,CAAA,EAAG;AACvC,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,gBAAA,CAAiB,CAAC,CAAA;AAC1C,EAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AACtC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,cAAA,GAAiB,SAAS,OAAA,EAAS;AAChD,EAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,KAAY;AACzD,IAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAQ;AAC7B,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAQ,OAAA,CAAQ,GAAG,CAAC;AAAA,OACjD;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAO,OAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AACH,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,oBAAA,GAAuB,SAAS,CAAA,EAAG,OAAA,EAAS;AACzD,EAAA,MAAM,IAAA,GAAO,IAAI,YAAA,EAAa;AAC9B,EAAA,MAAM,sBAAsB,CAAC,KAAA,KAAU,IAAA,CAAK,gBAAA,CAAiB,MAAM,IAAI,CAAA;AACvE,EAAA,IAAA,CAAK,gBAAA,CAAiB,YAAA,EAAc,IAAA,EAAM,mBAAmB,CAAA;AAC7D,EAAA,IAAI,QAAA,GAAW,UAAU,IAAA,CAAK,cAAA,CAAe,QAAQ,QAAQ,CAAA,GAAI,KAAK,oBAAA,CAAqB,QAAA;AAC3F,EAAA,IAAA,CAAK,aAAA,CAAc,MAAM,QAAQ,CAAA;AACjC,EAAA,OAAO,IAAA,CAAK,cAAc,CAAC,CAAA;AAC7B,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,cAAA,GAAiB,SAAS,CAAA,EAAG,OAAA,EAAS;AACnD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,oBAAA,CAAqB,CAAA,EAAG,OAAO,CAAA;AACpD,EAAA,IAAI,SAAS,OAAA,CAAQ,MAAA;AACrB,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,MAAM,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAChC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AAClC,IAAA,MAAA,CAAO,CAAC,IAAI,IAAA,CAAK,MAAA,CAAO,IAAI,OAAA,CAAQ,CAAC,CAAC,CAAA,IAAK,MAAA;AAAA,EAC7C;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,gBAAA,GAAmB,SAAS,IAAA,EAAM;AAC/C,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,gBAAA,CAAiB,IAAI,CAAA;AAC9C,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAA,GAAc,SAAS,IAAA,EAAM;AAC1C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,gBAAA,CAAiB,IAAI,CAAA;AAC7C,EAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AACtC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,gBAAA,GAAmB,SAAS,GAAA,EAAK;AAC9C,EAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAkB;AACrC,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,gBAAA,CAAiB,GAAG,CAAA;AAC7C,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,eAAA,GAAkB,SAAS,SAAA,EAAW,UAAA,EAAY;AAC/D,EAAA,SAAA,GAAY,UAAU,KAAA,IAAS,SAAA;AAC/B,EAAA,UAAA,GAAa,WAAW,KAAA,IAAS,UAAA;AACjC,EAAA,MAAM,WAAA,GAAc,KAAK,QAAA,CAAS,oBAAA;AAClC,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,eAAA,CAAgB,WAAA,EAAa,WAAW,UAAU,CAAA;AAAA,EACzE;AACA,EAAA,OAAO,IAAA,CAAK,YAAA,CAAa,SAAA,GAAY,GAAA,GAAM,UAAU,CAAA,IAAK,CAAA;AAC5D,CAAA;AACA,IAAA,CAAK,UAAU,oBAAA,GAAuB;AAAA,EACpC,OAAA,EAAS,IAAA;AAAA,EACT,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAKR,EAAE,QAAQ,MAAA,EAAQ,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,IACzD,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,IACzC,EAAE,QAAQ,MAAA,EAAQ,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAE,GACnD;AAAA,EACA,OAAA,EAAS,KAAA;AAAA,EACT,UAAA,EAAY,CAAA;AAAA,EACZ,UAAA,EAAY,IAAA;AAAA,EACZ,OAAA,EAAS;AACX,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,eAAe,SAAS,IAAA,EAAM,GAAG,CAAA,EAAG,QAAA,EAAU,SAAS,QAAA,EAAU;AAC9E,EAAA,CAAA,GAAI,CAAA,KAAM,SAAS,CAAA,GAAI,CAAA;AACvB,EAAA,CAAA,GAAI,CAAA,KAAM,SAAS,CAAA,GAAI,CAAA;AACvB,EAAA,QAAA,GAAW,QAAA,KAAa,SAAS,QAAA,GAAW,EAAA;AAC5C,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,MAAM,SAAA,GAAY,CAAA,GAAI,IAAA,CAAK,UAAA,GAAa,QAAA;AACxC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,OAAO,CAAA;AAChD,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,IAAA,CAAK,SAAS,oBAAA,EAAqB;AACpE,IAAA,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,gBAAA,CAAiB,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EAC1E;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,IAAA,QAAA,CAAS,KAAK,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG,CAAA,EAAG,UAAU,OAAO,CAAA;AAClD,IAAA,IAAI,MAAM,YAAA,EAAc;AACtB,MAAA,CAAA,IAAK,MAAM,YAAA,GAAe,SAAA;AAAA,IAC5B;AACA,IAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,CAAA,GAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AAC5C,MAAA,MAAM,YAAA,GAAe,iBAAiB,IAAA,CAAK,QAAA,CAAS,gBAAgB,cAAA,EAAgB,KAAA,CAAM,OAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,KAAK,IAAI,IAAA,CAAK,eAAA,CAAgB,OAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAC,CAAA;AACjK,MAAA,CAAA,IAAK,YAAA,GAAe,SAAA;AAAA,IACtB;AACA,IAAA,IAAI,QAAQ,aAAA,EAAe;AACzB,MAAA,CAAA,IAAK,QAAQ,aAAA,GAAgB,QAAA;AAAA,IAC/B,CAAA,MAAA,IAAW,QAAQ,QAAA,EAAU;AAC3B,MAAA,CAAA,IAAK,OAAA,CAAQ,WAAW,GAAA,GAAM,QAAA;AAAA,IAChC;AAAA,EACF;AACA,EAAA,OAAO,CAAA;AACT,CAAA;AACA,IAAA,CAAK,UAAU,OAAA,GAAU,SAAS,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAA,EAAS;AAC/D,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,IAAI,YAAA,EAAa;AAClC,EAAA,QAAA,CAAS,UAAU,EAAC;AACpB,EAAA,cAAA,CAAe,IAAA,EAAM,QAAkB,CAAA;AACvC,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,MAAM,KAAA,GAAQ,CAAA,IAAK,QAAA,CAAS,UAAA,IAAc,GAAA,CAAA,GAAO,QAAA;AACjD,IAAA,QAAA,CAAS,WAAA,IAAe,KAAA;AAAA,EAC1B;AACA,EAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,QAAA,EAAU,SAAS,CAAC,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,SAAA,KAAc;AAC7E,IAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,IAAI,EAAA,EAAI,SAAA,EAAW,SAAS,IAAI,CAAA;AAChE,IAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,UAAA,EAAY;AACzC,MAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,MAAA,IAAI,MAAA,IAAU,OAAO,MAAA,EAAQ;AAC3B,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,UAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,UAAA,QAAA,CAAS,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,QAC7B;AACA,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,QAAA,CAAS,OAAO,SAAS,CAAA;AAAA,EAC3B,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACT,CAAA;AACA,IAAA,CAAK,UAAU,QAAA,GAAW,SAAS,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAA,EAAS;AAChE,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,QAAA,EAAU,SAAS,SAAS,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,SAAA,EAAW;AAClF,IAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,IAAI,EAAA,EAAI,SAAA,EAAW,SAAS,IAAI,CAAA;AAChE,IAAA,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,EAC3B,CAAC,CAAA;AACD,EAAA,OAAO,UAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,eAAA,GAAkB,SAAS,IAAA,EAAM,UAAU,OAAA,EAAS;AACjE,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,OAAO,KAAK,YAAA,CAAa,IAAA,EAAM,GAAG,CAAA,EAAG,QAAA,EAAU,SAAS,WAAW;AAAA,EACnE,CAAC,CAAA;AACH,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,OAAO,SAAS,GAAA,EAAK,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAA,EAAS;AACjE,EAAA,MAAM,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAO,CAAA;AACvD,EAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACf,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,aAAa,SAAS,GAAA,EAAK,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAA,EAAS;AACvE,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,QAAA,EAAU,SAAS,SAAS,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,SAAA,EAAW;AAClF,IAAA,KAAA,CAAM,WAAW,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,SAAA,EAAW,SAAS,IAAI,CAAA;AAAA,EACxD,CAAC,CAAA;AACH,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,cAAc,SAAS,GAAA,EAAK,MAAM,CAAA,EAAG,CAAA,EAAG,UAAU,OAAA,EAAS;AACxE,EAAA,OAAA,GAAU,OAAO,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAC9D,EAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,QAAA,EAAU,SAAS,SAAS,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,SAAA,EAAW;AAClF,IAAA,KAAA,CAAM,WAAA,CAAY,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,SAAS,CAAA;AAAA,EAC1C,CAAC,CAAA;AACH,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,cAAA,GAAiB,SAAS,IAAA,EAAM;AAC7C,EAAA,MAAM,YAAA,GAAA,CAAgB,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,IAAA,CAAK,MAAM,SAAA,IAAa,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAC5F,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,OAAO,YAAA,CAAa,EAAA;AAAA,EACtB;AACF,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAW,WAAW;AACnC,EAAA,MAAM,WAAW,EAAC;AAClB,EAAA,MAAM,KAAA,GAAQ,IAAA;AACd,EAAA,SAAS,MAAA,CAAO,WAAW,OAAA,EAAS;AAClC,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAE,CAAA;AACvC,MAAA,QAAA,CAAS,KAAK,OAAO,CAAA;AAAA,IACvB;AAAA,EACF;AACA,EAAA,SAAS,kBAAkB,IAAA,EAAM;AAC/B,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,cAAA,CAAe,IAAI,CAAA;AAC7C,IAAA,MAAA;AAAA,MACE,WAAA,IAAe,WAAA,CAAY,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA;AAAA,MAC3C,gBAAgB,IAAA,GAAO;AAAA,KACzB;AAAA,EACF;AACA,EAAA,iBAAA,CAAkB,YAAY,CAAA;AAC9B,EAAA,iBAAA,CAAkB,YAAY,CAAA;AAC9B,EAAA,iBAAA,CAAkB,cAAc,CAAA;AAChC,EAAA,iBAAA,CAAkB,WAAW,CAAA;AAC7B,EAAA,iBAAA,CAAkB,SAAS,CAAA;AAC3B,EAAA,MAAA,CAAO,IAAA,CAAK,UAAA,GAAa,CAAA,EAAG,0BAA0B,CAAA;AACtD,EAAA,IAAI,IAAA,CAAK,OAAO,IAAA,EAAM;AACpB,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,gBAAA;AACpC,IAAA,IAAI,UAAA,GAAa,EAAA;AACjB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,MAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,CAAC,CAAA,CAAE,OAAA;AACrC,MAAA,MAAA,CAAO,UAAA,GAAa,WAAW,CAAC,CAAA,CAAE,SAAS,CAAA,qEAAA,EAAwE,cAAc,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAA;AAC7J,MAAA,IAAI,UAAA,GAAa,UAAA,CAAW,CAAC,CAAA,CAAE,OAAA,EAAS;AACtC,QAAA;AAAA,MACF;AACA,MAAA,UAAA,GAAa,cAAA;AAAA,IACf;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAW,WAAW;AACnC,EAAA,OAAO,YAAA,CAAa,YAAY,IAAI,CAAA;AACtC,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAW,WAAW;AACnC,EAAA,OAAA,CAAQ,KAAK,8DAA8D,CAAA;AAC3E,EAAA,OAAO,KAAK,aAAA,EAAc;AAC5B,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,gBAAgB,WAAW;AACxC,EAAA,MAAM,SAAA,GAAY,KAAK,QAAA,EAAS;AAChC,EAAA,MAAM,KAAA,GAAQ,UAAU,MAAA,EAAO;AAC/B,EAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,KAAA,CAAM,MAAM,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,IAAI,UAAA,CAAW,MAAM,CAAA;AACtC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,QAAA,CAAS,CAAC,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA;AAAA,EACvB;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AACA,IAAA,CAAK,SAAA,CAAU,WAAW,WAAW;AACnC,EAAA,OAAA,CAAQ,MAAM,0EAA0E,CAAA;AAC1F,CAAA;AACA,IAAA,CAAK,UAAU,iBAAA,GAAoB;AAAA,EACjC,MAAA,EAAQ,CAAA;AAAA;AAAA,EAER,UAAA,EAAY,CAAA;AAAA;AAAA,EAEZ,QAAA,EAAU,CAAA;AAAA;AAAA,EAEV,QAAA,EAAU,CAAA;AAAA;AAAA,EAEV,SAAA,EAAW,EAAA;AAAA;AAAA,EAEX,IAAA,EAAM,EAAA;AAAA;AAAA,EAEN,OAAA,EAAS,EAAA;AAAA;AAAA,EAET,iBAAA,EAAmB,GAAA;AAAA;AAAA,EAEnB,GAAA,EAAK,GAAA;AAAA;AAAA,EAEL,OAAA,EAAS;AAAA;AAEX,CAAA;AACA,IAAA,CAAK,UAAU,cAAA,GAAiB;AAAA,EAC9B,IAAA,EAAM,CAAA;AAAA;AAAA,EAEN,MAAA,EAAQ,CAAA;AAAA;AAAA,EAER,SAAA,EAAW,CAAA;AAAA;AAAA,EAEX,QAAA,EAAU,CAAA;AAAA;AAAA,EAEV,MAAA,EAAQ,EAAA;AAAA;AAAA,EAER,SAAA,EAAW,EAAA;AAAA;AAAA,EAEX,QAAA,EAAU;AAAA;AAEZ,CAAA;AACA,IAAA,CAAK,UAAU,cAAA,GAAiB;AAAA,EAC9B,eAAA,EAAiB,CAAA;AAAA,EACjB,eAAA,EAAiB,CAAA;AAAA,EACjB,SAAA,EAAW,CAAA;AAAA,EACX,cAAA,EAAgB,CAAA;AAAA,EAChB,MAAA,EAAQ,CAAA;AAAA,EACR,aAAA,EAAe,CAAA;AAAA,EACf,QAAA,EAAU,CAAA;AAAA,EACV,cAAA,EAAgB,CAAA;AAAA,EAChB,cAAA,EAAgB;AAClB,CAAA;AACA,IAAA,CAAK,UAAU,eAAA,GAAkB;AAAA,EAC/B,IAAA,EAAM,GAAA;AAAA,EACN,WAAA,EAAa,GAAA;AAAA,EACb,KAAA,EAAO,GAAA;AAAA,EACP,MAAA,EAAQ,GAAA;AAAA,EACR,MAAA,EAAQ,GAAA;AAAA,EACR,SAAA,EAAW,GAAA;AAAA,EACX,IAAA,EAAM,GAAA;AAAA,EACN,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AACA,IAAI,YAAA,GAAe;AAGnB,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,MAAM,iBAAA,GAAoB,EAAE,WAAA,EAAY;AACxC,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,iBAAiB,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAE,CAAA;AAAA,EACzF;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,iBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,kBAAA,GAAqB,CAAA,CAAE,cAAA,CAAe,WAAW;AACrD,IAAA,OAAO,KAAK,uBAAA,EAAwB;AAAA,EACtC,CAAC,CAAA;AACD,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,cAAA,CAAe,WAAW;AAC/C,IAAA,OAAO,KAAK,qBAAA,EAAsB;AAAA,EACpC,CAAC,CAAA;AACD,EAAA,MAAM,GAAA,GAAM,CAAA,CAAE,cAAA,CAAe,WAAW;AACtC,IAAA,OAAO,KAAK,qBAAA,EAAsB;AAAA,EACpC,CAAC,CAAA;AACD,EAAA,MAAM,GAAA,GAAM,CAAA,CAAE,cAAA,CAAe,WAAW;AACtC,IAAA,OAAO,KAAK,qBAAA,EAAsB;AAAA,EACpC,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,SAAS,aAAA,GAAgB;AACvB,EAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAC7D;AACA,IAAI,YAAA,GAAe,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,cAAA,EAAe;AAGhE,IAAI,aAAa,WAAW;AAC1B,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,cAAc,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAC;AAAA,GAChE;AACF,CAAA;AACA,IAAI,aAAa,WAAW;AAC1B,EAAA,IAAI,MAAA,GAAS,KAAK,WAAA,EAAY;AAC9B,EAAA,aAAA,CAAc,QAAA;AAAA,IACZ,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,CAAA;AAAA,IAC3C;AAAA,GACF;AACA,EAAA,IAAI,WAAW,CAAA,EAAG;AAChB,IAAA,OAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW,EAAE;AAAA,EACzC,CAAA,MAAA,IAAW,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW,EAAE;AAAA,EACzC,CAAA,MAAA,IAAW,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW,EAAE;AAAA,EACzC;AACF,CAAA;AACA,IAAI,WAAW,WAAW;AACxB,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAC,CAAA;AAClD,CAAA;AACA,IAAI,eAAe,WAAW;AAC5B,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC3C,WAAW,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAC;AAAA,GACpD;AACF,CAAA;AACA,IAAI,gBAAgB,WAAW;AAC7B,EAAA,IAAA,CAAK,WAAA,EAAY;AACjB,EAAA,OAAO,KAAK,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA;AACvD,CAAA;AACA,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAChC,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,YAAA,CAAa,CAAC,CAAA;AACrC,EAAA,aAAA,CAAc,QAAA;AAAA,IACZ,YAAA,KAAiB,CAAA,IAAK,YAAA,KAAiB,GAAA,IAAO,YAAA,KAAiB,GAAA;AAAA,IAC/D;AAAA,GACF;AACA,EAAA,IAAI,IAAA,GAAO;AAAA,IACT,OAAA,EAAS,YAAA;AAAA,IACT,QAAA,EAAU,CAAA,CAAE,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,IACxC,UAAA,EAAY,CAAA,CAAE,YAAA,CAAa,UAAU,CAAA;AAAA,IACrC,YAAA,EAAc,CAAA,CAAE,YAAA,CAAa,YAAY,CAAA;AAAA,IACzC,kBAAA,EAAoB,CAAA,CAAE,YAAA,CAAa,MAAA,CAAO,QAAQ;AAAA,GACpD;AACA,EAAA,IAAI,gBAAgB,GAAA,EAAK;AACvB,IAAA,IAAA,CAAK,aAAA,GAAgB,CAAA,CAAE,YAAA,CAAa,aAAa,CAAA;AAAA,EACnD;AACA,EAAA,OAAO,IAAA;AACT;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAe;AAG3C,IAAI,gBAAA,GAAmB,IAAI,KAAA,CAAM,EAAE,CAAA;AACnC,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,cAAA;AACjC,EAAA,MAAM,SAAA,GAAY,KAAK,WAAA,EAAY;AACnC,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,CAAA;AAAA,MACX,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,KAAA,EAAO,KAAK,gBAAA;AAAiB,KAC/B;AAAA,EACF,CAAA,MAAA,IAAW,cAAc,CAAA,EAAG;AAC1B,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,CAAA;AAAA,MACX,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC3C,MAAA,EAAQ,KAAK,oBAAA;AAAqB,KACpC;AAAA,EACF;AACA,EAAA,aAAA,CAAc,OAAO,KAAA,EAAO,IAAA,GAAO,MAAM,QAAA,CAAS,EAAE,IAAI,6CAA6C,CAAA;AACvG,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,cAAA;AACjC,EAAA,MAAM,SAAA,GAAY,KAAK,WAAA,EAAY;AACnC,EAAA,aAAA,CAAc,MAAA,CAAO,SAAA,KAAc,CAAA,IAAK,SAAA,KAAc,CAAA,EAAG,OAAO,KAAA,CAAM,QAAA,CAAS,EAAE,CAAA,GAAI,6CAA6C,CAAA;AAClI,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AAClD,EAAA,MAAM,YAAA,GAAe,KAAK,WAAA,EAAY;AACtC,EAAA,MAAM,YAAA,GAAe,KAAK,WAAA,EAAY;AACtC,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAU,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,WAAW;AAC7D,QAAA,OAAO;AAAA;AAAA,UAEL,WAAA,EAAa,KAAK,WAAA,EAAY;AAAA,UAC9B,MAAA,EAAQ,IAAA,CAAK,gBAAA,CAAiB,YAAY,CAAA;AAAA,UAC1C,MAAA,EAAQ,IAAA,CAAK,gBAAA,CAAiB,YAAY;AAAA,SAC5C;AAAA,MACF,CAAC,CAAC,CAAC;AAAA,KACL;AAAA,EACF,CAAA,MAAA,IAAW,cAAc,CAAA,EAAG;AAC1B,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AACnD,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA;AACnD,IAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,IAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,IAAA,OAAO;AAAA;AAAA,MAEL,SAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAc,IAAA,CAAK,SAAA,CAAU,aAAa,MAAA,CAAO,IAAA,CAAK,aAAa,WAAW;AAC5E,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,IAAA,CAAK,gBAAA,CAAiB,YAAY,CAAA;AAAA,UAC1C,MAAA,EAAQ,IAAA,CAAK,gBAAA,CAAiB,YAAY;AAAA,SAC5C;AAAA,MACF,CAAC,CAAC;AAAA,KACJ;AAAA,EACF;AACF,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,aAAA,GAAgB;AAC7C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,gBAAA,CAAiB,CAAC,CAAA,GAAI,SAAS,YAAA,GAAe;AAC5C,EAAA,OAAO,EAAE,OAAO,6BAAA,EAA8B;AAChD,CAAA;AACA,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,KAAA,GAAQ,KAAA,IAAS,CAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAChC,EAAA,MAAM,YAAA,GAAe,CAAA,CAAE,YAAA,CAAa,CAAC,CAAA;AACrC,EAAA,aAAA,CAAc,SAAS,YAAA,KAAiB,CAAA,IAAK,YAAA,KAAiB,GAAA,EAAK,oCAAoC,YAAY,CAAA;AACnH,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,EAAE,eAAA,EAAgB;AAAA,MAC3B,QAAA,EAAU,EAAE,gBAAA,EAAiB;AAAA,MAC7B,OAAA,EAAS,CAAA,CAAE,eAAA,CAAgB,gBAAgB;AAAA,KAC7C;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,YAAA;AAAA,MACT,OAAA,EAAS,EAAE,eAAA,EAAgB;AAAA,MAC3B,QAAA,EAAU,EAAE,gBAAA,EAAiB;AAAA,MAC7B,OAAA,EAAS,CAAA,CAAE,eAAA,CAAgB,gBAAgB,CAAA;AAAA,MAC3C,UAAA,EAAY,EAAE,0BAAA;AAA2B,KAC3C;AAAA,EACF;AACF;AACA,IAAI,eAAA,GAAkB,IAAI,KAAA,CAAM,EAAE,CAAA;AAClC,SAAS,cAAc,IAAA,EAAM;AAC3B,EAAA,OAAO,IAAI,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ;AAAA,IACrC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,OAAO,KAAA,EAAM;AAAA,IAC/C,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,EAAE;AAAA,IACpF,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAE;AAAA,IACvF,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAI,aAAA,CAAc,UAAA,CAAW,IAAA,CAAK,OAAA,EAAS,eAAe,CAAA;AAAE,GACtG,CAAA;AACH;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAgB,MAAM,aAAA,EAAc;AAGhE,SAAS,sBAAsB,CAAA,EAAG;AAChC,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,CAAA,CAAE,KAAK,QAAQ,CAAA;AACf,EAAA,MAAM,eAAA,GAAkB,EAAE,WAAA,EAAY;AACtC,EAAA,aAAA,CAAc,QAAA,CAAS,eAAA,KAAoB,CAAA,EAAG,qCAAqC,CAAA;AACnF,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,MAAM,MAAA,GAAS,EAAE,WAAA,EAAY;AAC7B,EAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AAClC,IAAA,MAAM,SAAA,GAAY,EAAE,WAAA,EAAY;AAChC,IAAA,MAAM,UAAA,GAAa,EAAE,WAAA,EAAY;AACjC,IAAA,MAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,IAAA,KAAA,CAAM,SAAA,GAAY,GAAA,GAAM,UAAU,CAAA,GAAI,KAAA;AAAA,EACxC;AACA,EAAA,OAAO,KAAA;AACT;AACA,SAAS,kBAAkB,CAAA,EAAG;AAC5B,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,CAAA,CAAE,KAAK,QAAQ,CAAA;AACf,EAAA,MAAM,OAAA,GAAU,EAAE,UAAA,EAAW;AAC7B,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAA,CAAQ,KAAK,4CAA4C,CAAA;AAAA,EAC3D;AACA,EAAA,CAAA,CAAE,KAAK,OAAO,CAAA;AACd,EAAA,MAAM,QAAA,GAAW,EAAE,WAAA,EAAY;AAC/B,EAAA,MAAM,kBAAkB,QAAA,GAAW,GAAA;AACnC,EAAA,CAAA,CAAE,KAAK,QAAQ,CAAA;AACf,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,MAAM,MAAA,GAAS,EAAE,WAAA,EAAY;AAC7B,IAAA,CAAA,CAAE,IAAA,CAAK,UAAU,CAAC,CAAA;AAClB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AAClC,MAAA,MAAM,SAAA,GAAY,EAAE,WAAA,EAAY;AAChC,MAAA,MAAM,UAAA,GAAa,EAAE,WAAA,EAAY;AACjC,MAAA,MAAM,KAAA,GAAQ,EAAE,UAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,SAAA,GAAY,GAAA,GAAM,UAAU,CAAA,GAAI,KAAA;AAAA,IACxC;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AACA,SAAS,cAAA,CAAe,MAAM,KAAA,EAAO;AACnC,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,EAAE,WAAA,EAAY;AACnC,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,IAAA,OAAO,sBAAsB,CAAC,CAAA;AAAA,EAChC,CAAA,MAAA,IAAW,iBAAiB,CAAA,EAAG;AAC7B,IAAA,OAAO,kBAAkB,CAAC,CAAA;AAAA,EAC5B,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,KAAA,CAAM,kCAAA,GAAqC,YAAA,GAAe,IAAI,CAAA;AAAA,EAC1E;AACF;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAe;AAG3C,SAAS,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,SAAA,EAAW,YAAA,EAAc;AAC5D,EAAA,MAAM,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,YAAA,GAAe,CAAA,CAAE,WAAA,GAAc,CAAA,CAAE,UAAA;AACjD,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,GAAY,CAAA,EAAG,KAAK,CAAA,EAAG;AACzC,IAAA,IAAI,WAAA,GAAc,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAChC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,WAAA,IAAe,CAAA;AAAA,IACjB;AACA,IAAA,YAAA,CAAa,KAAK,WAAW,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,YAAA;AACT;AACA,IAAI,YAAA,GAAe,EAAE,KAAA,EAAO,cAAA,EAAe;AAG3C,SAAS,yBAAA,CAA0B,MAAM,SAAA,EAAW;AAClD,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,IAAI,CAAA,GAAI,EAAA;AACR,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,KAAK,CAAA,EAAG;AACrC,IAAA,MAAM,GAAA,GAAM,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AACxC,IAAA,MAAM,QAAA,GAAW,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,EAAE,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,CAAK,EAAE,GAAA,EAAK,QAAA,EAAU,QAAQ,MAAA,EAAQ,WAAA,EAAa,OAAO,CAAA;AACvE,IAAA,CAAA,IAAK,EAAA;AAAA,EACP;AACA,EAAA,OAAO,YAAA;AACT;AACA,SAAS,qBAAA,CAAsB,MAAM,SAAA,EAAW;AAC9C,EAAA,MAAM,eAAe,EAAC;AACtB,EAAA,IAAI,CAAA,GAAI,EAAA;AACR,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,KAAK,CAAA,EAAG;AACrC,IAAA,MAAM,GAAA,GAAM,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AACxC,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AACjD,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AACrD,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM,IAAI,EAAE,CAAA;AACtD,IAAA,IAAI,WAAA;AACJ,IAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,MAAA,WAAA,GAAc,MAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,WAAA,GAAc,KAAA;AAAA,IAChB;AACA,IAAA,YAAA,CAAa,IAAA,CAAK;AAAA,MAChB,GAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA,EAAkB,UAAA;AAAA,MAClB,MAAA,EAAQ;AAAA,KACT,CAAA;AACD,IAAA,CAAA,IAAK,EAAA;AAAA,EACP;AACA,EAAA,OAAO,YAAA;AACT;AACA,SAAS,eAAA,CAAgB,MAAM,UAAA,EAAY;AACzC,EAAA,IAAI,UAAA,CAAW,gBAAgB,MAAA,EAAQ;AACrC,IAAA,MAAM,QAAA,GAAW,IAAI,UAAA,CAAW,IAAA,CAAK,MAAA,EAAQ,WAAW,MAAA,GAAS,CAAA,EAAG,UAAA,CAAW,gBAAA,GAAmB,CAAC,CAAA;AACnG,IAAA,MAAM,SAAA,GAAY,IAAI,UAAA,CAAW,UAAA,CAAW,MAAM,CAAA;AAClD,IAAA,eAAA,CAAgB,UAAU,SAAS,CAAA;AACnC,IAAA,IAAI,SAAA,CAAU,UAAA,KAAe,UAAA,CAAW,MAAA,EAAQ;AAC9C,MAAA,MAAM,IAAI,KAAA,CAAM,uBAAA,GAA0B,UAAA,CAAW,MAAM,oDAAoD,CAAA;AAAA,IACjH;AACA,IAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAC,CAAA;AAC7C,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,CAAA,EAAE;AAAA,EACjC,CAAA,MAAO;AACL,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAA,CAAW,MAAA,EAAO;AAAA,EAC3C;AACF;AACA,SAAS,WAAA,CAAY,MAAA,EAAQ,GAAA,GAAM,EAAC,EAAG;AACrC,EAAA,IAAI,gBAAA;AACJ,EAAA,IAAI,SAAA;AACJ,EAAA,MAAM,OAAO,IAAI,YAAA,CAAa,EAAE,KAAA,EAAO,MAAM,CAAA;AAC7C,EAAA,IAAI,MAAA,CAAO,gBAAgB,WAAA,EAAa;AACtC,IAAA,MAAA,GAAS,IAAI,UAAA,CAAW,MAAM,CAAA,CAAE,MAAA;AAAA,EAClC;AACA,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAA;AACnC,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,eAAe,EAAC;AACpB,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AAC9C,EAAA,IAAI,SAAA,KAAc,MAAA,CAAO,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,IAAK,SAAA,KAAc,MAAA,IAAU,SAAA,KAAc,MAAA,EAAQ;AACjG,IAAA,IAAA,CAAK,cAAA,GAAiB,UAAA;AACtB,IAAA,SAAA,GAAY,aAAA,CAAc,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA;AAC3C,IAAA,YAAA,GAAe,yBAAA,CAA0B,MAAM,SAAS,CAAA;AAAA,EAC1D,CAAA,MAAA,IAAW,cAAc,MAAA,EAAQ;AAC/B,IAAA,IAAA,CAAK,cAAA,GAAiB,KAAA;AACtB,IAAA,SAAA,GAAY,aAAA,CAAc,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA;AAC3C,IAAA,YAAA,GAAe,yBAAA,CAA0B,MAAM,SAAS,CAAA;AAAA,EAC1D,CAAA,MAAA,IAAW,cAAc,MAAA,EAAQ;AAC/B,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,IAAA,EAAM,CAAC,CAAA;AAC3C,IAAA,IAAI,WAAW,MAAA,CAAO,YAAA,CAAa,GAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG;AAC9C,MAAA,IAAA,CAAK,cAAA,GAAiB,UAAA;AAAA,IACxB,CAAA,MAAA,IAAW,WAAW,MAAA,EAAQ;AAC5B,MAAA,IAAA,CAAK,cAAA,GAAiB,KAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,8BAAA,GAAiC,SAAS,CAAA;AAAA,IAC5D;AACA,IAAA,SAAA,GAAY,aAAA,CAAc,SAAA,CAAU,IAAA,EAAM,EAAE,CAAA;AAC5C,IAAA,YAAA,GAAe,qBAAA,CAAsB,MAAM,SAAS,CAAA;AAAA,EACtD,CAAA,MAAA,IAAW,cAAc,MAAA,EAAQ;AAC/B,IAAA,MAAM,KAAA,GAAQ,8EAAA;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,mEAAA,GAAsE,KAAK,CAAA;AAAA,EAC7F,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,KAAA,CAAM,iCAAA,GAAoC,SAAS,CAAA;AAAA,EAC/D;AACA,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,CAAA;AACJ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,KAAK,CAAA,EAAG;AACrC,IAAA,MAAM,UAAA,GAAa,aAAa,CAAC,CAAA;AACjC,IAAA,IAAI,KAAA;AACJ,IAAA,QAAQ,WAAW,GAAA;AAAK,MACtB,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA,IAAA,CAAK,QAAA,GAAW,IAAI,YAAA,CAAa,IAAA,CAAK,OAAO,IAAI,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AACrD,QAAA,IAAA,CAAK,OAAO,GAAA,GAAM,CAAA,CAAE,cAAA,CAAe,UAAA,CAAW,SAAS,CAAC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AACrD,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,WAAW,MAAM,CAAA;AACpD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,UAAA;AACnC,QAAA,gBAAA,GAAmB,IAAA,CAAK,OAAO,IAAA,CAAK,gBAAA;AACpC,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,QAAA;AACjC,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAA;AAClC,QAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,gBAAA;AACzC,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,SAAA,GAAY,YAAA,CAAa,KAAA,CAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AACvD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAA;AAClC,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,GAAA,GAAM,WAAA,CAAY,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC5D,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC9D,QAAA,IAAA,CAAK,UAAA,GAAa,IAAI,UAAA,CAAW,IAAA,CAAK,OAAO,IAAI,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,CAAA,GAAI,IAAI,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AACrD,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,WAAW,MAAM,CAAA;AACpD,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,aAAA,GAAgB,UAAA;AAChB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,IAAI;AACF,UAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,UAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAAA,QAChE,SAAS,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,KAAK,uCAAuC,CAAA;AACpD,UAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QAChB;AACA,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,KAAA,GAAQ,eAAA,CAAgB,MAAM,UAAU,CAAA;AACxC,QAAA,IAAA,CAAK,OAAO,GAAA,GAAM,WAAA,CAAY,MAAM,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAC5D,QAAA;AAEA;AACJ,EACF;AACA,EAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,EAAA,IAAA,CAAK,MAAA,CAAO,OAAO,YAAA,CAAa,KAAA,CAAM,UAAU,IAAA,EAAM,SAAA,CAAU,QAAQ,SAAS,CAAA;AACjF,EAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,MAAA,CAAO,IAAA;AACzB,EAAA,IAAI,kBAAkB,cAAA,EAAgB;AACpC,IAAA,MAAM,eAAe,gBAAA,KAAqB,CAAA;AAC1C,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,MAAM,WAAA,GAAc,aAAa,KAAA,CAAM,SAAA,CAAU,MAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,SAAA,EAAW,YAAY,CAAA;AACrG,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,GAAS,aAAa,KAAA,CAAM,SAAA,CAAU,MAAM,SAAA,CAAU,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,GAAG,CAAA;AAAA,EAC3F,WAAW,aAAA,EAAe;AACxB,IAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,IAAA,EAAM,aAAa,CAAA;AACpD,IAAA,WAAA,CAAY,MAAM,QAAA,CAAS,IAAA,EAAM,QAAA,CAAS,MAAA,EAAQ,MAAM,GAAG,CAAA;AAAA,EAC7D,WAAW,cAAA,EAAgB;AACzB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,WAAA,CAAY,MAAM,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,MAAM,GAAG,CAAA;AAAA,EAC/D,CAAA,MAAO;AACL,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AACA,EAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,EAAA,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,gBAAA,EAAkB,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA;AAClH,EAAA,aAAA,CAAc,MAAM,GAAG,CAAA;AACvB,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,eAAe,YAAA,CAAa,KAAA,CAAM,SAAA,CAAU,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,EACzE,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,eAAe,EAAC;AAAA,EACvB;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,SAAA,CAAU,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,SAAA,CAAU,IAAA,EAAM,UAAU,MAAM,CAAA;AACtE,IAAA,IAAA,CAAK,SAAS,IAAA,EAAK;AAAA,EACrB;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,SAAA,CAAU,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,OAAO,YAAA,CAAa,KAAA,CAAM,UAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,KAAK,CAAA;AAAA,EACpF;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,SAAA,CAAU,MAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,EAC1F;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,2FAA2F,CAAA;AAAA,IAC1G;AACA,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,wGAAwG,CAAA;AAAA,IACvH;AACA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAAA,EACvG;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,2FAA2F,CAAA;AAAA,IAC1G;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA,EAAK;AACpB,MAAA,OAAA,CAAQ,KAAK,iFAAiF,CAAA;AAAA,IAChG;AACA,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,wGAAwG,CAAA;AAAA,IACvH;AACA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,UAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,OAAO,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,GAAA,IAAO,EAAE,CAAA;AAAA,EACjH;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,4FAA4F,CAAA;AAAA,IAC3G;AACA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,SAAA,CAAU,MAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,EAC1F;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,4FAA4F,CAAA;AAAA,IAC3G;AACA,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAA,CAAQ,KAAK,8DAA8D,CAAA;AAAA,IAC7E;AACA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,SAAA,CAAU,MAAM,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,EAC1F;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAA,EAAM,cAAc,CAAA;AACtD,IAAA,IAAA,CAAK,OAAO,IAAA,GAAO,YAAA,CAAa,MAAM,SAAA,CAAU,IAAA,EAAM,UAAU,MAAM,CAAA;AACtE,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,MAAA,CAAO,IAAA;AAAA,EAC3B;AACA,EAAA,IAAA,CAAK,QAAA,GAAW,IAAI,cAAA,CAAe,IAAI,CAAA;AACvC,EAAA,OAAO,IAAA;AACT;AACA,SAAS,IAAA,GAAO;AACd,EAAA,OAAA,CAAQ,MAAM,+GAA+G,CAAA;AAC/H;AACA,SAAS,QAAA,GAAW;AAClB,EAAA,OAAA,CAAQ,MAAM,8EAA8E,CAAA;AAC9F","file":"opentype-BYRB6NOX.js","sourcesContent":["// src/tiny-inflate@1.0.3.esm.mjs\nvar TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\nfunction Tree() {\n this.table = new Uint16Array(16);\n this.trans = new Uint16Array(288);\n}\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n this.dest = dest;\n this.destLen = 0;\n this.ltree = new Tree();\n this.dtree = new Tree();\n}\nvar sltree = new Tree();\nvar sdtree = new Tree();\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\nvar clcidx = new Uint8Array([\n 16,\n 17,\n 18,\n 0,\n 8,\n 7,\n 9,\n 6,\n 10,\n 5,\n 11,\n 4,\n 12,\n 3,\n 13,\n 2,\n 14,\n 1,\n 15\n]);\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n dt.table[5] = 32;\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\nvar offs = new Uint16Array(16);\nfunction tinf_build_tree(t, lengths2, off, num) {\n var i, sum;\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n for (i = 0; i < num; ++i) t.table[lengths2[off + i]]++;\n t.table[0] = 0;\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n for (i = 0; i < num; ++i) {\n if (lengths2[off + i]) t.trans[offs[lengths2[off + i]]++] = i;\n }\n}\nfunction tinf_getbit(d) {\n if (!d.bitcount--) {\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n var bit = d.tag & 1;\n d.tag >>>= 1;\n return bit;\n}\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n var val = d.tag & 65535 >>> 16 - num;\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n d.tag = tag;\n d.bitcount -= len;\n return t.trans[sum + cur];\n}\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n hlit = tinf_read_bits(d, 5, 257);\n hdist = tinf_read_bits(d, 5, 1);\n hclen = tinf_read_bits(d, 4, 4);\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n for (i = 0; i < hclen; ++i) {\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n tinf_build_tree(code_tree, lengths, 0, 19);\n for (num = 0; num < hlit + hdist; ) {\n var sym = tinf_decode_symbol(d, code_tree);\n switch (sym) {\n case 16:\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n lengths[num++] = sym;\n break;\n }\n }\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\nfunction tinf_inflate_block_data(d, lt, dt) {\n for (; ; ) {\n var sym = tinf_decode_symbol(d, lt);\n if (sym === 256) {\n return TINF_OK;\n }\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs2;\n var i;\n sym -= 257;\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n dist = tinf_decode_symbol(d, dt);\n offs2 = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n for (i = offs2; i < offs2 + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n if (length !== (~invlength & 65535))\n return TINF_DATA_ERROR;\n d.sourceIndex += 4;\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n d.bitcount = 0;\n return TINF_OK;\n}\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n do {\n bfinal = tinf_getbit(d);\n btype = tinf_read_bits(d, 2, 0);\n switch (btype) {\n case 0:\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n if (res !== TINF_OK)\n throw new Error(\"Data error\");\n } while (!bfinal);\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === \"function\")\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n return d.dest;\n}\ntinf_build_fixed_trees(sltree, sdtree);\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\n// src/bbox.mjs\nfunction derive(v0, v1, v2, v3, t) {\n return Math.pow(1 - t, 3) * v0 + 3 * Math.pow(1 - t, 2) * t * v1 + 3 * (1 - t) * Math.pow(t, 2) * v2 + Math.pow(t, 3) * v3;\n}\nfunction BoundingBox() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n}\nBoundingBox.prototype.isEmpty = function() {\n return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2);\n};\nBoundingBox.prototype.addPoint = function(x, y) {\n if (typeof x === \"number\") {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n if (x < this.x1) {\n this.x1 = x;\n }\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n if (typeof y === \"number\") {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n if (y < this.y1) {\n this.y1 = y;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n};\nBoundingBox.prototype.addX = function(x) {\n this.addPoint(x, null);\n};\nBoundingBox.prototype.addY = function(y) {\n this.addPoint(null, y);\n};\nBoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x, y) {\n const p0 = [x0, y0];\n const p1 = [x1, y1];\n const p2 = [x2, y2];\n const p3 = [x, y];\n this.addPoint(x0, y0);\n this.addPoint(x, y);\n for (let i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0) continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t1));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t1));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t2));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t2));\n }\n }\n};\nBoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) {\n const cp1x = x0 + 2 / 3 * (x1 - x0);\n const cp1y = y0 + 2 / 3 * (y1 - y0);\n const cp2x = cp1x + 1 / 3 * (x - x0);\n const cp2y = cp1y + 1 / 3 * (y - y0);\n this.addBezier(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y);\n};\nvar bbox_default = BoundingBox;\n\n// src/path.mjs\nfunction Path() {\n this.commands = [];\n this.fill = \"black\";\n this.stroke = null;\n this.strokeWidth = 1;\n}\nvar decimalRoundingCache = {};\nfunction roundDecimal(float, places) {\n const integerPart = Math.floor(float);\n const decimalPart = float - integerPart;\n if (!decimalRoundingCache[places]) {\n decimalRoundingCache[places] = {};\n }\n if (decimalRoundingCache[places][decimalPart] !== void 0) {\n const roundedDecimalPart2 = decimalRoundingCache[places][decimalPart];\n return integerPart + roundedDecimalPart2;\n }\n const roundedDecimalPart = +(Math.round(decimalPart + \"e+\" + places) + \"e-\" + places);\n decimalRoundingCache[places][decimalPart] = roundedDecimalPart;\n return integerPart + roundedDecimalPart;\n}\nfunction optimizeCommands(commands) {\n let subpaths = [[]];\n let startX = 0, startY = 0;\n for (let i = 0; i < commands.length; i += 1) {\n const subpath = subpaths[subpaths.length - 1];\n const cmd = commands[i];\n const firstCommand = subpath[0];\n const secondCommand = subpath[1];\n const previousCommand = subpath[subpath.length - 1];\n const nextCommand = commands[i + 1];\n subpath.push(cmd);\n if (cmd.type === \"M\") {\n startX = cmd.x;\n startY = cmd.y;\n } else if (cmd.type === \"L\" && (!nextCommand || nextCommand.type === \"Z\")) {\n if (!(Math.abs(cmd.x - startX) > 1 || Math.abs(cmd.y - startY) > 1)) {\n subpath.pop();\n }\n } else if (cmd.type === \"L\" && previousCommand && previousCommand.x === cmd.x && previousCommand.y === cmd.y) {\n subpath.pop();\n } else if (cmd.type === \"Z\") {\n if (firstCommand && secondCommand && previousCommand && firstCommand.type === \"M\" && secondCommand.type === \"L\" && previousCommand.type === \"L\" && previousCommand.x === firstCommand.x && previousCommand.y === firstCommand.y) {\n subpath.shift();\n subpath[0].type = \"M\";\n }\n if (i + 1 < commands.length) {\n subpaths.push([]);\n }\n }\n }\n commands = [].concat.apply([], subpaths);\n return commands;\n}\nfunction createSVGParsingOptions(options) {\n const defaultOptions = {\n decimalPlaces: 2,\n optimize: true,\n flipY: true,\n flipYBase: void 0,\n scale: 1,\n x: 0,\n y: 0\n };\n const newOptions = Object.assign({}, defaultOptions, options);\n return newOptions;\n}\nfunction createSVGOutputOptions(options) {\n if (parseInt(options) === options) {\n options = { decimalPlaces: options, flipY: false };\n }\n const defaultOptions = {\n decimalPlaces: 2,\n optimize: true,\n flipY: true,\n flipYBase: void 0\n };\n const newOptions = Object.assign({}, defaultOptions, options);\n return newOptions;\n}\nPath.prototype.fromSVG = function(pathData, options = {}) {\n if (typeof SVGPathElement !== \"undefined\" && pathData instanceof SVGPathElement) {\n pathData = pathData.getAttribute(\"d\");\n }\n options = createSVGParsingOptions(options);\n this.commands = [];\n const number = \"0123456789\";\n const supportedCommands = \"MmLlQqCcZzHhVv\";\n const unsupportedCommands = \"SsTtAa\";\n const sign = \"-+\";\n let command = {};\n let buffer = [\"\"];\n let isUnexpected = false;\n function parseBuffer2(buffer2) {\n return buffer2.filter((b) => b.length).map((b) => {\n let float = parseFloat(b);\n if (options.decimalPlaces || options.decimalPlaces === 0) {\n float = roundDecimal(float, options.decimalPlaces);\n }\n return float;\n });\n }\n function makeRelative(buffer2) {\n if (!this.commands.length) {\n return buffer2;\n }\n const lastCommand = this.commands[this.commands.length - 1];\n for (let i = 0; i < buffer2.length; i++) {\n buffer2[i] += lastCommand[i & 1 ? \"y\" : \"x\"];\n }\n return buffer2;\n }\n function applyCommand() {\n if (command.type === void 0) {\n return;\n }\n const commandType = command.type.toUpperCase();\n const relative = commandType !== \"Z\" && command.type.toUpperCase() !== command.type;\n let parsedBuffer = parseBuffer2(buffer);\n buffer = [\"\"];\n if (!parsedBuffer.length && commandType !== \"Z\") {\n return;\n }\n if (relative && commandType !== \"H\" && commandType !== \"V\") {\n parsedBuffer = makeRelative.apply(this, [parsedBuffer]);\n }\n const currentX = this.commands.length ? this.commands[this.commands.length - 1].x || 0 : 0;\n const currentY = this.commands.length ? this.commands[this.commands.length - 1].y || 0 : 0;\n switch (commandType) {\n case \"M\":\n this.moveTo(...parsedBuffer);\n break;\n case \"L\":\n this.lineTo(...parsedBuffer);\n break;\n case \"V\":\n for (let i = 0; i < parsedBuffer.length; i++) {\n let offset = 0;\n if (relative) {\n offset = this.commands.length ? this.commands[this.commands.length - 1].y || 0 : 0;\n }\n this.lineTo(currentX, parsedBuffer[i] + offset);\n }\n break;\n case \"H\":\n for (let i = 0; i < parsedBuffer.length; i++) {\n let offset = 0;\n if (relative) {\n offset = this.commands.length ? this.commands[this.commands.length - 1].x || 0 : 0;\n }\n this.lineTo(parsedBuffer[i] + offset, currentY);\n }\n break;\n case \"C\":\n this.bezierCurveTo(...parsedBuffer);\n break;\n case \"Q\":\n this.quadraticCurveTo(...parsedBuffer);\n break;\n case \"Z\":\n if (this.commands.length < 1 || this.commands[this.commands.length - 1].type !== \"Z\") {\n this.close();\n }\n break;\n }\n if (this.commands.length) {\n for (const prop in this.commands[this.commands.length - 1]) {\n if (this.commands[this.commands.length - 1][prop] === void 0) {\n this.commands[this.commands.length - 1][prop] = 0;\n }\n }\n }\n }\n for (let i = 0; i < pathData.length; i++) {\n const token = pathData.charAt(i);\n const lastBuffer = buffer[buffer.length - 1];\n if (number.indexOf(token) > -1) {\n buffer[buffer.length - 1] += token;\n } else if (sign.indexOf(token) > -1) {\n if (!command.type && !this.commands.length) {\n command.type = \"L\";\n }\n if (token === \"-\") {\n if (!command.type || lastBuffer.indexOf(\"-\") > 0) {\n isUnexpected = true;\n } else if (lastBuffer.length) {\n buffer.push(\"-\");\n } else {\n buffer[buffer.length - 1] = token;\n }\n } else {\n if (!command.type || lastBuffer.length > 0) {\n isUnexpected = true;\n } else {\n continue;\n }\n }\n } else if (supportedCommands.indexOf(token) > -1) {\n if (command.type) {\n applyCommand.apply(this);\n command = { type: token };\n } else {\n command.type = token;\n }\n } else if (unsupportedCommands.indexOf(token) > -1) {\n throw new Error(\"Unsupported path command: \" + token + \". Currently supported commands are \" + supportedCommands.split(\"\").join(\", \") + \".\");\n } else if (\" ,\t\\n\\r\\f\\v\".indexOf(token) > -1) {\n buffer.push(\"\");\n } else if (token === \".\") {\n if (!command.type || lastBuffer.indexOf(token) > -1) {\n isUnexpected = true;\n } else {\n buffer[buffer.length - 1] += token;\n }\n } else {\n isUnexpected = true;\n }\n if (isUnexpected) {\n throw new Error(\"Unexpected character: \" + token + \" at offset \" + i);\n }\n }\n applyCommand.apply(this);\n if (options.optimize) {\n this.commands = optimizeCommands(this.commands);\n }\n const flipY = options.flipY;\n let flipYBase = options.flipYBase;\n if (flipY === true && options.flipYBase === void 0) {\n const boundingBox = this.getBoundingBox();\n flipYBase = boundingBox.y1 + boundingBox.y2;\n }\n for (const i in this.commands) {\n const cmd = this.commands[i];\n for (const prop in cmd) {\n if ([\"x\", \"x1\", \"x2\"].includes(prop)) {\n this.commands[i][prop] = options.x + cmd[prop] * options.scale;\n } else if ([\"y\", \"y1\", \"y2\"].includes(prop)) {\n this.commands[i][prop] = options.y + (flipY ? flipYBase - cmd[prop] : cmd[prop]) * options.scale;\n }\n }\n }\n return this;\n};\nPath.fromSVG = function(path, options) {\n const newPath = new Path();\n return newPath.fromSVG(path, options);\n};\nPath.prototype.moveTo = function(x, y) {\n this.commands.push({\n type: \"M\",\n x,\n y\n });\n};\nPath.prototype.lineTo = function(x, y) {\n this.commands.push({\n type: \"L\",\n x,\n y\n });\n};\nPath.prototype.curveTo = Path.prototype.bezierCurveTo = function(x1, y1, x2, y2, x, y) {\n this.commands.push({\n type: \"C\",\n x1,\n y1,\n x2,\n y2,\n x,\n y\n });\n};\nPath.prototype.quadTo = Path.prototype.quadraticCurveTo = function(x1, y1, x, y) {\n this.commands.push({\n type: \"Q\",\n x1,\n y1,\n x,\n y\n });\n};\nPath.prototype.close = Path.prototype.closePath = function() {\n this.commands.push({\n type: \"Z\"\n });\n};\nPath.prototype.extend = function(pathOrCommands) {\n if (pathOrCommands.commands) {\n pathOrCommands = pathOrCommands.commands;\n } else if (pathOrCommands instanceof bbox_default) {\n const box = pathOrCommands;\n this.moveTo(box.x1, box.y1);\n this.lineTo(box.x2, box.y1);\n this.lineTo(box.x2, box.y2);\n this.lineTo(box.x1, box.y2);\n this.close();\n return;\n }\n Array.prototype.push.apply(this.commands, pathOrCommands);\n};\nPath.prototype.getBoundingBox = function() {\n const box = new bbox_default();\n let startX = 0;\n let startY = 0;\n let prevX = 0;\n let prevY = 0;\n for (let i = 0; i < this.commands.length; i++) {\n const cmd = this.commands[i];\n switch (cmd.type) {\n case \"M\":\n box.addPoint(cmd.x, cmd.y);\n startX = prevX = cmd.x;\n startY = prevY = cmd.y;\n break;\n case \"L\":\n box.addPoint(cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"Q\":\n box.addQuad(prevX, prevY, cmd.x1, cmd.y1, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"C\":\n box.addBezier(prevX, prevY, cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case \"Z\":\n prevX = startX;\n prevY = startY;\n break;\n default:\n throw new Error(\"Unexpected path command \" + cmd.type);\n }\n }\n if (box.isEmpty()) {\n box.addPoint(0, 0);\n }\n return box;\n};\nPath.prototype.draw = function(ctx) {\n const layers = this._layers;\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l++) {\n this.draw.call(layers[l], ctx);\n }\n return;\n }\n const image = this._image;\n if (image) {\n ctx.drawImage(image.image, image.x, image.y, image.width, image.height);\n return;\n }\n ctx.beginPath();\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === \"M\") {\n ctx.moveTo(cmd.x, cmd.y);\n } else if (cmd.type === \"L\") {\n ctx.lineTo(cmd.x, cmd.y);\n } else if (cmd.type === \"C\") {\n ctx.bezierCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === \"Q\") {\n ctx.quadraticCurveTo(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === \"Z\" && this.stroke && this.strokeWidth) {\n ctx.closePath();\n }\n }\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.fill();\n }\n if (this.stroke) {\n ctx.strokeStyle = this.stroke;\n ctx.lineWidth = this.strokeWidth;\n ctx.stroke();\n }\n};\nPath.prototype.toPathData = function(options) {\n options = createSVGOutputOptions(options);\n function floatToString(v) {\n const rounded = roundDecimal(v, options.decimalPlaces);\n if (Math.round(v) === rounded) {\n return \"\" + rounded;\n } else {\n return rounded.toFixed(options.decimalPlaces);\n }\n }\n function packValues() {\n let s = \"\";\n for (let i = 0; i < arguments.length; i += 1) {\n const v = arguments[i];\n if (v >= 0 && i > 0) {\n s += \" \";\n }\n s += floatToString(v);\n }\n return s;\n }\n let commandsCopy = this.commands;\n if (options.optimize) {\n commandsCopy = JSON.parse(JSON.stringify(this.commands));\n commandsCopy = optimizeCommands(commandsCopy);\n }\n const flipY = options.flipY;\n let flipYBase = options.flipYBase;\n if (flipY === true && flipYBase === void 0) {\n const tempPath = new Path();\n tempPath.extend(commandsCopy);\n const boundingBox = tempPath.getBoundingBox();\n flipYBase = boundingBox.y1 + boundingBox.y2;\n }\n let d = \"\";\n for (let i = 0; i < commandsCopy.length; i += 1) {\n const cmd = commandsCopy[i];\n if (cmd.type === \"M\") {\n d += \"M\" + packValues(\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"L\") {\n d += \"L\" + packValues(\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"C\") {\n d += \"C\" + packValues(\n cmd.x1,\n flipY ? flipYBase - cmd.y1 : cmd.y1,\n cmd.x2,\n flipY ? flipYBase - cmd.y2 : cmd.y2,\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"Q\") {\n d += \"Q\" + packValues(\n cmd.x1,\n flipY ? flipYBase - cmd.y1 : cmd.y1,\n cmd.x,\n flipY ? flipYBase - cmd.y : cmd.y\n );\n } else if (cmd.type === \"Z\") {\n d += \"Z\";\n }\n }\n return d;\n};\nPath.prototype.toSVG = function(options, pathData) {\n if (this._layers && this._layers.length) {\n console.warn(\"toSVG() does not support colr font layers yet\");\n }\n if (this._image) {\n console.warn(\"toSVG() does not support SVG glyphs yet\");\n }\n if (!pathData) {\n pathData = this.toPathData(options);\n }\n let svg = '<path d=\"';\n svg += pathData;\n svg += '\"';\n if (this.fill !== void 0 && this.fill !== \"black\") {\n if (this.fill === null) {\n svg += ' fill=\"none\"';\n } else {\n svg += ' fill=\"' + this.fill + '\"';\n }\n }\n if (this.stroke) {\n svg += ' stroke=\"' + this.stroke + '\" stroke-width=\"' + this.strokeWidth + '\"';\n }\n svg += \"/>\";\n return svg;\n};\nPath.prototype.toDOMElement = function(options, pathData) {\n if (this._layers && this._layers.length) {\n console.warn(\"toDOMElement() does not support colr font layers yet\");\n }\n if (!pathData) {\n pathData = this.toPathData(options);\n }\n const newPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n newPath.setAttribute(\"d\", pathData);\n if (this.fill !== void 0 && this.fill !== \"black\") {\n if (this.fill === null) {\n newPath.setAttribute(\"fill\", \"none\");\n } else {\n newPath.setAttribute(\"fill\", this.fill);\n }\n }\n if (this.stroke) {\n newPath.setAttribute(\"stroke\", this.stroke);\n newPath.setAttribute(\"stroke-width\", this.strokeWidth);\n }\n return newPath;\n};\nvar path_default = Path;\n\n// src/check.mjs\nfunction fail(message) {\n throw new Error(message);\n}\nfunction argument(predicate, message) {\n if (!predicate) {\n fail(message);\n }\n}\nvar check_default = { fail, argument, assert: argument };\n\n// src/types.mjs\nvar LIMIT16 = 32768;\nvar LIMIT32 = 2147483648;\nvar MIN_16_16 = -(1 << 15);\nvar MAX_16_16 = (1 << 15) - 1 + 1 / (1 << 16);\nvar decode = {};\nvar encode = {};\nvar sizeOf = {};\nfunction constant(v) {\n return function() {\n return v;\n };\n}\nencode.BYTE = function(v) {\n check_default.argument(v >= 0 && v <= 255, \"Byte value should be between 0 and 255.\");\n return [v];\n};\nsizeOf.BYTE = constant(1);\nencode.CHAR = function(v) {\n return [v.charCodeAt(0)];\n};\nsizeOf.CHAR = constant(1);\nencode.CHARARRAY = function(v) {\n if (v === null || typeof v === \"undefined\") {\n v = \"\";\n console.warn(\"CHARARRAY with undefined or null value encountered and treated as an empty string. This is probably caused by a missing glyph name.\");\n }\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n b[i] = v.charCodeAt(i);\n }\n return b;\n};\nsizeOf.CHARARRAY = function(v) {\n if (typeof v === \"undefined\") {\n return 0;\n }\n return v.length;\n};\nencode.USHORT = function(v) {\n return [v >> 8 & 255, v & 255];\n};\nsizeOf.USHORT = constant(2);\nencode.SHORT = function(v) {\n if (v >= LIMIT16) {\n v = -(2 * LIMIT16 - v);\n }\n return [v >> 8 & 255, v & 255];\n};\nsizeOf.SHORT = constant(2);\nencode.UINT24 = function(v) {\n return [v >> 16 & 255, v >> 8 & 255, v & 255];\n};\nsizeOf.UINT24 = constant(3);\nencode.ULONG = function(v) {\n return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n};\nsizeOf.ULONG = constant(4);\nencode.LONG = function(v) {\n if (v >= LIMIT32) {\n v = -(2 * LIMIT32 - v);\n }\n return [v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n};\nsizeOf.LONG = constant(4);\nencode.FLOAT = function(v) {\n if (v > MAX_16_16 || v < MIN_16_16) {\n throw new Error(`Value ${v} is outside the range of representable values in 16.16 format`);\n }\n const fixedValue = Math.round(v * (1 << 16)) << 0;\n return encode.ULONG(fixedValue);\n};\nsizeOf.FLOAT = sizeOf.ULONG;\nencode.FIXED = encode.ULONG;\nsizeOf.FIXED = sizeOf.ULONG;\nencode.FWORD = encode.SHORT;\nsizeOf.FWORD = sizeOf.SHORT;\nencode.UFWORD = encode.USHORT;\nsizeOf.UFWORD = sizeOf.USHORT;\nencode.F2DOT14 = function(v) {\n return encode.USHORT(v * 16384);\n};\nsizeOf.F2DOT14 = sizeOf.USHORT;\nencode.LONGDATETIME = function(v) {\n return [0, 0, 0, 0, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n};\nsizeOf.LONGDATETIME = constant(8);\nencode.TAG = function(v) {\n check_default.argument(v.length === 4, \"Tag should be exactly 4 ASCII characters.\");\n return [\n v.charCodeAt(0),\n v.charCodeAt(1),\n v.charCodeAt(2),\n v.charCodeAt(3)\n ];\n};\nsizeOf.TAG = constant(4);\nencode.Card8 = encode.BYTE;\nsizeOf.Card8 = sizeOf.BYTE;\nencode.Card16 = encode.USHORT;\nsizeOf.Card16 = sizeOf.USHORT;\nencode.OffSize = encode.BYTE;\nsizeOf.OffSize = sizeOf.BYTE;\nencode.SID = encode.USHORT;\nsizeOf.SID = sizeOf.USHORT;\nencode.NUMBER = function(v) {\n if (v >= -107 && v <= 107) {\n return [v + 139];\n } else if (v >= 108 && v <= 1131) {\n v = v - 108;\n return [(v >> 8) + 247, v & 255];\n } else if (v >= -1131 && v <= -108) {\n v = -v - 108;\n return [(v >> 8) + 251, v & 255];\n } else if (v >= -32768 && v <= 32767) {\n return encode.NUMBER16(v);\n } else {\n return encode.NUMBER32(v);\n }\n};\nsizeOf.NUMBER = function(v) {\n return encode.NUMBER(v).length;\n};\nencode.NUMBER16 = function(v) {\n return [28, v >> 8 & 255, v & 255];\n};\nsizeOf.NUMBER16 = constant(3);\nencode.NUMBER32 = function(v) {\n return [29, v >> 24 & 255, v >> 16 & 255, v >> 8 & 255, v & 255];\n};\nsizeOf.NUMBER32 = constant(5);\nencode.REAL = function(v) {\n let value = v.toString();\n const m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(v * epsilon) / epsilon).toString();\n }\n let nibbles = \"\";\n for (let i = 0, ii = value.length; i < ii; i += 1) {\n const c = value[i];\n if (c === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (c === \".\") {\n nibbles += \"a\";\n } else if (c === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += c;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (let i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n return out;\n};\nsizeOf.REAL = function(v) {\n return encode.REAL(v).length;\n};\nencode.NAME = encode.CHARARRAY;\nsizeOf.NAME = sizeOf.CHARARRAY;\nencode.STRING = encode.CHARARRAY;\nsizeOf.STRING = sizeOf.CHARARRAY;\ndecode.UTF8 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes;\n for (let j = 0; j < numChars; j++, offset += 1) {\n codePoints[j] = data.getUint8(offset);\n }\n return String.fromCharCode.apply(null, codePoints);\n};\ndecode.UTF16 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes / 2;\n for (let j = 0; j < numChars; j++, offset += 2) {\n codePoints[j] = data.getUint16(offset);\n }\n return String.fromCharCode.apply(null, codePoints);\n};\nencode.UTF16 = function(v) {\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n const codepoint = v.charCodeAt(i);\n b[b.length] = codepoint >> 8 & 255;\n b[b.length] = codepoint & 255;\n }\n return b;\n};\nsizeOf.UTF16 = function(v) {\n return v.length * 2;\n};\nvar eightBitMacEncodings = {\n \"x-mac-croatian\": (\n // Python: 'mac_croatian'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\u0160\\u2122\\xB4\\xA8\\u2260\\u017D\\xD8\\u221E\\xB1\\u2264\\u2265\\u2206\\xB5\\u2202\\u2211\\u220F\\u0161\\u222B\\xAA\\xBA\\u03A9\\u017E\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u0106\\xAB\\u010C\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u0110\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\uF8FF\\xA9\\u2044\\u20AC\\u2039\\u203A\\xC6\\xBB\\u2013\\xB7\\u201A\\u201E\\u2030\\xC2\\u0107\\xC1\\u010D\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u0111\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u03C0\\xCB\\u02DA\\xB8\\xCA\\xE6\\u02C7\"\n ),\n \"x-mac-cyrillic\": (\n // Python: 'mac_cyrillic'\n \"\\u0410\\u0411\\u0412\\u0413\\u0414\\u0415\\u0416\\u0417\\u0418\\u0419\\u041A\\u041B\\u041C\\u041D\\u041E\\u041F\\u0420\\u0421\\u0422\\u0423\\u0424\\u0425\\u0426\\u0427\\u0428\\u0429\\u042A\\u042B\\u042C\\u042D\\u042E\\u042F\\u2020\\xB0\\u0490\\xA3\\xA7\\u2022\\xB6\\u0406\\xAE\\xA9\\u2122\\u0402\\u0452\\u2260\\u0403\\u0453\\u221E\\xB1\\u2264\\u2265\\u0456\\xB5\\u0491\\u0408\\u0404\\u0454\\u0407\\u0457\\u0409\\u0459\\u040A\\u045A\\u0458\\u0405\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\u040B\\u045B\\u040C\\u045C\\u0455\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u201E\\u040E\\u045E\\u040F\\u045F\\u2116\\u0401\\u0451\\u044F\\u0430\\u0431\\u0432\\u0433\\u0434\\u0435\\u0436\\u0437\\u0438\\u0439\\u043A\\u043B\\u043C\\u043D\\u043E\\u043F\\u0440\\u0441\\u0442\\u0443\\u0444\\u0445\\u0446\\u0447\\u0448\\u0449\\u044A\\u044B\\u044C\\u044D\\u044E\"\n ),\n \"x-mac-gaelic\": (\n // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u1E02\\xB1\\u2264\\u2265\\u1E03\\u010A\\u010B\\u1E0A\\u1E0B\\u1E1E\\u1E1F\\u0120\\u0121\\u1E40\\xE6\\xF8\\u1E41\\u1E56\\u1E57\\u027C\\u0192\\u017F\\u1E60\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1E61\\u1E9B\\xFF\\u0178\\u1E6A\\u20AC\\u2039\\u203A\\u0176\\u0177\\u1E6B\\xB7\\u1EF2\\u1EF3\\u204A\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u2663\\xD2\\xDA\\xDB\\xD9\\u0131\\xDD\\xFD\\u0174\\u0175\\u1E84\\u1E85\\u1E80\\u1E81\\u1E82\\u1E83\"\n ),\n \"x-mac-greek\": (\n // Python: 'mac_greek'\n \"\\xC4\\xB9\\xB2\\xC9\\xB3\\xD6\\xDC\\u0385\\xE0\\xE2\\xE4\\u0384\\xA8\\xE7\\xE9\\xE8\\xEA\\xEB\\xA3\\u2122\\xEE\\xEF\\u2022\\xBD\\u2030\\xF4\\xF6\\xA6\\u20AC\\xF9\\xFB\\xFC\\u2020\\u0393\\u0394\\u0398\\u039B\\u039E\\u03A0\\xDF\\xAE\\xA9\\u03A3\\u03AA\\xA7\\u2260\\xB0\\xB7\\u0391\\xB1\\u2264\\u2265\\xA5\\u0392\\u0395\\u0396\\u0397\\u0399\\u039A\\u039C\\u03A6\\u03AB\\u03A8\\u03A9\\u03AC\\u039D\\xAC\\u039F\\u03A1\\u2248\\u03A4\\xAB\\xBB\\u2026\\xA0\\u03A5\\u03A7\\u0386\\u0388\\u0153\\u2013\\u2015\\u201C\\u201D\\u2018\\u2019\\xF7\\u0389\\u038A\\u038C\\u038E\\u03AD\\u03AE\\u03AF\\u03CC\\u038F\\u03CD\\u03B1\\u03B2\\u03C8\\u03B4\\u03B5\\u03C6\\u03B3\\u03B7\\u03B9\\u03BE\\u03BA\\u03BB\\u03BC\\u03BD\\u03BF\\u03C0\\u03CE\\u03C1\\u03C3\\u03C4\\u03B8\\u03C9\\u03C2\\u03C7\\u03C5\\u03B6\\u03CA\\u03CB\\u0390\\u03B0\\xAD\"\n ),\n \"x-mac-icelandic\": (\n // Python: 'mac_iceland'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\xDD\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\xD0\\xF0\\xDE\\xFE\\xFD\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-inuit\": (\n // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n \"\\u1403\\u1404\\u1405\\u1406\\u140A\\u140B\\u1431\\u1432\\u1433\\u1434\\u1438\\u1439\\u1449\\u144E\\u144F\\u1450\\u1451\\u1455\\u1456\\u1466\\u146D\\u146E\\u146F\\u1470\\u1472\\u1473\\u1483\\u148B\\u148C\\u148D\\u148E\\u1490\\u1491\\xB0\\u14A1\\u14A5\\u14A6\\u2022\\xB6\\u14A7\\xAE\\xA9\\u2122\\u14A8\\u14AA\\u14AB\\u14BB\\u14C2\\u14C3\\u14C4\\u14C5\\u14C7\\u14C8\\u14D0\\u14EF\\u14F0\\u14F1\\u14F2\\u14F4\\u14F5\\u1505\\u14D5\\u14D6\\u14D7\\u14D8\\u14DA\\u14DB\\u14EA\\u1528\\u1529\\u152A\\u152B\\u152D\\u2026\\xA0\\u152E\\u153E\\u1555\\u1556\\u1557\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1558\\u1559\\u155A\\u155D\\u1546\\u1547\\u1548\\u1549\\u154B\\u154C\\u1550\\u157F\\u1580\\u1581\\u1582\\u1583\\u1584\\u1585\\u158F\\u1590\\u1591\\u1592\\u1593\\u1594\\u1595\\u1671\\u1672\\u1673\\u1674\\u1675\\u1676\\u1596\\u15A0\\u15A1\\u15A2\\u15A3\\u15A4\\u15A5\\u15A6\\u157C\\u0141\\u0142\"\n ),\n \"x-mac-ce\": (\n // Python: 'mac_latin2'\n \"\\xC4\\u0100\\u0101\\xC9\\u0104\\xD6\\xDC\\xE1\\u0105\\u010C\\xE4\\u010D\\u0106\\u0107\\xE9\\u0179\\u017A\\u010E\\xED\\u010F\\u0112\\u0113\\u0116\\xF3\\u0117\\xF4\\xF6\\xF5\\xFA\\u011A\\u011B\\xFC\\u2020\\xB0\\u0118\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\u0119\\xA8\\u2260\\u0123\\u012E\\u012F\\u012A\\u2264\\u2265\\u012B\\u0136\\u2202\\u2211\\u0142\\u013B\\u013C\\u013D\\u013E\\u0139\\u013A\\u0145\\u0146\\u0143\\xAC\\u221A\\u0144\\u0147\\u2206\\xAB\\xBB\\u2026\\xA0\\u0148\\u0150\\xD5\\u0151\\u014C\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\u014D\\u0154\\u0155\\u0158\\u2039\\u203A\\u0159\\u0156\\u0157\\u0160\\u201A\\u201E\\u0161\\u015A\\u015B\\xC1\\u0164\\u0165\\xCD\\u017D\\u017E\\u016A\\xD3\\xD4\\u016B\\u016E\\xDA\\u016F\\u0170\\u0171\\u0172\\u0173\\xDD\\xFD\\u0137\\u017B\\u0141\\u017C\\u0122\\u02C7\"\n ),\n macintosh: (\n // Python: 'mac_roman'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\uFB01\\uFB02\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-romanian\": (\n // Python: 'mac_romanian'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\u0102\\u0218\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\u0103\\u0219\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\u021A\\u021B\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n ),\n \"x-mac-turkish\": (\n // Python: 'mac_turkish'\n \"\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u011E\\u011F\\u0130\\u0131\\u015E\\u015F\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\uF8A0\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7\"\n )\n};\ndecode.MACSTRING = function(dataView, offset, dataLength, encoding) {\n const table = eightBitMacEncodings[encoding];\n if (table === void 0) {\n return void 0;\n }\n let result = \"\";\n for (let i = 0; i < dataLength; i++) {\n const c = dataView.getUint8(offset + i);\n if (c <= 127) {\n result += String.fromCharCode(c);\n } else {\n result += table[c & 127];\n }\n }\n return result;\n};\nvar macEncodingTableCache = typeof WeakMap === \"function\" && /* @__PURE__ */ new WeakMap();\nvar macEncodingCacheKeys;\nvar getMacEncodingTable = function(encoding) {\n if (!macEncodingCacheKeys) {\n macEncodingCacheKeys = {};\n for (let e in eightBitMacEncodings) {\n macEncodingCacheKeys[e] = new String(e);\n }\n }\n const cacheKey = macEncodingCacheKeys[encoding];\n if (cacheKey === void 0) {\n return void 0;\n }\n if (macEncodingTableCache) {\n const cachedTable = macEncodingTableCache.get(cacheKey);\n if (cachedTable !== void 0) {\n return cachedTable;\n }\n }\n const decodingTable = eightBitMacEncodings[encoding];\n if (decodingTable === void 0) {\n return void 0;\n }\n const encodingTable = {};\n for (let i = 0; i < decodingTable.length; i++) {\n encodingTable[decodingTable.charCodeAt(i)] = i + 128;\n }\n if (macEncodingTableCache) {\n macEncodingTableCache.set(cacheKey, encodingTable);\n }\n return encodingTable;\n};\nencode.MACSTRING = function(str, encoding) {\n const table = getMacEncodingTable(encoding);\n if (table === void 0) {\n return void 0;\n }\n const result = [];\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c >= 128) {\n c = table[c];\n if (c === void 0) {\n return void 0;\n }\n }\n result[i] = c;\n }\n return result;\n};\nsizeOf.MACSTRING = function(str, encoding) {\n const b = encode.MACSTRING(str, encoding);\n if (b !== void 0) {\n return b.length;\n } else {\n return 0;\n }\n};\nfunction isByteEncodable(value) {\n return value >= -128 && value <= 127;\n}\nfunction encodeVarDeltaRunAsZeroes(deltas, pos, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) {\n ++pos;\n ++runLength;\n }\n result.push(128 | runLength - 1);\n return pos;\n}\nfunction encodeVarDeltaRunAsBytes(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (!isByteEncodable(value)) {\n break;\n }\n if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) {\n break;\n }\n ++pos;\n ++runLength;\n }\n result.push(runLength - 1);\n for (let i = offset; i < pos; ++i) {\n result.push(deltas[i] + 256 & 255);\n }\n return pos;\n}\nfunction encodeVarDeltaRunAsWords(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (value === 0) {\n break;\n }\n if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) {\n break;\n }\n ++pos;\n ++runLength;\n }\n result.push(64 | runLength - 1);\n for (let i = offset; i < pos; ++i) {\n const val = deltas[i];\n result.push(val + 65536 >> 8 & 255, val + 256 & 255);\n }\n return pos;\n}\nencode.VARDELTAS = function(deltas) {\n let pos = 0;\n const result = [];\n while (pos < deltas.length) {\n const value = deltas[pos];\n if (value === 0) {\n pos = encodeVarDeltaRunAsZeroes(deltas, pos, result);\n } else if (value >= -128 && value <= 127) {\n pos = encodeVarDeltaRunAsBytes(deltas, pos, result);\n } else {\n pos = encodeVarDeltaRunAsWords(deltas, pos, result);\n }\n }\n return result;\n};\nencode.INDEX = function(l) {\n let offset = 1;\n const offsets = [offset];\n const data = [];\n for (let i = 0; i < l.length; i += 1) {\n const v = encode.OBJECT(l[i]);\n Array.prototype.push.apply(data, v);\n offset += v.length;\n offsets.push(offset);\n }\n if (data.length === 0) {\n return [0, 0];\n }\n const encodedOffsets = [];\n const offSize = 1 + Math.floor(Math.log(offset) / Math.log(2)) / 8 | 0;\n const offsetEncoder = [void 0, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize];\n for (let i = 0; i < offsets.length; i += 1) {\n const encodedOffset = offsetEncoder(offsets[i]);\n Array.prototype.push.apply(encodedOffsets, encodedOffset);\n }\n return Array.prototype.concat(\n encode.Card16(l.length),\n encode.OffSize(offSize),\n encodedOffsets,\n data\n );\n};\nsizeOf.INDEX = function(v) {\n return encode.INDEX(v).length;\n};\nencode.DICT = function(m) {\n let d = [];\n const keys = Object.keys(m);\n const length = keys.length;\n for (let i = 0; i < length; i += 1) {\n const k = parseInt(keys[i], 0);\n const v = m[k];\n const enc1 = encode.OPERAND(v.value, v.type);\n const enc2 = encode.OPERATOR(k);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n for (let j = 0; j < enc2.length; j++) {\n d.push(enc2[j]);\n }\n }\n return d;\n};\nsizeOf.DICT = function(m) {\n return encode.DICT(m).length;\n};\nencode.OPERATOR = function(v) {\n if (v < 1200) {\n return [v];\n } else {\n return [12, v - 1200];\n }\n};\nencode.OPERAND = function(v, type) {\n let d = [];\n if (Array.isArray(type)) {\n for (let i = 0; i < type.length; i += 1) {\n check_default.argument(v.length === type.length, \"Not enough arguments given for type\" + type);\n const enc1 = encode.OPERAND(v[i], type[i]);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n }\n } else {\n if (type === \"SID\") {\n const enc1 = encode.NUMBER(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"offset\") {\n const enc1 = encode.NUMBER32(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"number\") {\n const enc1 = encode.NUMBER(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else if (type === \"real\") {\n const enc1 = encode.REAL(v);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n } else {\n throw new Error(\"Unknown operand type \" + type);\n }\n }\n return d;\n};\nencode.OP = encode.BYTE;\nsizeOf.OP = sizeOf.BYTE;\nvar wmm = typeof WeakMap === \"function\" && /* @__PURE__ */ new WeakMap();\nencode.CHARSTRING = function(ops) {\n if (wmm) {\n const cachedValue = wmm.get(ops);\n if (cachedValue !== void 0) {\n return cachedValue;\n }\n }\n let d = [];\n const length = ops.length;\n for (let i = 0; i < length; i += 1) {\n const op = ops[i];\n const enc1 = encode[op.type](op.value);\n for (let j = 0; j < enc1.length; j++) {\n d.push(enc1[j]);\n }\n }\n if (wmm) {\n wmm.set(ops, d);\n }\n return d;\n};\nsizeOf.CHARSTRING = function(ops) {\n return encode.CHARSTRING(ops).length;\n};\nencode.OBJECT = function(v) {\n const encodingFunction = encode[v.type];\n check_default.argument(encodingFunction !== void 0, \"No encoding function for type \" + v.type);\n return encodingFunction(v.value);\n};\nsizeOf.OBJECT = function(v) {\n const sizeOfFunction = sizeOf[v.type];\n check_default.argument(sizeOfFunction !== void 0, \"No sizeOf function for type \" + v.type);\n return sizeOfFunction(v.value);\n};\nencode.TABLE = function(table) {\n let d = [];\n const length = (table.fields || []).length;\n const subtables = [];\n const subtableOffsets = [];\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const encodingFunction = encode[field.type];\n check_default.argument(encodingFunction !== void 0, \"No encoding function for field type \" + field.type + \" (\" + field.name + \")\");\n let value = table[field.name];\n if (value === void 0) {\n value = field.value;\n }\n const bytes = encodingFunction(value);\n if (field.type === \"TABLE\") {\n if (value.fields !== null) {\n subtableOffsets.push(d.length);\n subtables.push(bytes);\n }\n d.push(...[0, 0]);\n } else {\n for (let j = 0; j < bytes.length; j++) {\n d.push(bytes[j]);\n }\n }\n }\n for (let i = 0; i < subtables.length; i += 1) {\n const o = subtableOffsets[i];\n const offset = d.length;\n check_default.argument(offset < 65536, \"Table \" + table.tableName + \" too big.\");\n d[o] = offset >> 8;\n d[o + 1] = offset & 255;\n for (let j = 0; j < subtables[i].length; j++) {\n d.push(subtables[i][j]);\n }\n }\n return d;\n};\nsizeOf.TABLE = function(table) {\n let numBytes = 0;\n const length = (table.fields || []).length;\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const sizeOfFunction = sizeOf[field.type];\n check_default.argument(sizeOfFunction !== void 0, \"No sizeOf function for field type \" + field.type + \" (\" + field.name + \")\");\n let value = table[field.name];\n if (value === void 0) {\n value = field.value;\n }\n numBytes += sizeOfFunction(value);\n if (field.type === \"TABLE\") {\n numBytes += 2;\n }\n }\n return numBytes;\n};\nencode.RECORD = encode.TABLE;\nsizeOf.RECORD = sizeOf.TABLE;\nencode.LITERAL = function(v) {\n return v;\n};\nsizeOf.LITERAL = function(v) {\n return v.length;\n};\n\n// src/table.mjs\nfunction Table(tableName, fields, options) {\n if (fields && fields.length) {\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i];\n this[field.name] = field.value;\n }\n }\n this.tableName = tableName;\n this.fields = fields;\n if (options) {\n const optionKeys = Object.keys(options);\n for (let i = 0; i < optionKeys.length; i += 1) {\n const k = optionKeys[i];\n const v = options[k];\n if (this[k] !== void 0) {\n this[k] = v;\n }\n }\n }\n}\nTable.prototype.encode = function() {\n return encode.TABLE(this);\n};\nTable.prototype.sizeOf = function() {\n return sizeOf.TABLE(this);\n};\nfunction ushortList(itemName, list, count) {\n if (count === void 0) {\n count = list.length;\n }\n const fields = new Array(list.length + 1);\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < list.length; i++) {\n fields[i + 1] = { name: itemName + i, type: \"USHORT\", value: list[i] };\n }\n return fields;\n}\nfunction tableList(itemName, records, itemCallback) {\n const count = records.length;\n const fields = new Array(count + 1);\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < count; i++) {\n fields[i + 1] = { name: itemName + i, type: \"TABLE\", value: itemCallback(records[i], i) };\n }\n return fields;\n}\nfunction recordList(itemName, records, itemCallback) {\n const count = records.length;\n let fields = [];\n fields[0] = { name: itemName + \"Count\", type: \"USHORT\", value: count };\n for (let i = 0; i < count; i++) {\n fields = fields.concat(itemCallback(records[i], i));\n }\n return fields;\n}\nfunction Coverage(coverageTable) {\n if (coverageTable.format === 1) {\n Table.call(\n this,\n \"coverageTable\",\n [{ name: \"coverageFormat\", type: \"USHORT\", value: 1 }].concat(ushortList(\"glyph\", coverageTable.glyphs))\n );\n } else if (coverageTable.format === 2) {\n Table.call(\n this,\n \"coverageTable\",\n [{ name: \"coverageFormat\", type: \"USHORT\", value: 2 }].concat(recordList(\"rangeRecord\", coverageTable.ranges, function(RangeRecord, i) {\n return [\n { name: \"startGlyphID\" + i, type: \"USHORT\", value: RangeRecord.start },\n { name: \"endGlyphID\" + i, type: \"USHORT\", value: RangeRecord.end },\n { name: \"startCoverageIndex\" + i, type: \"USHORT\", value: RangeRecord.index }\n ];\n }))\n );\n } else {\n check_default.assert(false, \"Coverage format must be 1 or 2.\");\n }\n}\nCoverage.prototype = Object.create(Table.prototype);\nCoverage.prototype.constructor = Coverage;\nfunction ScriptList(scriptListTable) {\n Table.call(\n this,\n \"scriptListTable\",\n recordList(\"scriptRecord\", scriptListTable, function(scriptRecord, i) {\n const script = scriptRecord.script;\n let defaultLangSys = script.defaultLangSys;\n check_default.assert(!!defaultLangSys, \"Unable to write GSUB: script \" + scriptRecord.tag + \" has no default language system.\");\n return [\n { name: \"scriptTag\" + i, type: \"TAG\", value: scriptRecord.tag },\n { name: \"script\" + i, type: \"TABLE\", value: new Table(\"scriptTable\", [\n { name: \"defaultLangSys\", type: \"TABLE\", value: new Table(\"defaultLangSys\", [\n { name: \"lookupOrder\", type: \"USHORT\", value: 0 },\n { name: \"reqFeatureIndex\", type: \"USHORT\", value: defaultLangSys.reqFeatureIndex }\n ].concat(ushortList(\"featureIndex\", defaultLangSys.featureIndexes))) }\n ].concat(recordList(\"langSys\", script.langSysRecords, function(langSysRecord, i2) {\n const langSys = langSysRecord.langSys;\n return [\n { name: \"langSysTag\" + i2, type: \"TAG\", value: langSysRecord.tag },\n { name: \"langSys\" + i2, type: \"TABLE\", value: new Table(\"langSys\", [\n { name: \"lookupOrder\", type: \"USHORT\", value: 0 },\n { name: \"reqFeatureIndex\", type: \"USHORT\", value: langSys.reqFeatureIndex }\n ].concat(ushortList(\"featureIndex\", langSys.featureIndexes))) }\n ];\n }))) }\n ];\n })\n );\n}\nScriptList.prototype = Object.create(Table.prototype);\nScriptList.prototype.constructor = ScriptList;\nfunction FeatureList(featureListTable) {\n Table.call(\n this,\n \"featureListTable\",\n recordList(\"featureRecord\", featureListTable, function(featureRecord, i) {\n const feature = featureRecord.feature;\n return [\n { name: \"featureTag\" + i, type: \"TAG\", value: featureRecord.tag },\n { name: \"feature\" + i, type: \"TABLE\", value: new Table(\"featureTable\", [\n { name: \"featureParams\", type: \"USHORT\", value: feature.featureParams }\n ].concat(ushortList(\"lookupListIndex\", feature.lookupListIndexes))) }\n ];\n })\n );\n}\nFeatureList.prototype = Object.create(Table.prototype);\nFeatureList.prototype.constructor = FeatureList;\nfunction LookupList(lookupListTable, subtableMakers3) {\n Table.call(this, \"lookupListTable\", tableList(\"lookup\", lookupListTable, function(lookupTable) {\n let subtableCallback = subtableMakers3[lookupTable.lookupType];\n check_default.assert(!!subtableCallback, \"Unable to write GSUB lookup type \" + lookupTable.lookupType + \" tables.\");\n return new Table(\"lookupTable\", [\n { name: \"lookupType\", type: \"USHORT\", value: lookupTable.lookupType },\n { name: \"lookupFlag\", type: \"USHORT\", value: lookupTable.lookupFlag }\n ].concat(tableList(\"subtable\", lookupTable.subtables, subtableCallback)));\n }));\n}\nLookupList.prototype = Object.create(Table.prototype);\nLookupList.prototype.constructor = LookupList;\nfunction ClassDef(classDefTable) {\n if (classDefTable.format === 1) {\n Table.call(\n this,\n \"classDefTable\",\n [\n { name: \"classFormat\", type: \"USHORT\", value: 1 },\n { name: \"startGlyphID\", type: \"USHORT\", value: classDefTable.startGlyph }\n ].concat(ushortList(\"glyph\", classDefTable.classes))\n );\n } else if (classDefTable.format === 2) {\n Table.call(\n this,\n \"classDefTable\",\n [{ name: \"classFormat\", type: \"USHORT\", value: 2 }].concat(recordList(\"rangeRecord\", classDefTable.ranges, function(RangeRecord, i) {\n return [\n { name: \"startGlyphID\" + i, type: \"USHORT\", value: RangeRecord.start },\n { name: \"endGlyphID\" + i, type: \"USHORT\", value: RangeRecord.end },\n { name: \"class\" + i, type: \"USHORT\", value: RangeRecord.classId }\n ];\n }))\n );\n } else {\n check_default.assert(false, \"Class format must be 1 or 2.\");\n }\n}\nClassDef.prototype = Object.create(Table.prototype);\nClassDef.prototype.constructor = ClassDef;\nvar table_default = {\n Table,\n Record: Table,\n Coverage,\n ClassDef,\n ScriptList,\n FeatureList,\n LookupList,\n ushortList,\n tableList,\n recordList\n};\n\n// src/parse.mjs\nfunction getByte(dataView, offset) {\n return dataView.getUint8(offset);\n}\nfunction getUShort(dataView, offset) {\n return dataView.getUint16(offset, false);\n}\nfunction getShort(dataView, offset) {\n return dataView.getInt16(offset, false);\n}\nfunction getUInt24(dataView, offset) {\n return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n}\nfunction getULong(dataView, offset) {\n return dataView.getUint32(offset, false);\n}\nfunction getLong(dataView, offset) {\n return dataView.getInt32(offset, false);\n}\nfunction getFixed(dataView, offset) {\n const decimal = dataView.getInt16(offset, false);\n const fraction = dataView.getUint16(offset + 2, false);\n return decimal + fraction / 65535;\n}\nfunction getTag(dataView, offset) {\n let tag = \"\";\n for (let i = offset; i < offset + 4; i += 1) {\n tag += String.fromCharCode(dataView.getInt8(i));\n }\n return tag;\n}\nfunction getOffset(dataView, offset, offSize) {\n let v = 0;\n for (let i = 0; i < offSize; i += 1) {\n v <<= 8;\n v += dataView.getUint8(offset + i);\n }\n return v;\n}\nfunction getBytes(dataView, startOffset, endOffset) {\n const bytes = [];\n for (let i = startOffset; i < endOffset; i += 1) {\n bytes.push(dataView.getUint8(i));\n }\n return bytes;\n}\nfunction bytesToString(bytes) {\n let s = \"\";\n for (let i = 0; i < bytes.length; i += 1) {\n s += String.fromCharCode(bytes[i]);\n }\n return s;\n}\nvar typeOffsets = {\n byte: 1,\n uShort: 2,\n f2dot14: 2,\n short: 2,\n uInt24: 3,\n uLong: 4,\n fixed: 4,\n longDateTime: 8,\n tag: 4\n};\nvar masks = {\n LONG_WORDS: 32768,\n WORD_DELTA_COUNT_MASK: 32767,\n SHARED_POINT_NUMBERS: 32768,\n COUNT_MASK: 4095,\n EMBEDDED_PEAK_TUPLE: 32768,\n INTERMEDIATE_REGION: 16384,\n PRIVATE_POINT_NUMBERS: 8192,\n TUPLE_INDEX_MASK: 4095,\n POINTS_ARE_WORDS: 128,\n POINT_RUN_COUNT_MASK: 127,\n DELTAS_ARE_ZERO: 128,\n DELTAS_ARE_WORDS: 64,\n DELTA_RUN_COUNT_MASK: 63,\n INNER_INDEX_BIT_COUNT_MASK: 15,\n MAP_ENTRY_SIZE_MASK: 48\n};\nfunction Parser(data, offset) {\n this.data = data;\n this.offset = offset;\n this.relativeOffset = 0;\n}\nParser.prototype.parseByte = function() {\n const v = this.data.getUint8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\nParser.prototype.parseChar = function() {\n const v = this.data.getInt8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\nParser.prototype.parseCard8 = Parser.prototype.parseByte;\nParser.prototype.parseUShort = function() {\n const v = this.data.getUint16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\nParser.prototype.parseCard16 = Parser.prototype.parseUShort;\nParser.prototype.parseSID = Parser.prototype.parseUShort;\nParser.prototype.parseOffset16 = Parser.prototype.parseUShort;\nParser.prototype.parseShort = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\nParser.prototype.parseF2Dot14 = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n this.relativeOffset += 2;\n return v;\n};\nParser.prototype.parseUInt24 = function() {\n const v = getUInt24(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 3;\n return v;\n};\nParser.prototype.parseULong = function() {\n const v = getULong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\nParser.prototype.parseLong = function() {\n const v = getLong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\nParser.prototype.parseOffset32 = Parser.prototype.parseULong;\nParser.prototype.parseFixed = function() {\n const v = getFixed(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\nParser.prototype.parseString = function(length) {\n const dataView = this.data;\n const offset = this.offset + this.relativeOffset;\n let string = \"\";\n this.relativeOffset += length;\n for (let i = 0; i < length; i++) {\n string += String.fromCharCode(dataView.getUint8(offset + i));\n }\n return string;\n};\nParser.prototype.parseTag = function() {\n return this.parseString(4);\n};\nParser.prototype.parseLongDateTime = function() {\n let v = getULong(this.data, this.offset + this.relativeOffset + 4);\n v -= 2082844800;\n this.relativeOffset += 8;\n return v;\n};\nParser.prototype.parseVersion = function(minorBase) {\n const major = getUShort(this.data, this.offset + this.relativeOffset);\n const minor = getUShort(this.data, this.offset + this.relativeOffset + 2);\n this.relativeOffset += 4;\n if (minorBase === void 0) minorBase = 4096;\n return major + minor / minorBase / 10;\n};\nParser.prototype.skip = function(type, amount) {\n if (amount === void 0) {\n amount = 1;\n }\n this.relativeOffset += typeOffsets[type] * amount;\n};\nParser.prototype.parseULongList = function(count) {\n if (count === void 0) {\n count = this.parseULong();\n }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint32(offset);\n offset += 4;\n }\n this.relativeOffset += count * 4;\n return offsets;\n};\nParser.prototype.parseOffset16List = Parser.prototype.parseUShortList = function(count) {\n if (count === void 0) {\n count = this.parseUShort();\n }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint16(offset);\n offset += 2;\n }\n this.relativeOffset += count * 2;\n return offsets;\n};\nParser.prototype.parseShortList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getInt16(offset);\n offset += 2;\n }\n this.relativeOffset += count * 2;\n return list;\n};\nParser.prototype.parseByteList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getUint8(offset++);\n }\n this.relativeOffset += count;\n return list;\n};\nParser.prototype.parseList = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseUShort();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\nParser.prototype.parseList32 = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseULong();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\nParser.prototype.parseRecordList = function(count, recordDescription) {\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseUShort();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\nParser.prototype.parseRecordList32 = function(count, recordDescription) {\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseULong();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\nParser.prototype.parseTupleRecords = function(tupleCount, axisCount) {\n let tuples = [];\n for (let i = 0; i < tupleCount; i++) {\n let tuple = [];\n for (let axisIndex = 0; axisIndex < axisCount; axisIndex++) {\n tuple.push(this.parseF2Dot14());\n }\n tuples.push(tuple);\n }\n return tuples;\n};\nParser.prototype.parseStruct = function(description) {\n if (typeof description === \"function\") {\n return description.call(this);\n } else {\n const fields = Object.keys(description);\n const struct = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = description[fieldName];\n struct[fieldName] = fieldType.call(this);\n }\n return struct;\n }\n};\nParser.prototype.parseValueRecord = function(valueFormat) {\n if (valueFormat === void 0) {\n valueFormat = this.parseUShort();\n }\n if (valueFormat === 0) {\n return;\n }\n const valueRecord = {};\n if (valueFormat & 1) {\n valueRecord.xPlacement = this.parseShort();\n }\n if (valueFormat & 2) {\n valueRecord.yPlacement = this.parseShort();\n }\n if (valueFormat & 4) {\n valueRecord.xAdvance = this.parseShort();\n }\n if (valueFormat & 8) {\n valueRecord.yAdvance = this.parseShort();\n }\n if (valueFormat & 16) {\n valueRecord.xPlaDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 32) {\n valueRecord.yPlaDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 64) {\n valueRecord.xAdvDevice = void 0;\n this.parseShort();\n }\n if (valueFormat & 128) {\n valueRecord.yAdvDevice = void 0;\n this.parseShort();\n }\n return valueRecord;\n};\nParser.prototype.parseValueRecordList = function() {\n const valueFormat = this.parseUShort();\n const valueCount = this.parseUShort();\n const values = new Array(valueCount);\n for (let i = 0; i < valueCount; i++) {\n values[i] = this.parseValueRecord(valueFormat);\n }\n return values;\n};\nParser.prototype.parsePointer = function(description) {\n const structOffset = this.parseOffset16();\n if (structOffset > 0) {\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return void 0;\n};\nParser.prototype.parsePointer32 = function(description) {\n const structOffset = this.parseOffset32();\n if (structOffset > 0) {\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return void 0;\n};\nParser.prototype.parseListOfLists = function(itemCallback) {\n const offsets = this.parseOffset16List();\n const count = offsets.length;\n const relativeOffset = this.relativeOffset;\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n const start = offsets[i];\n if (start === 0) {\n list[i] = void 0;\n continue;\n }\n this.relativeOffset = start;\n if (itemCallback) {\n const subOffsets = this.parseOffset16List();\n const subList = new Array(subOffsets.length);\n for (let j = 0; j < subOffsets.length; j++) {\n this.relativeOffset = start + subOffsets[j];\n subList[j] = itemCallback.call(this);\n }\n list[i] = subList;\n } else {\n list[i] = this.parseUShortList();\n }\n }\n this.relativeOffset = relativeOffset;\n return list;\n};\nParser.prototype.parseCoverage = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n const count = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n glyphs: this.parseUShortList(count)\n };\n } else if (format === 2) {\n const ranges = new Array(count);\n for (let i = 0; i < count; i++) {\n ranges[i] = {\n start: this.parseUShort(),\n end: this.parseUShort(),\n index: this.parseUShort()\n };\n }\n return {\n format: 2,\n ranges\n };\n }\n throw new Error(\"0x\" + startOffset.toString(16) + \": Coverage format must be 1 or 2.\");\n};\nParser.prototype.parseClassDef = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n startGlyph: this.parseUShort(),\n classes: this.parseUShortList()\n };\n } else if (format === 2) {\n return {\n format: 2,\n ranges: this.parseRecordList({\n start: Parser.uShort,\n end: Parser.uShort,\n classId: Parser.uShort\n })\n };\n }\n console.warn(`0x${startOffset.toString(16)}: This font file uses an invalid ClassDef format of ${format}. It might be corrupted and should be reacquired if it doesn't display as intended.`);\n return {\n format\n };\n};\nParser.list = function(count, itemCallback) {\n return function() {\n return this.parseList(count, itemCallback);\n };\n};\nParser.list32 = function(count, itemCallback) {\n return function() {\n return this.parseList32(count, itemCallback);\n };\n};\nParser.recordList = function(count, recordDescription) {\n return function() {\n return this.parseRecordList(count, recordDescription);\n };\n};\nParser.recordList32 = function(count, recordDescription) {\n return function() {\n return this.parseRecordList32(count, recordDescription);\n };\n};\nParser.pointer = function(description) {\n return function() {\n return this.parsePointer(description);\n };\n};\nParser.pointer32 = function(description) {\n return function() {\n return this.parsePointer32(description);\n };\n};\nParser.tag = Parser.prototype.parseTag;\nParser.byte = Parser.prototype.parseByte;\nParser.uShort = Parser.offset16 = Parser.prototype.parseUShort;\nParser.uShortList = Parser.prototype.parseUShortList;\nParser.uInt24 = Parser.prototype.parseUInt24;\nParser.uLong = Parser.offset32 = Parser.prototype.parseULong;\nParser.uLongList = Parser.prototype.parseULongList;\nParser.fixed = Parser.prototype.parseFixed;\nParser.f2Dot14 = Parser.prototype.parseF2Dot14;\nParser.struct = Parser.prototype.parseStruct;\nParser.coverage = Parser.prototype.parseCoverage;\nParser.classDef = Parser.prototype.parseClassDef;\nvar langSysTable = {\n reserved: Parser.uShort,\n reqFeatureIndex: Parser.uShort,\n featureIndexes: Parser.uShortList\n};\nParser.prototype.parseScriptList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n script: Parser.pointer({\n defaultLangSys: Parser.pointer(langSysTable),\n langSysRecords: Parser.recordList({\n tag: Parser.tag,\n langSys: Parser.pointer(langSysTable)\n })\n })\n })) || [];\n};\nParser.prototype.parseFeatureList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n feature: Parser.pointer({\n featureParams: Parser.offset16,\n lookupListIndexes: Parser.uShortList\n })\n })) || [];\n};\nParser.prototype.parseLookupList = function(lookupTableParsers) {\n return this.parsePointer(Parser.list(Parser.pointer(function() {\n const lookupType = this.parseUShort();\n check_default.argument(1 <= lookupType && lookupType <= 9, \"GPOS/GSUB lookup type \" + lookupType + \" unknown.\");\n const lookupFlag = this.parseUShort();\n const useMarkFilteringSet = lookupFlag & 16;\n return {\n lookupType,\n lookupFlag,\n subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])),\n markFilteringSet: useMarkFilteringSet ? this.parseUShort() : void 0\n };\n }))) || [];\n};\nParser.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n const majorVersion = this.parseUShort();\n const minorVersion = this.parseUShort();\n check_default.argument(majorVersion === 1 && minorVersion < 1, \"GPOS/GSUB feature variations table unknown.\");\n const featureVariations = this.parseRecordList32({\n conditionSetOffset: Parser.offset32,\n featureTableSubstitutionOffset: Parser.offset32\n });\n return featureVariations;\n }) || [];\n};\nParser.prototype.parseVariationStore = function() {\n const vsOffset = this.relativeOffset;\n const length = this.parseUShort();\n const variationStore = {\n itemVariationStore: this.parseItemVariationStore()\n };\n this.relativeOffset = vsOffset + length + 2;\n return variationStore;\n};\nParser.prototype.parseItemVariationStore = function() {\n const itemStoreOffset = this.relativeOffset;\n const iVStore = {\n format: this.parseUShort(),\n variationRegions: [],\n itemVariationSubtables: []\n };\n const variationRegionListOffset = this.parseOffset32();\n const itemVariationDataCount = this.parseUShort();\n const itemVariationDataOffsets = this.parseULongList(itemVariationDataCount);\n this.relativeOffset = itemStoreOffset + variationRegionListOffset;\n iVStore.variationRegions = this.parseVariationRegionList();\n for (let i = 0; i < itemVariationDataCount; i++) {\n const subtableOffset = itemVariationDataOffsets[i];\n this.relativeOffset = itemStoreOffset + subtableOffset;\n iVStore.itemVariationSubtables.push(this.parseItemVariationSubtable());\n }\n return iVStore;\n};\nParser.prototype.parseVariationRegionList = function() {\n const axisCount = this.parseUShort();\n const regionCount = this.parseUShort();\n return this.parseRecordList(regionCount, {\n regionAxes: Parser.recordList(axisCount, {\n startCoord: Parser.f2Dot14,\n peakCoord: Parser.f2Dot14,\n endCoord: Parser.f2Dot14\n })\n });\n};\nParser.prototype.parseItemVariationSubtable = function() {\n const itemCount = this.parseUShort();\n const wordDeltaCount = this.parseUShort();\n const regionIndexes = this.parseUShortList();\n const regionIndexCount = regionIndexes.length;\n const subtable = {\n regionIndexes,\n deltaSets: itemCount && regionIndexCount ? this.parseDeltaSets(itemCount, wordDeltaCount, regionIndexCount) : []\n };\n return subtable;\n};\nParser.prototype.parseDeltaSetIndexMap = function() {\n const format = this.parseByte();\n const entryFormat = this.parseByte();\n const map = [];\n let mapCount = 0;\n switch (format) {\n case 0:\n mapCount = this.parseUShort();\n break;\n case 1:\n mapCount = this.parseULong();\n break;\n default:\n console.error(`unsupported DeltaSetIndexMap format ${format}`);\n }\n if (!mapCount) return {\n format,\n entryFormat\n };\n const bitCount = (entryFormat & masks.INNER_INDEX_BIT_COUNT_MASK) + 1;\n const entrySize = ((entryFormat & masks.MAP_ENTRY_SIZE_MASK) >> 4) + 1;\n for (let n = 0; n < mapCount; n++) {\n let entry;\n if (entrySize === 1) {\n entry = this.parseByte();\n } else if (entrySize === 2) {\n entry = this.parseUShort();\n } else if (entrySize === 3) {\n entry = this.parseUInt24();\n } else if (entrySize === 4) {\n entry = this.parseULong();\n } else {\n throw new Error(`Invalid entry size of ${entrySize}`);\n }\n const outerIndex = entry >> bitCount;\n const innerIndex = entry & (1 << bitCount) - 1;\n map.push({ outerIndex, innerIndex });\n }\n return {\n format,\n entryFormat,\n map\n };\n};\nParser.prototype.parseDeltaSets = function(itemCount, wordDeltaCount, regionIndexCount) {\n const deltas = Array.from({ length: itemCount }, () => []);\n const longFlag = wordDeltaCount & masks.LONG_WORDS;\n const wordCount = wordDeltaCount & masks.WORD_DELTA_COUNT_MASK;\n if (wordCount > regionIndexCount) {\n throw Error(\"wordCount must be less than or equal to regionIndexCount\");\n }\n const wordParser = (longFlag ? this.parseLong : this.parseShort).bind(this);\n const restParser = (longFlag ? this.parseShort : this.parseChar).bind(this);\n for (let i = 0; i < itemCount; i++) {\n for (let j = 0; j < regionIndexCount; j++) {\n if (j < wordCount) {\n deltas[i].push(wordParser());\n } else {\n deltas[i].push(restParser());\n }\n }\n }\n return deltas;\n};\nParser.prototype.parseTupleVariationStoreList = function(axisCount, flavor, glyphs) {\n const glyphCount = this.parseUShort();\n const flags = this.parseUShort();\n const offsetSizeIs32Bit = flags & 1;\n const glyphVariationDataArrayOffset = this.parseOffset32();\n const parseOffset = (offsetSizeIs32Bit ? this.parseULong : this.parseUShort).bind(this);\n const glyphVariations = {};\n let currentOffset = parseOffset();\n if (!offsetSizeIs32Bit) currentOffset *= 2;\n let nextOffset;\n for (let i = 0; i < glyphCount; i++) {\n nextOffset = parseOffset();\n if (!offsetSizeIs32Bit) nextOffset *= 2;\n const length = nextOffset - currentOffset;\n glyphVariations[i] = length ? this.parseTupleVariationStore(\n glyphVariationDataArrayOffset + currentOffset,\n axisCount,\n flavor,\n glyphs,\n i\n ) : void 0;\n currentOffset = nextOffset;\n }\n return glyphVariations;\n};\nParser.prototype.parseTupleVariationStore = function(tableOffset, axisCount, flavor, glyphs, glyphIndex) {\n const relativeOffset = this.relativeOffset;\n this.relativeOffset = tableOffset;\n if (flavor === \"cvar\") {\n this.relativeOffset += 4;\n }\n const tupleVariationCount = this.parseUShort();\n const hasSharedPoints = !!(tupleVariationCount & masks.SHARED_POINT_NUMBERS);\n const count = tupleVariationCount & masks.COUNT_MASK;\n let dataOffset = this.parseOffset16();\n const headers = [];\n let sharedPoints = [];\n for (let h = 0; h < count; h++) {\n const headerData = this.parseTupleVariationHeader(axisCount, flavor);\n headers.push(headerData);\n }\n if (this.relativeOffset !== tableOffset + dataOffset) {\n console.warn(`Unexpected offset after parsing tuple variation headers! Expected ${tableOffset + dataOffset}, actually ${this.relativeOffset}`);\n this.relativeOffset = tableOffset + dataOffset;\n }\n if (hasSharedPoints) {\n sharedPoints = this.parsePackedPointNumbers();\n }\n let serializedDataOffset = this.relativeOffset;\n for (let h = 0; h < count; h++) {\n const header = headers[h];\n header.privatePoints = [];\n this.relativeOffset = serializedDataOffset;\n if (flavor === \"cvar\" && !header.peakTuple) {\n console.warn(\"An embedded peak tuple is required in TupleVariationHeaders for the cvar table.\");\n }\n if (header.flags.privatePointNumbers) {\n header.privatePoints = this.parsePackedPointNumbers();\n }\n delete header.flags;\n const deltasOffset = this.offset;\n const deltasRelativeOffset = this.relativeOffset;\n const defineDeltas = (propertyName) => {\n let _deltas = void 0;\n let _deltasY = void 0;\n const parseDeltas = () => {\n let pointsCount = 0;\n if (flavor === \"gvar\") {\n pointsCount = header.privatePoints.length || sharedPoints.length;\n if (!pointsCount) {\n const glyph = glyphs.get(glyphIndex);\n glyph.path;\n pointsCount = glyph.points.length;\n pointsCount += 4;\n }\n } else if (flavor === \"cvar\") {\n pointsCount = glyphs.length;\n }\n this.offset = deltasOffset;\n this.relativeOffset = deltasRelativeOffset;\n _deltas = this.parsePackedDeltas(pointsCount);\n if (flavor === \"gvar\") {\n _deltasY = this.parsePackedDeltas(pointsCount);\n }\n };\n return {\n configurable: true,\n get: function() {\n if (_deltas === void 0) parseDeltas();\n return propertyName === \"deltasY\" ? _deltasY : _deltas;\n },\n set: function(deltas) {\n if (_deltas === void 0) parseDeltas();\n if (propertyName === \"deltasY\") {\n _deltasY = deltas;\n } else {\n _deltas = deltas;\n }\n }\n };\n };\n Object.defineProperty(header, \"deltas\", defineDeltas.call(this, \"deltas\"));\n if (flavor === \"gvar\") {\n Object.defineProperty(header, \"deltasY\", defineDeltas.call(this, \"deltasY\"));\n }\n serializedDataOffset += header.variationDataSize;\n delete header.variationDataSize;\n }\n this.relativeOffset = relativeOffset;\n const result = {\n headers\n };\n result.sharedPoints = sharedPoints;\n return result;\n};\nParser.prototype.parseTupleVariationHeader = function(axisCount, flavor) {\n const variationDataSize = this.parseUShort();\n const tupleIndex = this.parseUShort();\n const embeddedPeakTuple = !!(tupleIndex & masks.EMBEDDED_PEAK_TUPLE);\n const intermediateRegion = !!(tupleIndex & masks.INTERMEDIATE_REGION);\n const privatePointNumbers = !!(tupleIndex & masks.PRIVATE_POINT_NUMBERS);\n const sharedTupleRecordsIndex = embeddedPeakTuple ? void 0 : tupleIndex & masks.TUPLE_INDEX_MASK;\n const peakTuple = embeddedPeakTuple ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const intermediateStartTuple = intermediateRegion ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const intermediateEndTuple = intermediateRegion ? this.parseTupleRecords(1, axisCount)[0] : void 0;\n const result = {\n variationDataSize,\n peakTuple,\n intermediateStartTuple,\n intermediateEndTuple,\n flags: {\n embeddedPeakTuple,\n intermediateRegion,\n privatePointNumbers\n }\n };\n if (flavor === \"gvar\") {\n result.sharedTupleRecordsIndex = sharedTupleRecordsIndex;\n }\n return result;\n};\nParser.prototype.parsePackedPointNumbers = function() {\n const countByte1 = this.parseByte();\n const points = [];\n let totalPointCount = countByte1;\n if (countByte1 >= 128) {\n const countByte2 = this.parseByte();\n totalPointCount = (countByte1 & masks.POINT_RUN_COUNT_MASK) << 8 | countByte2;\n }\n let lastPoint = 0;\n while (points.length < totalPointCount) {\n const controlByte = this.parseByte();\n const numbersAre16Bit = !!(controlByte & masks.POINTS_ARE_WORDS);\n let runCount = (controlByte & masks.POINT_RUN_COUNT_MASK) + 1;\n for (let i = 0; i < runCount && points.length < totalPointCount; i++) {\n let pointDelta;\n if (numbersAre16Bit) {\n pointDelta = this.parseUShort();\n } else {\n pointDelta = this.parseByte();\n }\n lastPoint = lastPoint + pointDelta;\n points.push(lastPoint);\n }\n }\n return points;\n};\nParser.prototype.parsePackedDeltas = function(expectedCount) {\n const deltas = [];\n while (deltas.length < expectedCount) {\n const controlByte = this.parseByte();\n const zeroData = !!(controlByte & masks.DELTAS_ARE_ZERO);\n const deltaWords = !!(controlByte & masks.DELTAS_ARE_WORDS);\n const runCount = (controlByte & masks.DELTA_RUN_COUNT_MASK) + 1;\n for (let i = 0; i < runCount && deltas.length < expectedCount; i++) {\n if (zeroData) {\n deltas.push(0);\n } else if (deltaWords) {\n deltas.push(this.parseShort());\n } else {\n deltas.push(this.parseChar());\n }\n }\n }\n return deltas;\n};\nvar parse_default = {\n getByte,\n getCard8: getByte,\n getUShort,\n getCard16: getUShort,\n getShort,\n getUInt24,\n getULong,\n getFixed,\n getTag,\n getOffset,\n getBytes,\n bytesToString,\n Parser\n};\n\n// src/tables/name.mjs\nvar nameTableNames = [\n \"copyright\",\n // 0\n \"fontFamily\",\n // 1\n \"fontSubfamily\",\n // 2\n \"uniqueID\",\n // 3\n \"fullName\",\n // 4\n \"version\",\n // 5\n \"postScriptName\",\n // 6\n \"trademark\",\n // 7\n \"manufacturer\",\n // 8\n \"designer\",\n // 9\n \"description\",\n // 10\n \"manufacturerURL\",\n // 11\n \"designerURL\",\n // 12\n \"license\",\n // 13\n \"licenseURL\",\n // 14\n \"reserved\",\n // 15\n \"preferredFamily\",\n // 16\n \"preferredSubfamily\",\n // 17\n \"compatibleFullName\",\n // 18\n \"sampleText\",\n // 19\n \"postScriptFindFontName\",\n // 20\n \"wwsFamily\",\n // 21\n \"wwsSubfamily\"\n // 22\n];\nvar macLanguages = {\n 0: \"en\",\n 1: \"fr\",\n 2: \"de\",\n 3: \"it\",\n 4: \"nl\",\n 5: \"sv\",\n 6: \"es\",\n 7: \"da\",\n 8: \"pt\",\n 9: \"no\",\n 10: \"he\",\n 11: \"ja\",\n 12: \"ar\",\n 13: \"fi\",\n 14: \"el\",\n 15: \"is\",\n 16: \"mt\",\n 17: \"tr\",\n 18: \"hr\",\n 19: \"zh-Hant\",\n 20: \"ur\",\n 21: \"hi\",\n 22: \"th\",\n 23: \"ko\",\n 24: \"lt\",\n 25: \"pl\",\n 26: \"hu\",\n 27: \"es\",\n 28: \"lv\",\n 29: \"se\",\n 30: \"fo\",\n 31: \"fa\",\n 32: \"ru\",\n 33: \"zh\",\n 34: \"nl-BE\",\n 35: \"ga\",\n 36: \"sq\",\n 37: \"ro\",\n 38: \"cz\",\n 39: \"sk\",\n 40: \"si\",\n 41: \"yi\",\n 42: \"sr\",\n 43: \"mk\",\n 44: \"bg\",\n 45: \"uk\",\n 46: \"be\",\n 47: \"uz\",\n 48: \"kk\",\n 49: \"az-Cyrl\",\n 50: \"az-Arab\",\n 51: \"hy\",\n 52: \"ka\",\n 53: \"mo\",\n 54: \"ky\",\n 55: \"tg\",\n 56: \"tk\",\n 57: \"mn-CN\",\n 58: \"mn\",\n 59: \"ps\",\n 60: \"ks\",\n 61: \"ku\",\n 62: \"sd\",\n 63: \"bo\",\n 64: \"ne\",\n 65: \"sa\",\n 66: \"mr\",\n 67: \"bn\",\n 68: \"as\",\n 69: \"gu\",\n 70: \"pa\",\n 71: \"or\",\n 72: \"ml\",\n 73: \"kn\",\n 74: \"ta\",\n 75: \"te\",\n 76: \"si\",\n 77: \"my\",\n 78: \"km\",\n 79: \"lo\",\n 80: \"vi\",\n 81: \"id\",\n 82: \"tl\",\n 83: \"ms\",\n 84: \"ms-Arab\",\n 85: \"am\",\n 86: \"ti\",\n 87: \"om\",\n 88: \"so\",\n 89: \"sw\",\n 90: \"rw\",\n 91: \"rn\",\n 92: \"ny\",\n 93: \"mg\",\n 94: \"eo\",\n 128: \"cy\",\n 129: \"eu\",\n 130: \"ca\",\n 131: \"la\",\n 132: \"qu\",\n 133: \"gn\",\n 134: \"ay\",\n 135: \"tt\",\n 136: \"ug\",\n 137: \"dz\",\n 138: \"jv\",\n 139: \"su\",\n 140: \"gl\",\n 141: \"af\",\n 142: \"br\",\n 143: \"iu\",\n 144: \"gd\",\n 145: \"gv\",\n 146: \"ga\",\n 147: \"to\",\n 148: \"el-polyton\",\n 149: \"kl\",\n 150: \"az\",\n 151: \"nn\"\n};\nvar macLanguageToScript = {\n 0: 0,\n // langEnglish → smRoman\n 1: 0,\n // langFrench → smRoman\n 2: 0,\n // langGerman → smRoman\n 3: 0,\n // langItalian → smRoman\n 4: 0,\n // langDutch → smRoman\n 5: 0,\n // langSwedish → smRoman\n 6: 0,\n // langSpanish → smRoman\n 7: 0,\n // langDanish → smRoman\n 8: 0,\n // langPortuguese → smRoman\n 9: 0,\n // langNorwegian → smRoman\n 10: 5,\n // langHebrew → smHebrew\n 11: 1,\n // langJapanese → smJapanese\n 12: 4,\n // langArabic → smArabic\n 13: 0,\n // langFinnish → smRoman\n 14: 6,\n // langGreek → smGreek\n 15: 0,\n // langIcelandic → smRoman (modified)\n 16: 0,\n // langMaltese → smRoman\n 17: 0,\n // langTurkish → smRoman (modified)\n 18: 0,\n // langCroatian → smRoman (modified)\n 19: 2,\n // langTradChinese → smTradChinese\n 20: 4,\n // langUrdu → smArabic\n 21: 9,\n // langHindi → smDevanagari\n 22: 21,\n // langThai → smThai\n 23: 3,\n // langKorean → smKorean\n 24: 29,\n // langLithuanian → smCentralEuroRoman\n 25: 29,\n // langPolish → smCentralEuroRoman\n 26: 29,\n // langHungarian → smCentralEuroRoman\n 27: 29,\n // langEstonian → smCentralEuroRoman\n 28: 29,\n // langLatvian → smCentralEuroRoman\n 29: 0,\n // langSami → smRoman\n 30: 0,\n // langFaroese → smRoman (modified)\n 31: 4,\n // langFarsi → smArabic (modified)\n 32: 7,\n // langRussian → smCyrillic\n 33: 25,\n // langSimpChinese → smSimpChinese\n 34: 0,\n // langFlemish → smRoman\n 35: 0,\n // langIrishGaelic → smRoman (modified)\n 36: 0,\n // langAlbanian → smRoman\n 37: 0,\n // langRomanian → smRoman (modified)\n 38: 29,\n // langCzech → smCentralEuroRoman\n 39: 29,\n // langSlovak → smCentralEuroRoman\n 40: 0,\n // langSlovenian → smRoman (modified)\n 41: 5,\n // langYiddish → smHebrew\n 42: 7,\n // langSerbian → smCyrillic\n 43: 7,\n // langMacedonian → smCyrillic\n 44: 7,\n // langBulgarian → smCyrillic\n 45: 7,\n // langUkrainian → smCyrillic (modified)\n 46: 7,\n // langByelorussian → smCyrillic\n 47: 7,\n // langUzbek → smCyrillic\n 48: 7,\n // langKazakh → smCyrillic\n 49: 7,\n // langAzerbaijani → smCyrillic\n 50: 4,\n // langAzerbaijanAr → smArabic\n 51: 24,\n // langArmenian → smArmenian\n 52: 23,\n // langGeorgian → smGeorgian\n 53: 7,\n // langMoldavian → smCyrillic\n 54: 7,\n // langKirghiz → smCyrillic\n 55: 7,\n // langTajiki → smCyrillic\n 56: 7,\n // langTurkmen → smCyrillic\n 57: 27,\n // langMongolian → smMongolian\n 58: 7,\n // langMongolianCyr → smCyrillic\n 59: 4,\n // langPashto → smArabic\n 60: 4,\n // langKurdish → smArabic\n 61: 4,\n // langKashmiri → smArabic\n 62: 4,\n // langSindhi → smArabic\n 63: 26,\n // langTibetan → smTibetan\n 64: 9,\n // langNepali → smDevanagari\n 65: 9,\n // langSanskrit → smDevanagari\n 66: 9,\n // langMarathi → smDevanagari\n 67: 13,\n // langBengali → smBengali\n 68: 13,\n // langAssamese → smBengali\n 69: 11,\n // langGujarati → smGujarati\n 70: 10,\n // langPunjabi → smGurmukhi\n 71: 12,\n // langOriya → smOriya\n 72: 17,\n // langMalayalam → smMalayalam\n 73: 16,\n // langKannada → smKannada\n 74: 14,\n // langTamil → smTamil\n 75: 15,\n // langTelugu → smTelugu\n 76: 18,\n // langSinhalese → smSinhalese\n 77: 19,\n // langBurmese → smBurmese\n 78: 20,\n // langKhmer → smKhmer\n 79: 22,\n // langLao → smLao\n 80: 30,\n // langVietnamese → smVietnamese\n 81: 0,\n // langIndonesian → smRoman\n 82: 0,\n // langTagalog → smRoman\n 83: 0,\n // langMalayRoman → smRoman\n 84: 4,\n // langMalayArabic → smArabic\n 85: 28,\n // langAmharic → smEthiopic\n 86: 28,\n // langTigrinya → smEthiopic\n 87: 28,\n // langOromo → smEthiopic\n 88: 0,\n // langSomali → smRoman\n 89: 0,\n // langSwahili → smRoman\n 90: 0,\n // langKinyarwanda → smRoman\n 91: 0,\n // langRundi → smRoman\n 92: 0,\n // langNyanja → smRoman\n 93: 0,\n // langMalagasy → smRoman\n 94: 0,\n // langEsperanto → smRoman\n 128: 0,\n // langWelsh → smRoman (modified)\n 129: 0,\n // langBasque → smRoman\n 130: 0,\n // langCatalan → smRoman\n 131: 0,\n // langLatin → smRoman\n 132: 0,\n // langQuechua → smRoman\n 133: 0,\n // langGuarani → smRoman\n 134: 0,\n // langAymara → smRoman\n 135: 7,\n // langTatar → smCyrillic\n 136: 4,\n // langUighur → smArabic\n 137: 26,\n // langDzongkha → smTibetan\n 138: 0,\n // langJavaneseRom → smRoman\n 139: 0,\n // langSundaneseRom → smRoman\n 140: 0,\n // langGalician → smRoman\n 141: 0,\n // langAfrikaans → smRoman\n 142: 0,\n // langBreton → smRoman (modified)\n 143: 28,\n // langInuktitut → smEthiopic (modified)\n 144: 0,\n // langScottishGaelic → smRoman (modified)\n 145: 0,\n // langManxGaelic → smRoman (modified)\n 146: 0,\n // langIrishGaelicScript → smRoman (modified)\n 147: 0,\n // langTongan → smRoman\n 148: 6,\n // langGreekAncient → smRoman\n 149: 0,\n // langGreenlandic → smRoman\n 150: 0,\n // langAzerbaijanRoman → smRoman\n 151: 0\n // langNynorsk → smRoman\n};\nvar windowsLanguages = {\n 1078: \"af\",\n 1052: \"sq\",\n 1156: \"gsw\",\n 1118: \"am\",\n 5121: \"ar-DZ\",\n 15361: \"ar-BH\",\n 3073: \"ar\",\n 2049: \"ar-IQ\",\n 11265: \"ar-JO\",\n 13313: \"ar-KW\",\n 12289: \"ar-LB\",\n 4097: \"ar-LY\",\n 6145: \"ary\",\n 8193: \"ar-OM\",\n 16385: \"ar-QA\",\n 1025: \"ar-SA\",\n 10241: \"ar-SY\",\n 7169: \"aeb\",\n 14337: \"ar-AE\",\n 9217: \"ar-YE\",\n 1067: \"hy\",\n 1101: \"as\",\n 2092: \"az-Cyrl\",\n 1068: \"az\",\n 1133: \"ba\",\n 1069: \"eu\",\n 1059: \"be\",\n 2117: \"bn\",\n 1093: \"bn-IN\",\n 8218: \"bs-Cyrl\",\n 5146: \"bs\",\n 1150: \"br\",\n 1026: \"bg\",\n 1027: \"ca\",\n 3076: \"zh-HK\",\n 5124: \"zh-MO\",\n 2052: \"zh\",\n 4100: \"zh-SG\",\n 1028: \"zh-TW\",\n 1155: \"co\",\n 1050: \"hr\",\n 4122: \"hr-BA\",\n 1029: \"cs\",\n 1030: \"da\",\n 1164: \"prs\",\n 1125: \"dv\",\n 2067: \"nl-BE\",\n 1043: \"nl\",\n 3081: \"en-AU\",\n 10249: \"en-BZ\",\n 4105: \"en-CA\",\n 9225: \"en-029\",\n 16393: \"en-IN\",\n 6153: \"en-IE\",\n 8201: \"en-JM\",\n 17417: \"en-MY\",\n 5129: \"en-NZ\",\n 13321: \"en-PH\",\n 18441: \"en-SG\",\n 7177: \"en-ZA\",\n 11273: \"en-TT\",\n 2057: \"en-GB\",\n 1033: \"en\",\n 12297: \"en-ZW\",\n 1061: \"et\",\n 1080: \"fo\",\n 1124: \"fil\",\n 1035: \"fi\",\n 2060: \"fr-BE\",\n 3084: \"fr-CA\",\n 1036: \"fr\",\n 5132: \"fr-LU\",\n 6156: \"fr-MC\",\n 4108: \"fr-CH\",\n 1122: \"fy\",\n 1110: \"gl\",\n 1079: \"ka\",\n 3079: \"de-AT\",\n 1031: \"de\",\n 5127: \"de-LI\",\n 4103: \"de-LU\",\n 2055: \"de-CH\",\n 1032: \"el\",\n 1135: \"kl\",\n 1095: \"gu\",\n 1128: \"ha\",\n 1037: \"he\",\n 1081: \"hi\",\n 1038: \"hu\",\n 1039: \"is\",\n 1136: \"ig\",\n 1057: \"id\",\n 1117: \"iu\",\n 2141: \"iu-Latn\",\n 2108: \"ga\",\n 1076: \"xh\",\n 1077: \"zu\",\n 1040: \"it\",\n 2064: \"it-CH\",\n 1041: \"ja\",\n 1099: \"kn\",\n 1087: \"kk\",\n 1107: \"km\",\n 1158: \"quc\",\n 1159: \"rw\",\n 1089: \"sw\",\n 1111: \"kok\",\n 1042: \"ko\",\n 1088: \"ky\",\n 1108: \"lo\",\n 1062: \"lv\",\n 1063: \"lt\",\n 2094: \"dsb\",\n 1134: \"lb\",\n 1071: \"mk\",\n 2110: \"ms-BN\",\n 1086: \"ms\",\n 1100: \"ml\",\n 1082: \"mt\",\n 1153: \"mi\",\n 1146: \"arn\",\n 1102: \"mr\",\n 1148: \"moh\",\n 1104: \"mn\",\n 2128: \"mn-CN\",\n 1121: \"ne\",\n 1044: \"nb\",\n 2068: \"nn\",\n 1154: \"oc\",\n 1096: \"or\",\n 1123: \"ps\",\n 1045: \"pl\",\n 1046: \"pt\",\n 2070: \"pt-PT\",\n 1094: \"pa\",\n 1131: \"qu-BO\",\n 2155: \"qu-EC\",\n 3179: \"qu\",\n 1048: \"ro\",\n 1047: \"rm\",\n 1049: \"ru\",\n 9275: \"smn\",\n 4155: \"smj-NO\",\n 5179: \"smj\",\n 3131: \"se-FI\",\n 1083: \"se\",\n 2107: \"se-SE\",\n 8251: \"sms\",\n 6203: \"sma-NO\",\n 7227: \"sms\",\n 1103: \"sa\",\n 7194: \"sr-Cyrl-BA\",\n 3098: \"sr\",\n 6170: \"sr-Latn-BA\",\n 2074: \"sr-Latn\",\n 1132: \"nso\",\n 1074: \"tn\",\n 1115: \"si\",\n 1051: \"sk\",\n 1060: \"sl\",\n 11274: \"es-AR\",\n 16394: \"es-BO\",\n 13322: \"es-CL\",\n 9226: \"es-CO\",\n 5130: \"es-CR\",\n 7178: \"es-DO\",\n 12298: \"es-EC\",\n 17418: \"es-SV\",\n 4106: \"es-GT\",\n 18442: \"es-HN\",\n 2058: \"es-MX\",\n 19466: \"es-NI\",\n 6154: \"es-PA\",\n 15370: \"es-PY\",\n 10250: \"es-PE\",\n 20490: \"es-PR\",\n // Microsoft has defined two different language codes for\n // “Spanish with modern sorting” and “Spanish with traditional\n // sorting”. This makes sense for collation APIs, and it would be\n // possible to express this in BCP 47 language tags via Unicode\n // extensions (eg., es-u-co-trad is Spanish with traditional\n // sorting). However, for storing names in fonts, the distinction\n // does not make sense, so we give “es” in both cases.\n 3082: \"es\",\n 1034: \"es\",\n 21514: \"es-US\",\n 14346: \"es-UY\",\n 8202: \"es-VE\",\n 2077: \"sv-FI\",\n 1053: \"sv\",\n 1114: \"syr\",\n 1064: \"tg\",\n 2143: \"tzm\",\n 1097: \"ta\",\n 1092: \"tt\",\n 1098: \"te\",\n 1054: \"th\",\n 1105: \"bo\",\n 1055: \"tr\",\n 1090: \"tk\",\n 1152: \"ug\",\n 1058: \"uk\",\n 1070: \"hsb\",\n 1056: \"ur\",\n 2115: \"uz-Cyrl\",\n 1091: \"uz\",\n 1066: \"vi\",\n 1106: \"cy\",\n 1160: \"wo\",\n 1157: \"sah\",\n 1144: \"ii\",\n 1130: \"yo\"\n};\nfunction getLanguageCode(platformID, languageID, ltag) {\n switch (platformID) {\n case 0:\n if (languageID === 65535) {\n return \"und\";\n } else if (ltag) {\n return ltag[languageID];\n }\n break;\n case 1:\n return macLanguages[languageID];\n case 3:\n return windowsLanguages[languageID];\n }\n return void 0;\n}\nvar utf16 = \"utf-16\";\nvar macScriptEncodings = {\n 0: \"macintosh\",\n // smRoman\n 1: \"x-mac-japanese\",\n // smJapanese\n 2: \"x-mac-chinesetrad\",\n // smTradChinese\n 3: \"x-mac-korean\",\n // smKorean\n 6: \"x-mac-greek\",\n // smGreek\n 7: \"x-mac-cyrillic\",\n // smCyrillic\n 9: \"x-mac-devanagai\",\n // smDevanagari\n 10: \"x-mac-gurmukhi\",\n // smGurmukhi\n 11: \"x-mac-gujarati\",\n // smGujarati\n 12: \"x-mac-oriya\",\n // smOriya\n 13: \"x-mac-bengali\",\n // smBengali\n 14: \"x-mac-tamil\",\n // smTamil\n 15: \"x-mac-telugu\",\n // smTelugu\n 16: \"x-mac-kannada\",\n // smKannada\n 17: \"x-mac-malayalam\",\n // smMalayalam\n 18: \"x-mac-sinhalese\",\n // smSinhalese\n 19: \"x-mac-burmese\",\n // smBurmese\n 20: \"x-mac-khmer\",\n // smKhmer\n 21: \"x-mac-thai\",\n // smThai\n 22: \"x-mac-lao\",\n // smLao\n 23: \"x-mac-georgian\",\n // smGeorgian\n 24: \"x-mac-armenian\",\n // smArmenian\n 25: \"x-mac-chinesesimp\",\n // smSimpChinese\n 26: \"x-mac-tibetan\",\n // smTibetan\n 27: \"x-mac-mongolian\",\n // smMongolian\n 28: \"x-mac-ethiopic\",\n // smEthiopic\n 29: \"x-mac-ce\",\n // smCentralEuroRoman\n 30: \"x-mac-vietnamese\",\n // smVietnamese\n 31: \"x-mac-extarabic\"\n // smExtArabic\n};\nvar macLanguageEncodings = {\n 15: \"x-mac-icelandic\",\n // langIcelandic\n 17: \"x-mac-turkish\",\n // langTurkish\n 18: \"x-mac-croatian\",\n // langCroatian\n 24: \"x-mac-ce\",\n // langLithuanian\n 25: \"x-mac-ce\",\n // langPolish\n 26: \"x-mac-ce\",\n // langHungarian\n 27: \"x-mac-ce\",\n // langEstonian\n 28: \"x-mac-ce\",\n // langLatvian\n 30: \"x-mac-icelandic\",\n // langFaroese\n 37: \"x-mac-romanian\",\n // langRomanian\n 38: \"x-mac-ce\",\n // langCzech\n 39: \"x-mac-ce\",\n // langSlovak\n 40: \"x-mac-ce\",\n // langSlovenian\n 143: \"x-mac-inuit\",\n // langInuktitut\n 146: \"x-mac-gaelic\"\n // langIrishGaelicScript\n};\nfunction getEncoding(platformID, encodingID, languageID) {\n switch (platformID) {\n case 0:\n return utf16;\n case 1:\n return macLanguageEncodings[languageID] || macScriptEncodings[encodingID];\n case 3:\n if (encodingID === 1 || encodingID === 10) {\n return utf16;\n }\n break;\n }\n return void 0;\n}\nvar platforms = {\n 0: \"unicode\",\n 1: \"macintosh\",\n 2: \"reserved\",\n 3: \"windows\"\n};\nfunction getPlatform(platformID) {\n return platforms[platformID];\n}\nfunction parseNameTable(data, start, ltag) {\n const name = {};\n const p = new parse_default.Parser(data, start);\n const format = p.parseUShort();\n const count = p.parseUShort();\n const stringOffset = p.offset + p.parseUShort();\n for (let i = 0; i < count; i++) {\n const platformID = p.parseUShort();\n const encodingID = p.parseUShort();\n const languageID = p.parseUShort();\n const nameID = p.parseUShort();\n const property = nameTableNames[nameID] || nameID;\n const byteLength = p.parseUShort();\n const offset = p.parseUShort();\n const language = getLanguageCode(platformID, languageID, ltag);\n const encoding = getEncoding(platformID, encodingID, languageID);\n const platformName = getPlatform(platformID);\n if (encoding !== void 0 && language !== void 0 && platformName !== void 0) {\n let text;\n if (encoding === utf16) {\n text = decode.UTF16(data, stringOffset + offset, byteLength);\n } else {\n text = decode.MACSTRING(data, stringOffset + offset, byteLength, encoding);\n }\n if (text) {\n let platform = name[platformName];\n if (platform === void 0) {\n platform = name[platformName] = {};\n }\n let translations = platform[property];\n if (translations === void 0) {\n translations = platform[property] = {};\n }\n translations[language] = text;\n }\n }\n }\n if (format === 1) {\n p.parseUShort();\n }\n return name;\n}\nfunction reverseDict(dict) {\n const result = {};\n for (let key in dict) {\n result[dict[key]] = parseInt(key);\n }\n return result;\n}\nfunction makeNameRecord(platformID, encodingID, languageID, nameID, length, offset) {\n return new table_default.Record(\"NameRecord\", [\n { name: \"platformID\", type: \"USHORT\", value: platformID },\n { name: \"encodingID\", type: \"USHORT\", value: encodingID },\n { name: \"languageID\", type: \"USHORT\", value: languageID },\n { name: \"nameID\", type: \"USHORT\", value: nameID },\n { name: \"length\", type: \"USHORT\", value: length },\n { name: \"offset\", type: \"USHORT\", value: offset }\n ]);\n}\nfunction findSubArray(needle, haystack) {\n const needleLength = needle.length;\n const limit = haystack.length - needleLength + 1;\n loop:\n for (let pos = 0; pos < limit; pos++) {\n for (; pos < limit; pos++) {\n for (let k = 0; k < needleLength; k++) {\n if (haystack[pos + k] !== needle[k]) {\n continue loop;\n }\n }\n return pos;\n }\n }\n return -1;\n}\nfunction addStringToPool(s, pool) {\n let offset = findSubArray(s, pool);\n if (offset < 0) {\n offset = pool.length;\n let i = 0;\n const len = s.length;\n for (; i < len; ++i) {\n pool.push(s[i]);\n }\n }\n return offset;\n}\nfunction makeNameTable(names, ltag) {\n const platformNameIds = reverseDict(platforms);\n const macLanguageIds = reverseDict(macLanguages);\n const windowsLanguageIds = reverseDict(windowsLanguages);\n const nameRecords = [];\n const stringPool = [];\n for (let platform in names) {\n let nameID;\n const nameIDs = [];\n const namesWithNumericKeys = {};\n const nameTableIds = reverseDict(nameTableNames);\n const platformID = platformNameIds[platform];\n for (let key in names[platform]) {\n let id = nameTableIds[key];\n if (id === void 0) {\n id = key;\n }\n nameID = parseInt(id);\n if (isNaN(nameID)) {\n throw new Error('Name table entry \"' + key + '\" does not exist, see nameTableNames for complete list.');\n }\n namesWithNumericKeys[nameID] = names[platform][key];\n nameIDs.push(nameID);\n }\n for (let i = 0; i < nameIDs.length; i++) {\n nameID = nameIDs[i];\n const translations = namesWithNumericKeys[nameID];\n for (let lang in translations) {\n const text = translations[lang];\n if (platformID === 1 || platformID === 0) {\n let macLanguage = macLanguageIds[lang];\n let macScript = macLanguageToScript[macLanguage];\n const macEncoding = getEncoding(platformID, macScript, macLanguage);\n let macName = encode.MACSTRING(text, macEncoding);\n if (platformID === 0) {\n macLanguage = ltag.indexOf(lang);\n if (macLanguage < 0) {\n macLanguage = ltag.length;\n ltag.push(lang);\n }\n macScript = 4;\n macName = encode.UTF16(text);\n }\n if (macName !== void 0) {\n const macNameOffset = addStringToPool(macName, stringPool);\n nameRecords.push(makeNameRecord(\n platformID,\n macScript,\n macLanguage,\n nameID,\n macName.length,\n macNameOffset\n ));\n }\n }\n if (platformID === 3) {\n const winLanguage = windowsLanguageIds[lang];\n if (winLanguage !== void 0) {\n const winName = encode.UTF16(text);\n const winNameOffset = addStringToPool(winName, stringPool);\n nameRecords.push(makeNameRecord(\n 3,\n 1,\n winLanguage,\n nameID,\n winName.length,\n winNameOffset\n ));\n }\n }\n }\n }\n }\n nameRecords.sort(function(a, b) {\n return a.platformID - b.platformID || a.encodingID - b.encodingID || a.languageID - b.languageID || a.nameID - b.nameID;\n });\n const t = new table_default.Table(\"name\", [\n { name: \"format\", type: \"USHORT\", value: 0 },\n { name: \"count\", type: \"USHORT\", value: nameRecords.length },\n { name: \"stringOffset\", type: \"USHORT\", value: 6 + nameRecords.length * 12 }\n ]);\n for (let r = 0; r < nameRecords.length; r++) {\n t.fields.push({ name: \"record_\" + r, type: \"RECORD\", value: nameRecords[r] });\n }\n t.fields.push({ name: \"strings\", type: \"LITERAL\", value: stringPool });\n return t;\n}\nfunction getNameByID(names, nameID, allowedStandardIDs = []) {\n if (nameID < 256 && nameID in nameTableNames) {\n if (allowedStandardIDs.length && !allowedStandardIDs.includes(parseInt(nameID))) {\n return void 0;\n }\n nameID = nameTableNames[nameID];\n }\n for (let platform in names) {\n for (let nameKey in names[platform]) {\n if (nameKey === nameID || parseInt(nameKey) === nameID) {\n return names[platform][nameKey];\n }\n }\n }\n return void 0;\n}\nvar name_default = { parse: parseNameTable, make: makeNameTable, getNameByID };\n\n// src/tables/cmap.mjs\nfunction parseCmapTableFormat0(cmap, p, platformID, encodingID) {\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort() - 1;\n const indexMap = p.parseByteList(cmap.length);\n const glyphIndexMap = Object.assign({}, indexMap);\n const encoding = getEncoding(platformID, encodingID, cmap.language);\n const decodingTable = eightBitMacEncodings[encoding];\n for (let i = 0; i < decodingTable.length; i++) {\n glyphIndexMap[decodingTable.charCodeAt(i)] = indexMap[128 + i];\n }\n cmap.glyphIndexMap = glyphIndexMap;\n}\nfunction parseCmapTableFormat12or13(cmap, p, format) {\n p.parseUShort();\n cmap.length = p.parseULong();\n cmap.language = p.parseULong();\n let groupCount;\n cmap.groupCount = groupCount = p.parseULong();\n cmap.glyphIndexMap = {};\n for (let i = 0; i < groupCount; i += 1) {\n const startCharCode = p.parseULong();\n const endCharCode = p.parseULong();\n let startGlyphId = p.parseULong();\n for (let c = startCharCode; c <= endCharCode; c += 1) {\n cmap.glyphIndexMap[c] = startGlyphId;\n if (format === 12) {\n startGlyphId++;\n }\n }\n }\n}\nfunction parseCmapTableFormat4(cmap, p, data, start, offset) {\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort();\n let segCount;\n cmap.segCount = segCount = p.parseUShort() >> 1;\n p.skip(\"uShort\", 3);\n cmap.glyphIndexMap = {};\n const endCountParser = new parse_default.Parser(data, start + offset + 14);\n const startCountParser = new parse_default.Parser(data, start + offset + 16 + segCount * 2);\n const idDeltaParser = new parse_default.Parser(data, start + offset + 16 + segCount * 4);\n const idRangeOffsetParser = new parse_default.Parser(data, start + offset + 16 + segCount * 6);\n let glyphIndexOffset = start + offset + 16 + segCount * 8;\n for (let i = 0; i < segCount - 1; i += 1) {\n let glyphIndex;\n const endCount = endCountParser.parseUShort();\n const startCount = startCountParser.parseUShort();\n const idDelta = idDeltaParser.parseShort();\n const idRangeOffset = idRangeOffsetParser.parseUShort();\n for (let c = startCount; c <= endCount; c += 1) {\n if (idRangeOffset !== 0) {\n glyphIndexOffset = idRangeOffsetParser.offset + idRangeOffsetParser.relativeOffset - 2;\n glyphIndexOffset += idRangeOffset;\n glyphIndexOffset += (c - startCount) * 2;\n glyphIndex = parse_default.getUShort(data, glyphIndexOffset);\n if (glyphIndex !== 0) {\n glyphIndex = glyphIndex + idDelta & 65535;\n }\n } else {\n glyphIndex = c + idDelta & 65535;\n }\n cmap.glyphIndexMap[c] = glyphIndex;\n }\n }\n}\nfunction parseCmapTableFormat14(cmap, p) {\n const varSelectorList = {};\n p.skip(\"uLong\");\n const numVarSelectorRecords = p.parseULong();\n for (let i = 0; i < numVarSelectorRecords; i += 1) {\n const varSelector = p.parseUInt24();\n const varSelectorRecord = {\n varSelector\n };\n const defaultUVSOffset = p.parseOffset32();\n const nonDefaultUVSOffset = p.parseOffset32();\n const currentOffset = p.relativeOffset;\n if (defaultUVSOffset) {\n p.relativeOffset = defaultUVSOffset;\n varSelectorRecord.defaultUVS = p.parseStruct({\n ranges: function() {\n return p.parseRecordList32({\n startUnicodeValue: p.parseUInt24,\n additionalCount: p.parseByte\n });\n }\n });\n }\n if (nonDefaultUVSOffset) {\n p.relativeOffset = nonDefaultUVSOffset;\n varSelectorRecord.nonDefaultUVS = p.parseStruct({\n uvsMappings: function() {\n const map = {};\n const list = p.parseRecordList32({\n unicodeValue: p.parseUInt24,\n glyphID: p.parseUShort\n });\n for (let i2 = 0; i2 < list.length; i2 += 1) {\n map[list[i2].unicodeValue] = list[i2];\n }\n return map;\n }\n });\n }\n varSelectorList[varSelector] = varSelectorRecord;\n p.relativeOffset = currentOffset;\n }\n cmap.varSelectorList = varSelectorList;\n}\nfunction parseCmapTable(data, start) {\n const cmap = {};\n cmap.version = parse_default.getUShort(data, start);\n check_default.argument(cmap.version === 0, \"cmap table version should be 0.\");\n cmap.numTables = parse_default.getUShort(data, start + 2);\n let format14Parser = null;\n let format14offset = -1;\n let offset = -1;\n let platformId = null;\n let encodingId = null;\n const platform0Encodings = [0, 1, 2, 3, 4, 6];\n const platform3Encodings = [0, 1, 10];\n for (let i = cmap.numTables - 1; i >= 0; i -= 1) {\n platformId = parse_default.getUShort(data, start + 4 + i * 8);\n encodingId = parse_default.getUShort(data, start + 4 + i * 8 + 2);\n if (platformId === 3 && platform3Encodings.includes(encodingId) || platformId === 0 && platform0Encodings.includes(encodingId) || platformId === 1 && encodingId === 0) {\n if (offset > 0) continue;\n offset = parse_default.getULong(data, start + 4 + i * 8 + 4);\n if (format14Parser) {\n break;\n }\n } else if (platformId === 0 && encodingId === 5) {\n format14offset = parse_default.getULong(data, start + 4 + i * 8 + 4);\n format14Parser = new parse_default.Parser(data, start + format14offset);\n if (format14Parser.parseUShort() !== 14) {\n format14offset = -1;\n format14Parser = null;\n } else if (offset > 0) {\n break;\n }\n }\n }\n if (offset === -1) {\n throw new Error(\"No valid cmap sub-tables found.\");\n }\n const p = new parse_default.Parser(data, start + offset);\n cmap.format = p.parseUShort();\n if (cmap.format === 0) {\n parseCmapTableFormat0(cmap, p, platformId, encodingId);\n } else if (cmap.format === 12 || cmap.format === 13) {\n parseCmapTableFormat12or13(cmap, p, cmap.format);\n } else if (cmap.format === 4) {\n parseCmapTableFormat4(cmap, p, data, start, offset);\n } else {\n throw new Error(\n \"Only format 0 (platformId 1, encodingId 0), 4, 12 and 14 cmap tables are supported (found format \" + cmap.format + \", platformId \" + platformId + \", encodingId \" + encodingId + \").\"\n );\n }\n if (format14Parser) {\n parseCmapTableFormat14(cmap, format14Parser);\n }\n return cmap;\n}\nfunction addSegment(t, code, glyphIndex) {\n t.segments.push({\n end: code,\n start: code,\n delta: -(code - glyphIndex),\n offset: 0,\n glyphIndex\n });\n}\nfunction addTerminatorSegment(t) {\n t.segments.push({\n end: 65535,\n start: 65535,\n delta: 1,\n offset: 0\n });\n}\nfunction mergeSegments(segments) {\n if (segments.length === 0) return segments;\n const merged = [segments[0]];\n for (let i = 1; i < segments.length; i++) {\n const prev = merged[merged.length - 1];\n const curr = segments[i];\n if (prev.end + 1 === curr.start && prev.delta === curr.delta && curr.end !== 65535) {\n prev.end = curr.end;\n } else {\n merged.push(curr);\n }\n }\n return merged;\n}\nfunction makeCmapTable(glyphs) {\n let isPlan0Only = true;\n let i;\n for (i = glyphs.length - 1; i > 0; i -= 1) {\n const g = glyphs.get(i);\n if (g.unicode > 65535) {\n isPlan0Only = false;\n break;\n }\n }\n let cmapTable = [\n { name: \"version\", type: \"USHORT\", value: 0 },\n { name: \"numTables\", type: \"USHORT\", value: isPlan0Only ? 1 : 2 },\n // CMAP 4 header\n { name: \"platformID\", type: \"USHORT\", value: 3 },\n { name: \"encodingID\", type: \"USHORT\", value: 1 },\n { name: \"offset\", type: \"ULONG\", value: isPlan0Only ? 12 : 12 + 8 }\n ];\n if (!isPlan0Only)\n cmapTable.push(...[\n // CMAP 12 header\n { name: \"cmap12PlatformID\", type: \"USHORT\", value: 3 },\n // We encode only for PlatformID = 3 (Windows) because it is supported everywhere\n { name: \"cmap12EncodingID\", type: \"USHORT\", value: 10 },\n { name: \"cmap12Offset\", type: \"ULONG\", value: 0 }\n ]);\n cmapTable.push(...[\n // CMAP 4 Subtable\n { name: \"format\", type: \"USHORT\", value: 4 },\n { name: \"cmap4Length\", type: \"USHORT\", value: 0 },\n { name: \"language\", type: \"USHORT\", value: 0 },\n { name: \"segCountX2\", type: \"USHORT\", value: 0 },\n { name: \"searchRange\", type: \"USHORT\", value: 0 },\n { name: \"entrySelector\", type: \"USHORT\", value: 0 },\n { name: \"rangeShift\", type: \"USHORT\", value: 0 }\n ]);\n const t = new table_default.Table(\"cmap\", cmapTable);\n t.segments = [];\n for (i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n addSegment(t, glyph.unicodes[j], i);\n }\n }\n t.segments.sort(function(a, b) {\n return a.start - b.start;\n });\n t.segments = mergeSegments(t.segments);\n addTerminatorSegment(t);\n const segCount = t.segments.length;\n let segCountToRemove = 0;\n let endCounts = [];\n let startCounts = [];\n let idDeltas = [];\n let idRangeOffsets = [];\n let glyphIds = [];\n let cmap12Groups = [];\n for (i = 0; i < segCount; i += 1) {\n const segment = t.segments[i];\n if (segment.end <= 65535 && segment.start <= 65535) {\n endCounts.push({ name: \"end_\" + i, type: \"USHORT\", value: segment.end });\n startCounts.push({ name: \"start_\" + i, type: \"USHORT\", value: segment.start });\n idDeltas.push({ name: \"idDelta_\" + i, type: \"SHORT\", value: segment.delta });\n idRangeOffsets.push({ name: \"idRangeOffset_\" + i, type: \"USHORT\", value: segment.offset });\n if (segment.glyphId !== void 0) {\n glyphIds.push({ name: \"glyph_\" + i, type: \"USHORT\", value: segment.glyphId });\n }\n } else {\n segCountToRemove += 1;\n }\n if (!isPlan0Only && segment.glyphIndex !== void 0) {\n cmap12Groups.push({ name: \"cmap12Start_\" + i, type: \"ULONG\", value: segment.start });\n cmap12Groups.push({ name: \"cmap12End_\" + i, type: \"ULONG\", value: segment.end });\n cmap12Groups.push({ name: \"cmap12Glyph_\" + i, type: \"ULONG\", value: segment.glyphIndex });\n }\n }\n t.segCountX2 = (segCount - segCountToRemove) * 2;\n t.searchRange = Math.pow(2, Math.floor(Math.log(segCount - segCountToRemove) / Math.log(2))) * 2;\n t.entrySelector = Math.log(t.searchRange / 2) / Math.log(2);\n t.rangeShift = t.segCountX2 - t.searchRange;\n for (let i2 = 0; i2 < endCounts.length; i2++) {\n t.fields.push(endCounts[i2]);\n }\n t.fields.push({ name: \"reservedPad\", type: \"USHORT\", value: 0 });\n for (let i2 = 0; i2 < startCounts.length; i2++) {\n t.fields.push(startCounts[i2]);\n }\n for (let i2 = 0; i2 < idDeltas.length; i2++) {\n t.fields.push(idDeltas[i2]);\n }\n for (let i2 = 0; i2 < idRangeOffsets.length; i2++) {\n t.fields.push(idRangeOffsets[i2]);\n }\n for (let i2 = 0; i2 < glyphIds.length; i2++) {\n t.fields.push(glyphIds[i2]);\n }\n t.cmap4Length = 14 + // Subtable header\n endCounts.length * 2 + 2 + // reservedPad\n startCounts.length * 2 + idDeltas.length * 2 + idRangeOffsets.length * 2 + glyphIds.length * 2;\n if (!isPlan0Only) {\n const cmap12Length = 16 + // Subtable header\n cmap12Groups.length * 4;\n t.cmap12Offset = 12 + 2 * 2 + 4 + t.cmap4Length;\n t.fields.push(...[\n { name: \"cmap12Format\", type: \"USHORT\", value: 12 },\n { name: \"cmap12Reserved\", type: \"USHORT\", value: 0 },\n { name: \"cmap12Length\", type: \"ULONG\", value: cmap12Length },\n { name: \"cmap12Language\", type: \"ULONG\", value: 0 },\n { name: \"cmap12nGroups\", type: \"ULONG\", value: cmap12Groups.length / 3 }\n ]);\n for (let i2 = 0; i2 < cmap12Groups.length; i2++) {\n t.fields.push(cmap12Groups[i2]);\n }\n }\n return t;\n}\nvar cmap_default = { parse: parseCmapTable, make: makeCmapTable };\n\n// src/encoding.mjs\nvar cffStandardStrings = [\n \".notdef\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"questiondown\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"AE\",\n \"ordfeminine\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"ae\",\n \"dotlessi\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\",\n \"onesuperior\",\n \"logicalnot\",\n \"mu\",\n \"trademark\",\n \"Eth\",\n \"onehalf\",\n \"plusminus\",\n \"Thorn\",\n \"onequarter\",\n \"divide\",\n \"brokenbar\",\n \"degree\",\n \"thorn\",\n \"threequarters\",\n \"twosuperior\",\n \"registered\",\n \"minus\",\n \"eth\",\n \"multiply\",\n \"threesuperior\",\n \"copyright\",\n \"Aacute\",\n \"Acircumflex\",\n \"Adieresis\",\n \"Agrave\",\n \"Aring\",\n \"Atilde\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ecircumflex\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Ntilde\",\n \"Oacute\",\n \"Ocircumflex\",\n \"Odieresis\",\n \"Ograve\",\n \"Otilde\",\n \"Scaron\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Udieresis\",\n \"Ugrave\",\n \"Yacute\",\n \"Ydieresis\",\n \"Zcaron\",\n \"aacute\",\n \"acircumflex\",\n \"adieresis\",\n \"agrave\",\n \"aring\",\n \"atilde\",\n \"ccedilla\",\n \"eacute\",\n \"ecircumflex\",\n \"edieresis\",\n \"egrave\",\n \"iacute\",\n \"icircumflex\",\n \"idieresis\",\n \"igrave\",\n \"ntilde\",\n \"oacute\",\n \"ocircumflex\",\n \"odieresis\",\n \"ograve\",\n \"otilde\",\n \"scaron\",\n \"uacute\",\n \"ucircumflex\",\n \"udieresis\",\n \"ugrave\",\n \"yacute\",\n \"ydieresis\",\n \"zcaron\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"266 ff\",\n \"onedotenleader\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"Dotaccentsmall\",\n \"Macronsmall\",\n \"figuredash\",\n \"hypheninferior\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\",\n \"001.000\",\n \"001.001\",\n \"001.002\",\n \"001.003\",\n \"Black\",\n \"Bold\",\n \"Book\",\n \"Light\",\n \"Medium\",\n \"Regular\",\n \"Roman\",\n \"Semibold\"\n];\nvar cffISOAdobeStrings = [\n \".notdef\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"questiondown\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"AE\",\n \"ordfeminine\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"ae\",\n \"dotlessi\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\",\n \"onesuperior\",\n \"logicalnot\",\n \"mu\",\n \"trademark\",\n \"Eth\",\n \"onehalf\",\n \"plusminus\",\n \"Thorn\",\n \"onequarter\",\n \"divide\",\n \"brokenbar\",\n \"degree\",\n \"thorn\",\n \"threequarters\",\n \"twosuperior\",\n \"registered\",\n \"minus\",\n \"eth\",\n \"multiply\",\n \"threesuperior\",\n \"copyright\",\n \"Aacute\",\n \"Acircumflex\",\n \"Adieresis\",\n \"Agrave\",\n \"Aring\",\n \"Atilde\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ecircumflex\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Ntilde\",\n \"Oacute\",\n \"Ocircumflex\",\n \"Odieresis\",\n \"Ograve\",\n \"Otilde\",\n \"Scaron\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Udieresis\",\n \"Ugrave\",\n \"Yacute\",\n \"Ydieresis\",\n \"Zcaron\",\n \"aacute\",\n \"acircumflex\",\n \"adieresis\",\n \"agrave\",\n \"aring\",\n \"atilde\",\n \"ccedilla\",\n \"eacute\",\n \"ecircumflex\",\n \"edieresis\",\n \"egrave\",\n \"iacute\",\n \"icircumflex\",\n \"idieresis\",\n \"igrave\",\n \"ntilde\",\n \"oacute\",\n \"ocircumflex\",\n \"odieresis\",\n \"ograve\",\n \"otilde\",\n \"scaron\",\n \"uacute\",\n \"ucircumflex\",\n \"udieresis\",\n \"ugrave\",\n \"yacute\",\n \"ydieresis\",\n \"zcaron\"\n];\nvar cffIExpertStrings = [\n \".notdef\",\n \"space\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"Dotaccentsmall\",\n \"Macronsmall\",\n \"figuredash\",\n \"hypheninferior\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\"\n];\nvar cffExpertSubsetStrings = [\n \".notdef\",\n \"space\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"hyphensuperior\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"centoldstyle\",\n \"figuredash\",\n \"hypheninferior\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\"\n];\nvar cffStandardEncoding = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"\",\n \"questiondown\",\n \"\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"\",\n \"ring\",\n \"cedilla\",\n \"\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"AE\",\n \"\",\n \"ordfeminine\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"ae\",\n \"\",\n \"\",\n \"\",\n \"dotlessi\",\n \"\",\n \"\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\"\n];\nvar cffExpertEncoding = [\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"space\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"fraction\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"colon\",\n \"semicolon\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"\",\n \"\",\n \"isuperior\",\n \"\",\n \"\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"\",\n \"\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"\",\n \"ff\",\n \"fi\",\n \"fl\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"\",\n \"\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"\",\n \"Dotaccentsmall\",\n \"\",\n \"\",\n \"Macronsmall\",\n \"\",\n \"\",\n \"figuredash\",\n \"hypheninferior\",\n \"\",\n \"\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"\",\n \"\",\n \"\",\n \"onequarter\",\n \"onehalf\",\n \"threequarters\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"\",\n \"\",\n \"zerosuperior\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\"\n];\nvar standardNames = [\n \".notdef\",\n \".null\",\n \"nonmarkingreturn\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quotesingle\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"grave\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"Adieresis\",\n \"Aring\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ntilde\",\n \"Odieresis\",\n \"Udieresis\",\n \"aacute\",\n \"agrave\",\n \"acircumflex\",\n \"adieresis\",\n \"atilde\",\n \"aring\",\n \"ccedilla\",\n \"eacute\",\n \"egrave\",\n \"ecircumflex\",\n \"edieresis\",\n \"iacute\",\n \"igrave\",\n \"icircumflex\",\n \"idieresis\",\n \"ntilde\",\n \"oacute\",\n \"ograve\",\n \"ocircumflex\",\n \"odieresis\",\n \"otilde\",\n \"uacute\",\n \"ugrave\",\n \"ucircumflex\",\n \"udieresis\",\n \"dagger\",\n \"degree\",\n \"cent\",\n \"sterling\",\n \"section\",\n \"bullet\",\n \"paragraph\",\n \"germandbls\",\n \"registered\",\n \"copyright\",\n \"trademark\",\n \"acute\",\n \"dieresis\",\n \"notequal\",\n \"AE\",\n \"Oslash\",\n \"infinity\",\n \"plusminus\",\n \"lessequal\",\n \"greaterequal\",\n \"yen\",\n \"mu\",\n \"partialdiff\",\n \"summation\",\n \"product\",\n \"pi\",\n \"integral\",\n \"ordfeminine\",\n \"ordmasculine\",\n \"Omega\",\n \"ae\",\n \"oslash\",\n \"questiondown\",\n \"exclamdown\",\n \"logicalnot\",\n \"radical\",\n \"florin\",\n \"approxequal\",\n \"Delta\",\n \"guillemotleft\",\n \"guillemotright\",\n \"ellipsis\",\n \"nonbreakingspace\",\n \"Agrave\",\n \"Atilde\",\n \"Otilde\",\n \"OE\",\n \"oe\",\n \"endash\",\n \"emdash\",\n \"quotedblleft\",\n \"quotedblright\",\n \"quoteleft\",\n \"quoteright\",\n \"divide\",\n \"lozenge\",\n \"ydieresis\",\n \"Ydieresis\",\n \"fraction\",\n \"currency\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"daggerdbl\",\n \"periodcentered\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"perthousand\",\n \"Acircumflex\",\n \"Ecircumflex\",\n \"Aacute\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Oacute\",\n \"Ocircumflex\",\n \"apple\",\n \"Ograve\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Ugrave\",\n \"dotlessi\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"Lslash\",\n \"lslash\",\n \"Scaron\",\n \"scaron\",\n \"Zcaron\",\n \"zcaron\",\n \"brokenbar\",\n \"Eth\",\n \"eth\",\n \"Yacute\",\n \"yacute\",\n \"Thorn\",\n \"thorn\",\n \"minus\",\n \"multiply\",\n \"onesuperior\",\n \"twosuperior\",\n \"threesuperior\",\n \"onehalf\",\n \"onequarter\",\n \"threequarters\",\n \"franc\",\n \"Gbreve\",\n \"gbreve\",\n \"Idotaccent\",\n \"Scedilla\",\n \"scedilla\",\n \"Cacute\",\n \"cacute\",\n \"Ccaron\",\n \"ccaron\",\n \"dcroat\"\n];\nfunction DefaultEncoding(font) {\n this.font = font;\n}\nDefaultEncoding.prototype.charToGlyphIndex = function(c) {\n const code = c.codePointAt(0);\n const glyphs = this.font.glyphs;\n if (glyphs) {\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n if (glyph.unicodes[j] === code) {\n return i;\n }\n }\n }\n }\n return null;\n};\nfunction CmapEncoding(cmap) {\n this.cmap = cmap;\n}\nCmapEncoding.prototype.charToGlyphIndex = function(c) {\n return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;\n};\nfunction CffEncoding(encoding, charset) {\n this.encoding = encoding;\n this.charset = charset;\n}\nCffEncoding.prototype.charToGlyphIndex = function(s) {\n const code = s.codePointAt(0);\n const charName = this.encoding[code];\n return this.charset.indexOf(charName);\n};\nfunction GlyphNames(post) {\n switch (post.version) {\n case 1:\n this.names = standardNames.slice();\n break;\n case 2:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] < standardNames.length) {\n this.names[i] = standardNames[post.glyphNameIndex[i]];\n } else {\n this.names[i] = post.names[post.glyphNameIndex[i] - standardNames.length];\n }\n }\n break;\n case 2.5:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n this.names[i] = standardNames[i + post.glyphNameIndex[i]];\n }\n break;\n case 3:\n this.names = [];\n break;\n default:\n this.names = [];\n break;\n }\n}\nGlyphNames.prototype.nameToGlyphIndex = function(name) {\n return this.names.indexOf(name);\n};\nGlyphNames.prototype.glyphIndexToName = function(gid) {\n return this.names[gid];\n};\nfunction addGlyphNamesAll(font) {\n let glyph;\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n const glyphIndex = glyphIndexMap[c];\n glyph = font.glyphs.get(glyphIndex);\n glyph.addUnicode(parseInt(c));\n }\n for (let i = 0; i < font.glyphs.length; i += 1) {\n glyph = font.glyphs.get(i);\n if (font.cffEncoding) {\n glyph.name = font.cffEncoding.charset[i];\n } else if (font.glyphNames.names) {\n glyph.name = font.glyphNames.glyphIndexToName(i);\n }\n }\n}\nfunction addGlyphNamesToUnicodeMap(font) {\n font._IndexToUnicodeMap = {};\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n let glyphIndex = glyphIndexMap[c];\n if (font._IndexToUnicodeMap[glyphIndex] === void 0) {\n font._IndexToUnicodeMap[glyphIndex] = {\n unicodes: [parseInt(c)]\n };\n } else {\n font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));\n }\n }\n}\nfunction addGlyphNames(font, opt) {\n if (opt.lowMemory) {\n addGlyphNamesToUnicodeMap(font);\n } else {\n addGlyphNamesAll(font);\n }\n}\n\n// src/draw.mjs\nfunction line(ctx, x1, y1, x2, y2) {\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n}\nvar draw_default = { line };\n\n// src/tables/cpal.mjs\nfunction parseCpalTable(data, start) {\n const p = new Parser(data, start);\n const version = p.parseShort();\n if (version !== 0) {\n console.warn(\"Only CPALv0 is currently fully supported.\");\n }\n const numPaletteEntries = p.parseShort();\n const numPalettes = p.parseShort();\n const numColorRecords = p.parseShort();\n const colorRecordsArrayOffset = p.parseOffset32();\n const colorRecordIndices = p.parseUShortList(numPalettes);\n p.relativeOffset = colorRecordsArrayOffset;\n const colorRecords = p.parseULongList(numColorRecords);\n p.relativeOffset = colorRecordsArrayOffset;\n return {\n version,\n numPaletteEntries,\n colorRecords,\n colorRecordIndices\n };\n}\nfunction makeCpalTable({ version = 0, numPaletteEntries = 0, colorRecords = [], colorRecordIndices = [0] }) {\n check_default.argument(version === 0, \"Only CPALv0 are supported.\");\n check_default.argument(colorRecords.length, \"No colorRecords given.\");\n check_default.argument(colorRecordIndices.length, \"No colorRecordIndices given.\");\n if (colorRecordIndices.length > 1) {\n check_default.argument(numPaletteEntries, \"Can't infer numPaletteEntries on multiple colorRecordIndices\");\n }\n return new table_default.Table(\"CPAL\", [\n { name: \"version\", type: \"USHORT\", value: version },\n { name: \"numPaletteEntries\", type: \"USHORT\", value: numPaletteEntries || colorRecords.length },\n { name: \"numPalettes\", type: \"USHORT\", value: colorRecordIndices.length },\n { name: \"numColorRecords\", type: \"USHORT\", value: colorRecords.length },\n { name: \"colorRecordsArrayOffset\", type: \"ULONG\", value: 12 + 2 * colorRecordIndices.length },\n ...colorRecordIndices.map((palette, i) => ({ name: \"colorRecordIndices_\" + i, type: \"USHORT\", value: palette })),\n ...colorRecords.map((color, i) => ({ name: \"colorRecords_\" + i, type: \"ULONG\", value: color }))\n ]);\n}\nfunction parseCPALColor(bgra) {\n var b = (bgra & 4278190080) >> 24;\n var g = (bgra & 16711680) >> 16;\n var r = (bgra & 65280) >> 8;\n var a = bgra & 255;\n b = b + 256 & 255;\n g = g + 256 & 255;\n r = r + 256 & 255;\n a = (a + 256 & 255) / 255;\n return { b, g, r, a };\n}\nfunction getPaletteColor(font, index, palette = 0, colorFormat = \"hexa\") {\n if (index == 65535) {\n return \"currentColor\";\n }\n const cpalTable = font && font.tables && font.tables.cpal;\n if (!cpalTable) return \"currentColor\";\n if (palette > cpalTable.colorRecordIndices.length - 1) {\n throw new Error(`Palette index out of range (colorRecordIndices.length: ${cpalTable.colorRecordIndices.length}, index: ${index})`);\n }\n if (index > cpalTable.numPaletteEntries) {\n throw new Error(`Color index out of range (numPaletteEntries: ${cpalTable.numPaletteEntries}, index: ${index})`);\n }\n const lookupIndex = cpalTable.colorRecordIndices[palette] + index;\n if (lookupIndex > cpalTable.colorRecords) {\n throw new Error(`Color index out of range (colorRecords.length: ${cpalTable.colorRecords.length}, lookupIndex: ${lookupIndex})`);\n }\n const color = parseCPALColor(cpalTable.colorRecords[lookupIndex]);\n if (colorFormat === \"bgra\") {\n return color;\n }\n return formatColor(color, colorFormat);\n}\nfunction toHex(d) {\n return (\"0\" + parseInt(d).toString(16)).slice(-2);\n}\nfunction rgbToHSL(bgra) {\n const r = bgra.r / 255;\n const g = bgra.g / 255;\n const b = bgra.b / 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h * 360,\n s: s * 100,\n l: l * 100\n };\n}\nfunction hslToRGB(hsla) {\n let { h, s, l, a } = hsla;\n h = h % 360;\n s /= 100;\n l /= 100;\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h <= 360) {\n r = c;\n g = 0;\n b = x;\n }\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n a\n };\n}\nfunction bgraToRaw(color) {\n return parseInt(`0x${toHex(color.b)}${toHex(color.g)}${toHex(color.r)}${toHex(color.a * 255)}`, 16);\n}\nfunction parseColor(color, targetFormat = \"hexa\") {\n const returnRaw = targetFormat == \"raw\" || targetFormat == \"cpal\";\n const isRaw = Number.isInteger(color);\n let validFormat = true;\n if (isRaw && returnRaw || color === \"currentColor\") {\n return color;\n } else if (typeof color === \"object\") {\n if (targetFormat == \"bgra\") {\n return color;\n }\n if (returnRaw) {\n return bgraToRaw(color);\n }\n } else if (!isRaw && /^#([a-f0-9]{3}|[a-f0-9]{4}|[a-f0-9]{6}|[a-f0-9]{8})$/i.test(color.trim())) {\n color = color.trim().substring(1);\n switch (color.length) {\n case 3:\n color = {\n r: parseInt(color[0].repeat(2), 16),\n g: parseInt(color[1].repeat(2), 16),\n b: parseInt(color[2].repeat(2), 16),\n a: 1\n };\n break;\n case 4:\n color = {\n r: parseInt(color[0].repeat(2), 16),\n g: parseInt(color[1].repeat(2), 16),\n b: parseInt(color[2].repeat(2), 16),\n a: parseInt(color[3].repeat(2), 16) / 255\n };\n break;\n case 6:\n color = {\n r: parseInt(color[0] + color[1], 16),\n g: parseInt(color[2] + color[3], 16),\n b: parseInt(color[4] + color[5], 16),\n a: 1\n };\n break;\n case 8:\n color = {\n r: parseInt(color[0] + color[1], 16),\n g: parseInt(color[2] + color[3], 16),\n b: parseInt(color[4] + color[5], 16),\n a: parseInt(color[6] + color[7], 16) / 255\n };\n break;\n }\n if (targetFormat == \"bgra\") {\n return color;\n }\n } else if (typeof document !== \"undefined\" && /^[a-z]+$/i.test(color)) {\n const ctx = document.createElement(\"canvas\").getContext(\"2d\");\n ctx.fillStyle = color;\n const detectedColor = formatColor(ctx.fillStyle, \"hexa\");\n if (detectedColor === \"#000000ff\" && color.toLowerCase() !== \"black\") {\n validFormat = false;\n } else {\n color = detectedColor;\n }\n } else {\n color = color.trim();\n const rgbaRegex = /rgba?\\(\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)(%?)|(\\d+)(%?))\\s*(?:(?:,|\\s|\\/)\\s*(?:(0*(?:\\.\\d+)?()|0*1(?:\\.0+)?())|(?:\\.\\d+)|(\\d+)(%)|(\\d*\\.\\d+)(%)))?\\s*\\)/;\n if (rgbaRegex.test(color)) {\n const matches = color.match(rgbaRegex).filter((i) => typeof i !== \"undefined\");\n color = {\n r: Math.round(parseFloat(matches[1]) / (matches[2] ? 100 / 255 : 1)),\n g: Math.round(parseFloat(matches[3]) / (matches[4] ? 100 / 255 : 1)),\n b: Math.round(parseFloat(matches[5]) / (matches[6] ? 100 / 255 : 1)),\n a: !matches[7] ? 1 : parseFloat(matches[7]) / (matches[8] ? 100 : 1)\n };\n } else {\n const hslaRegex = /hsla?\\(\\s*(?:(\\d*\\.\\d+|\\d+)(deg|turn|))\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)%?|(\\d+)%?)\\s*(?:,|\\s*)\\s*(?:(\\d*\\.\\d+)%?|(\\d+)%?)\\s*(?:(?:,|\\s|\\/)\\s*(?:(0*(?:\\.\\d+)?()|0*1(?:\\.0+)?())|(?:\\.\\d+)|(\\d+)(%)|(\\d*\\.\\d+)(%)))?\\s*\\)/;\n if (hslaRegex.test(color)) {\n const matches = color.match(hslaRegex).filter((i) => typeof i !== \"undefined\");\n color = hslToRGB({\n h: parseFloat(matches[1]) * (matches[2] === \"turn\" ? 360 : 1),\n s: parseFloat(matches[3]),\n l: parseFloat(matches[4]),\n a: !matches[5] ? 1 : parseFloat(matches[5]) / (matches[6] ? 100 : 1)\n });\n } else {\n validFormat = false;\n }\n }\n }\n if (!validFormat) {\n throw new Error(`Invalid color format: ${color}`);\n }\n return formatColor(color, targetFormat);\n}\nfunction formatColor(bgra, format = \"hexa\") {\n if (bgra === \"currentColor\") return bgra;\n if (Number.isInteger(bgra)) {\n if (format == \"raw\" || format == \"cpal\") {\n return bgra;\n }\n bgra = parseCPALColor(bgra);\n } else if (typeof bgra !== \"object\") {\n bgra = parseColor(bgra, \"bgra\");\n }\n let hsl = [\"hsl\", \"hsla\"].includes(format) ? rgbToHSL(bgra) : null;\n switch (format) {\n case \"rgba\":\n return `rgba(${bgra.r}, ${bgra.g}, ${bgra.b}, ${parseFloat(bgra.a.toFixed(3))})`;\n case \"rgb\":\n return `rgb(${bgra.r}, ${bgra.g}, ${bgra.b})`;\n case \"hex\":\n case \"hex6\":\n case \"hex-6\":\n return `#${toHex(bgra.r)}${toHex(bgra.g)}${toHex(bgra.b)}`;\n case \"hexa\":\n case \"hex8\":\n case \"hex-8\":\n return `#${toHex(bgra.r)}${toHex(bgra.g)}${toHex(bgra.b)}${toHex(bgra.a * 255)}`;\n case \"hsl\":\n return `hsl(${hsl.h.toFixed(2)}, ${hsl.s.toFixed(2)}%, ${hsl.l.toFixed(2)}%)`;\n case \"hsla\":\n return `hsla(${hsl.h.toFixed(2)}, ${hsl.s.toFixed(2)}%, ${hsl.l.toFixed(2)}%, ${parseFloat(bgra.a.toFixed(3))})`;\n case \"bgra\":\n return bgra;\n case \"raw\":\n case \"cpal\":\n return bgraToRaw(bgra);\n default:\n throw new Error(\"Unknown color format: \" + format);\n }\n}\nvar cpal_default = { parse: parseCpalTable, make: makeCpalTable, getPaletteColor, parseColor, formatColor };\n\n// src/glyph.mjs\nfunction getPathDefinition(glyph, path) {\n let _path = path || new path_default();\n return {\n configurable: true,\n get: function() {\n if (typeof _path === \"function\") {\n _path = _path();\n }\n return _path;\n },\n set: function(p) {\n _path = p;\n }\n };\n}\nfunction Glyph(options) {\n this.bindConstructorValues(options);\n}\nGlyph.prototype.bindConstructorValues = function(options) {\n this.index = options.index || 0;\n if (options.name === \".notdef\") {\n options.unicode = void 0;\n } else if (options.name === \".null\") {\n options.unicode = 0;\n }\n if (options.unicode === 0 && options.name !== \".null\") {\n throw new Error('The unicode value \"0\" is reserved for the glyph name \".null\" and cannot be used by any other glyph.');\n }\n this.name = options.name || null;\n this.unicode = options.unicode;\n this.unicodes = options.unicodes || (options.unicode !== void 0 ? [options.unicode] : []);\n if (\"xMin\" in options) {\n this.xMin = options.xMin;\n }\n if (\"yMin\" in options) {\n this.yMin = options.yMin;\n }\n if (\"xMax\" in options) {\n this.xMax = options.xMax;\n }\n if (\"yMax\" in options) {\n this.yMax = options.yMax;\n }\n if (\"advanceWidth\" in options) {\n this.advanceWidth = options.advanceWidth;\n }\n if (\"leftSideBearing\" in options) {\n this.leftSideBearing = options.leftSideBearing;\n }\n if (\"points\" in options) {\n this.points = options.points;\n }\n Object.defineProperty(this, \"path\", getPathDefinition(this, options.path));\n};\nGlyph.prototype.addUnicode = function(unicode) {\n if (this.unicodes.length === 0) {\n this.unicode = unicode;\n }\n this.unicodes.push(unicode);\n};\nGlyph.prototype.getBoundingBox = function() {\n return this.path.getBoundingBox();\n};\nGlyph.prototype.getPath = function(x, y, fontSize, options, font) {\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 72;\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n let commands;\n let hPoints;\n let xScale = options.xScale;\n let yScale = options.yScale;\n const scale = 1 / (this.path.unitsPerEm || 1e3) * fontSize;\n let useGlyph = this;\n if (font && font.variation) {\n useGlyph = font.variation.getTransform(this, options.variation);\n commands = useGlyph.path.commands;\n }\n if (options.hinting && font && font.hinting) {\n hPoints = useGlyph.path && font.hinting.exec(useGlyph, fontSize, options);\n }\n if (hPoints) {\n commands = font.hinting.getCommands(hPoints);\n x = Math.round(x);\n y = Math.round(y);\n xScale = yScale = 1;\n } else {\n commands = useGlyph.path.commands;\n if (xScale === void 0) xScale = scale;\n if (yScale === void 0) yScale = scale;\n }\n const p = new path_default();\n if (options.drawSVG) {\n const svgImage = this.getSvgImage(font);\n if (svgImage) {\n const layer = new path_default();\n layer._image = {\n image: svgImage.image,\n x: x + svgImage.leftSideBearing * scale,\n y: y - svgImage.baseline * scale,\n width: svgImage.image.width * scale,\n height: svgImage.image.height * scale\n };\n p._layers = [layer];\n return p;\n }\n }\n if (options.drawLayers) {\n const layers = this.getLayers(font);\n if (layers && layers.length) {\n p._layers = [];\n for (let i = 0; i < layers.length; i += 1) {\n const layer = layers[i];\n let color = getPaletteColor(font, layer.paletteIndex, options.usePalette);\n if (color === \"currentColor\") {\n color = options.fill || \"black\";\n } else {\n color = formatColor(color, options.colorFormat || \"rgba\");\n }\n options = Object.assign({}, options, { fill: color });\n p._layers.push(this.getPath.call(layer.glyph, x, y, fontSize, options, font));\n }\n return p;\n }\n }\n p.fill = options.fill || this.path.fill;\n p.stroke = this.path.stroke;\n p.strokeWidth = this.path.strokeWidth * scale;\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type === \"M\") {\n p.moveTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === \"L\") {\n p.lineTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === \"Q\") {\n p.quadraticCurveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === \"C\") {\n p.curveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x2 * xScale,\n y + -cmd.y2 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === \"Z\" && p.stroke && p.strokeWidth) {\n p.closePath();\n }\n }\n return p;\n};\nGlyph.prototype.getLayers = function(font) {\n if (!font) {\n throw new Error(\"The font object is required to read the colr/cpal tables in order to get the layers.\");\n }\n return font.layers.get(this.index);\n};\nGlyph.prototype.getSvgImage = function(font) {\n if (!font) {\n throw new Error(\"The font object is required to read the svg table in order to get the image.\");\n }\n return font.svgImages.get(this.index);\n};\nGlyph.prototype.getContours = function(transformedPoints = null) {\n if (this.points === void 0 && !transformedPoints) {\n return [];\n }\n const contours = [];\n let currentContour = [];\n let points = transformedPoints ? transformedPoints : this.points;\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n check_default.argument(currentContour.length === 0, \"There are still points left in the current contour.\");\n return contours;\n};\nGlyph.prototype.getMetrics = function() {\n const commands = this.path.commands;\n const xCoords = [];\n const yCoords = [];\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type !== \"Z\") {\n xCoords.push(cmd.x);\n yCoords.push(cmd.y);\n }\n if (cmd.type === \"Q\" || cmd.type === \"C\") {\n xCoords.push(cmd.x1);\n yCoords.push(cmd.y1);\n }\n if (cmd.type === \"C\") {\n xCoords.push(cmd.x2);\n yCoords.push(cmd.y2);\n }\n }\n const metrics = {\n xMin: Math.min.apply(null, xCoords),\n yMin: Math.min.apply(null, yCoords),\n xMax: Math.max.apply(null, xCoords),\n yMax: Math.max.apply(null, yCoords),\n leftSideBearing: this.leftSideBearing\n };\n if (!isFinite(metrics.xMin)) {\n metrics.xMin = 0;\n }\n if (!isFinite(metrics.xMax)) {\n metrics.xMax = this.advanceWidth;\n }\n if (!isFinite(metrics.yMin)) {\n metrics.yMin = 0;\n }\n if (!isFinite(metrics.yMax)) {\n metrics.yMax = 0;\n }\n metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin);\n return metrics;\n};\nGlyph.prototype.draw = function(ctx, x, y, fontSize, options, font) {\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n const path = this.getPath(x, y, fontSize, options, font);\n path.draw(ctx);\n};\nGlyph.prototype.drawPoints = function(ctx, x, y, fontSize, options, font) {\n options = Object.assign({}, font && font.defaultRenderOptions, options);\n if (options.drawLayers) {\n const layers = this.getLayers(font);\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l += 1) {\n if (layers[l].glyph.index !== this.index) {\n this.drawPoints.call(layers[l].glyph, ctx, x, y, fontSize);\n }\n }\n return;\n }\n }\n function drawCircles(l, x2, y2, scale2) {\n ctx.beginPath();\n for (let j = 0; j < l.length; j += 1) {\n ctx.moveTo(x2 + l[j].x * scale2, y2 + l[j].y * scale2);\n ctx.arc(x2 + l[j].x * scale2, y2 + l[j].y * scale2, 2, 0, Math.PI * 2, false);\n }\n ctx.fill();\n }\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 24;\n const scale = 1 / this.path.unitsPerEm * fontSize;\n const blueCircles = [];\n const redCircles = [];\n const path = this.path;\n let commands = path.commands;\n if (font && font.variation) {\n commands = font.variation.getTransform(this, options.variation).path.commands;\n }\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.x !== void 0) {\n blueCircles.push({ x: cmd.x, y: -cmd.y });\n }\n if (cmd.x1 !== void 0) {\n redCircles.push({ x: cmd.x1, y: -cmd.y1 });\n }\n if (cmd.x2 !== void 0) {\n redCircles.push({ x: cmd.x2, y: -cmd.y2 });\n }\n }\n ctx.fillStyle = \"blue\";\n drawCircles(blueCircles, x, y, scale);\n ctx.fillStyle = \"red\";\n drawCircles(redCircles, x, y, scale);\n};\nGlyph.prototype.drawMetrics = function(ctx, x, y, fontSize) {\n let scale;\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 24;\n scale = 1 / this.path.unitsPerEm * fontSize;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n draw_default.line(ctx, x, -1e4, x, 1e4);\n draw_default.line(ctx, -1e4, y, 1e4, y);\n const xMin = this.xMin || 0;\n let yMin = this.yMin || 0;\n const xMax = this.xMax || 0;\n let yMax = this.yMax || 0;\n const advanceWidth = this.advanceWidth || 0;\n ctx.strokeStyle = \"blue\";\n draw_default.line(ctx, x + xMin * scale, -1e4, x + xMin * scale, 1e4);\n draw_default.line(ctx, x + xMax * scale, -1e4, x + xMax * scale, 1e4);\n draw_default.line(ctx, -1e4, y + -yMin * scale, 1e4, y + -yMin * scale);\n draw_default.line(ctx, -1e4, y + -yMax * scale, 1e4, y + -yMax * scale);\n ctx.strokeStyle = \"green\";\n draw_default.line(ctx, x + advanceWidth * scale, -1e4, x + advanceWidth * scale, 1e4);\n};\nGlyph.prototype.toPathData = function(options, font) {\n options = Object.assign({}, { variation: font && font.defaultRenderOptions.variation }, options);\n let useGlyph = this;\n if (font && font.variation) {\n useGlyph = font.variation.getTransform(this, options.variation);\n }\n let usePath = useGlyph.points && options.pointsTransform ? options.pointsTransform(useGlyph.points) : useGlyph.path;\n if (options.pathTransform) {\n usePath = options.pathTransform(usePath);\n }\n return usePath.toPathData(options);\n};\nGlyph.prototype.fromSVG = function(pathData, options = {}) {\n return this.path.fromSVG(pathData, options);\n};\nGlyph.prototype.toSVG = function(options, font) {\n const pathData = this.toPathData.apply(this, [options, font]);\n return this.path.toSVG(options, pathData);\n};\nGlyph.prototype.toDOMElement = function(options, font) {\n options = Object.assign({}, { variation: font && font.defaultRenderOptions.variation }, options);\n let usePath = this.path;\n if (font && font.variation) {\n usePath = font.variation.getTransform(this, options.variation).path;\n }\n return usePath.toDOMElement(options);\n};\nvar glyph_default = Glyph;\n\n// src/glyphset.mjs\nfunction defineDependentProperty(glyph, externalName, internalName) {\n Object.defineProperty(glyph, externalName, {\n get: function() {\n typeof glyph[internalName] === \"undefined\" && glyph.path;\n return glyph[internalName];\n },\n set: function(newValue) {\n glyph[internalName] = newValue;\n },\n enumerable: true,\n configurable: true\n });\n}\nfunction GlyphSet(font, glyphs) {\n this.font = font;\n this.glyphs = {};\n if (Array.isArray(glyphs)) {\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n glyph.path.unitsPerEm = font.unitsPerEm;\n this.glyphs[i] = glyph;\n }\n }\n this.length = glyphs && glyphs.length || 0;\n}\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n GlyphSet.prototype[Symbol.iterator] = function() {\n let n = -1;\n return {\n next: function() {\n n++;\n const done = n >= this.length - 1;\n return { value: this.get(n), done };\n }.bind(this)\n };\n };\n}\nGlyphSet.prototype.get = function(index) {\n if (this.font._push && this.glyphs[index] === void 0) {\n this.font._push(index);\n if (typeof this.glyphs[index] === \"function\") {\n this.glyphs[index] = this.glyphs[index]();\n }\n let glyph = this.glyphs[index];\n let unicodeObj = this.font._IndexToUnicodeMap[index];\n if (unicodeObj) {\n for (let j = 0; j < unicodeObj.unicodes.length; j++)\n glyph.addUnicode(unicodeObj.unicodes[j]);\n }\n if (this.font.cffEncoding) {\n glyph.name = this.font.cffEncoding.charset[index];\n } else if (this.font.glyphNames.names) {\n glyph.name = this.font.glyphNames.glyphIndexToName(index);\n }\n this.glyphs[index].advanceWidth = this.font._hmtxTableData[index].advanceWidth;\n this.glyphs[index].leftSideBearing = this.font._hmtxTableData[index].leftSideBearing;\n } else {\n if (typeof this.glyphs[index] === \"function\") {\n this.glyphs[index] = this.glyphs[index]();\n }\n }\n return this.glyphs[index];\n};\nGlyphSet.prototype.push = function(index, loader) {\n this.glyphs[index] = loader;\n this.length++;\n};\nfunction glyphLoader(font, index) {\n return new glyph_default({ index, font });\n}\nfunction ttfGlyphLoader(font, index, parseGlyph2, data, position, buildPath2) {\n return function() {\n const glyph = new glyph_default({ index, font });\n glyph.path = function() {\n parseGlyph2(glyph, data, position);\n const path = buildPath2(font.glyphs, glyph);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n defineDependentProperty(glyph, \"numberOfContours\", \"_numberOfContours\");\n defineDependentProperty(glyph, \"xMin\", \"_xMin\");\n defineDependentProperty(glyph, \"xMax\", \"_xMax\");\n defineDependentProperty(glyph, \"yMin\", \"_yMin\");\n defineDependentProperty(glyph, \"yMax\", \"_yMax\");\n defineDependentProperty(glyph, \"points\", \"_points\");\n return glyph;\n };\n}\nfunction cffGlyphLoader(font, index, parseCFFCharstring2, charstring, version) {\n return function() {\n const glyph = new glyph_default({ index, font });\n glyph.path = function() {\n const path = parseCFFCharstring2(font, glyph, charstring, version);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n return glyph;\n };\n}\nvar glyphset_default = { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader };\n\n// src/tables/cff.mjs\nfunction equals(a, b) {\n if (a === b) {\n return true;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i += 1) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\nvar MAX_CALL_DEPTH = 10;\nfunction calcCFFSubroutineBias(subrs) {\n let bias;\n if (subrs.length < 1240) {\n bias = 107;\n } else if (subrs.length < 33900) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n return bias;\n}\nfunction parseCFFIndex(data, start, conversionFn, version) {\n const offsets = [];\n const objects = [];\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n let pos = start + countLength + 1;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse_default.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + countLength;\n }\n for (let i = 0; i < offsets.length - 1; i += 1) {\n let value = parse_default.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value, data, start, version);\n }\n objects.push(value);\n }\n return { objects, startOffset: start, endOffset };\n}\nfunction parseCFFIndexLowMemory(data, start, version) {\n const offsets = [];\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n let pos = start + countLength + 1;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse_default.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + countLength;\n }\n return { offsets, startOffset: start, endOffset };\n}\nfunction getCffIndexObject(i, offsets, data, start, conversionFn, version) {\n const count = version > 1 ? parse_default.getULong(data, start) : parse_default.getCard16(data, start);\n const countLength = version > 1 ? 4 : 2;\n let objectOffset = 0;\n if (count !== 0) {\n const offsetSize = parse_default.getByte(data, start + countLength);\n objectOffset = start + (count + 1) * offsetSize + countLength;\n }\n let value = parse_default.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value);\n }\n return value;\n}\nfunction parseFloatOperand(parser) {\n let s = \"\";\n const eof = 15;\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n for (; ; ) {\n const b = parser.parseByte();\n const n1 = b >> 4;\n const n2 = b & 15;\n if (n1 === eof) {\n break;\n }\n s += lookup[n1];\n if (n2 === eof) {\n break;\n }\n s += lookup[n2];\n }\n return parseFloat(s);\n}\nfunction parseOperand(parser, b0) {\n let b1;\n let b2;\n let b3;\n let b4;\n if (b0 === 28) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n return b1 << 8 | b2;\n }\n if (b0 === 29) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n b3 = parser.parseByte();\n b4 = parser.parseByte();\n return b1 << 24 | b2 << 16 | b3 << 8 | b4;\n }\n if (b0 === 30) {\n return parseFloatOperand(parser);\n }\n if (b0 >= 32 && b0 <= 246) {\n return b0 - 139;\n }\n if (b0 >= 247 && b0 <= 250) {\n b1 = parser.parseByte();\n return (b0 - 247) * 256 + b1 + 108;\n }\n if (b0 >= 251 && b0 <= 254) {\n b1 = parser.parseByte();\n return -(b0 - 251) * 256 - b1 - 108;\n }\n throw new Error(\"Invalid b0 \" + b0);\n}\nfunction entriesToObject(entries) {\n const o = {};\n for (let i = 0; i < entries.length; i += 1) {\n const key = entries[i][0];\n const values = entries[i][1];\n let value;\n if (values.length === 1) {\n value = values[0];\n } else {\n value = values;\n }\n if (Object.prototype.hasOwnProperty.call(o, key) && !isNaN(o[key])) {\n throw new Error(\"Object \" + o + \" already has key \" + key);\n }\n o[key] = value;\n }\n return o;\n}\nfunction parseCFFDict(data, start, size, version) {\n start = start !== void 0 ? start : 0;\n const parser = new parse_default.Parser(data, start);\n const entries = [];\n let operands = [];\n size = size !== void 0 ? size : data.byteLength;\n let operandsStart = version < 2 ? 22 : 28;\n while (parser.relativeOffset < size) {\n let op = parser.parseByte();\n if (op < operandsStart) {\n if (op === 12) {\n op = 1200 + parser.parseByte();\n }\n if (version > 1 && op === 23) {\n parseBlend(operands);\n continue;\n }\n entries.push([op, operands]);\n operands = [];\n } else {\n operands.push(parseOperand(parser, op, version));\n }\n }\n return entriesToObject(entries);\n}\nfunction getCFFString(strings, index) {\n if (index <= 390) {\n index = cffStandardStrings[index];\n } else if (strings) {\n index = strings[index - 391];\n } else {\n index = void 0;\n }\n return index;\n}\nfunction interpretDict(dict, meta, strings) {\n const newDict = {};\n let value;\n for (let i = 0; i < meta.length; i += 1) {\n const m = meta[i];\n if (Array.isArray(m.type)) {\n const values = [];\n values.length = m.type.length;\n for (let j = 0; j < m.type.length; j++) {\n value = dict[m.op] !== void 0 ? dict[m.op][j] : void 0;\n if (value === void 0) {\n value = m.value !== void 0 && m.value[j] !== void 0 ? m.value[j] : null;\n }\n if (m.type[j] === \"SID\") {\n value = getCFFString(strings, value);\n }\n values[j] = value;\n }\n newDict[m.name] = values;\n } else {\n value = dict[m.op];\n if (value === void 0) {\n value = m.value !== void 0 ? m.value : null;\n }\n if (m.type === \"SID\") {\n value = getCFFString(strings, value);\n }\n newDict[m.name] = value;\n }\n }\n return newDict;\n}\nfunction parseCFFHeader(data, start) {\n const header = {};\n header.formatMajor = parse_default.getCard8(data, start);\n header.formatMinor = parse_default.getCard8(data, start + 1);\n if (header.formatMajor > 2) {\n throw new Error(`Unsupported CFF table version ${header.formatMajor}.${header.formatMinor}`);\n }\n header.size = parse_default.getCard8(data, start + 2);\n if (header.formatMajor < 2) {\n header.offsetSize = parse_default.getCard8(data, start + 3);\n header.startOffset = start;\n header.endOffset = start + 4;\n } else {\n header.topDictLength = parse_default.getCard16(data, start + 3);\n header.endOffset = start + 8;\n }\n return header;\n}\nvar TOP_DICT_META = [\n { name: \"version\", op: 0, type: \"SID\" },\n { name: \"notice\", op: 1, type: \"SID\" },\n { name: \"copyright\", op: 1200, type: \"SID\" },\n { name: \"fullName\", op: 2, type: \"SID\" },\n { name: \"familyName\", op: 3, type: \"SID\" },\n { name: \"weight\", op: 4, type: \"SID\" },\n { name: \"isFixedPitch\", op: 1201, type: \"number\", value: 0 },\n { name: \"italicAngle\", op: 1202, type: \"number\", value: 0 },\n { name: \"underlinePosition\", op: 1203, type: \"number\", value: -100 },\n { name: \"underlineThickness\", op: 1204, type: \"number\", value: 50 },\n { name: \"paintType\", op: 1205, type: \"number\", value: 0 },\n { name: \"charstringType\", op: 1206, type: \"number\", value: 2 },\n {\n name: \"fontMatrix\",\n op: 1207,\n type: [\"real\", \"real\", \"real\", \"real\", \"real\", \"real\"],\n value: [1e-3, 0, 0, 1e-3, 0, 0]\n },\n { name: \"uniqueId\", op: 13, type: \"number\" },\n { name: \"fontBBox\", op: 5, type: [\"number\", \"number\", \"number\", \"number\"], value: [0, 0, 0, 0] },\n { name: \"strokeWidth\", op: 1208, type: \"number\", value: 0 },\n { name: \"xuid\", op: 14, type: [], value: null },\n { name: \"charset\", op: 15, type: \"offset\", value: 0 },\n { name: \"encoding\", op: 16, type: \"offset\", value: 0 },\n { name: \"charStrings\", op: 17, type: \"offset\", value: 0 },\n { name: \"private\", op: 18, type: [\"number\", \"offset\"], value: [0, 0] },\n { name: \"ros\", op: 1230, type: [\"SID\", \"SID\", \"number\"] },\n { name: \"cidFontVersion\", op: 1231, type: \"number\", value: 0 },\n { name: \"cidFontRevision\", op: 1232, type: \"number\", value: 0 },\n { name: \"cidFontType\", op: 1233, type: \"number\", value: 0 },\n { name: \"cidCount\", op: 1234, type: \"number\", value: 8720 },\n { name: \"uidBase\", op: 1235, type: \"number\" },\n { name: \"fdArray\", op: 1236, type: \"offset\" },\n { name: \"fdSelect\", op: 1237, type: \"offset\" },\n { name: \"fontName\", op: 1238, type: \"SID\" }\n];\nvar TOP_DICT_META_CFF2 = [\n {\n name: \"fontMatrix\",\n op: 1207,\n type: [\"real\", \"real\", \"real\", \"real\", \"real\", \"real\"],\n value: [1e-3, 0, 0, 1e-3, 0, 0]\n },\n { name: \"charStrings\", op: 17, type: \"offset\" },\n { name: \"fdArray\", op: 1236, type: \"offset\" },\n { name: \"fdSelect\", op: 1237, type: \"offset\" },\n { name: \"vstore\", op: 24, type: \"offset\" }\n];\nvar PRIVATE_DICT_META = [\n { name: \"subrs\", op: 19, type: \"offset\", value: 0 },\n { name: \"defaultWidthX\", op: 20, type: \"number\", value: 0 },\n { name: \"nominalWidthX\", op: 21, type: \"number\", value: 0 }\n];\nvar PRIVATE_DICT_META_CFF2 = [\n { name: \"blueValues\", op: 6, type: \"delta\" },\n { name: \"otherBlues\", op: 7, type: \"delta\" },\n { name: \"familyBlues\", op: 7, type: \"delta\" },\n { name: \"familyBlues\", op: 8, type: \"delta\" },\n { name: \"familyOtherBlues\", op: 9, type: \"delta\" },\n { name: \"blueScale\", op: 1209, type: \"number\", value: 0.039625 },\n { name: \"blueShift\", op: 1210, type: \"number\", value: 7 },\n { name: \"blueFuzz\", op: 1211, type: \"number\", value: 1 },\n { name: \"stdHW\", op: 10, type: \"number\" },\n { name: \"stdVW\", op: 11, type: \"number\" },\n { name: \"stemSnapH\", op: 1212, type: \"number\" },\n { name: \"stemSnapV\", op: 1213, type: \"number\" },\n { name: \"languageGroup\", op: 1217, type: \"number\", value: 0 },\n { name: \"expansionFactor\", op: 1218, type: \"number\", value: 0.06 },\n { name: \"vsindex\", op: 22, type: \"number\", value: 0 },\n { name: \"subrs\", op: 19, type: \"offset\" }\n];\nvar FONT_DICT_META = [\n { name: \"private\", op: 18, type: [\"number\", \"offset\"], value: [0, 0] }\n];\nfunction parseCFFTopDict(data, start, strings, version) {\n const dict = parseCFFDict(data, start, data.byteLength, version);\n return interpretDict(dict, version > 1 ? TOP_DICT_META_CFF2 : TOP_DICT_META, strings);\n}\nfunction parseCFFPrivateDict(data, start, size, strings, version) {\n const dict = parseCFFDict(data, start, size, version);\n return interpretDict(dict, version > 1 ? PRIVATE_DICT_META_CFF2 : PRIVATE_DICT_META, strings);\n}\nfunction parseFontDict(data, start, version) {\n const dict = parseCFFDict(data, start, void 0, version);\n return interpretDict(dict, FONT_DICT_META);\n}\nfunction gatherCFF2FontDicts(data, start, fdArray) {\n const fontDictArray = [];\n for (let i = 0; i < fdArray.length; i++) {\n const fontDictData = new DataView(new Uint8Array(fdArray[i]).buffer);\n const fontDict = parseFontDict(fontDictData, 0, 2);\n const privateSize = fontDict.private[0];\n const privateOffset = fontDict.private[1];\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, [], 2);\n if (privateDict.subrs) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start, void 0, 2);\n fontDict._subrs = subrIndex.objects;\n fontDict._subrsBias = calcCFFSubroutineBias(fontDict._subrs);\n }\n fontDict._privateDict = privateDict;\n }\n fontDictArray.push(fontDict);\n }\n return fontDictArray;\n}\nfunction gatherCFFTopDicts(data, start, cffIndex, strings, version) {\n const topDictArray = [];\n for (let iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) {\n const topDictData = new DataView(new Uint8Array(cffIndex[iTopDict]).buffer);\n const topDict = parseCFFTopDict(topDictData, 0, strings, version);\n topDict._subrs = [];\n topDict._subrsBias = 0;\n topDict._defaultWidthX = 0;\n topDict._nominalWidthX = 0;\n const privateSize = version < 2 ? topDict.private[0] : 0;\n const privateOffset = version < 2 ? topDict.private[1] : 0;\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, strings, version);\n topDict._defaultWidthX = privateDict.defaultWidthX;\n topDict._nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start, void 0, version);\n topDict._subrs = subrIndex.objects;\n topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs);\n }\n topDict._privateDict = privateDict;\n }\n topDictArray.push(topDict);\n }\n return topDictArray;\n}\nfunction parseCFFCharset(data, start, nGlyphs, strings, isCIDFont) {\n let sid;\n let count;\n const parser = new parse_default.Parser(data, start);\n nGlyphs -= 1;\n const charset = [\".notdef\"];\n const format = parser.parseCard8();\n if (format === 0) {\n for (let i = 0; i < nGlyphs; i += 1) {\n sid = parser.parseSID();\n if (isCIDFont) {\n charset.push(sid);\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n }\n } else if (format === 1) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard8();\n for (let i = 0; i <= count; i += 1) {\n if (isCIDFont) {\n charset.push(\"cid\" + (\"00000\" + sid).slice(-5));\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n sid += 1;\n }\n }\n } else if (format === 2) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard16();\n for (let i = 0; i <= count; i += 1) {\n if (isCIDFont) {\n charset.push(\"cid\" + (\"00000\" + sid).slice(-5));\n } else {\n charset.push(getCFFString(strings, sid) || sid);\n }\n sid += 1;\n }\n }\n } else {\n throw new Error(\"Unknown charset format \" + format);\n }\n return charset;\n}\nfunction parseCFFEncoding(data, start) {\n let code;\n const encoding = {};\n const parser = new parse_default.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n const nCodes = parser.parseCard8();\n for (let i = 0; i < nCodes; i += 1) {\n code = parser.parseCard8();\n encoding[code] = i;\n }\n } else if (format === 1) {\n const nRanges = parser.parseCard8();\n code = 1;\n for (let i = 0; i < nRanges; i += 1) {\n const first = parser.parseCard8();\n const nLeft = parser.parseCard8();\n for (let j = first; j <= first + nLeft; j += 1) {\n encoding[j] = code;\n code += 1;\n }\n }\n } else {\n throw new Error(\"Unknown encoding format \" + format);\n }\n return encoding;\n}\nfunction parseBlend(operands) {\n let numberOfBlends = operands.pop();\n while (operands.length > numberOfBlends) {\n operands.pop();\n }\n}\nfunction applyPaintType(font, path) {\n const paintType = font.tables.cff && font.tables.cff.topDict && font.tables.cff.topDict.paintType || 0;\n if (paintType === 2) {\n path.fill = null;\n path.stroke = \"black\";\n path.strokeWidth = font.tables.cff.topDict.strokeWidth || 0;\n }\n return paintType;\n}\nfunction parseCFFCharstring(font, glyph, code, version, coords) {\n let c1x;\n let c1y;\n let c2x;\n let c2y;\n const p = new path_default();\n const stack = [];\n let nStems = 0;\n let haveWidth = false;\n let open = false;\n let x = 0;\n let y = 0;\n let subrs;\n let subrsBias;\n let defaultWidthX;\n let nominalWidthX;\n let vsindex = 0;\n let vstore = [];\n let blendVector;\n let callDepth = 0;\n const cffTable = font.tables.cff2 || font.tables.cff;\n defaultWidthX = cffTable.topDict._defaultWidthX;\n nominalWidthX = cffTable.topDict._nominalWidthX;\n coords = coords || font.variation && font.variation.get();\n if (!glyph.getBlendPath) {\n glyph.getBlendPath = function(variationCoords) {\n return parseCFFCharstring(font, glyph, code, version, variationCoords);\n };\n }\n if (font.isCIDFont || version > 1) {\n const fdIndex = cffTable.topDict._fdSelect ? cffTable.topDict._fdSelect[glyph.index] : 0;\n const fdDict = cffTable.topDict._fdArray[fdIndex];\n subrs = fdDict._subrs;\n subrsBias = fdDict._subrsBias;\n if (version > 1) {\n vstore = cffTable.topDict._vstore.itemVariationStore;\n vsindex = fdDict._privateDict.vsindex;\n } else {\n defaultWidthX = fdDict._defaultWidthX;\n nominalWidthX = fdDict._nominalWidthX;\n }\n } else {\n subrs = cffTable.topDict._subrs;\n subrsBias = cffTable.topDict._subrsBias;\n }\n const paintType = applyPaintType(font, p);\n let width = defaultWidthX;\n function newContour(x2, y2) {\n if (open && paintType !== 2) {\n p.closePath();\n }\n p.moveTo(x2, y2);\n open = true;\n }\n function parseStems() {\n let hasWidthArg;\n hasWidthArg = (stack.length & 1) !== 0;\n if (hasWidthArg && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n }\n nStems += stack.length >> 1;\n stack.length = 0;\n haveWidth = true;\n }\n function parse(code2) {\n let b1;\n let b2;\n let b3;\n let b4;\n let codeIndex;\n let subrCode;\n let jpx;\n let jpy;\n let c3x;\n let c3y;\n let c4x;\n let c4y;\n let i = 0;\n while (i < code2.length) {\n let v = code2[i];\n i += 1;\n switch (v) {\n case 1:\n parseStems();\n break;\n case 3:\n parseStems();\n break;\n case 4:\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n y += stack.pop();\n newContour(x, y);\n break;\n case 5:\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 6:\n while (stack.length > 0) {\n x += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 7:\n while (stack.length > 0) {\n y += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n p.lineTo(x, y);\n }\n break;\n case 8:\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 10:\n codeIndex = stack.pop() + subrsBias;\n subrCode = subrs[codeIndex];\n if (subrCode) {\n if (callDepth >= MAX_CALL_DEPTH) {\n console.warn(\"CFF charstring subroutine call depth exceeded, skipping callsubr\");\n break;\n }\n callDepth++;\n parse(subrCode);\n callDepth--;\n }\n break;\n case 11:\n if (version > 1) {\n console.error(\"CFF CharString operator return (11) is not supported in CFF2\");\n break;\n }\n return;\n case 12:\n v = code2[i];\n i += 1;\n switch (v) {\n case 35:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y + stack.shift();\n c3x = jpx + stack.shift();\n c3y = jpy + stack.shift();\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n x = c4x + stack.shift();\n y = c4y + stack.shift();\n stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 34:\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y;\n c3x = jpx + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = y;\n x = c4x + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 36:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y;\n c3x = jpx + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n x = c4x + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 37:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n jpx = c2x + stack.shift();\n jpy = c2y + stack.shift();\n c3x = jpx + stack.shift();\n c3y = jpy + stack.shift();\n c4x = c3x + stack.shift();\n c4y = c3y + stack.shift();\n if (Math.abs(c4x - x) > Math.abs(c4y - y)) {\n x = c4x + stack.shift();\n } else {\n y = c4y + stack.shift();\n }\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n default:\n console.log(\"Glyph \" + glyph.index + \": unknown operator 1200\" + v);\n stack.length = 0;\n }\n break;\n case 14:\n if (version > 1) {\n console.error(\"CFF CharString operator endchar (14) is not supported in CFF2\");\n break;\n }\n if (stack.length >= 4) {\n const acharName = cffStandardEncoding[stack.pop()];\n const bcharName = cffStandardEncoding[stack.pop()];\n const ady = stack.pop();\n const adx = stack.pop();\n if (acharName && bcharName) {\n glyph.isComposite = true;\n glyph.components = [];\n const acharGlyphIndex = font.cffEncoding.charset.indexOf(acharName);\n const bcharGlyphIndex = font.cffEncoding.charset.indexOf(bcharName);\n glyph.components.push({\n glyphIndex: bcharGlyphIndex,\n dx: 0,\n dy: 0\n });\n glyph.components.push({\n glyphIndex: acharGlyphIndex,\n dx: adx,\n dy: ady\n });\n p.extend(font.glyphs.get(bcharGlyphIndex).path);\n const acharGlyph = font.glyphs.get(acharGlyphIndex);\n const shiftedCommands = JSON.parse(JSON.stringify(acharGlyph.path.commands));\n for (let i2 = 0; i2 < shiftedCommands.length; i2 += 1) {\n const cmd = shiftedCommands[i2];\n if (cmd.type !== \"Z\") {\n cmd.x += adx;\n cmd.y += ady;\n }\n if (cmd.type === \"Q\" || cmd.type === \"C\") {\n cmd.x1 += adx;\n cmd.y1 += ady;\n }\n if (cmd.type === \"C\") {\n cmd.x2 += adx;\n cmd.y2 += ady;\n }\n }\n p.extend(shiftedCommands);\n }\n } else if (stack.length > 0 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n if (open && paintType !== 2) {\n p.closePath();\n open = false;\n }\n break;\n case 15:\n if (version < 2) {\n console.error(\"CFF2 CharString operator vsindex (15) is not supported in CFF\");\n break;\n }\n vsindex = stack.pop();\n break;\n case 16:\n if (version < 2) {\n console.error(\"CFF2 CharString operator blend (16) is not supported in CFF\");\n break;\n }\n if (!blendVector) {\n blendVector = font.variation && coords && font.variation.process.getBlendVector(vstore, vsindex, coords);\n }\n var n = stack.pop();\n var axisCount = blendVector ? blendVector.length : vstore.itemVariationSubtables[vsindex].regionIndexes.length;\n var deltaSetCount = n * axisCount;\n var delta = stack.length - deltaSetCount;\n var deltaSetIndex = delta - n;\n if (blendVector) {\n for (let i2 = 0; i2 < n; i2++) {\n var sum = stack[deltaSetIndex + i2];\n for (let j = 0; j < axisCount; j++) {\n sum += blendVector[j] * stack[delta++];\n }\n stack[deltaSetIndex + i2] = sum;\n }\n }\n while (deltaSetCount--) {\n stack.pop();\n }\n break;\n case 18:\n parseStems();\n break;\n case 19:\n // hintmask\n case 20:\n parseStems();\n i += nStems + 7 >> 3;\n break;\n case 21:\n if (stack.length > 2 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n y += stack.pop();\n x += stack.pop();\n newContour(x, y);\n break;\n case 22:\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n x += stack.pop();\n newContour(x, y);\n break;\n case 23:\n parseStems();\n break;\n case 24:\n while (stack.length > 2) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n break;\n case 25:\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26:\n if (stack.length & 1) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 27:\n if (stack.length & 1) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 28:\n b1 = code2[i];\n b2 = code2[i + 1];\n stack.push((b1 << 24 | b2 << 16) >> 16);\n i += 2;\n break;\n case 29:\n codeIndex = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[codeIndex];\n if (subrCode) {\n if (callDepth >= MAX_CALL_DEPTH) {\n console.warn(\"CFF charstring subroutine call depth exceeded, skipping callgsubr\");\n break;\n }\n callDepth++;\n parse(subrCode);\n callDepth--;\n }\n break;\n case 30:\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 31:\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n default:\n if (v < 32) {\n console.log(\"Glyph \" + glyph.index + \": unknown operator \" + v);\n } else if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n b1 = code2[i];\n i += 1;\n stack.push((v - 247) * 256 + b1 + 108);\n } else if (v < 255) {\n b1 = code2[i];\n i += 1;\n stack.push(-(v - 251) * 256 - b1 - 108);\n } else {\n b1 = code2[i];\n b2 = code2[i + 1];\n b3 = code2[i + 2];\n b4 = code2[i + 3];\n i += 4;\n stack.push((b1 << 24 | b2 << 16 | b3 << 8 | b4) / 65536);\n }\n }\n }\n }\n parse(code);\n if (font.variation && coords) {\n p.commands = p.commands.map((c) => {\n const keys = Object.keys(c);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === \"type\") continue;\n c[key] = Math.round(c[key]);\n }\n return c;\n });\n }\n if (haveWidth) {\n glyph.advanceWidth = width;\n }\n return p;\n}\nfunction parseCFFFDSelect(data, start, nGlyphs, fdArrayCount, version) {\n const fdSelect = [];\n let fdIndex;\n const parser = new parse_default.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n for (let iGid = 0; iGid < nGlyphs; iGid++) {\n fdIndex = parser.parseCard8();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\"CFF table CID Font FDSelect has bad FD index value \" + fdIndex + \" (FD count \" + fdArrayCount + \")\");\n }\n fdSelect.push(fdIndex);\n }\n } else if (format === 3 || version > 1 && format === 4) {\n const nRanges = format === 4 ? parser.parseULong() : parser.parseCard16();\n let first = format === 4 ? parser.parseULong() : parser.parseCard16();\n if (first !== 0) {\n throw new Error(`CFF Table CID Font FDSelect format ${format} range has bad initial GID ${first}`);\n }\n let next;\n for (let iRange = 0; iRange < nRanges; iRange++) {\n fdIndex = format === 4 ? parser.parseUShort() : parser.parseCard8();\n next = format === 4 ? parser.parseULong() : parser.parseCard16();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\"CFF table CID Font FDSelect has bad FD index value \" + fdIndex + \" (FD count \" + fdArrayCount + \")\");\n }\n if (next > nGlyphs) {\n throw new Error(`CFF Table CID Font FDSelect format ${version} range has bad GID ${next}`);\n }\n for (; first < next; first++) {\n fdSelect.push(fdIndex);\n }\n first = next;\n }\n if (next !== nGlyphs) {\n throw new Error(\"CFF Table CID Font FDSelect format 3 range has bad final (Sentinal) GID \" + next);\n }\n } else {\n throw new Error(\"CFF Table CID Font FDSelect table has unsupported format \" + format);\n }\n return fdSelect;\n}\nfunction parseCFFTable(data, start, font, opt) {\n let resultTable;\n const header = parseCFFHeader(data, start);\n if (header.formatMajor === 2) {\n resultTable = font.tables.cff2 = {};\n } else {\n resultTable = font.tables.cff = {};\n }\n const nameIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, header.endOffset, parse_default.bytesToString);\n const topDictIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, nameIndex.endOffset);\n const stringIndex = header.formatMajor > 1 ? null : parseCFFIndex(data, topDictIndex.endOffset, parse_default.bytesToString);\n const globalSubrIndex = parseCFFIndex(data, header.formatMajor > 1 ? start + header.size + header.topDictLength : stringIndex.endOffset, void 0, header.formatMajor);\n font.gsubrs = globalSubrIndex.objects;\n font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs);\n let topDict;\n if (header.formatMajor > 1) {\n const topDictOffset = start + header.size;\n const topDictData = parse_default.getBytes(data, topDictOffset, topDictOffset + header.topDictLength);\n topDict = gatherCFFTopDicts(data, 0, [topDictData], void 0, header.formatMajor)[0];\n } else {\n const topDictArray = gatherCFFTopDicts(data, start, topDictIndex.objects, stringIndex.objects, header.formatMajor);\n if (topDictArray.length !== 1) {\n throw new Error(\"CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = \" + topDictArray.length);\n }\n topDict = topDictArray[0];\n }\n resultTable.topDict = topDict;\n if (topDict._privateDict) {\n font.defaultWidthX = topDict._privateDict.defaultWidthX;\n font.nominalWidthX = topDict._privateDict.nominalWidthX;\n }\n if (header.formatMajor < 2 && topDict.ros[0] !== void 0 && topDict.ros[1] !== void 0) {\n font.isCIDFont = true;\n }\n if (header.formatMajor > 1) {\n let fdArrayIndexOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (!fdArrayIndexOffset) {\n throw new Error(\"This is a CFF2 font, but FDArray information is missing\");\n }\n const fdArrayIndex = parseCFFIndex(data, start + fdArrayIndexOffset, null, header.formatMajor);\n const fdArray = gatherCFF2FontDicts(data, start, fdArrayIndex.objects);\n topDict._fdArray = fdArray;\n if (fdSelectOffset) {\n topDict._fdSelect = parseCFFFDSelect(data, start + fdSelectOffset, font.numGlyphs, fdArray.length, header.formatMajor);\n }\n } else if (font.isCIDFont) {\n let fdArrayOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (fdArrayOffset === 0 || fdSelectOffset === 0) {\n throw new Error(\"Font is marked as a CID font, but FDArray and/or FDSelect information is missing\");\n }\n fdArrayOffset += start;\n const fdArrayIndex = parseCFFIndex(data, fdArrayOffset);\n const fdArray = gatherCFFTopDicts(data, start, fdArrayIndex.objects, stringIndex.objects, header.formatMajor);\n topDict._fdArray = fdArray;\n fdSelectOffset += start;\n topDict._fdSelect = parseCFFFDSelect(data, fdSelectOffset, font.numGlyphs, fdArray.length, header.formatMajor);\n }\n if (header.formatMajor < 2) {\n const privateDictOffset = start + topDict.private[1];\n const privateDict = parseCFFPrivateDict(data, privateDictOffset, topDict.private[0], stringIndex.objects, header.formatMajor);\n font.defaultWidthX = privateDict.defaultWidthX;\n font.nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateDictOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset);\n font.subrs = subrIndex.objects;\n font.subrsBias = calcCFFSubroutineBias(font.subrs);\n } else {\n font.subrs = [];\n font.subrsBias = 0;\n }\n }\n let charStringsIndex;\n if (opt.lowMemory) {\n charStringsIndex = parseCFFIndexLowMemory(data, start + topDict.charStrings, header.formatMajor);\n font.nGlyphs = charStringsIndex.offsets.length - (header.formatMajor > 1 ? 1 : 0);\n } else {\n charStringsIndex = parseCFFIndex(data, start + topDict.charStrings, null, header.formatMajor);\n font.nGlyphs = charStringsIndex.objects.length;\n }\n if (header.formatMajor > 1 && font.tables.maxp && font.nGlyphs !== font.tables.maxp.numGlyphs) {\n console.error(`Glyph count in the CFF2 table (${font.nGlyphs}) must correspond to the glyph count in the maxp table (${font.tables.maxp.numGlyphs})`);\n }\n if (header.formatMajor < 2) {\n let charset = [];\n let encoding = [];\n if (topDict.charset === 0) {\n charset = cffISOAdobeStrings;\n } else if (topDict.charset === 1) {\n charset = cffIExpertStrings;\n } else if (topDict.charset === 2) {\n charset = cffExpertSubsetStrings;\n } else {\n charset = parseCFFCharset(data, start + topDict.charset, font.nGlyphs, stringIndex.objects, font.isCIDFont);\n }\n if (topDict.encoding === 0) {\n encoding = cffStandardEncoding;\n } else if (topDict.encoding === 1) {\n encoding = cffExpertEncoding;\n } else {\n encoding = parseCFFEncoding(data, start + topDict.encoding);\n }\n font.cffEncoding = new CffEncoding(encoding, charset);\n font.encoding = font.encoding || font.cffEncoding;\n }\n font.glyphs = new glyphset_default.GlyphSet(font);\n if (opt.lowMemory) {\n font._push = function(i) {\n const charString = getCffIndexObject(i, charStringsIndex.offsets, data, start + topDict.charStrings, void 0, header.formatMajor);\n font.glyphs.push(i, glyphset_default.cffGlyphLoader(font, i, parseCFFCharstring, charString, header.formatMajor));\n };\n } else {\n for (let i = 0; i < font.nGlyphs; i += 1) {\n const charString = charStringsIndex.objects[i];\n font.glyphs.push(i, glyphset_default.cffGlyphLoader(font, i, parseCFFCharstring, charString, header.formatMajor));\n }\n }\n if (topDict.vstore) {\n const p = new parse_default.Parser(data, start + topDict.vstore);\n topDict._vstore = p.parseVariationStore();\n }\n}\nfunction encodeString(s, strings) {\n let sid;\n let i = cffStandardStrings.indexOf(s);\n if (i >= 0) {\n sid = i;\n }\n i = strings.indexOf(s);\n if (i >= 0) {\n sid = i + cffStandardStrings.length;\n } else {\n sid = cffStandardStrings.length + strings.length;\n strings.push(s);\n }\n return sid;\n}\nfunction makeHeader() {\n return new table_default.Record(\"Header\", [\n { name: \"major\", type: \"Card8\", value: 1 },\n { name: \"minor\", type: \"Card8\", value: 0 },\n { name: \"hdrSize\", type: \"Card8\", value: 4 },\n { name: \"major\", type: \"Card8\", value: 1 }\n ]);\n}\nfunction makeNameIndex(fontNames) {\n const t = new table_default.Record(\"Name INDEX\", [\n { name: \"names\", type: \"INDEX\", value: [] }\n ]);\n t.names = [];\n for (let i = 0; i < fontNames.length; i += 1) {\n t.names.push({ name: \"name_\" + i, type: \"NAME\", value: fontNames[i] });\n }\n return t;\n}\nfunction makeDict(meta, attrs, strings) {\n const m = {};\n for (let i = 0; i < meta.length; i += 1) {\n const entry = meta[i];\n let value = attrs[entry.name];\n if (value !== void 0 && !equals(value, entry.value)) {\n if (entry.type === \"SID\") {\n value = encodeString(value, strings);\n }\n m[entry.op] = { name: entry.name, type: entry.type, value };\n }\n }\n return m;\n}\nfunction makeTopDict(attrs, strings, version) {\n const t = new table_default.Record(\"Top DICT\", [\n { name: \"dict\", type: \"DICT\", value: {} }\n ]);\n t.dict = makeDict(version > 1 ? TOP_DICT_META_CFF2 : TOP_DICT_META, attrs, strings);\n return t;\n}\nfunction makeTopDictIndex(topDict) {\n const t = new table_default.Record(\"Top DICT INDEX\", [\n { name: \"topDicts\", type: \"INDEX\", value: [] }\n ]);\n t.topDicts = [{ name: \"topDict_0\", type: \"TABLE\", value: topDict }];\n return t;\n}\nfunction makeStringIndex(strings) {\n const t = new table_default.Record(\"String INDEX\", [\n { name: \"strings\", type: \"INDEX\", value: [] }\n ]);\n t.strings = [];\n for (let i = 0; i < strings.length; i += 1) {\n t.strings.push({ name: \"string_\" + i, type: \"STRING\", value: strings[i] });\n }\n return t;\n}\nfunction makeGlobalSubrIndex() {\n return new table_default.Record(\"Global Subr INDEX\", [\n { name: \"subrs\", type: \"INDEX\", value: [] }\n ]);\n}\nfunction makeCharsets(glyphNames, strings) {\n const t = new table_default.Record(\"Charsets\", [\n { name: \"format\", type: \"Card8\", value: 0 }\n ]);\n for (let i = 0; i < glyphNames.length; i += 1) {\n const glyphName = glyphNames[i];\n const glyphSID = encodeString(glyphName, strings);\n t.fields.push({ name: \"glyph_\" + i, type: \"SID\", value: glyphSID });\n }\n return t;\n}\nfunction glyphToOps(glyph, version) {\n const ops = [];\n const path = glyph.path;\n if (version < 2) {\n ops.push({ name: \"width\", type: \"NUMBER\", value: glyph.advanceWidth });\n }\n let x = 0;\n let y = 0;\n for (let i = 0; i < path.commands.length; i += 1) {\n let dx;\n let dy;\n let cmd = path.commands[i];\n if (cmd.type === \"Q\") {\n const _13 = 1 / 3;\n const _23 = 2 / 3;\n cmd = {\n type: \"C\",\n x: cmd.x,\n y: cmd.y,\n x1: Math.round(_13 * x + _23 * cmd.x1),\n y1: Math.round(_13 * y + _23 * cmd.y1),\n x2: Math.round(_13 * cmd.x + _23 * cmd.x1),\n y2: Math.round(_13 * cmd.y + _23 * cmd.y1)\n };\n }\n if (cmd.type === \"M\") {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rmoveto\", type: \"OP\", value: 21 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === \"L\") {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rlineto\", type: \"OP\", value: 5 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === \"C\") {\n const dx1 = Math.round(cmd.x1 - x);\n const dy1 = Math.round(cmd.y1 - y);\n const dx2 = Math.round(cmd.x2 - cmd.x1);\n const dy2 = Math.round(cmd.y2 - cmd.y1);\n dx = Math.round(cmd.x - cmd.x2);\n dy = Math.round(cmd.y - cmd.y2);\n ops.push({ name: \"dx1\", type: \"NUMBER\", value: dx1 });\n ops.push({ name: \"dy1\", type: \"NUMBER\", value: dy1 });\n ops.push({ name: \"dx2\", type: \"NUMBER\", value: dx2 });\n ops.push({ name: \"dy2\", type: \"NUMBER\", value: dy2 });\n ops.push({ name: \"dx\", type: \"NUMBER\", value: dx });\n ops.push({ name: \"dy\", type: \"NUMBER\", value: dy });\n ops.push({ name: \"rrcurveto\", type: \"OP\", value: 8 });\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n }\n }\n if (version < 2) {\n ops.push({ name: \"endchar\", type: \"OP\", value: 14 });\n }\n return ops;\n}\nfunction makeCharStringsIndex(glyphs, version) {\n const t = new table_default.Record(\"CharStrings INDEX\", [\n { name: \"charStrings\", type: \"INDEX\", value: [] }\n ]);\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const ops = glyphToOps(glyph, version);\n t.charStrings.push({ name: glyph.name, type: \"CHARSTRING\", value: ops });\n }\n return t;\n}\nfunction makePrivateDict(attrs, strings, version) {\n const t = new table_default.Record(\"Private DICT\", [\n { name: \"dict\", type: \"DICT\", value: {} }\n ]);\n t.dict = makeDict(version > 1 ? PRIVATE_DICT_META_CFF2 : PRIVATE_DICT_META, attrs, strings);\n return t;\n}\nfunction makeCFFTable(glyphs, options) {\n const cffVersion = 1;\n const t = new table_default.Table(\"CFF \", [\n { name: \"header\", type: \"RECORD\" },\n { name: \"nameIndex\", type: \"RECORD\" },\n { name: \"topDictIndex\", type: \"RECORD\" },\n { name: \"stringIndex\", type: \"RECORD\" },\n { name: \"globalSubrIndex\", type: \"RECORD\" },\n { name: \"charsets\", type: \"RECORD\" },\n { name: \"charStringsIndex\", type: \"RECORD\" },\n { name: \"privateDict\", type: \"RECORD\" }\n ]);\n const fontScale = 1 / options.unitsPerEm;\n const attrs = {\n version: options.version,\n fullName: options.fullName,\n familyName: options.familyName,\n weight: options.weightName,\n fontBBox: options.fontBBox || [0, 0, 0, 0],\n fontMatrix: [fontScale, 0, 0, fontScale, 0, 0],\n charset: 999,\n encoding: 0,\n charStrings: 999,\n private: [0, 999]\n };\n const topDictOptions = options && options.topDict || {};\n if (cffVersion < 2 && topDictOptions.paintType) {\n attrs.paintType = topDictOptions.paintType;\n attrs.strokeWidth = topDictOptions.strokeWidth || 0;\n }\n const privateAttrs = {};\n const glyphNames = [];\n let glyph;\n for (let i = 1; i < glyphs.length; i += 1) {\n glyph = glyphs.get(i);\n glyphNames.push(glyph.name);\n }\n const strings = [];\n t.header = makeHeader();\n t.nameIndex = makeNameIndex([options.postScriptName]);\n let topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n t.globalSubrIndex = makeGlobalSubrIndex();\n t.charsets = makeCharsets(glyphNames, strings);\n t.charStringsIndex = makeCharStringsIndex(glyphs, cffVersion);\n t.privateDict = makePrivateDict(privateAttrs, strings);\n t.stringIndex = makeStringIndex(strings);\n const startOffset = t.header.sizeOf() + t.nameIndex.sizeOf() + t.topDictIndex.sizeOf() + t.stringIndex.sizeOf() + t.globalSubrIndex.sizeOf();\n attrs.charset = startOffset;\n attrs.encoding = 0;\n attrs.charStrings = attrs.charset + t.charsets.sizeOf();\n attrs.private[1] = attrs.charStrings + t.charStringsIndex.sizeOf();\n topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n return t;\n}\nvar cff_default = { parse: parseCFFTable, make: makeCFFTable };\n\n// src/tables/head.mjs\nfunction parseHeadTable(data, start) {\n const head = {};\n const p = new parse_default.Parser(data, start);\n head.version = p.parseVersion();\n head.fontRevision = Math.round(p.parseFixed() * 1e3) / 1e3;\n head.checkSumAdjustment = p.parseULong();\n head.magicNumber = p.parseULong();\n check_default.argument(head.magicNumber === 1594834165, \"Font header has wrong magic number.\");\n head.flags = p.parseUShort();\n head.unitsPerEm = p.parseUShort();\n head.created = p.parseLongDateTime();\n head.modified = p.parseLongDateTime();\n head.xMin = p.parseShort();\n head.yMin = p.parseShort();\n head.xMax = p.parseShort();\n head.yMax = p.parseShort();\n head.macStyle = p.parseUShort();\n head.lowestRecPPEM = p.parseUShort();\n head.fontDirectionHint = p.parseShort();\n head.indexToLocFormat = p.parseShort();\n head.glyphDataFormat = p.parseShort();\n return head;\n}\nfunction makeHeadTable(options) {\n const timestamp = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3) + 2082844800;\n let createdTimestamp = timestamp;\n let macStyle = options.macStyle || 0;\n if (options.createdTimestamp) {\n createdTimestamp = options.createdTimestamp + 2082844800;\n }\n return new table_default.Table(\"head\", [\n { name: \"version\", type: \"FIXED\", value: 65536 },\n { name: \"fontRevision\", type: \"FIXED\", value: 65536 },\n { name: \"checkSumAdjustment\", type: \"ULONG\", value: 0 },\n { name: \"magicNumber\", type: \"ULONG\", value: 1594834165 },\n { name: \"flags\", type: \"USHORT\", value: 0 },\n { name: \"unitsPerEm\", type: \"USHORT\", value: 1e3 },\n { name: \"created\", type: \"LONGDATETIME\", value: createdTimestamp },\n { name: \"modified\", type: \"LONGDATETIME\", value: timestamp },\n { name: \"xMin\", type: \"SHORT\", value: 0 },\n { name: \"yMin\", type: \"SHORT\", value: 0 },\n { name: \"xMax\", type: \"SHORT\", value: 0 },\n { name: \"yMax\", type: \"SHORT\", value: 0 },\n { name: \"macStyle\", type: \"USHORT\", value: macStyle },\n { name: \"lowestRecPPEM\", type: \"USHORT\", value: 0 },\n { name: \"fontDirectionHint\", type: \"SHORT\", value: 2 },\n { name: \"indexToLocFormat\", type: \"SHORT\", value: 0 },\n { name: \"glyphDataFormat\", type: \"SHORT\", value: 0 }\n ], options);\n}\nvar head_default = { parse: parseHeadTable, make: makeHeadTable };\n\n// src/tables/hhea.mjs\nfunction parseHheaTable(data, start) {\n const hhea = {};\n const p = new parse_default.Parser(data, start);\n hhea.version = p.parseVersion();\n hhea.ascender = p.parseShort();\n hhea.descender = p.parseShort();\n hhea.lineGap = p.parseShort();\n hhea.advanceWidthMax = p.parseUShort();\n hhea.minLeftSideBearing = p.parseShort();\n hhea.minRightSideBearing = p.parseShort();\n hhea.xMaxExtent = p.parseShort();\n hhea.caretSlopeRise = p.parseShort();\n hhea.caretSlopeRun = p.parseShort();\n hhea.caretOffset = p.parseShort();\n p.relativeOffset += 8;\n hhea.metricDataFormat = p.parseShort();\n hhea.numberOfHMetrics = p.parseUShort();\n return hhea;\n}\nfunction makeHheaTable(options) {\n return new table_default.Table(\"hhea\", [\n { name: \"version\", type: \"FIXED\", value: 65536 },\n { name: \"ascender\", type: \"FWORD\", value: 0 },\n { name: \"descender\", type: \"FWORD\", value: 0 },\n { name: \"lineGap\", type: \"FWORD\", value: 0 },\n { name: \"advanceWidthMax\", type: \"UFWORD\", value: 0 },\n { name: \"minLeftSideBearing\", type: \"FWORD\", value: 0 },\n { name: \"minRightSideBearing\", type: \"FWORD\", value: 0 },\n { name: \"xMaxExtent\", type: \"FWORD\", value: 0 },\n { name: \"caretSlopeRise\", type: \"SHORT\", value: 1 },\n { name: \"caretSlopeRun\", type: \"SHORT\", value: 0 },\n { name: \"caretOffset\", type: \"SHORT\", value: 0 },\n { name: \"reserved1\", type: \"SHORT\", value: 0 },\n { name: \"reserved2\", type: \"SHORT\", value: 0 },\n { name: \"reserved3\", type: \"SHORT\", value: 0 },\n { name: \"reserved4\", type: \"SHORT\", value: 0 },\n { name: \"metricDataFormat\", type: \"SHORT\", value: 0 },\n { name: \"numberOfHMetrics\", type: \"USHORT\", value: 0 }\n ], options);\n}\nvar hhea_default = { parse: parseHheaTable, make: makeHheaTable };\n\n// src/tables/hmtx.mjs\nfunction parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) {\n let advanceWidth;\n let leftSideBearing;\n const p = new parse_default.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n const glyph = glyphs.get(i);\n glyph.advanceWidth = advanceWidth;\n glyph.leftSideBearing = leftSideBearing;\n }\n}\nfunction parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) {\n font._hmtxTableData = {};\n let advanceWidth;\n let leftSideBearing;\n const p = new parse_default.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n font._hmtxTableData[i] = {\n advanceWidth,\n leftSideBearing\n };\n }\n}\nfunction parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) {\n if (opt.lowMemory)\n parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs);\n else\n parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs);\n}\nfunction makeHmtxTable(glyphs) {\n const t = new table_default.Table(\"hmtx\", []);\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const advanceWidth = glyph.advanceWidth || 0;\n const leftSideBearing = glyph.leftSideBearing || 0;\n t.fields.push({ name: \"advanceWidth_\" + i, type: \"USHORT\", value: advanceWidth });\n t.fields.push({ name: \"leftSideBearing_\" + i, type: \"SHORT\", value: leftSideBearing });\n }\n return t;\n}\nvar hmtx_default = { parse: parseHmtxTable, make: makeHmtxTable };\n\n// src/tables/ltag.mjs\nfunction makeLtagTable(tags) {\n const result = new table_default.Table(\"ltag\", [\n { name: \"version\", type: \"ULONG\", value: 1 },\n { name: \"flags\", type: \"ULONG\", value: 0 },\n { name: \"numTags\", type: \"ULONG\", value: tags.length }\n ]);\n let stringPool = \"\";\n const stringPoolOffset = 12 + tags.length * 4;\n for (let i = 0; i < tags.length; ++i) {\n let pos = stringPool.indexOf(tags[i]);\n if (pos < 0) {\n pos = stringPool.length;\n stringPool += tags[i];\n }\n result.fields.push({ name: \"offset \" + i, type: \"USHORT\", value: stringPoolOffset + pos });\n result.fields.push({ name: \"length \" + i, type: \"USHORT\", value: tags[i].length });\n }\n result.fields.push({ name: \"stringPool\", type: \"CHARARRAY\", value: stringPool });\n return result;\n}\nfunction parseLtagTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 1, \"Unsupported ltag table version.\");\n p.skip(\"uLong\", 1);\n const numTags = p.parseULong();\n const tags = [];\n for (let i = 0; i < numTags; i++) {\n let tag = \"\";\n const offset = start + p.parseUShort();\n const length = p.parseUShort();\n for (let j = offset; j < offset + length; ++j) {\n tag += String.fromCharCode(data.getInt8(j));\n }\n tags.push(tag);\n }\n return tags;\n}\nvar ltag_default = { make: makeLtagTable, parse: parseLtagTable };\n\n// src/tables/maxp.mjs\nfunction parseMaxpTable(data, start) {\n const maxp = {};\n const p = new parse_default.Parser(data, start);\n maxp.version = p.parseVersion();\n maxp.numGlyphs = p.parseUShort();\n if (maxp.version === 1) {\n maxp.maxPoints = p.parseUShort();\n maxp.maxContours = p.parseUShort();\n maxp.maxCompositePoints = p.parseUShort();\n maxp.maxCompositeContours = p.parseUShort();\n maxp.maxZones = p.parseUShort();\n maxp.maxTwilightPoints = p.parseUShort();\n maxp.maxStorage = p.parseUShort();\n maxp.maxFunctionDefs = p.parseUShort();\n maxp.maxInstructionDefs = p.parseUShort();\n maxp.maxStackElements = p.parseUShort();\n maxp.maxSizeOfInstructions = p.parseUShort();\n maxp.maxComponentElements = p.parseUShort();\n maxp.maxComponentDepth = p.parseUShort();\n }\n return maxp;\n}\nfunction makeMaxpTable(numGlyphs) {\n return new table_default.Table(\"maxp\", [\n { name: \"version\", type: \"FIXED\", value: 20480 },\n { name: \"numGlyphs\", type: \"USHORT\", value: numGlyphs }\n ]);\n}\nvar maxp_default = { parse: parseMaxpTable, make: makeMaxpTable };\n\n// src/tables/os2.mjs\nvar unicodeRanges = [\n { begin: 0, end: 127 },\n // Basic Latin\n { begin: 128, end: 255 },\n // Latin-1 Supplement\n { begin: 256, end: 383 },\n // Latin Extended-A\n { begin: 384, end: 591 },\n // Latin Extended-B\n { begin: 592, end: 687 },\n // IPA Extensions\n { begin: 688, end: 767 },\n // Spacing Modifier Letters\n { begin: 768, end: 879 },\n // Combining Diacritical Marks\n { begin: 880, end: 1023 },\n // Greek and Coptic\n { begin: 11392, end: 11519 },\n // Coptic\n { begin: 1024, end: 1279 },\n // Cyrillic\n { begin: 1328, end: 1423 },\n // Armenian\n { begin: 1424, end: 1535 },\n // Hebrew\n { begin: 42240, end: 42559 },\n // Vai\n { begin: 1536, end: 1791 },\n // Arabic\n { begin: 1984, end: 2047 },\n // NKo\n { begin: 2304, end: 2431 },\n // Devanagari\n { begin: 2432, end: 2559 },\n // Bengali\n { begin: 2560, end: 2687 },\n // Gurmukhi\n { begin: 2688, end: 2815 },\n // Gujarati\n { begin: 2816, end: 2943 },\n // Oriya\n { begin: 2944, end: 3071 },\n // Tamil\n { begin: 3072, end: 3199 },\n // Telugu\n { begin: 3200, end: 3327 },\n // Kannada\n { begin: 3328, end: 3455 },\n // Malayalam\n { begin: 3584, end: 3711 },\n // Thai\n { begin: 3712, end: 3839 },\n // Lao\n { begin: 4256, end: 4351 },\n // Georgian\n { begin: 6912, end: 7039 },\n // Balinese\n { begin: 4352, end: 4607 },\n // Hangul Jamo\n { begin: 7680, end: 7935 },\n // Latin Extended Additional\n { begin: 7936, end: 8191 },\n // Greek Extended\n { begin: 8192, end: 8303 },\n // General Punctuation\n { begin: 8304, end: 8351 },\n // Superscripts And Subscripts\n { begin: 8352, end: 8399 },\n // Currency Symbol\n { begin: 8400, end: 8447 },\n // Combining Diacritical Marks For Symbols\n { begin: 8448, end: 8527 },\n // Letterlike Symbols\n { begin: 8528, end: 8591 },\n // Number Forms\n { begin: 8592, end: 8703 },\n // Arrows\n { begin: 8704, end: 8959 },\n // Mathematical Operators\n { begin: 8960, end: 9215 },\n // Miscellaneous Technical\n { begin: 9216, end: 9279 },\n // Control Pictures\n { begin: 9280, end: 9311 },\n // Optical Character Recognition\n { begin: 9312, end: 9471 },\n // Enclosed Alphanumerics\n { begin: 9472, end: 9599 },\n // Box Drawing\n { begin: 9600, end: 9631 },\n // Block Elements\n { begin: 9632, end: 9727 },\n // Geometric Shapes\n { begin: 9728, end: 9983 },\n // Miscellaneous Symbols\n { begin: 9984, end: 10175 },\n // Dingbats\n { begin: 12288, end: 12351 },\n // CJK Symbols And Punctuation\n { begin: 12352, end: 12447 },\n // Hiragana\n { begin: 12448, end: 12543 },\n // Katakana\n { begin: 12544, end: 12591 },\n // Bopomofo\n { begin: 12592, end: 12687 },\n // Hangul Compatibility Jamo\n { begin: 43072, end: 43135 },\n // Phags-pa\n { begin: 12800, end: 13055 },\n // Enclosed CJK Letters And Months\n { begin: 13056, end: 13311 },\n // CJK Compatibility\n { begin: 44032, end: 55215 },\n // Hangul Syllables\n { begin: 55296, end: 57343 },\n // Non-Plane 0 *\n { begin: 67840, end: 67871 },\n // Phoenicia\n { begin: 19968, end: 40959 },\n // CJK Unified Ideographs\n { begin: 57344, end: 63743 },\n // Private Use Area (plane 0)\n { begin: 12736, end: 12783 },\n // CJK Strokes\n { begin: 64256, end: 64335 },\n // Alphabetic Presentation Forms\n { begin: 64336, end: 65023 },\n // Arabic Presentation Forms-A\n { begin: 65056, end: 65071 },\n // Combining Half Marks\n { begin: 65040, end: 65055 },\n // Vertical Forms\n { begin: 65104, end: 65135 },\n // Small Form Variants\n { begin: 65136, end: 65279 },\n // Arabic Presentation Forms-B\n { begin: 65280, end: 65519 },\n // Halfwidth And Fullwidth Forms\n { begin: 65520, end: 65535 },\n // Specials\n { begin: 3840, end: 4095 },\n // Tibetan\n { begin: 1792, end: 1871 },\n // Syriac\n { begin: 1920, end: 1983 },\n // Thaana\n { begin: 3456, end: 3583 },\n // Sinhala\n { begin: 4096, end: 4255 },\n // Myanmar\n { begin: 4608, end: 4991 },\n // Ethiopic\n { begin: 5024, end: 5119 },\n // Cherokee\n { begin: 5120, end: 5759 },\n // Unified Canadian Aboriginal Syllabics\n { begin: 5760, end: 5791 },\n // Ogham\n { begin: 5792, end: 5887 },\n // Runic\n { begin: 6016, end: 6143 },\n // Khmer\n { begin: 6144, end: 6319 },\n // Mongolian\n { begin: 10240, end: 10495 },\n // Braille Patterns\n { begin: 40960, end: 42127 },\n // Yi Syllables\n { begin: 5888, end: 5919 },\n // Tagalog\n { begin: 66304, end: 66351 },\n // Old Italic\n { begin: 66352, end: 66383 },\n // Gothic\n { begin: 66560, end: 66639 },\n // Deseret\n { begin: 118784, end: 119039 },\n // Byzantine Musical Symbols\n { begin: 119808, end: 120831 },\n // Mathematical Alphanumeric Symbols\n { begin: 1044480, end: 1048573 },\n // Private Use (plane 15)\n { begin: 65024, end: 65039 },\n // Variation Selectors\n { begin: 917504, end: 917631 },\n // Tags\n { begin: 6400, end: 6479 },\n // Limbu\n { begin: 6480, end: 6527 },\n // Tai Le\n { begin: 6528, end: 6623 },\n // New Tai Lue\n { begin: 6656, end: 6687 },\n // Buginese\n { begin: 11264, end: 11359 },\n // Glagolitic\n { begin: 11568, end: 11647 },\n // Tifinagh\n { begin: 19904, end: 19967 },\n // Yijing Hexagram Symbols\n { begin: 43008, end: 43055 },\n // Syloti Nagri\n { begin: 65536, end: 65663 },\n // Linear B Syllabary\n { begin: 65856, end: 65935 },\n // Ancient Greek Numbers\n { begin: 66432, end: 66463 },\n // Ugaritic\n { begin: 66464, end: 66527 },\n // Old Persian\n { begin: 66640, end: 66687 },\n // Shavian\n { begin: 66688, end: 66735 },\n // Osmanya\n { begin: 67584, end: 67647 },\n // Cypriot Syllabary\n { begin: 68096, end: 68191 },\n // Kharoshthi\n { begin: 119552, end: 119647 },\n // Tai Xuan Jing Symbols\n { begin: 73728, end: 74751 },\n // Cuneiform\n { begin: 119648, end: 119679 },\n // Counting Rod Numerals\n { begin: 7040, end: 7103 },\n // Sundanese\n { begin: 7168, end: 7247 },\n // Lepcha\n { begin: 7248, end: 7295 },\n // Ol Chiki\n { begin: 43136, end: 43231 },\n // Saurashtra\n { begin: 43264, end: 43311 },\n // Kayah Li\n { begin: 43312, end: 43359 },\n // Rejang\n { begin: 43520, end: 43615 },\n // Cham\n { begin: 65936, end: 65999 },\n // Ancient Symbols\n { begin: 66e3, end: 66047 },\n // Phaistos Disc\n { begin: 66208, end: 66271 },\n // Carian\n { begin: 127024, end: 127135 }\n // Domino Tiles\n];\nfunction getUnicodeRange(unicode) {\n for (let i = 0; i < unicodeRanges.length; i += 1) {\n const range = unicodeRanges[i];\n if (unicode >= range.begin && unicode < range.end) {\n return i;\n }\n }\n return -1;\n}\nfunction parseOS2Table(data, start) {\n const os2 = {};\n const p = new parse_default.Parser(data, start);\n os2.version = p.parseUShort();\n os2.xAvgCharWidth = p.parseShort();\n os2.usWeightClass = p.parseUShort();\n os2.usWidthClass = p.parseUShort();\n os2.fsType = p.parseUShort();\n os2.ySubscriptXSize = p.parseShort();\n os2.ySubscriptYSize = p.parseShort();\n os2.ySubscriptXOffset = p.parseShort();\n os2.ySubscriptYOffset = p.parseShort();\n os2.ySuperscriptXSize = p.parseShort();\n os2.ySuperscriptYSize = p.parseShort();\n os2.ySuperscriptXOffset = p.parseShort();\n os2.ySuperscriptYOffset = p.parseShort();\n os2.yStrikeoutSize = p.parseShort();\n os2.yStrikeoutPosition = p.parseShort();\n os2.sFamilyClass = p.parseShort();\n os2.panose = [];\n for (let i = 0; i < 10; i++) {\n os2.panose[i] = p.parseByte();\n }\n os2.ulUnicodeRange1 = p.parseULong();\n os2.ulUnicodeRange2 = p.parseULong();\n os2.ulUnicodeRange3 = p.parseULong();\n os2.ulUnicodeRange4 = p.parseULong();\n os2.achVendID = String.fromCharCode(p.parseByte(), p.parseByte(), p.parseByte(), p.parseByte());\n os2.fsSelection = p.parseUShort();\n os2.usFirstCharIndex = p.parseUShort();\n os2.usLastCharIndex = p.parseUShort();\n os2.sTypoAscender = p.parseShort();\n os2.sTypoDescender = p.parseShort();\n os2.sTypoLineGap = p.parseShort();\n os2.usWinAscent = p.parseUShort();\n os2.usWinDescent = p.parseUShort();\n if (os2.version >= 1) {\n os2.ulCodePageRange1 = p.parseULong();\n os2.ulCodePageRange2 = p.parseULong();\n }\n if (os2.version >= 2) {\n os2.sxHeight = p.parseShort();\n os2.sCapHeight = p.parseShort();\n os2.usDefaultChar = p.parseUShort();\n os2.usBreakChar = p.parseUShort();\n os2.usMaxContent = p.parseUShort();\n }\n return os2;\n}\nfunction makeOS2Table(options) {\n return new table_default.Table(\"OS/2\", [\n { name: \"version\", type: \"USHORT\", value: 3 },\n { name: \"xAvgCharWidth\", type: \"SHORT\", value: 0 },\n { name: \"usWeightClass\", type: \"USHORT\", value: 0 },\n { name: \"usWidthClass\", type: \"USHORT\", value: 0 },\n { name: \"fsType\", type: \"USHORT\", value: 0 },\n { name: \"ySubscriptXSize\", type: \"SHORT\", value: 650 },\n { name: \"ySubscriptYSize\", type: \"SHORT\", value: 699 },\n { name: \"ySubscriptXOffset\", type: \"SHORT\", value: 0 },\n { name: \"ySubscriptYOffset\", type: \"SHORT\", value: 140 },\n { name: \"ySuperscriptXSize\", type: \"SHORT\", value: 650 },\n { name: \"ySuperscriptYSize\", type: \"SHORT\", value: 699 },\n { name: \"ySuperscriptXOffset\", type: \"SHORT\", value: 0 },\n { name: \"ySuperscriptYOffset\", type: \"SHORT\", value: 479 },\n { name: \"yStrikeoutSize\", type: \"SHORT\", value: 49 },\n { name: \"yStrikeoutPosition\", type: \"SHORT\", value: 258 },\n { name: \"sFamilyClass\", type: \"SHORT\", value: 0 },\n { name: \"bFamilyType\", type: \"BYTE\", value: 0 },\n { name: \"bSerifStyle\", type: \"BYTE\", value: 0 },\n { name: \"bWeight\", type: \"BYTE\", value: 0 },\n { name: \"bProportion\", type: \"BYTE\", value: 0 },\n { name: \"bContrast\", type: \"BYTE\", value: 0 },\n { name: \"bStrokeVariation\", type: \"BYTE\", value: 0 },\n { name: \"bArmStyle\", type: \"BYTE\", value: 0 },\n { name: \"bLetterform\", type: \"BYTE\", value: 0 },\n { name: \"bMidline\", type: \"BYTE\", value: 0 },\n { name: \"bXHeight\", type: \"BYTE\", value: 0 },\n { name: \"ulUnicodeRange1\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange2\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange3\", type: \"ULONG\", value: 0 },\n { name: \"ulUnicodeRange4\", type: \"ULONG\", value: 0 },\n { name: \"achVendID\", type: \"CHARARRAY\", value: \"XXXX\" },\n { name: \"fsSelection\", type: \"USHORT\", value: 0 },\n { name: \"usFirstCharIndex\", type: \"USHORT\", value: 0 },\n { name: \"usLastCharIndex\", type: \"USHORT\", value: 0 },\n { name: \"sTypoAscender\", type: \"SHORT\", value: 0 },\n { name: \"sTypoDescender\", type: \"SHORT\", value: 0 },\n { name: \"sTypoLineGap\", type: \"SHORT\", value: 0 },\n { name: \"usWinAscent\", type: \"USHORT\", value: 0 },\n { name: \"usWinDescent\", type: \"USHORT\", value: 0 },\n { name: \"ulCodePageRange1\", type: \"ULONG\", value: 0 },\n { name: \"ulCodePageRange2\", type: \"ULONG\", value: 0 },\n { name: \"sxHeight\", type: \"SHORT\", value: 0 },\n { name: \"sCapHeight\", type: \"SHORT\", value: 0 },\n { name: \"usDefaultChar\", type: \"USHORT\", value: 0 },\n { name: \"usBreakChar\", type: \"USHORT\", value: 0 },\n { name: \"usMaxContext\", type: \"USHORT\", value: 0 }\n ], options);\n}\nvar os2_default = { parse: parseOS2Table, make: makeOS2Table, unicodeRanges, getUnicodeRange };\n\n// src/tables/post.mjs\nfunction parsePostTable(data, start) {\n const post = {};\n const p = new parse_default.Parser(data, start);\n post.version = p.parseVersion();\n post.italicAngle = p.parseFixed();\n post.underlinePosition = p.parseShort();\n post.underlineThickness = p.parseShort();\n post.isFixedPitch = p.parseULong();\n post.minMemType42 = p.parseULong();\n post.maxMemType42 = p.parseULong();\n post.minMemType1 = p.parseULong();\n post.maxMemType1 = p.parseULong();\n switch (post.version) {\n case 1:\n post.names = standardNames.slice();\n break;\n case 2:\n post.numberOfGlyphs = p.parseUShort();\n post.glyphNameIndex = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.glyphNameIndex[i] = p.parseUShort();\n }\n post.names = [];\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] >= standardNames.length) {\n const nameLength = p.parseChar();\n post.names.push(p.parseString(nameLength));\n }\n }\n break;\n case 2.5:\n post.numberOfGlyphs = p.parseUShort();\n post.offset = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.offset[i] = p.parseChar();\n }\n break;\n }\n return post;\n}\nfunction makePostTable(font) {\n const {\n italicAngle = Math.round((font.italicAngle || 0) * 65536),\n underlinePosition = 0,\n underlineThickness = 0,\n isFixedPitch = 0,\n minMemType42 = 0,\n maxMemType42 = 0,\n minMemType1 = 0,\n maxMemType1 = 0\n } = font.tables.post || {};\n return new table_default.Table(\"post\", [\n { name: \"version\", type: \"FIXED\", value: 196608 },\n { name: \"italicAngle\", type: \"FIXED\", value: italicAngle },\n { name: \"underlinePosition\", type: \"FWORD\", value: underlinePosition },\n { name: \"underlineThickness\", type: \"FWORD\", value: underlineThickness },\n { name: \"isFixedPitch\", type: \"ULONG\", value: isFixedPitch },\n { name: \"minMemType42\", type: \"ULONG\", value: minMemType42 },\n { name: \"maxMemType42\", type: \"ULONG\", value: maxMemType42 },\n { name: \"minMemType1\", type: \"ULONG\", value: minMemType1 },\n { name: \"maxMemType1\", type: \"ULONG\", value: maxMemType1 }\n ]);\n}\nvar post_default = { parse: parsePostTable, make: makePostTable };\n\n// src/tables/gsub.mjs\nvar subtableParsers = new Array(9);\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n deltaGlyphId: this.parseShort()\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n substitute: this.parseOffset16List()\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 1 format must be 1 or 2.\");\n};\nsubtableParsers[2] = function parseLookup2() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Multiple Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n sequences: this.parseListOfLists()\n };\n};\nsubtableParsers[3] = function parseLookup3() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Alternate Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n alternateSets: this.parseListOfLists()\n };\n};\nsubtableParsers[4] = function parseLookup4() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB ligature table identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ligatureSets: this.parseListOfLists(function() {\n return {\n ligGlyph: this.parseUShort(),\n components: this.parseUShortList(this.parseUShort() - 1)\n };\n })\n };\n};\nvar lookupRecordDesc = {\n sequenceIndex: Parser.uShort,\n lookupListIndex: Parser.uShort\n};\nsubtableParsers[5] = function parseLookup5() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ruleSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n input: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n classDef: this.parsePointer(Parser.classDef),\n classSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n classes: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n substFormat,\n coverages: this.parseList(glyphCount, Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 5 format must be 1, 2 or 3.\");\n};\nsubtableParsers[6] = function parseLookup6() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n chainRuleSets: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n backtrackClassDef: this.parsePointer(Parser.classDef),\n inputClassDef: this.parsePointer(Parser.classDef),\n lookaheadClassDef: this.parsePointer(Parser.classDef),\n chainClassSet: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n return {\n substFormat: 3,\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n inputCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": lookup type 6 format must be 1, 2 or 3.\");\n};\nsubtableParsers[7] = function parseLookup7() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Extension Substitution subtable identifier-format must be 1\");\n const extensionLookupType = this.parseUShort();\n const extensionParser = new Parser(this.data, this.offset + this.parseULong());\n return {\n substFormat: 1,\n lookupType: extensionLookupType,\n extension: subtableParsers[extensionLookupType].call(extensionParser)\n };\n};\nsubtableParsers[8] = function parseLookup8() {\n const substFormat = this.parseUShort();\n check_default.argument(substFormat === 1, \"GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1\");\n return {\n substFormat,\n coverage: this.parsePointer(Parser.coverage),\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n substitutes: this.parseUShortList()\n };\n};\nfunction parseGsubTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(tableVersion === 1 || tableVersion === 1.1, \"Unsupported GSUB table version.\");\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList()\n };\n }\n}\nvar subtableMakers = new Array(9);\nsubtableMakers[1] = function makeLookup1(subtable) {\n if (subtable.substFormat === 1) {\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) },\n { name: \"deltaGlyphID\", type: \"SHORT\", value: subtable.deltaGlyphId }\n ]);\n } else if (subtable.substFormat === 2) {\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 2 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.ushortList(\"substitute\", subtable.substitute)));\n }\n check_default.fail(\"Lookup type 1 substFormat must be 1 or 2.\");\n};\nsubtableMakers[2] = function makeLookup2(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 2 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"seqSet\", subtable.sequences, function(sequenceSet) {\n return new table_default.Table(\"sequenceSetTable\", table_default.ushortList(\"sequence\", sequenceSet));\n })));\n};\nsubtableMakers[3] = function makeLookup3(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 3 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"altSet\", subtable.alternateSets, function(alternateSet) {\n return new table_default.Table(\"alternateSetTable\", table_default.ushortList(\"alternate\", alternateSet));\n })));\n};\nsubtableMakers[4] = function makeLookup4(subtable) {\n check_default.assert(subtable.substFormat === 1, \"Lookup type 4 substFormat must be 1.\");\n return new table_default.Table(\"substitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: 1 },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"ligSet\", subtable.ligatureSets, function(ligatureSet) {\n return new table_default.Table(\"ligatureSetTable\", table_default.tableList(\"ligature\", ligatureSet, function(ligature) {\n return new table_default.Table(\n \"ligatureTable\",\n [{ name: \"ligGlyph\", type: \"USHORT\", value: ligature.ligGlyph }].concat(table_default.ushortList(\"component\", ligature.components, ligature.components.length + 1))\n );\n }));\n })));\n};\nsubtableMakers[5] = function makeLookup5(subtable) {\n if (subtable.substFormat === 1) {\n return new table_default.Table(\"contextualSubstitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"sequenceRuleSet\", subtable.ruleSets, function(sequenceRuleSet) {\n if (!sequenceRuleSet) {\n return new table_default.Table(\"NULL\", null);\n }\n return new table_default.Table(\"sequenceRuleSetTable\", table_default.tableList(\"sequenceRule\", sequenceRuleSet, function(sequenceRule) {\n let tableData = table_default.ushortList(\"seqLookup\", [], sequenceRule.lookupRecords.length).concat(table_default.ushortList(\"inputSequence\", sequenceRule.input, sequenceRule.input.length + 1));\n [tableData[0], tableData[1]] = [tableData[1], tableData[0]];\n for (let i = 0; i < sequenceRule.lookupRecords.length; i++) {\n const record = sequenceRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"sequenceRuleTable\", tableData);\n }));\n })));\n } else if (subtable.substFormat === 2) {\n return new table_default.Table(\"contextualSubstitutionTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) },\n { name: \"classDef\", type: \"TABLE\", value: new table_default.ClassDef(subtable.classDef) }\n ].concat(table_default.tableList(\"classSeqRuleSet\", subtable.classSets, function(classSeqRuleSet) {\n if (!classSeqRuleSet) {\n return new table_default.Table(\"NULL\", null);\n }\n return new table_default.Table(\"classSeqRuleSetTable\", table_default.tableList(\"classSeqRule\", classSeqRuleSet, function(classSeqRule) {\n let tableData = table_default.ushortList(\"classes\", classSeqRule.classes, classSeqRule.classes.length + 1).concat(table_default.ushortList(\"seqLookupCount\", [], classSeqRule.lookupRecords.length));\n for (let i = 0; i < classSeqRule.lookupRecords.length; i++) {\n const record = classSeqRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"classSeqRuleTable\", tableData);\n }));\n })));\n } else if (subtable.substFormat === 3) {\n let tableData = [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat }\n ];\n tableData.push({ name: \"inputGlyphCount\", type: \"USHORT\", value: subtable.coverages.length });\n tableData.push({ name: \"substitutionCount\", type: \"USHORT\", value: subtable.lookupRecords.length });\n for (let i = 0; i < subtable.coverages.length; i++) {\n const coverage = subtable.coverages[i];\n tableData.push({ name: \"inputCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const record = subtable.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n let returnTable = new table_default.Table(\"contextualSubstitutionTable\", tableData);\n return returnTable;\n }\n check_default.assert(false, \"lookup type 5 format must be 1, 2 or 3.\");\n};\nsubtableMakers[6] = function makeLookup6(subtable) {\n if (subtable.substFormat === 1) {\n let returnTable = new table_default.Table(\"chainContextTable\", [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat },\n { name: \"coverage\", type: \"TABLE\", value: new table_default.Coverage(subtable.coverage) }\n ].concat(table_default.tableList(\"chainRuleSet\", subtable.chainRuleSets, function(chainRuleSet) {\n return new table_default.Table(\"chainRuleSetTable\", table_default.tableList(\"chainRule\", chainRuleSet, function(chainRule) {\n let tableData = table_default.ushortList(\"backtrackGlyph\", chainRule.backtrack, chainRule.backtrack.length).concat(table_default.ushortList(\"inputGlyph\", chainRule.input, chainRule.input.length + 1)).concat(table_default.ushortList(\"lookaheadGlyph\", chainRule.lookahead, chainRule.lookahead.length)).concat(table_default.ushortList(\"substitution\", [], chainRule.lookupRecords.length));\n for (let i = 0; i < chainRule.lookupRecords.length; i++) {\n const record = chainRule.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n return new table_default.Table(\"chainRuleTable\", tableData);\n }));\n })));\n return returnTable;\n } else if (subtable.substFormat === 2) {\n check_default.assert(false, \"lookup type 6 format 2 is not yet supported.\");\n } else if (subtable.substFormat === 3) {\n let tableData = [\n { name: \"substFormat\", type: \"USHORT\", value: subtable.substFormat }\n ];\n tableData.push({ name: \"backtrackGlyphCount\", type: \"USHORT\", value: subtable.backtrackCoverage.length });\n for (let i = 0; i < subtable.backtrackCoverage.length; i++) {\n const coverage = subtable.backtrackCoverage[i];\n tableData.push({ name: \"backtrackCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"inputGlyphCount\", type: \"USHORT\", value: subtable.inputCoverage.length });\n for (let i = 0; i < subtable.inputCoverage.length; i++) {\n const coverage = subtable.inputCoverage[i];\n tableData.push({ name: \"inputCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"lookaheadGlyphCount\", type: \"USHORT\", value: subtable.lookaheadCoverage.length });\n for (let i = 0; i < subtable.lookaheadCoverage.length; i++) {\n const coverage = subtable.lookaheadCoverage[i];\n tableData.push({ name: \"lookaheadCoverage\" + i, type: \"TABLE\", value: new table_default.Coverage(coverage) });\n }\n tableData.push({ name: \"substitutionCount\", type: \"USHORT\", value: subtable.lookupRecords.length });\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const record = subtable.lookupRecords[i];\n tableData = tableData.concat({ name: \"sequenceIndex\" + i, type: \"USHORT\", value: record.sequenceIndex }).concat({ name: \"lookupListIndex\" + i, type: \"USHORT\", value: record.lookupListIndex });\n }\n let returnTable = new table_default.Table(\"chainContextTable\", tableData);\n return returnTable;\n }\n check_default.assert(false, \"lookup type 6 format must be 1, 2 or 3.\");\n};\nfunction makeGsubTable(gsub) {\n return new table_default.Table(\"GSUB\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"scripts\", type: \"TABLE\", value: new table_default.ScriptList(gsub.scripts) },\n { name: \"features\", type: \"TABLE\", value: new table_default.FeatureList(gsub.features) },\n { name: \"lookups\", type: \"TABLE\", value: new table_default.LookupList(gsub.lookups, subtableMakers) }\n ]);\n}\nvar gsub_default = { parse: parseGsubTable, make: makeGsubTable };\n\n// src/tables/meta.mjs\nfunction parseMetaTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 1, \"Unsupported META table version.\");\n p.parseULong();\n p.parseULong();\n const numDataMaps = p.parseULong();\n const tags = {};\n for (let i = 0; i < numDataMaps; i++) {\n const tag = p.parseTag();\n const dataOffset = p.parseULong();\n const dataLength = p.parseULong();\n if (tag === \"appl\" || tag === \"bild\")\n continue;\n const text = decode.UTF8(data, start + dataOffset, dataLength);\n tags[tag] = text;\n }\n return tags;\n}\nfunction makeMetaTable(tags) {\n const numTags = Object.keys(tags).length;\n let stringPool = \"\";\n const stringPoolOffset = 16 + numTags * 12;\n const result = new table_default.Table(\"meta\", [\n { name: \"version\", type: \"ULONG\", value: 1 },\n { name: \"flags\", type: \"ULONG\", value: 0 },\n { name: \"offset\", type: \"ULONG\", value: stringPoolOffset },\n { name: \"numTags\", type: \"ULONG\", value: numTags }\n ]);\n for (let tag in tags) {\n const pos = stringPool.length;\n stringPool += tags[tag];\n result.fields.push({ name: \"tag \" + tag, type: \"TAG\", value: tag });\n result.fields.push({ name: \"offset \" + tag, type: \"ULONG\", value: stringPoolOffset + pos });\n result.fields.push({ name: \"length \" + tag, type: \"ULONG\", value: tags[tag].length });\n }\n result.fields.push({ name: \"stringPool\", type: \"CHARARRAY\", value: stringPool });\n return result;\n}\nvar meta_default = { parse: parseMetaTable, make: makeMetaTable };\n\n// src/tables/colr.mjs\nfunction parseColrTable(data, start) {\n const p = new Parser(data, start);\n const version = p.parseUShort();\n if (version !== 0) {\n console.warn(\"Only COLRv0 is currently fully supported. A subset of color glyphs might be available in this font if provided in the v0 format.\");\n }\n const numBaseGlyphRecords = p.parseUShort();\n const baseGlyphRecordsOffset = p.parseOffset32();\n const layerRecordsOffset = p.parseOffset32();\n const numLayerRecords = p.parseUShort();\n p.relativeOffset = baseGlyphRecordsOffset;\n const baseGlyphRecords = p.parseRecordList(numBaseGlyphRecords, {\n glyphID: Parser.uShort,\n firstLayerIndex: Parser.uShort,\n numLayers: Parser.uShort\n });\n p.relativeOffset = layerRecordsOffset;\n const layerRecords = p.parseRecordList(numLayerRecords, {\n glyphID: Parser.uShort,\n paletteIndex: Parser.uShort\n });\n return {\n version,\n baseGlyphRecords,\n layerRecords\n };\n}\nfunction makeColrTable({ version = 0, baseGlyphRecords = [], layerRecords = [] }) {\n check_default.argument(version === 0, \"Only COLRv0 supported.\");\n const baseGlyphRecordsOffset = 14;\n const layerRecordsOffset = baseGlyphRecordsOffset + baseGlyphRecords.length * 6;\n return new table_default.Table(\"COLR\", [\n { name: \"version\", type: \"USHORT\", value: version },\n { name: \"numBaseGlyphRecords\", type: \"USHORT\", value: baseGlyphRecords.length },\n { name: \"baseGlyphRecordsOffset\", type: \"ULONG\", value: baseGlyphRecordsOffset },\n { name: \"layerRecordsOffset\", type: \"ULONG\", value: layerRecordsOffset },\n { name: \"numLayerRecords\", type: \"USHORT\", value: layerRecords.length },\n ...baseGlyphRecords.map((glyph, i) => [\n { name: \"glyphID_\" + i, type: \"USHORT\", value: glyph.glyphID },\n { name: \"firstLayerIndex_\" + i, type: \"USHORT\", value: glyph.firstLayerIndex },\n { name: \"numLayers_\" + i, type: \"USHORT\", value: glyph.numLayers }\n ]).flat(),\n ...layerRecords.map((layer, i) => [\n { name: \"LayerGlyphID_\" + i, type: \"USHORT\", value: layer.glyphID },\n { name: \"paletteIndex_\" + i, type: \"USHORT\", value: layer.paletteIndex }\n ]).flat()\n ]);\n}\nvar colr_default = { parse: parseColrTable, make: makeColrTable };\n\n// src/tables/fvar.mjs\nfunction makeFvarAxis(n, axis) {\n return [\n { name: \"tag_\" + n, type: \"TAG\", value: axis.tag },\n { name: \"minValue_\" + n, type: \"FIXED\", value: axis.minValue << 16 },\n { name: \"defaultValue_\" + n, type: \"FIXED\", value: axis.defaultValue << 16 },\n { name: \"maxValue_\" + n, type: \"FIXED\", value: axis.maxValue << 16 },\n { name: \"flags_\" + n, type: \"USHORT\", value: 0 },\n { name: \"nameID_\" + n, type: \"USHORT\", value: axis.axisNameID }\n ];\n}\nfunction parseFvarAxis(data, start, names) {\n const axis = {};\n const p = new parse_default.Parser(data, start);\n axis.tag = p.parseTag();\n axis.minValue = p.parseFixed();\n axis.defaultValue = p.parseFixed();\n axis.maxValue = p.parseFixed();\n p.skip(\"uShort\", 1);\n const axisNameID = p.parseUShort();\n axis.axisNameID = axisNameID;\n axis.name = getNameByID(names, axisNameID);\n return axis;\n}\nfunction makeFvarInstance(n, inst, axes, optionalFields = {}) {\n const fields = [\n { name: \"nameID_\" + n, type: \"USHORT\", value: inst.subfamilyNameID },\n { name: \"flags_\" + n, type: \"USHORT\", value: 0 }\n ];\n for (let i = 0; i < axes.length; ++i) {\n const axisTag = axes[i].tag;\n fields.push({\n name: \"axis_\" + n + \" \" + axisTag,\n type: \"FIXED\",\n value: inst.coordinates[axisTag] << 16\n });\n }\n if (optionalFields && optionalFields.postScriptNameID) {\n fields.push({\n name: \"postScriptNameID_\",\n type: \"USHORT\",\n value: inst.postScriptNameID !== void 0 ? inst.postScriptNameID : 65535\n });\n }\n return fields;\n}\nfunction parseFvarInstance(data, start, axes, names, instanceSize) {\n const inst = {};\n const p = new parse_default.Parser(data, start);\n const subfamilyNameID = p.parseUShort();\n inst.subfamilyNameID = subfamilyNameID;\n inst.name = getNameByID(names, subfamilyNameID, [2, 17]);\n p.skip(\"uShort\", 1);\n inst.coordinates = {};\n for (let i = 0; i < axes.length; ++i) {\n inst.coordinates[axes[i].tag] = p.parseFixed();\n }\n if (p.relativeOffset === instanceSize) {\n inst.postScriptNameID = void 0;\n inst.postScriptName = void 0;\n return inst;\n }\n const postScriptNameID = p.parseUShort();\n inst.postScriptNameID = postScriptNameID == 65535 ? void 0 : postScriptNameID;\n inst.postScriptName = inst.postScriptNameID !== void 0 ? getNameByID(names, postScriptNameID, [6]) : \"\";\n return inst;\n}\nfunction makeFvarTable(fvar, names) {\n const result = new table_default.Table(\"fvar\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"offsetToData\", type: \"USHORT\", value: 0 },\n { name: \"countSizePairs\", type: \"USHORT\", value: 2 },\n { name: \"axisCount\", type: \"USHORT\", value: fvar.axes.length },\n { name: \"axisSize\", type: \"USHORT\", value: 20 },\n { name: \"instanceCount\", type: \"USHORT\", value: fvar.instances.length },\n { name: \"instanceSize\", type: \"USHORT\", value: 4 + fvar.axes.length * 4 }\n ]);\n result.offsetToData = result.sizeOf();\n for (let i = 0; i < fvar.axes.length; i++) {\n result.fields = result.fields.concat(makeFvarAxis(i, fvar.axes[i], names));\n }\n const optionalFields = {};\n for (let j = 0; j < fvar.instances.length; j++) {\n if (fvar.instances[j].postScriptNameID !== void 0) {\n result.instanceSize += 2;\n optionalFields.postScriptNameID = true;\n break;\n }\n }\n for (let j = 0; j < fvar.instances.length; j++) {\n result.fields = result.fields.concat(makeFvarInstance(\n j,\n fvar.instances[j],\n fvar.axes,\n optionalFields\n ));\n }\n return result;\n}\nfunction parseFvarTable(data, start, names) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseULong();\n check_default.argument(tableVersion === 65536, \"Unsupported fvar table version.\");\n const offsetToData = p.parseOffset16();\n p.skip(\"uShort\", 1);\n const axisCount = p.parseUShort();\n const axisSize = p.parseUShort();\n const instanceCount = p.parseUShort();\n const instanceSize = p.parseUShort();\n const axes = [];\n for (let i = 0; i < axisCount; i++) {\n axes.push(parseFvarAxis(data, start + offsetToData + i * axisSize, names));\n }\n const instances = [];\n const instanceStart = start + offsetToData + axisCount * axisSize;\n for (let j = 0; j < instanceCount; j++) {\n instances.push(parseFvarInstance(data, instanceStart + j * instanceSize, axes, names, instanceSize));\n }\n return { axes, instances };\n}\nvar fvar_default = { make: makeFvarTable, parse: parseFvarTable };\n\n// src/tables/stat.mjs\nvar axisRecordStruct = {\n tag: Parser.tag,\n nameID: Parser.uShort,\n ordering: Parser.uShort\n};\nvar axisValueParsers = new Array(5);\naxisValueParsers[1] = function axisValueParser1() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n value: this.parseFixed()\n };\n};\naxisValueParsers[2] = function axisValueParser2() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n nominalValue: this.parseFixed(),\n rangeMinValue: this.parseFixed(),\n rangeMaxValue: this.parseFixed()\n };\n};\naxisValueParsers[3] = function axisValueParser3() {\n return {\n axisIndex: this.parseUShort(),\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n value: this.parseFixed(),\n linkedValue: this.parseFixed()\n };\n};\naxisValueParsers[4] = function axisValueParser4() {\n const axisCount = this.parseUShort();\n return {\n flags: this.parseUShort(),\n valueNameID: this.parseUShort(),\n axisValues: this.parseList(axisCount, function() {\n return {\n axisIndex: this.parseUShort(),\n value: this.parseFixed()\n };\n })\n };\n};\nfunction parseSTATAxisValue() {\n const valueTableFormat = this.parseUShort();\n const axisValueParser = axisValueParsers[valueTableFormat];\n const formatStub = {\n format: valueTableFormat\n };\n if (axisValueParser === void 0) {\n console.warn(`Unknown axis value table format ${valueTableFormat}`);\n return formatStub;\n }\n return Object.assign(formatStub, this.parseStruct(axisValueParser.bind(this)));\n}\nfunction parseSTATTable(data, start, fvar) {\n if (!start) {\n start = 0;\n }\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported STAT table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const version = [\n tableVersionMajor,\n tableVersionMinor\n ];\n const designAxisSize = p.parseUShort();\n const designAxisCount = p.parseUShort();\n const designAxesOffset = p.parseOffset32();\n const axisValueCount = p.parseUShort();\n const offsetToAxisValueOffsets = p.parseOffset32();\n const elidedFallbackNameID = tableVersionMajor > 1 || tableVersionMinor > 0 ? p.parseUShort() : void 0;\n if (fvar !== void 0) {\n check_default.argument(designAxisCount >= fvar.axes.length, \"STAT axis count must be greater than or equal to fvar axis count\");\n }\n if (axisValueCount > 0) {\n check_default.argument(designAxisCount >= 0, \"STAT axis count must be greater than 0 if STAT axis value count is greater than 0\");\n }\n const axes = [];\n for (let i = 0; i < designAxisCount; i++) {\n p.offset = start + designAxesOffset;\n p.relativeOffset = i * designAxisSize;\n axes.push(p.parseStruct(axisRecordStruct));\n }\n p.offset = start;\n p.relativeOffset = offsetToAxisValueOffsets;\n const valueOffsets = p.parseUShortList(axisValueCount);\n const values = [];\n for (let i = 0; i < axisValueCount; i++) {\n p.offset = start + offsetToAxisValueOffsets;\n p.relativeOffset = valueOffsets[i];\n values.push(parseSTATAxisValue.apply(p));\n }\n return {\n version,\n axes,\n values,\n elidedFallbackNameID\n };\n}\nvar axisValueMakers = new Array(5);\naxisValueMakers[1] = function axisValueMaker1(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 1 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `value${n}`, type: \"FLOAT\", value: table.value }\n ];\n};\naxisValueMakers[2] = function axisValueMaker2(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 2 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `nominalValue${n}`, type: \"FLOAT\", value: table.nominalValue },\n { name: `rangeMinValue${n}`, type: \"FLOAT\", value: table.rangeMinValue },\n { name: `rangeMaxValue${n}`, type: \"FLOAT\", value: table.rangeMaxValue }\n ];\n};\naxisValueMakers[3] = function axisValueMaker3(n, table) {\n return [\n { name: `format${n}`, type: \"USHORT\", value: 3 },\n { name: `axisIndex${n}`, type: \"USHORT\", value: table.axisIndex },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID },\n { name: `value${n}`, type: \"FLOAT\", value: table.value },\n { name: `linkedValue${n}`, type: \"FLOAT\", value: table.linkedValue }\n ];\n};\naxisValueMakers[4] = function axisValueMaker4(n, table) {\n let returnFields = [\n { name: `format${n}`, type: \"USHORT\", value: 4 },\n { name: `axisCount${n}`, type: \"USHORT\", value: table.axisValues.length },\n { name: `flags${n}`, type: \"USHORT\", value: table.flags },\n { name: `valueNameID${n}`, type: \"USHORT\", value: table.valueNameID }\n ];\n for (let i = 0; i < table.axisValues.length; i++) {\n returnFields = returnFields.concat([\n { name: `format${n}axisIndex${i}`, type: \"USHORT\", value: table.axisValues[i].axisIndex },\n { name: `format${n}value${i}`, type: \"FLOAT\", value: table.axisValues[i].value }\n ]);\n }\n return returnFields;\n};\nfunction makeSTATAxisRecord(n, axis) {\n return new table_default.Record(\"axisRecord_\" + n, [\n { name: \"axisTag_\" + n, type: \"TAG\", value: axis.tag },\n { name: \"axisNameID_\" + n, type: \"USHORT\", value: axis.nameID },\n { name: \"axisOrdering_\" + n, type: \"USHORT\", value: axis.ordering }\n ]);\n}\nfunction makeSTATValueTable(n, tableData) {\n const valueTableFormat = tableData.format;\n const axisValueMaker = axisValueMakers[valueTableFormat];\n check_default.argument(axisValueMaker !== void 0, `Unknown axis value table format ${valueTableFormat}`);\n const fields = axisValueMaker(n, tableData);\n return new table_default.Table(\"axisValueTable_\" + n, fields);\n}\nfunction makeSTATTable(STAT) {\n const result = new table_default.Table(\"STAT\", [\n { name: \"majorVersion\", type: \"USHORT\", value: 1 },\n { name: \"minorVersion\", type: \"USHORT\", value: 2 },\n { name: \"designAxisSize\", type: \"USHORT\", value: 8 },\n { name: \"designAxisCount\", type: \"USHORT\", value: STAT.axes.length },\n { name: \"designAxesOffset\", type: \"ULONG\", value: 0 },\n { name: \"axisValueCount\", type: \"USHORT\", value: STAT.values.length },\n { name: \"offsetToAxisValueOffsets\", type: \"ULONG\", value: 0 },\n { name: \"elidedFallbackNameID\", type: \"USHORT\", value: STAT.elidedFallbackNameID }\n ]);\n result.designAxesOffset = result.offsetToAxisValueOffsets = result.sizeOf();\n for (let i = 0; i < STAT.axes.length; i++) {\n const axisRecord = makeSTATAxisRecord(i, STAT.axes[i]);\n result.offsetToAxisValueOffsets += axisRecord.sizeOf();\n result.fields = result.fields.concat(axisRecord.fields);\n }\n const axisValueOffsets = [];\n let axisValueTables = [];\n let axisValueTableOffset = STAT.values.length * 2;\n for (let j = 0; j < STAT.values.length; j++) {\n const axisValueTable = makeSTATValueTable(j, STAT.values[j]);\n axisValueOffsets.push({\n name: \"offset_\" + j,\n type: \"USHORT\",\n value: axisValueTableOffset\n });\n axisValueTableOffset += axisValueTable.sizeOf();\n axisValueTables = axisValueTables.concat(axisValueTable.fields);\n }\n result.fields = result.fields.concat(axisValueOffsets);\n result.fields = result.fields.concat(axisValueTables);\n return result;\n}\nvar stat_default = { make: makeSTATTable, parse: parseSTATTable };\n\n// src/tables/avar.mjs\nfunction makeAvarAxisValueMap(n, axisValueMap) {\n return new table_default.Record(\"axisValueMap_\" + n, [\n { name: \"fromCoordinate_\" + n, type: \"F2DOT14\", value: axisValueMap.fromCoordinate },\n { name: \"toCoordinate_\" + n, type: \"F2DOT14\", value: axisValueMap.toCoordinate }\n ]);\n}\nfunction makeAvarSegmentMap(n, axis) {\n const returnTable = new table_default.Record(\"segmentMap_\" + n, [\n { name: \"positionMapCount_\" + n, type: \"USHORT\", value: axis.axisValueMaps.length }\n ]);\n let axisValueMaps = [];\n for (let i = 0; i < axis.axisValueMaps.length; i++) {\n const valueMap = makeAvarAxisValueMap(`${n}_${i}`, axis.axisValueMaps[i]);\n axisValueMaps = axisValueMaps.concat(valueMap.fields);\n }\n returnTable.fields = returnTable.fields.concat(axisValueMaps);\n return returnTable;\n}\nfunction makeAvarTable(avar, fvar) {\n check_default.argument(avar.axisSegmentMaps.length === fvar.axes.length, \"avar axis count must correspond to fvar axis count\");\n const result = new table_default.Table(\"avar\", [\n { name: \"majorVersion\", type: \"USHORT\", value: 1 },\n { name: \"minorVersion\", type: \"USHORT\", value: 0 },\n { name: \"reserved\", type: \"USHORT\", value: 0 },\n { name: \"axisCount\", type: \"USHORT\", value: avar.axisSegmentMaps.length }\n ]);\n for (let i = 0; i < avar.axisSegmentMaps.length; i++) {\n const axisRecord = makeAvarSegmentMap(i, avar.axisSegmentMaps[i]);\n result.fields = result.fields.concat(axisRecord.fields);\n }\n return result;\n}\nfunction parseAvarTable(data, start, fvar) {\n if (!start) {\n start = 0;\n }\n const p = new Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported avar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n p.skip(\"uShort\", 1);\n const axisCount = p.parseUShort();\n check_default.argument(axisCount === fvar.axes.length, \"avar axis count must correspond to fvar axis count\");\n const axisSegmentMaps = [];\n for (let i = 0; i < axisCount; i++) {\n const axisValueMaps = [];\n const positionMapCount = p.parseUShort();\n for (let j = 0; j < positionMapCount; j++) {\n const fromCoordinate = p.parseF2Dot14();\n const toCoordinate = p.parseF2Dot14();\n axisValueMaps.push({\n fromCoordinate,\n toCoordinate\n });\n }\n axisSegmentMaps.push({\n axisValueMaps\n });\n }\n return {\n version: [tableVersionMajor, tableVersionMinor],\n axisSegmentMaps\n };\n}\nvar avar_default = { make: makeAvarTable, parse: parseAvarTable };\n\n// src/tables/cvar.mjs\nfunction parseCvarTable(data, start, fvar, cvt) {\n const p = new parse_default.Parser(data, start);\n const cvtVariations = p.parseTupleVariationStore(\n p.relativeOffset,\n fvar.axes.length,\n \"cvar\",\n cvt\n );\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported cvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n return {\n version: [tableVersionMajor, tableVersionMinor],\n ...cvtVariations\n };\n}\nfunction makeCvarTable() {\n console.warn(\"Writing of cvar tables is not yet supported.\");\n}\nvar cvar_default = { make: makeCvarTable, parse: parseCvarTable };\n\n// src/tables/gvar.mjs\nfunction parseGvarTable(data, start, fvar, glyphs) {\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported gvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const axisCount = p.parseUShort();\n if (axisCount !== fvar.axes.length) {\n console.warn(`axisCount ${axisCount} in gvar table does not match the number of axes ${fvar.axes.length} in the fvar table!`);\n }\n const sharedTupleCount = p.parseUShort();\n const sharedTuples = p.parsePointer32(function() {\n return this.parseTupleRecords(sharedTupleCount, axisCount);\n });\n const glyphVariations = p.parseTupleVariationStoreList(axisCount, \"gvar\", glyphs);\n return {\n version: [tableVersionMajor, tableVersionMinor],\n sharedTuples,\n glyphVariations\n };\n}\nfunction makeGvarTable() {\n console.warn(\"Writing of gvar tables is not yet supported.\");\n}\nvar gvar_default = { make: makeGvarTable, parse: parseGvarTable };\n\n// src/tables/gasp.mjs\nfunction parseGaspTable(data, start) {\n const gasp = {};\n const p = new parse_default.Parser(data, start);\n gasp.version = p.parseUShort();\n check_default.argument(gasp.version <= 1, \"Unsupported gasp table version.\");\n gasp.numRanges = p.parseUShort();\n gasp.gaspRanges = [];\n for (let i = 0; i < gasp.numRanges; i++) {\n gasp.gaspRanges[i] = {\n rangeMaxPPEM: p.parseUShort(),\n rangeGaspBehavior: p.parseUShort()\n };\n }\n return gasp;\n}\nfunction makeGaspTable(gasp) {\n const result = new table_default.Table(\"gasp\", [\n { name: \"version\", type: \"USHORT\", value: 1 },\n { name: \"numRanges\", type: \"USHORT\", value: gasp.numRanges }\n ]);\n for (let i in gasp.gaspRanges) {\n result.fields.push({ name: \"rangeMaxPPEM\", type: \"USHORT\", value: gasp.gaspRanges[i].rangeMaxPPEM });\n result.fields.push({ name: \"rangeGaspBehavior\", type: \"USHORT\", value: gasp.gaspRanges[i].rangeGaspBehavior });\n }\n return result;\n}\nvar gasp_default = { parse: parseGaspTable, make: makeGaspTable };\n\n// src/tables/svg.mjs\nfunction parseSvgTable(data, offset) {\n const svgTable = /* @__PURE__ */ new Map();\n const buf = data.buffer;\n const p = new Parser(data, offset);\n const version = p.parseUShort();\n if (version !== 0) return svgTable;\n p.relativeOffset = p.parseOffset32();\n const svgDocumentListOffset = data.byteOffset + offset + p.relativeOffset;\n const numEntries = p.parseUShort();\n const svgDocMap = /* @__PURE__ */ new Map();\n for (let i = 0; i < numEntries; i++) {\n const startGlyphID = p.parseUShort();\n const endGlyphID = p.parseUShort();\n const svgDocOffset = svgDocumentListOffset + p.parseOffset32();\n const svgDocLength = p.parseULong();\n let svgDoc = svgDocMap.get(svgDocOffset);\n if (svgDoc === void 0) {\n svgDoc = new Uint8Array(buf, svgDocOffset, svgDocLength);\n svgDocMap.set(svgDocOffset, svgDoc);\n }\n for (let i2 = startGlyphID; i2 <= endGlyphID; i2++) {\n svgTable.set(i2, svgDoc);\n }\n }\n return svgTable;\n}\nfunction makeSvgTable(svgTable) {\n const glyphIds = Array.from(svgTable.keys()).sort();\n const documentRecords = [];\n const documentBuffers = [];\n const documentOffsets = /* @__PURE__ */ new Map();\n let nextSvgDocOffset = 0;\n let record = { endGlyphID: null };\n for (let i = 0, l = glyphIds.length; i < l; i++) {\n const glyphId = glyphIds[i];\n const svgDoc = svgTable.get(glyphId);\n let svgDocOffset = documentOffsets.get(svgDoc);\n if (svgDocOffset === void 0) {\n svgDocOffset = nextSvgDocOffset;\n documentBuffers.push(svgDoc);\n documentOffsets.set(svgDoc, svgDocOffset);\n nextSvgDocOffset += svgDoc.byteLength;\n }\n if (glyphId - 1 === record.endGlyphID && svgDocOffset === record.svgDocOffset) {\n record.endGlyphID = glyphId;\n } else {\n record = {\n startGlyphID: glyphId,\n endGlyphID: glyphId,\n svgDocOffset,\n svgDocLength: svgDoc.byteLength\n };\n documentRecords.push(record);\n }\n }\n const numEntries = documentRecords.length;\n const numDocuments = documentBuffers.length;\n const documentsOffset = 2 + numEntries * (2 + 2 + 4 + 4);\n const fields = new Array(3 + 1 + numEntries * 4 + numDocuments);\n let fieldIndex = 0;\n fields[fieldIndex++] = { name: \"version\", type: \"USHORT\", value: 0 };\n fields[fieldIndex++] = { name: \"svgDocumentListOffset\", type: \"ULONG\", value: 2 + 4 + 4 };\n fields[fieldIndex++] = { name: \"reserved\", type: \"ULONG\", value: 0 };\n fields[fieldIndex++] = { name: \"numEntries\", type: \"USHORT\", value: numEntries };\n for (let i = 0; i < numEntries; i++) {\n const namePrefix = \"documentRecord_\" + i;\n const { startGlyphID, endGlyphID, svgDocOffset, svgDocLength } = documentRecords[i];\n fields[fieldIndex++] = { name: namePrefix + \"_startGlyphID\", type: \"USHORT\", value: startGlyphID };\n fields[fieldIndex++] = { name: namePrefix + \"_endGlyphID\", type: \"USHORT\", value: endGlyphID };\n fields[fieldIndex++] = { name: namePrefix + \"_svgDocOffset\", type: \"ULONG\", value: documentsOffset + svgDocOffset };\n fields[fieldIndex++] = { name: namePrefix + \"_svgDocLength\", type: \"ULONG\", value: svgDocLength };\n }\n for (let i = 0; i < numDocuments; i++) {\n fields[fieldIndex++] = { name: \"svgDoc_\" + i, type: \"LITERAL\", value: documentBuffers[i] };\n }\n return new table_default.Table(\"SVG \", fields);\n}\nvar svg_default = {\n make: makeSvgTable,\n parse: parseSvgTable\n};\n\n// src/tables/sfnt.mjs\nfunction log2(v) {\n return Math.log(v) / Math.log(2) | 0;\n}\nfunction computeCheckSum(bytes) {\n while (bytes.length % 4 !== 0) {\n bytes.push(0);\n }\n let sum = 0;\n for (let i = 0; i < bytes.length; i += 4) {\n sum += (bytes[i] << 24) + (bytes[i + 1] << 16) + (bytes[i + 2] << 8) + bytes[i + 3];\n }\n sum %= Math.pow(2, 32);\n return sum;\n}\nfunction makeTableRecord(tag, checkSum, offset, length) {\n return new table_default.Record(\"Table Record\", [\n { name: \"tag\", type: \"TAG\", value: tag !== void 0 ? tag : \"\" },\n { name: \"checkSum\", type: \"ULONG\", value: checkSum !== void 0 ? checkSum : 0 },\n { name: \"offset\", type: \"ULONG\", value: offset !== void 0 ? offset : 0 },\n { name: \"length\", type: \"ULONG\", value: length !== void 0 ? length : 0 }\n ]);\n}\nfunction makeSfntTable(tables) {\n const sfnt = new table_default.Table(\"sfnt\", [\n { name: \"version\", type: \"TAG\", value: \"OTTO\" },\n { name: \"numTables\", type: \"USHORT\", value: 0 },\n { name: \"searchRange\", type: \"USHORT\", value: 0 },\n { name: \"entrySelector\", type: \"USHORT\", value: 0 },\n { name: \"rangeShift\", type: \"USHORT\", value: 0 }\n ]);\n sfnt.tables = tables;\n sfnt.numTables = tables.length;\n const highestPowerOf2 = Math.pow(2, log2(sfnt.numTables));\n sfnt.searchRange = 16 * highestPowerOf2;\n sfnt.entrySelector = log2(highestPowerOf2);\n sfnt.rangeShift = sfnt.numTables * 16 - sfnt.searchRange;\n const recordFields = [];\n const tableFields = [];\n let offset = sfnt.sizeOf() + makeTableRecord().sizeOf() * sfnt.numTables;\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({ name: \"padding\", type: \"BYTE\", value: 0 });\n }\n for (let i = 0; i < tables.length; i += 1) {\n const t = tables[i];\n check_default.argument(t.tableName.length === 4, \"Table name\" + t.tableName + \" is invalid.\");\n const tableLength = t.sizeOf();\n const tableRecord = makeTableRecord(t.tableName, computeCheckSum(t.encode()), offset, tableLength);\n recordFields.push({ name: tableRecord.tag + \" Table Record\", type: \"RECORD\", value: tableRecord });\n tableFields.push({ name: t.tableName + \" table\", type: \"RECORD\", value: t });\n offset += tableLength;\n check_default.argument(!isNaN(offset), \"Something went wrong calculating the offset.\");\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({ name: \"padding\", type: \"BYTE\", value: 0 });\n }\n }\n recordFields.sort(function(r1, r2) {\n if (r1.value.tag > r2.value.tag) {\n return 1;\n } else {\n return -1;\n }\n });\n sfnt.fields = sfnt.fields.concat(recordFields);\n sfnt.fields = sfnt.fields.concat(tableFields);\n return sfnt;\n}\nfunction metricsForChar(font, chars, notFoundMetrics) {\n for (let i = 0; i < chars.length; i += 1) {\n const glyphIndex = font.charToGlyphIndex(chars[i]);\n if (glyphIndex > 0) {\n const glyph = font.glyphs.get(glyphIndex);\n return glyph.getMetrics();\n }\n }\n return notFoundMetrics;\n}\nfunction average(vs) {\n let sum = 0;\n for (let i = 0; i < vs.length; i += 1) {\n sum += vs[i];\n }\n return sum / vs.length;\n}\nfunction fontToSfntTable(font) {\n const xMins = [];\n const yMins = [];\n const xMaxs = [];\n const yMaxs = [];\n const advanceWidths = [];\n const leftSideBearings = [];\n const rightSideBearings = [];\n let firstCharIndex;\n let lastCharIndex = 0;\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n for (let i = 0; i < font.glyphs.length; i += 1) {\n const glyph = font.glyphs.get(i);\n const unicode = glyph.unicode | 0;\n if (isNaN(glyph.advanceWidth)) {\n throw new Error(\"Glyph \" + glyph.name + \" (\" + i + \"): advanceWidth is not a number.\");\n }\n if (firstCharIndex > unicode || firstCharIndex === void 0) {\n if (unicode > 0) {\n firstCharIndex = unicode;\n }\n }\n if (lastCharIndex < unicode) {\n lastCharIndex = unicode;\n }\n const position = os2_default.getUnicodeRange(unicode);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new Error(\"Unicode ranges bits > 123 are reserved for internal usage\");\n }\n if (glyph.name === \".notdef\") continue;\n const metrics = glyph.getMetrics();\n xMins.push(metrics.xMin);\n yMins.push(metrics.yMin);\n xMaxs.push(metrics.xMax);\n yMaxs.push(metrics.yMax);\n leftSideBearings.push(metrics.leftSideBearing);\n rightSideBearings.push(metrics.rightSideBearing);\n advanceWidths.push(glyph.advanceWidth);\n }\n const globals = {\n xMin: Math.min.apply(null, xMins),\n yMin: Math.min.apply(null, yMins),\n xMax: Math.max.apply(null, xMaxs),\n yMax: Math.max.apply(null, yMaxs),\n advanceWidthMax: Math.max.apply(null, advanceWidths),\n advanceWidthAvg: average(advanceWidths),\n minLeftSideBearing: Math.min.apply(null, leftSideBearings),\n maxLeftSideBearing: Math.max.apply(null, leftSideBearings),\n minRightSideBearing: Math.min.apply(null, rightSideBearings)\n };\n globals.ascender = font.ascender;\n globals.descender = font.descender;\n let macStyle = 0;\n if (font.weightClass >= 600) {\n macStyle |= font.macStyleValues.BOLD;\n }\n if (font.italicAngle < 0) {\n macStyle |= font.macStyleValues.ITALIC;\n }\n const headTable = head_default.make({\n flags: 3,\n // 00000011 (baseline for font at y=0; left sidebearing point at x=0)\n unitsPerEm: font.unitsPerEm,\n xMin: globals.xMin,\n yMin: globals.yMin,\n xMax: globals.xMax,\n yMax: globals.yMax,\n lowestRecPPEM: 3,\n macStyle,\n createdTimestamp: font.createdTimestamp\n });\n const hheaTable = hhea_default.make({\n ascender: globals.ascender,\n descender: globals.descender,\n advanceWidthMax: globals.advanceWidthMax,\n minLeftSideBearing: globals.minLeftSideBearing,\n minRightSideBearing: globals.minRightSideBearing,\n xMaxExtent: globals.maxLeftSideBearing + (globals.xMax - globals.xMin),\n numberOfHMetrics: font.glyphs.length\n });\n const maxpTable = maxp_default.make(font.glyphs.length);\n const os2Table = os2_default.make(Object.assign({\n xAvgCharWidth: Math.round(globals.advanceWidthAvg),\n usFirstCharIndex: firstCharIndex,\n usLastCharIndex: lastCharIndex,\n ulUnicodeRange1,\n ulUnicodeRange2,\n ulUnicodeRange3,\n ulUnicodeRange4,\n // See http://typophile.com/node/13081 for more info on vertical metrics.\n // We get metrics for typical characters (such as \"x\" for xHeight).\n // We provide some fallback characters if characters are unavailable: their\n // ordering was chosen experimentally.\n sTypoAscender: globals.ascender,\n sTypoDescender: globals.descender,\n sTypoLineGap: 0,\n usWinAscent: globals.yMax,\n usWinDescent: Math.abs(globals.yMin),\n ulCodePageRange1: 1,\n // FIXME: hard-code Latin 1 support for now\n sxHeight: metricsForChar(font, \"xyvw\", { yMax: Math.round(globals.ascender / 2) }).yMax,\n sCapHeight: metricsForChar(font, \"HIKLEFJMNTZBDPRAGOQSUVWXY\", globals).yMax,\n usDefaultChar: font.hasChar(\" \") ? 32 : 0,\n // Use space as the default character, if available.\n usBreakChar: font.hasChar(\" \") ? 32 : 0\n // Use space as the break character, if available.\n }, font.tables.os2));\n const hmtxTable = hmtx_default.make(font.glyphs);\n const cmapTable = cmap_default.make(font.glyphs);\n const englishFamilyName = font.getEnglishName(\"fontFamily\");\n const englishStyleName = font.getEnglishName(\"fontSubfamily\");\n const englishFullName = englishFamilyName + \" \" + englishStyleName;\n let postScriptName = font.getEnglishName(\"postScriptName\");\n if (!postScriptName) {\n postScriptName = englishFamilyName.replace(/\\s/g, \"\") + \"-\" + englishStyleName;\n }\n const names = {};\n for (let n in font.names) {\n names[n] = font.names[n];\n }\n names.unicode = names.unicode || {};\n names.macintosh = names.macintosh || {};\n names.windows = names.windows || {};\n const fontNamesUnicode = font.names.unicode || {};\n const fontNamesMacintosh = font.names.macintosh || {};\n const fontNamesWindows = font.names.windows || {};\n for (const platform in names) {\n names[platform] = names[platform] || {};\n if (!names[platform].uniqueID) {\n const manufacturer = font.getEnglishName(\"manufacturer\") || \"\";\n names[platform].uniqueID = { en: `${manufacturer}: ${englishFullName}` };\n }\n if (!names[platform].postScriptName) {\n names[platform].postScriptName = { en: postScriptName };\n }\n }\n if (!names.unicode.preferredFamily) {\n names.unicode.preferredFamily = fontNamesUnicode.fontFamily || fontNamesMacintosh.fontFamily || fontNamesWindows.fontFamily;\n }\n if (!names.macintosh.preferredFamily) {\n names.macintosh.preferredFamily = fontNamesMacintosh.fontFamily || fontNamesUnicode.fontFamily || fontNamesWindows.fontFamily;\n }\n if (!names.windows.preferredFamily) {\n names.windows.preferredFamily = fontNamesWindows.fontFamily || fontNamesUnicode.fontFamily || fontNamesMacintosh.fontFamily;\n }\n if (!names.unicode.preferredSubfamily) {\n names.unicode.preferredSubfamily = fontNamesUnicode.fontSubfamily || fontNamesMacintosh.fontSubfamily || fontNamesWindows.fontSubfamily;\n }\n if (!names.macintosh.preferredSubfamily) {\n names.macintosh.preferredSubfamily = fontNamesMacintosh.fontSubfamily || fontNamesUnicode.fontSubfamily || fontNamesWindows.fontSubfamily;\n }\n if (!names.windows.preferredSubfamily) {\n names.windows.preferredSubfamily = fontNamesWindows.fontSubfamily || fontNamesUnicode.fontSubfamily || fontNamesMacintosh.fontSubfamily;\n }\n const languageTags = [];\n const nameTable = name_default.make(names, languageTags);\n const ltagTable = languageTags.length > 0 ? ltag_default.make(languageTags) : void 0;\n const postTable = post_default.make(font);\n const cffTable = cff_default.make(font.glyphs, {\n version: font.getEnglishName(\"version\"),\n fullName: englishFullName,\n familyName: englishFamilyName,\n weightName: englishStyleName,\n postScriptName,\n unitsPerEm: font.unitsPerEm,\n fontBBox: [0, globals.yMin, globals.ascender, globals.advanceWidthMax],\n topDict: font.tables.cff && font.tables.cff.topDict || {}\n });\n const metaTable = font.metas && Object.keys(font.metas).length > 0 ? meta_default.make(font.metas) : void 0;\n const tables = [headTable, hheaTable, maxpTable, os2Table, nameTable, cmapTable, postTable, cffTable, hmtxTable];\n if (ltagTable) {\n tables.push(ltagTable);\n }\n const optionalTables = {\n gsub: gsub_default,\n cpal: cpal_default,\n colr: colr_default,\n stat: stat_default,\n avar: avar_default,\n cvar: cvar_default,\n fvar: fvar_default,\n gvar: gvar_default,\n gasp: gasp_default,\n svg: svg_default\n };\n const optionalTableArgs = {\n avar: [font.tables.fvar],\n fvar: [font.names]\n };\n for (let tableName in optionalTables) {\n const table = font.tables[tableName];\n if (table) {\n const tableData = optionalTables[tableName].make.call(font, table, ...optionalTableArgs[tableName] || []);\n if (tableData) {\n tables.push(tableData);\n }\n }\n }\n if (metaTable) {\n tables.push(metaTable);\n }\n const sfntTable = makeSfntTable(tables);\n const bytes = sfntTable.encode();\n const checkSum = computeCheckSum(bytes);\n const tableFields = sfntTable.fields;\n let checkSumAdjusted = false;\n for (let i = 0; i < tableFields.length; i += 1) {\n if (tableFields[i].name === \"head table\") {\n tableFields[i].value.checkSumAdjustment = 2981146554 - checkSum;\n checkSumAdjusted = true;\n break;\n }\n }\n if (!checkSumAdjusted) {\n throw new Error(\"Could not find head table with checkSum to adjust.\");\n }\n return sfntTable;\n}\nvar sfnt_default = { make: makeSfntTable, fontToTable: fontToSfntTable, computeCheckSum };\n\n// src/layout.mjs\nfunction searchTag(arr, tag) {\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n const val = arr[imid].tag;\n if (val === tag) {\n return imid;\n } else if (val < tag) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n return -imin - 1;\n}\nfunction binSearch(arr, value) {\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n const val = arr[imid];\n if (val === value) {\n return imid;\n } else if (val < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n return -imin - 1;\n}\nfunction searchRange(ranges, value) {\n let range;\n let imin = 0;\n let imax = ranges.length - 1;\n while (imin <= imax) {\n const imid = imin + imax >>> 1;\n range = ranges[imid];\n const start = range.start;\n if (start === value) {\n return range;\n } else if (start < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n if (imin > 0) {\n range = ranges[imin - 1];\n if (value > range.end) return 0;\n return range;\n }\n}\nfunction Layout(font, tableName) {\n this.font = font;\n this.tableName = tableName;\n}\nLayout.prototype = {\n /**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */\n searchTag,\n /**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */\n binSearch,\n /**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */\n getTable: function(create) {\n let layout = this.font.tables[this.tableName];\n if (!layout && create) {\n layout = this.font.tables[this.tableName] = this.createDefaultTable();\n }\n return layout;\n },\n /**\n * Returns all scripts in the substitution table.\n * @instance\n * @return {Array}\n */\n getScriptNames: function() {\n let layout = this.getTable();\n if (!layout) {\n return [];\n }\n return layout.scripts.map(function(script) {\n return script.tag;\n });\n },\n /**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */\n getDefaultScriptName: function() {\n let layout = this.getTable();\n if (!layout) {\n return;\n }\n let hasLatn = false;\n for (let i = 0; i < layout.scripts.length; i++) {\n const name = layout.scripts[i].tag;\n if (name === \"DFLT\") return name;\n if (name === \"latn\") hasLatn = true;\n }\n if (hasLatn) return \"latn\";\n },\n /**\n * Returns all LangSysRecords in the given script.\n * @instance\n * @param {string} [script='DFLT']\n * @param {boolean} create - forces the creation of this script table if it doesn't exist.\n * @return {Object} An object with tag and script properties.\n */\n getScriptTable: function(script, create) {\n const layout = this.getTable(create);\n if (layout) {\n script = script || \"DFLT\";\n const scripts = layout.scripts;\n const pos = searchTag(layout.scripts, script);\n if (pos >= 0) {\n return scripts[pos].script;\n } else if (create) {\n const scr = {\n tag: script,\n script: {\n defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] },\n langSysRecords: []\n }\n };\n scripts.splice(-1 - pos, 0, scr);\n return scr.script;\n }\n }\n },\n /**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */\n getLangSysTable: function(script, language, create) {\n const scriptTable = this.getScriptTable(script, create);\n if (scriptTable) {\n if (!language || language === \"dflt\" || language === \"DFLT\") {\n return scriptTable.defaultLangSys;\n }\n const pos = searchTag(scriptTable.langSysRecords, language);\n if (pos >= 0) {\n return scriptTable.langSysRecords[pos].langSys;\n } else if (create) {\n const langSysRecord = {\n tag: language,\n langSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }\n };\n scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord);\n return langSysRecord.langSys;\n }\n }\n },\n /**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */\n getFeatureTable: function(script, language, feature, create) {\n const langSysTable2 = this.getLangSysTable(script, language, create);\n if (langSysTable2) {\n let featureRecord;\n const featIndexes = langSysTable2.featureIndexes;\n const allFeatures = this.font.tables[this.tableName].features;\n for (let i = 0; i < featIndexes.length; i++) {\n featureRecord = allFeatures[featIndexes[i]];\n if (featureRecord.tag === feature) {\n return featureRecord.feature;\n }\n }\n if (create) {\n const index = allFeatures.length;\n check_default.assert(index === 0 || feature >= allFeatures[index - 1].tag, \"Features must be added in alphabetical order.\");\n featureRecord = {\n tag: feature,\n feature: { params: 0, lookupListIndexes: [] }\n };\n allFeatures.push(featureRecord);\n featIndexes.push(index);\n return featureRecord.feature;\n }\n }\n },\n /**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */\n getLookupTables: function(script, language, feature, lookupType, create) {\n const featureTable = this.getFeatureTable(script, language, feature, create);\n const tables = [];\n if (featureTable) {\n let lookupTable;\n const lookupListIndexes = featureTable.lookupListIndexes;\n const allLookups = this.font.tables[this.tableName].lookups;\n for (let i = 0; i < lookupListIndexes.length; i++) {\n lookupTable = allLookups[lookupListIndexes[i]];\n if (lookupTable.lookupType === lookupType) {\n tables.push(lookupTable);\n }\n }\n if (tables.length === 0 && create) {\n lookupTable = {\n lookupType,\n lookupFlag: 0,\n subtables: [],\n markFilteringSet: void 0\n };\n const index = allLookups.length;\n allLookups.push(lookupTable);\n lookupListIndexes.push(index);\n return [lookupTable];\n }\n }\n return tables;\n },\n /**\n * Find a glyph in a class definition table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table\n * @param {object} classDefTable - an OpenType Layout class definition table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getGlyphClass: function(classDefTable, glyphIndex) {\n switch (classDefTable.format) {\n case 1: {\n if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) {\n return classDefTable.classes[glyphIndex - classDefTable.startGlyph];\n }\n return 0;\n }\n case 2: {\n const range = searchRange(classDefTable.ranges, glyphIndex);\n return range ? range.classId : 0;\n }\n }\n },\n /**\n * Find a glyph in a coverage table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table\n * @param {object} coverageTable - an OpenType Layout coverage table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getCoverageIndex: function(coverageTable, glyphIndex) {\n switch (coverageTable.format) {\n case 1: {\n const index = binSearch(coverageTable.glyphs, glyphIndex);\n return index >= 0 ? index : -1;\n }\n case 2: {\n const range = searchRange(coverageTable.ranges, glyphIndex);\n return range ? range.index + glyphIndex - range.start : -1;\n }\n }\n },\n /**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */\n expandCoverage: function(coverageTable) {\n if (coverageTable.format === 1) {\n return coverageTable.glyphs;\n } else {\n const glyphs = [];\n const ranges = coverageTable.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n const start = range.start;\n const end = range.end;\n for (let j = start; j <= end; j++) {\n glyphs.push(j);\n }\n }\n return glyphs;\n }\n }\n};\nvar layout_default = Layout;\n\n// src/position.mjs\nfunction Position(font) {\n layout_default.call(this, font, \"gpos\");\n}\nPosition.prototype = layout_default.prototype;\nPosition.prototype.init = function() {\n const script = this.getDefaultScriptName();\n this.defaultKerningTables = this.getKerningTables(script);\n};\nPosition.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {\n for (let i = 0; i < kerningLookups.length; i++) {\n const subtables = kerningLookups[i].subtables;\n for (let j = 0; j < subtables.length; j++) {\n const subtable = subtables[j];\n const covIndex = this.getCoverageIndex(subtable.coverage, leftIndex);\n if (covIndex < 0) continue;\n switch (subtable.posFormat) {\n case 1: {\n let pairSet = subtable.pairSets[covIndex];\n for (let k = 0; k < pairSet.length; k++) {\n let pair = pairSet[k];\n if (pair.secondGlyph === rightIndex) {\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n break;\n }\n case 2: {\n const class1 = this.getGlyphClass(subtable.classDef1, leftIndex);\n const class2 = this.getGlyphClass(subtable.classDef2, rightIndex);\n const pair = subtable.classRecords[class1][class2];\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n }\n }\n return 0;\n};\nPosition.prototype.getKerningTables = function(script, language) {\n if (this.font.tables.gpos) {\n return this.getLookupTables(script, language, \"kern\", 2);\n }\n};\nvar position_default = Position;\n\n// src/util.mjs\nfunction arraysEqual(ar1, ar2) {\n const n = ar1.length;\n if (n !== ar2.length) {\n return false;\n }\n for (let i = 0; i < n; i++) {\n if (ar1[i] !== ar2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction binarySearch(array, key, value) {\n let low = 0, high = array.length - 1;\n let result = null;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const record = array[mid];\n const recordValue = record[key];\n if (recordValue < value) {\n low = mid + 1;\n } else if (recordValue > value) {\n high = mid - 1;\n } else {\n result = record;\n break;\n }\n }\n return result;\n}\nfunction binarySearchIndex(array, key, value) {\n let low = 0, high = array.length - 1;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const element = array[mid];\n if (element[key] < value) {\n low = mid + 1;\n } else if (element[key] > value) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -1;\n}\nfunction binarySearchInsert(array, key, value) {\n let low = 0, high = array.length;\n const compare = (a, b) => a[key] - b[key];\n while (low < high) {\n const mid = low + high >>> 1;\n if (compare(array[mid], value) < 0) low = mid + 1;\n else high = mid;\n }\n array.splice(low, 0, value);\n return low;\n}\nfunction isGzip(buf) {\n return buf[0] === 31 && buf[1] === 139 && buf[2] === 8;\n}\nfunction unGzip(gzip) {\n const data = new DataView(gzip.buffer, gzip.byteOffset, gzip.byteLength);\n let start = 10;\n const end = gzip.byteLength - 8;\n const flg = data.getInt8(3);\n if (flg & 4) {\n start += 2 + data.getUint16(start, true);\n }\n if (flg & 8) {\n while (start < end) if (gzip[start++] === 0) break;\n }\n if (flg & 16) {\n while (start < end) if (gzip[start++] === 0) break;\n }\n if (flg & 2) {\n start += 2;\n }\n if (start >= end) throw new Error(\"Can't find compressed blocks\");\n const isize = data.getUint32(data.byteLength - 4, true);\n return tinf_uncompress(gzip.subarray(start, end), new Uint8Array(isize));\n}\nfunction copyPoint(p) {\n return {\n x: p.x,\n y: p.y,\n onCurve: p.onCurve,\n lastPointOfContour: p.lastPointOfContour\n };\n}\nfunction copyComponent(c) {\n return {\n glyphIndex: c.glyphIndex,\n xScale: c.xScale,\n scale01: c.scale01,\n scale10: c.scale10,\n yScale: c.yScale,\n dx: c.dx,\n dy: c.dy\n };\n}\n\n// src/substitution.mjs\nfunction Substitution(font) {\n layout_default.call(this, font, \"gsub\");\n}\nfunction getSubstFormat(lookupTable, format, defaultSubtable) {\n const subtables = lookupTable.subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n if (subtable.substFormat === format) {\n return subtable;\n }\n }\n if (defaultSubtable) {\n subtables.push(defaultSubtable);\n return defaultSubtable;\n }\n return void 0;\n}\nSubstitution.prototype = layout_default.prototype;\nSubstitution.prototype.createDefaultTable = function() {\n return {\n version: 1,\n scripts: [{\n tag: \"DFLT\",\n script: {\n defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] },\n langSysRecords: []\n }\n }],\n features: [],\n lookups: []\n };\n};\nSubstitution.prototype.getSingle = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 1);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n if (subtable.substFormat === 1) {\n const delta = subtable.deltaGlyphId;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n substitutions.push({ sub: glyph, by: glyph + delta });\n }\n } else {\n const substitute = subtable.substitute;\n for (j = 0; j < glyphs.length; j++) {\n substitutions.push({ sub: glyphs[j], by: substitute[j] });\n }\n }\n }\n }\n return substitutions;\n};\nSubstitution.prototype.getMultiple = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 2);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n const replacements = subtable.sequences[j];\n substitutions.push({ sub: glyph, by: replacements });\n }\n }\n }\n return substitutions;\n};\nSubstitution.prototype.getAlternates = function(feature, script, language) {\n const alternates = [];\n const lookupTables = this.getLookupTables(script, language, feature, 3);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const alternateSets = subtable.alternateSets;\n for (let j = 0; j < glyphs.length; j++) {\n alternates.push({ sub: glyphs[j], by: alternateSets[j] });\n }\n }\n }\n return alternates;\n};\nSubstitution.prototype.getLigatures = function(feature, script, language) {\n const ligatures = [];\n const lookupTables = this.getLookupTables(script, language, feature, 4);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const ligatureSets = subtable.ligatureSets;\n for (let j = 0; j < glyphs.length; j++) {\n const startGlyph = glyphs[j];\n const ligSet = ligatureSets[j];\n for (let k = 0; k < ligSet.length; k++) {\n const lig = ligSet[k];\n ligatures.push({\n sub: [startGlyph].concat(lig.components),\n by: lig.ligGlyph\n });\n }\n }\n }\n }\n return ligatures;\n};\nSubstitution.prototype.addSingle = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 1, true)[0];\n const subtable = getSubstFormat(lookupTable, 2, {\n // lookup type 1 subtable, format 2, coverage format 1\n substFormat: 2,\n coverage: { format: 1, glyphs: [] },\n substitute: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Single: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.substitute.splice(pos, 0, 0);\n }\n subtable.substitute[pos] = substitution.by;\n};\nSubstitution.prototype.addMultiple = function(feature, substitution, script, language) {\n check_default.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: \"by\" must be an array of two or more ids');\n const lookupTable = this.getLookupTables(script, language, feature, 2, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 2 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n sequences: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Multiple: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.sequences.splice(pos, 0, 0);\n }\n subtable.sequences[pos] = substitution.by;\n};\nSubstitution.prototype.addAlternate = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 3, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 3 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n alternateSets: []\n });\n check_default.assert(subtable.coverage.format === 1, \"Alternate: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.alternateSets.splice(pos, 0, 0);\n }\n subtable.alternateSets[pos] = substitution.by;\n};\nSubstitution.prototype.addLigature = function(feature, ligature, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 4, true)[0];\n let subtable = lookupTable.subtables[0];\n if (!subtable) {\n subtable = {\n // lookup type 4 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n ligatureSets: []\n };\n lookupTable.subtables[0] = subtable;\n }\n check_default.assert(subtable.coverage.format === 1, \"Ligature: unable to modify coverage table format \" + subtable.coverage.format);\n const coverageGlyph = ligature.sub[0];\n const ligComponents = ligature.sub.slice(1);\n const ligatureTable = {\n ligGlyph: ligature.by,\n components: ligComponents\n };\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos >= 0) {\n const ligatureSet = subtable.ligatureSets[pos];\n for (let i = 0; i < ligatureSet.length; i++) {\n if (arraysEqual(ligatureSet[i].components, ligComponents)) {\n return;\n }\n }\n ligatureSet.push(ligatureTable);\n } else {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.ligatureSets.splice(pos, 0, [ligatureTable]);\n }\n};\nSubstitution.prototype.getFeature = function(feature, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n return this.getSingle(feature, script, language);\n }\n switch (feature) {\n case \"aalt\":\n case \"salt\":\n return this.getSingle(feature, script, language).concat(this.getAlternates(feature, script, language));\n case \"dlig\":\n case \"liga\":\n case \"rlig\":\n return this.getLigatures(feature, script, language);\n case \"ccmp\":\n return this.getMultiple(feature, script, language).concat(this.getLigatures(feature, script, language));\n case \"stch\":\n return this.getMultiple(feature, script, language);\n }\n return void 0;\n};\nSubstitution.prototype.add = function(feature, sub, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n return this.addSingle(feature, sub, script, language);\n }\n switch (feature) {\n case \"aalt\":\n case \"salt\":\n if (typeof sub.by === \"number\") {\n return this.addSingle(feature, sub, script, language);\n }\n return this.addAlternate(feature, sub, script, language);\n case \"dlig\":\n case \"liga\":\n case \"rlig\":\n return this.addLigature(feature, sub, script, language);\n case \"ccmp\":\n if (sub.by instanceof Array) {\n return this.addMultiple(feature, sub, script, language);\n }\n return this.addLigature(feature, sub, script, language);\n }\n return void 0;\n};\nvar substitution_default = Substitution;\n\n// src/palettes.mjs\nvar PaletteManager = class {\n // private properties don't work with reify\n // @TODO: refactor once we migrated to ES6 modules, see https://github.com/opentypejs/opentype.js/pull/579\n // #font = null;\n /**\n * @type {integer} CPAL color used to (pre)fill unset colors in a palette.\n * Format 0xBBGGRRAA\n */\n // defaultValue = 0x000000FF;\n /**\n * \n * @param {opentype.Font} font \n */\n constructor(font) {\n this.defaultValue = 255;\n this.font = font;\n }\n /**\n * Returns the font's cpal table object if present\n * @returns {Object}\n */\n cpal() {\n if (this.font.tables && this.font.tables.cpal) {\n return this.font.tables.cpal;\n }\n return false;\n }\n /**\n * Returns an array of arrays of color values for each palette, optionally in a specified color format\n * @param {string} colorFormat \n * @returns {Array<Array>}\n */\n getAll(colorFormat) {\n const palettes = [];\n const cpal = this.cpal();\n if (!cpal) return palettes;\n for (let i = 0; i < cpal.colorRecordIndices.length; i++) {\n const startIndex = cpal.colorRecordIndices[i];\n const paletteColors = [];\n for (let j = startIndex; j < startIndex + cpal.numPaletteEntries; j++) {\n paletteColors.push(formatColor(cpal.colorRecords[j], colorFormat || \"hexa\"));\n }\n palettes.push(paletteColors);\n }\n return palettes;\n }\n /**\n * Converts a color value string or array of color value strings to CPAL integer color value(s)\n * @param {string|Array<string></string>} color \n * @returns {integer}\n */\n toCPALcolor(color) {\n if (Array.isArray(color)) {\n return color.map((color2) => parseColor(color2, \"raw\"));\n }\n return parseColor(color, \"raw\");\n }\n /**\n * Fills a set of palette colors (from palette index, or a provided array of CPAL color values) with a set of colors, falling back to the default color value, until a given count\n * @param {Array<string>|integer} palette Palette index integer or Array of colors to be filled\n * @param {Array<string|integer>} colors Colors to fill the palette with\n * @param {integer} _colorCount Number of colors to fill the palette with, defaults to the value of the numPaletteEntries field. Used internally by extend() and shouldn't be set manually\n * @returns \n */\n fillPalette(palette, colors = [], _colorCount = this.cpal().numPaletteEntries) {\n palette = Number.isInteger(palette) ? this.get(palette, \"raw\") : palette;\n return Object.assign(Array(_colorCount).fill(this.defaultValue), this.toCPALcolor(palette).concat(this.toCPALcolor(colors)));\n }\n /**\n * Extend existing palettes and numPaletteEntries by a number of color slots\n * @param {integer} num number of additional color slots to add to all palettes\n */\n extend(num) {\n if (this.ensureCPAL(Array(num).fill(this.defaultValue))) {\n return;\n }\n const cpal = this.cpal();\n const newCount = cpal.numPaletteEntries + num;\n const palettes = this.getAll().map((palette) => this.fillPalette(palette, [], newCount));\n cpal.numPaletteEntries = newCount;\n cpal.colorRecords = this.toCPALcolor(palettes.flat());\n this.updateIndices();\n }\n /**\n * Get a specific palette by its zero-based index\n * @param {integer} paletteIndex \n * @param {string} [colorFormat='hexa']\n * @returns {Array}\n */\n get(paletteIndex, colorFormat = \"hexa\") {\n return this.getAll(colorFormat)[paletteIndex] || null;\n }\n /**\n * Get a color from a specific palette by its zero-based index\n * @param {integer} index \n * @param {integer} paletteIndex\n * @param {string} [colorFormat ='hexa']\n * @returns \n */\n getColor(index, paletteIndex = 0, colorFormat = \"hexa\") {\n return getPaletteColor(this.font, index, paletteIndex, colorFormat);\n }\n /**\n * Set one or more colors on a specific palette by its zero-based index\n * @param {integer} index zero-based color index to start filling from\n * @param {string|integer|Array<string|integer>} color color value or array of color values\n * @param {integer} paletteIndex\n * @returns \n */\n setColor(index, colors, paletteIndex = 0) {\n index = parseInt(index);\n paletteIndex = parseInt(paletteIndex);\n let palettes = this.getAll(\"raw\");\n let palette = palettes[paletteIndex];\n if (!palette) {\n throw Error(`paletteIndex ${paletteIndex} out of range`);\n }\n const cpal = this.cpal();\n const colorCount = cpal.numPaletteEntries;\n if (!Array.isArray(colors)) {\n colors = [colors];\n }\n if (colors.length + index > colorCount) {\n this.extend(colors.length + index - colorCount);\n palettes = this.getAll(\"raw\");\n palette = palettes[paletteIndex];\n }\n for (let i = 0; i < colors.length; i++) {\n palette[i + index] = this.toCPALcolor(colors[i]);\n }\n cpal.colorRecords = palettes.flat();\n this.updateIndices();\n }\n /**\n * Add a new palette. \n * @param {Array} colors (optional) colors to add to the palette, differences to existing palettes will be filled with the defaultValue.\n * @returns \n */\n add(colors) {\n if (this.ensureCPAL(colors)) {\n return;\n }\n const cpal = this.cpal();\n const colorCount = cpal.numPaletteEntries;\n if (colors && colors.length) {\n colors = this.toCPALcolor(colors);\n if (colors.length > colorCount) {\n this.extend(colors.length - colorCount);\n } else if (colors.length < colorCount) {\n colors = this.fillPalette(colors);\n }\n cpal.colorRecordIndices.push(cpal.colorRecords.length);\n cpal.colorRecords.push(...colors);\n } else {\n cpal.colorRecordIndices.push(cpal.colorRecords.length);\n cpal.colorRecords.push(...Array(colorCount).fill(this.defaultValue));\n }\n }\n /**\n * deletes a palette by its zero-based index\n * @param {integer} paletteIndex \n */\n delete(paletteIndex) {\n const palettes = this.getAll(\"raw\");\n delete palettes[paletteIndex];\n const cpal = this.cpal();\n cpal.colorRecordIndices.pop();\n cpal.colorRecords = palettes.flat();\n }\n /**\n * Deletes a specific color index in all palettes and updates all layers using that color with the replacement index\n * @param {integer} colorIndex index of the color that should be deleted\n * @param {integer} replacementIndex index (according to the palette before deletion) of the color to replace in layers using the color to be to deleted\n */\n deleteColor(colorIndex, replacementIndex) {\n if (colorIndex === replacementIndex) {\n throw Error(\"replacementIndex cannot be the same as colorIndex\");\n }\n const cpal = this.cpal();\n const palettes = this.getAll(\"raw\");\n const updatedPalettes = [];\n if (replacementIndex > cpal.numPaletteEntries - 1) {\n throw Error(`Replacement index out of range: numPaletteEntries after deletion: ${cpal.numPaletteEntries - 1}, replacementIndex: ${replacementIndex})`);\n }\n for (let i = 0; i < palettes.length; i++) {\n const palette = palettes[i];\n const updatedPalette = palette.filter((color, index) => index !== colorIndex);\n updatedPalettes.push(updatedPalette);\n }\n const colrTable = this.font.tables.colr;\n if (colrTable) {\n const layerRecords = colrTable.layerRecords;\n for (let i = 0; i < layerRecords.length; i++) {\n const currentIndex = layerRecords[i].paletteIndex;\n if (currentIndex > colorIndex) {\n const shiftAmount = 1;\n layerRecords[i].paletteIndex -= shiftAmount;\n } else if (currentIndex === colorIndex) {\n let replacementShift = 0;\n for (let j = 0; j < palettes.length; j++) {\n if (replacementIndex > colorIndex && replacementIndex <= colorIndex + palettes[j].length) {\n replacementShift++;\n break;\n }\n }\n layerRecords[i].paletteIndex = replacementIndex - replacementShift;\n }\n }\n this.font.tables.colr = {\n ...colrTable,\n layerRecords\n };\n }\n const flattenedPalettes = updatedPalettes.flat();\n for (let i = 0; i < palettes.length; i++) {\n cpal.colorRecordIndices[i] -= i;\n }\n cpal.numPaletteEntries = Math.max(0, cpal.numPaletteEntries - 1);\n cpal.colorRecords = this.toCPALcolor(flattenedPalettes);\n }\n /**\n * Makes sure that the CPAL table exists and is populated with default values.\n * @param {Array} colors (optional) colors to populate on creation\n * @returns {Boolean} true if it was created, false if it already existed.\n */\n ensureCPAL(colors) {\n if (!this.cpal()) {\n if (!colors || !colors.length) {\n colors = [this.defaultValue];\n } else {\n colors = this.toCPALcolor(colors);\n }\n this.font.tables.cpal = {\n version: 0,\n numPaletteEntries: colors.length,\n colorRecords: colors,\n colorRecordIndices: [0]\n };\n return true;\n }\n return false;\n }\n /**\n * Mainly used internally. Recalculates the colorRecordIndices array based on the numPaletteEntries and number of palettes\n */\n updateIndices() {\n const cpal = this.cpal();\n const paletteCount = Math.ceil(cpal.colorRecords.length / cpal.numPaletteEntries);\n cpal.colorRecordIndices = [];\n for (let i = 0; i < paletteCount; i++) {\n cpal.colorRecordIndices.push(i * cpal.numPaletteEntries);\n }\n }\n};\n\n// src/layers.mjs\nvar LayerManager = class {\n // private properties don't work with reify\n // @TODO: refactor once we migrated to ES6 modules, see https://github.com/opentypejs/opentype.js/pull/579\n // #font = null;\n constructor(font) {\n this.font = font;\n }\n /**\n * Mainly used internally. Ensures that the COLR table exists and is populated with default values\n * @returns the LayerManager's font instance for chaining\n */\n ensureCOLR() {\n if (!this.font.tables.colr) {\n this.font.tables.colr = {\n version: 0,\n baseGlyphRecords: [],\n layerRecords: []\n };\n }\n return this.font;\n }\n /**\n * Gets the layers for a specific glyph\n * @param {integer} glyphIndex\n * @returns {Array<Object>} array of layer objects {glyph, paletteIndex}\n */\n get(glyphIndex) {\n const font = this.font;\n const layers = [];\n const colr = font.tables.colr;\n const cpal = font.tables.cpal;\n if (!colr || !cpal) {\n return layers;\n }\n const baseGlyph = binarySearch(colr.baseGlyphRecords, \"glyphID\", glyphIndex);\n if (!baseGlyph) {\n return layers;\n }\n const firstIndex = baseGlyph.firstLayerIndex;\n const numLayers = baseGlyph.numLayers;\n for (let l = 0; l < numLayers; l++) {\n const layer = colr.layerRecords[firstIndex + l];\n layers.push({\n glyph: font.glyphs.get(layer.glyphID),\n paletteIndex: layer.paletteIndex\n });\n }\n return layers;\n }\n /**\n * Adds one or more layers to a glyph, at the end or at a specific position.\n * @param {integer} glyphIndex glyph index to add the layer(s) to.\n * @param {Array|Object} layers layer object {glyph, paletteIndex}/{glyphID, paletteIndex} or array of layer objects.\n * @param {integer?} position position to insert the layers at (will default to adding at the end).\n */\n add(glyphIndex, layers, position) {\n const currentLayers = this.get(glyphIndex);\n layers = Array.isArray(layers) ? layers : [layers];\n if (position === void 0 || position === Infinity || position > currentLayers.length) {\n position = currentLayers.length;\n } else if (position < 0) {\n position = currentLayers.length + 1 + position % (currentLayers.length + 1);\n if (position >= currentLayers.length + 1) {\n position -= currentLayers.length + 1;\n }\n }\n const newLayers = [];\n for (let i = 0; i < position; i++) {\n const glyphID = Number.isInteger(currentLayers[i].glyph) ? currentLayers[i].glyph : currentLayers[i].glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: currentLayers[i].paletteIndex\n });\n }\n for (const layer of layers) {\n const glyphID = Number.isInteger(layer.glyph) ? layer.glyph : layer.glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: layer.paletteIndex\n });\n }\n for (let i = position; i < currentLayers.length; i++) {\n const glyphID = Number.isInteger(currentLayers[i].glyph) ? currentLayers[i].glyph : currentLayers[i].glyph.index;\n newLayers.push({\n glyphID,\n paletteIndex: currentLayers[i].paletteIndex\n });\n }\n this.updateColrTable(glyphIndex, newLayers);\n }\n /**\n * Sets a color glyph layer's paletteIndex property to a new index\n * @param {integer} glyphIndex glyph in the font by zero-based glyph index\n * @param {integer} layerIndex layer in the glyph by zero-based layer index\n * @param {integer} paletteIndex new color to set for the layer by zero-based index in any palette\n */\n setPaletteIndex(glyphIndex, layerIndex, paletteIndex) {\n let layers = this.get(glyphIndex);\n if (layers[layerIndex]) {\n layers = layers.map((layer, index) => ({\n glyphID: layer.glyph.index,\n paletteIndex: index === layerIndex ? paletteIndex : layer.paletteIndex\n }));\n this.updateColrTable(glyphIndex, layers);\n } else {\n console.error(\"Invalid layer index\");\n }\n }\n /**\n * Removes one or more layers from a glyph.\n * @param {integer} glyphIndex glyph index to remove the layer(s) from\n * @param {integer} start index to remove the layer at\n * @param {integer?} end (optional) if provided, removes all layers from start index to (and including) end index\n */\n remove(glyphIndex, start, end = start) {\n let currentLayers = this.get(glyphIndex);\n currentLayers = currentLayers.map((layer) => ({\n glyphID: layer.glyph.index,\n paletteIndex: layer.paletteIndex\n }));\n currentLayers.splice(start, end - start + 1);\n this.updateColrTable(glyphIndex, currentLayers);\n }\n /**\n * Mainly used internally. Mainly used internally. Updates the colr table, adding a baseGlyphRecord if needed,\n * ensuring that it's inserted at the correct position, updating numLayers, and adjusting firstLayerIndex values\n * for all baseGlyphRecords according to any deletions or insertions.\n * @param {integer} glyphIndex \n * @param {Array<Object>} layers array of layer objects {glyphID, paletteIndex}\n */\n updateColrTable(glyphIndex, layers) {\n this.ensureCOLR();\n const font = this.font;\n const colr = font.tables.colr;\n let index = binarySearchIndex(colr.baseGlyphRecords, \"glyphID\", glyphIndex);\n const addBaseGlyph = index === -1;\n if (addBaseGlyph) {\n const newBaseGlyphRecord = { glyphID: glyphIndex, firstLayerIndex: colr.layerRecords.length, numLayers: 0 };\n index = binarySearchInsert(colr.baseGlyphRecords, \"glyphID\", newBaseGlyphRecord);\n }\n const baseGlyphRecord = colr.baseGlyphRecords[index];\n const originalNumLayers = baseGlyphRecord.numLayers;\n const newNumLayers = layers.length;\n const layerDiff = newNumLayers - originalNumLayers;\n if (layerDiff > 0) {\n const newLayers = layers.slice(originalNumLayers).map((layer) => ({\n glyphID: layer.glyphID,\n paletteIndex: layer.paletteIndex\n }));\n colr.layerRecords.splice(baseGlyphRecord.firstLayerIndex + originalNumLayers, 0, ...newLayers);\n } else if (layerDiff < 0) {\n colr.layerRecords.splice(baseGlyphRecord.firstLayerIndex + newNumLayers, -layerDiff);\n }\n for (let i = 0; i < Math.min(originalNumLayers, newNumLayers); i++) {\n colr.layerRecords[baseGlyphRecord.firstLayerIndex + i] = {\n glyphID: layers[i].glyphID,\n paletteIndex: layers[i].paletteIndex\n };\n }\n baseGlyphRecord.numLayers = newNumLayers;\n if (layerDiff !== 0) {\n for (let i = 0; i < colr.baseGlyphRecords.length; i++) {\n const sibling = colr.baseGlyphRecords[i];\n if (i === index || sibling.firstLayerIndex < baseGlyphRecord.firstLayerIndex) continue;\n colr.baseGlyphRecords[i].firstLayerIndex += layerDiff;\n }\n }\n }\n};\n\n// src/svgimages.mjs\nvar SVGImageManager = class {\n /**\n * @param {opentype.Font} font\n */\n constructor(font) {\n this.font = font;\n this.cache = /* @__PURE__ */ new WeakMap();\n }\n /**\n * @param {number} glyphIndex\n * @returns {SvgImage | undefined}\n */\n get(glyphIndex) {\n const svgImageCacheEntry = this.getOrCreateSvgImageCacheEntry(glyphIndex);\n return svgImageCacheEntry && svgImageCacheEntry.image;\n }\n /**\n * @param {number} glyphIndex\n * @returns {Promise<SvgImage> | undefined}\n */\n getAsync(glyphIndex) {\n const svgImageCacheEntry = this.getOrCreateSvgImageCacheEntry(glyphIndex);\n return svgImageCacheEntry && svgImageCacheEntry.promise;\n }\n /**\n * @param {number} glyphIndex\n * @returns {SVGImageCacheEntry | undefined}\n */\n getOrCreateSvgImageCacheEntry(glyphIndex) {\n const svg = this.font.tables.svg;\n if (svg === void 0) return;\n const svgBuf = svg.get(glyphIndex);\n if (svgBuf === void 0) return;\n let svgDocCacheEntry = this.cache.get(svgBuf);\n if (svgDocCacheEntry === void 0) {\n svgDocCacheEntry = createSvgDocCacheEntry(svgBuf);\n this.cache.set(svgBuf, svgDocCacheEntry);\n }\n let svgImageCacheEntry = svgDocCacheEntry.images.get(glyphIndex);\n if (svgImageCacheEntry === void 0) {\n svgImageCacheEntry = createSvgImageCacheEntry(this.font, svgDocCacheEntry.template, glyphIndex);\n svgImageCacheEntry.promise.then((svgImage) => {\n svgImageCacheEntry.image = svgImage;\n if (typeof this.font.onGlyphUpdated === \"function\") {\n try {\n this.font.onGlyphUpdated(glyphIndex);\n } catch (error) {\n console.error(\"font.onGlyphUpdated\", glyphIndex, error);\n }\n }\n });\n svgDocCacheEntry.images.set(glyphIndex, svgImageCacheEntry);\n }\n return svgImageCacheEntry;\n }\n};\nfunction createSvgDocCacheEntry(svgBuf) {\n return {\n template: decodeSvgDocument(svgBuf).then(makeSvgTemplate),\n images: /* @__PURE__ */ new Map()\n };\n}\nfunction createSvgImageCacheEntry(font, svgTemplatePromise, glyphIndex) {\n return {\n promise: svgTemplatePromise.then((svgTemplate) => {\n let svgText;\n if (typeof svgTemplate === \"string\") {\n svgText = svgTemplate;\n } else {\n svgTemplate[4] = glyphIndex;\n svgText = svgTemplate.join(\"\");\n }\n const svgImage = makeSvgImage(svgText, font.unitsPerEm);\n return svgImage.image.decode().then(() => svgImage);\n }),\n image: void 0\n };\n}\nvar decodeSvgDocument = typeof DecompressionStream === \"function\" ? decodeSvgDocumentWithDecompressionStream : decodeSvgDocumentWithTinyInflate;\nfunction decodeSvgDocumentWithTinyInflate(buf) {\n try {\n return Promise.resolve(new TextDecoder().decode(isGzip(buf) ? unGzip(buf) : buf));\n } catch (error) {\n return Promise.reject(error);\n }\n}\nfunction decodeSvgDocumentWithDecompressionStream(buf) {\n if (isGzip(buf)) {\n return new Response(new Response(buf).body.pipeThrough(new DecompressionStream(\"gzip\"))).text();\n }\n try {\n return Promise.resolve(new TextDecoder().decode(buf));\n } catch (error) {\n return Promise.reject(error);\n }\n}\nfunction makeSvgTemplate(text) {\n const documentStart = text.indexOf(\"<svg\");\n const contentStart = text.indexOf(\">\", documentStart + 4) + 1;\n if (/ id=['\"]glyph\\d+['\"]/.test(text.substring(documentStart, contentStart))) {\n return text;\n }\n const contentEnd = text.lastIndexOf(\"</svg>\");\n return [\n text.substring(0, contentStart),\n \"<defs>\",\n text.substring(contentStart, contentEnd),\n '</defs><use href=\"#glyph',\n \"\",\n '\"/>',\n text.substring(contentEnd)\n ];\n}\nfunction makeSvgImage(text, unitsPerEm) {\n const svgDocument = new DOMParser().parseFromString(text, \"image/svg+xml\");\n const svg = svgDocument.documentElement;\n const viewBoxVal = svg.viewBox.baseVal;\n const widthVal = svg.width.baseVal;\n const heightVal = svg.height.baseVal;\n let xScale = 1;\n let yScale = 1;\n if (viewBoxVal.width > 0 && viewBoxVal.height > 0) {\n if (widthVal.unitType === 1) {\n xScale = widthVal.valueInSpecifiedUnits / viewBoxVal.width;\n yScale = heightVal.unitType === 1 ? heightVal.valueInSpecifiedUnits / viewBoxVal.height : xScale;\n } else if (heightVal.unitType === 1) {\n yScale = heightVal.valueInSpecifiedUnits / viewBoxVal.height;\n xScale = yScale;\n } else if (unitsPerEm) {\n xScale = unitsPerEm / viewBoxVal.width;\n yScale = unitsPerEm / viewBoxVal.height;\n }\n }\n const div = document.createElement(\"div\");\n div.style.position = \"fixed\";\n div.style.visibility = \"hidden\";\n div.appendChild(svg);\n document.body.appendChild(div);\n const bbox = svg.getBBox();\n document.body.removeChild(div);\n const leftSideBearing = (bbox.x - viewBoxVal.x) * xScale;\n const baseline = (viewBoxVal.y - bbox.y) * yScale;\n const width = bbox.width * xScale;\n const height = bbox.height * yScale;\n svg.setAttribute(\"viewBox\", [bbox.x, bbox.y, bbox.width, bbox.height].join(\" \"));\n if (xScale !== 1) svg.setAttribute(\"width\", width);\n if (yScale !== 1) svg.setAttribute(\"height\", height);\n const image = new Image(width, height);\n image.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(svg.outerHTML);\n return { leftSideBearing, baseline, image };\n}\n\n// src/tables/glyf.mjs\nvar _resolving = /* @__PURE__ */ new WeakMap();\nfunction parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) {\n let v;\n if ((flag & shortVectorBitMask) > 0) {\n v = p.parseByte();\n if ((flag & sameBitMask) === 0) {\n v = -v;\n }\n v = previousValue + v;\n } else {\n if ((flag & sameBitMask) > 0) {\n v = previousValue;\n } else {\n v = previousValue + p.parseShort();\n }\n }\n return v;\n}\nfunction parseGlyph(glyph, data, start) {\n const p = new parse_default.Parser(data, start);\n glyph._numberOfContours = p.parseShort();\n glyph._xMin = p.parseShort();\n glyph._yMin = p.parseShort();\n glyph._xMax = p.parseShort();\n glyph._yMax = p.parseShort();\n let flags;\n let flag;\n if (glyph._numberOfContours > 0) {\n const endPointIndices = glyph.endPointIndices = [];\n for (let i = 0; i < glyph._numberOfContours; i += 1) {\n endPointIndices.push(p.parseUShort());\n }\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n const numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1;\n flags = [];\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = p.parseByte();\n flags.push(flag);\n if ((flag & 8) > 0) {\n const repeatCount = p.parseByte();\n for (let j = 0; j < repeatCount; j += 1) {\n flags.push(flag);\n i += 1;\n }\n }\n }\n check_default.argument(flags.length === numberOfCoordinates, \"Bad flags.\");\n if (endPointIndices.length > 0) {\n const points = [];\n let point;\n if (numberOfCoordinates > 0) {\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = {};\n point.onCurve = !!(flag & 1);\n point.lastPointOfContour = endPointIndices.indexOf(i) >= 0;\n points.push(point);\n }\n let px = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.x = parseGlyphCoordinate(p, flag, px, 2, 16);\n px = point.x;\n }\n let py = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.y = parseGlyphCoordinate(p, flag, py, 4, 32);\n py = point.y;\n }\n }\n glyph.points = points;\n } else {\n glyph.points = [];\n }\n } else if (glyph._numberOfContours === 0) {\n glyph.points = [];\n } else {\n glyph.isComposite = true;\n glyph.points = [];\n glyph.components = [];\n let moreComponents = true;\n while (moreComponents) {\n flags = p.parseUShort();\n const component = {\n glyphIndex: p.parseUShort(),\n xScale: 1,\n scale01: 0,\n scale10: 0,\n yScale: 1,\n dx: 0,\n dy: 0\n };\n if ((flags & 1) > 0) {\n if ((flags & 2) > 0) {\n component.dx = p.parseShort();\n component.dy = p.parseShort();\n } else {\n component.matchedPoints = [p.parseUShort(), p.parseUShort()];\n }\n } else {\n if ((flags & 2) > 0) {\n component.dx = p.parseChar();\n component.dy = p.parseChar();\n } else {\n component.matchedPoints = [p.parseByte(), p.parseByte()];\n }\n }\n if ((flags & 8) > 0) {\n component.xScale = component.yScale = p.parseF2Dot14();\n } else if ((flags & 64) > 0) {\n component.xScale = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n } else if ((flags & 128) > 0) {\n component.xScale = p.parseF2Dot14();\n component.scale01 = p.parseF2Dot14();\n component.scale10 = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n }\n glyph.components.push(component);\n moreComponents = !!(flags & 32);\n }\n if (flags & 256) {\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n }\n }\n}\nfunction transformPoints(points, transform) {\n const newPoints = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n const newPt = {\n x: transform.xScale * pt.x + transform.scale10 * pt.y + transform.dx,\n y: transform.scale01 * pt.x + transform.yScale * pt.y + transform.dy,\n onCurve: pt.onCurve,\n lastPointOfContour: pt.lastPointOfContour\n };\n newPoints.push(newPt);\n }\n return newPoints;\n}\nfunction getContours(points) {\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n check_default.argument(currentContour.length === 0, \"There are still points left in the current contour.\");\n return contours;\n}\nfunction getPath(points) {\n const p = new path_default();\n if (!points) {\n return p;\n }\n const contours = getContours(points);\n for (let contourIndex = 0; contourIndex < contours.length; ++contourIndex) {\n const contour = contours[contourIndex];\n let curr = contour[contour.length - 1];\n let next = contour[0];\n if (curr.onCurve) {\n p.moveTo(curr.x, curr.y);\n } else {\n if (next.onCurve) {\n p.moveTo(next.x, next.y);\n } else {\n const start = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n p.moveTo(start.x, start.y);\n }\n }\n for (let i = 0; i < contour.length; ++i) {\n curr = next;\n next = contour[(i + 1) % contour.length];\n if (curr.onCurve) {\n p.lineTo(curr.x, curr.y);\n } else {\n let next2 = next;\n if (!next.onCurve) {\n next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n }\n p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y);\n }\n }\n p.closePath();\n }\n return p;\n}\nfunction buildPath(glyphs, glyph) {\n if (glyph.isComposite) {\n if (!_resolving.has(glyphs)) {\n _resolving.set(glyphs, /* @__PURE__ */ new Set());\n }\n const resolving = _resolving.get(glyphs);\n resolving.add(glyph.index);\n try {\n for (let j = 0; j < glyph.components.length; j += 1) {\n const component = glyph.components[j];\n if (resolving.has(component.glyphIndex)) {\n continue;\n }\n const componentGlyph = glyphs.get(component.glyphIndex);\n componentGlyph.getPath();\n if (componentGlyph.points) {\n let transformedPoints;\n if (component.matchedPoints === void 0) {\n transformedPoints = transformPoints(componentGlyph.points, component);\n } else {\n if (component.matchedPoints[0] > glyph.points.length - 1 || component.matchedPoints[1] > componentGlyph.points.length - 1) {\n throw Error(\"Matched points out of range in \" + glyph.name);\n }\n const firstPt = glyph.points[component.matchedPoints[0]];\n let secondPt = componentGlyph.points[component.matchedPoints[1]];\n const transform = {\n xScale: component.xScale,\n scale01: component.scale01,\n scale10: component.scale10,\n yScale: component.yScale,\n dx: 0,\n dy: 0\n };\n secondPt = transformPoints([secondPt], transform)[0];\n transform.dx = firstPt.x - secondPt.x;\n transform.dy = firstPt.y - secondPt.y;\n transformedPoints = transformPoints(componentGlyph.points, transform);\n }\n glyph.points = glyph.points.concat(transformedPoints);\n }\n }\n } finally {\n resolving.delete(glyph.index);\n }\n }\n return getPath(glyph.points);\n}\nfunction parseGlyfTableAll(data, start, loca, font) {\n const glyphs = new glyphset_default.GlyphSet(font);\n for (let i = 0; i < loca.length - 1; i += 1) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset_default.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset_default.glyphLoader(font, i));\n }\n }\n return glyphs;\n}\nfunction parseGlyfTableOnLowMemory(data, start, loca, font) {\n const glyphs = new glyphset_default.GlyphSet(font);\n font._push = function(i) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset_default.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset_default.glyphLoader(font, i));\n }\n };\n return glyphs;\n}\nfunction parseGlyfTable(data, start, loca, font, opt) {\n if (opt.lowMemory)\n return parseGlyfTableOnLowMemory(data, start, loca, font);\n else\n return parseGlyfTableAll(data, start, loca, font);\n}\nvar glyf_default = { getPath, parse: parseGlyfTable };\n\n// src/variationprocessor.mjs\nvar VariationProcessor = class {\n constructor(font) {\n this.font = font;\n }\n /**\n * Modifies a coords object to make sure that tags have a length of 4\n * @param {Object} coords - variation coordinates\n */\n normalizeCoordTags(coords) {\n for (const tag in coords) {\n if (tag.length < 4) {\n const padded = tag.padEnd(4, \" \");\n coords[padded] === void 0 && (coords[padded] = coords[tag]);\n delete coords[tag];\n }\n }\n }\n /**\n * Normalizes the coordinates from the axis ranges to a range of -1 to 1.\n * @param {Object} coords - The coordinates object to normalize.\n * @returns {Array<number>} The normalized coordinates as an array\n */\n getNormalizedCoords(coords) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n let normalized = [];\n this.normalizeCoordTags(coords);\n for (let i = 0; i < this.fvar().axes.length; i++) {\n const axis = this.fvar().axes[i];\n let tagValue = coords[axis.tag];\n if (tagValue === void 0) {\n tagValue = axis.defaultValue;\n }\n if (tagValue < axis.defaultValue) {\n normalized.push((tagValue - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));\n } else {\n normalized.push((tagValue - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));\n }\n }\n if (this.avar()) {\n for (let i = 0; i < this.avar().axisSegmentMaps.length; i++) {\n let segment = this.avar().axisSegmentMaps[i];\n for (let j = 0; j < segment.axisValueMaps.length; j++) {\n let pair = segment.axisValueMaps[j];\n if (j >= 1 && normalized[i] < pair.fromCoordinate) {\n let prev = segment.axisValueMaps[j - 1];\n normalized[i] = ((normalized[i] - prev.fromCoordinate) * (pair.toCoordinate - prev.toCoordinate) + Number.EPSILON) / (pair.fromCoordinate - prev.fromCoordinate + Number.EPSILON) + prev.toCoordinate;\n break;\n }\n }\n }\n }\n return normalized;\n }\n /**\n * Interpolates points within a glyph if deltas are not provided for all points.\n * @param {Array<Object>} points - The points to be interpolated.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Object} deltaMap - A map indicating which points have deltas.\n */\n interpolatePoints(points, glyphPoints, deltaMap) {\n if (points.length === 0) {\n return;\n }\n let pointIndex = 0;\n while (pointIndex < points.length) {\n let firstPoint = pointIndex;\n let endPoint = pointIndex;\n let point = points[endPoint];\n while (!point.lastPointOfContour) {\n point = points[++endPoint];\n }\n while (pointIndex <= endPoint && !deltaMap[pointIndex]) {\n pointIndex++;\n }\n if (pointIndex > endPoint) {\n continue;\n }\n let firstDelta = pointIndex;\n let curDelta = pointIndex;\n pointIndex++;\n while (pointIndex <= endPoint) {\n if (deltaMap[pointIndex]) {\n this.deltaInterpolate(curDelta + 1, pointIndex - 1, curDelta, pointIndex, glyphPoints, points);\n curDelta = pointIndex;\n }\n pointIndex++;\n }\n if (curDelta === firstDelta) {\n this.deltaShift(firstPoint, endPoint, curDelta, glyphPoints, points);\n } else {\n this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, glyphPoints, points);\n if (firstDelta > 0) {\n this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, glyphPoints, points);\n }\n }\n pointIndex = endPoint + 1;\n }\n }\n /**\n * Interpolates delta values between two points.\n * @param {number} p1 - Start point index for interpolation.\n * @param {number} p2 - End point index for interpolation.\n * @param {number} ref1 - Reference point index for the start delta.\n * @param {number} ref2 - Reference point index for the end delta.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Array<Object>} points - The points to be adjusted.\n */\n deltaInterpolate(p1, p2, ref1, ref2, glyphPoints, points) {\n if (p1 > p2) {\n return;\n }\n let iterable = [\"x\", \"y\"];\n for (let i = 0; i < iterable.length; i++) {\n let k = iterable[i];\n if (glyphPoints[ref1][k] > glyphPoints[ref2][k]) {\n var p = ref1;\n ref1 = ref2;\n ref2 = p;\n }\n let in1 = glyphPoints[ref1][k];\n let in2 = glyphPoints[ref2][k];\n let out1 = points[ref1][k];\n let out2 = points[ref2][k];\n if (in1 !== in2 || out1 === out2) {\n let scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);\n for (let p3 = p1; p3 <= p2; p3++) {\n let out = glyphPoints[p3][k];\n if (out <= in1) {\n out += out1 - in1;\n } else if (out >= in2) {\n out += out2 - in2;\n } else {\n out = out1 + (out - in1) * scale;\n }\n points[p3][k] = out;\n }\n }\n }\n }\n /**\n * Applies a delta shift to a range of points based on a reference point.\n * @param {number} p1 - Start point index for shifting.\n * @param {number} p2 - End point index for shifting.\n * @param {number} ref - Reference point index.\n * @param {Array<Object>} glyphPoints - Reference points from the glyph.\n * @param {Array<Object>} points - The points to be shifted.\n */\n deltaShift(p1, p2, ref, glyphPoints, points) {\n let deltaX = points[ref].x - glyphPoints[ref].x;\n let deltaY = points[ref].y - glyphPoints[ref].y;\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n for (let p = p1; p <= p2; p++) {\n if (p !== ref) {\n points[p].x += deltaX;\n points[p].y += deltaY;\n }\n }\n }\n /**\n * Transforms glyph components based on variation data.\n * @param {Glyph} glyph - The composite glyph to transform.\n * @param {Array<Object>} transformedPoints - Points that are already transformed.\n * @param {Object} coords - Variation coordinates.\n * @param {Array<number>} tuplePoints - Points that are part of the tuple.\n * @param {Object} header - Header information from the variation data.\n * @param {number} factor - The scaling factor for the transformation.\n */\n transformComponents(glyph, transformedPoints, coords, tuplePoints, header, factor) {\n let pointsIndex = 0;\n for (let c = 0; c < glyph.components.length; c++) {\n const component = glyph.components[c];\n const componentGlyph = this.font.glyphs.get(component.glyphIndex);\n const componentTransform = copyComponent(component);\n const deltaIndex = tuplePoints.indexOf(c);\n if (deltaIndex > -1) {\n componentTransform.dx += Math.round(header.deltas[deltaIndex] * factor);\n componentTransform.dy += Math.round(header.deltasY[deltaIndex] * factor);\n }\n const transformedComponentPoints = transformPoints(this.getTransform(componentGlyph, coords).points, componentTransform);\n transformedPoints.splice(pointsIndex, transformedComponentPoints.length, ...transformedComponentPoints);\n pointsIndex += componentGlyph.points.length;\n }\n }\n applyTupleVariationStore(variationData, points, coords, flavor = \"gvar\", args = {}) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n const normalizedCoords = this.getNormalizedCoords(coords);\n const { headers, sharedPoints } = variationData;\n const axisCount = this.fvar().axes.length;\n let transformedPoints;\n if (flavor === \"gvar\") {\n transformedPoints = points.map(copyPoint);\n } else if (flavor === \"cvar\") {\n transformedPoints = [...points];\n }\n for (let h = 0; h < headers.length; h++) {\n const header = headers[h];\n let factor = 1;\n for (let a = 0; a < axisCount; a++) {\n let tupleCoords = [0];\n switch (flavor) {\n case \"gvar\":\n tupleCoords = header.peakTuple ? header.peakTuple : this.gvar().sharedTuples[header.sharedTupleRecordsIndex];\n break;\n case \"cvar\":\n tupleCoords = header.peakTuple;\n break;\n }\n if (tupleCoords[a] === 0) {\n continue;\n }\n if (normalizedCoords[a] === 0) {\n factor = 0;\n break;\n }\n if (!header.intermediateStartTuple) {\n if (normalizedCoords[a] < Math.min(0, tupleCoords[a]) || normalizedCoords[a] > Math.max(0, tupleCoords[a])) {\n factor = 0;\n break;\n }\n factor = (factor * normalizedCoords[a] + Number.EPSILON) / (tupleCoords[a] + Number.EPSILON);\n } else {\n if (normalizedCoords[a] < header.intermediateStartTuple[a] || normalizedCoords[a] > header.intermediateEndTuple[a]) {\n factor = 0;\n break;\n } else if (normalizedCoords[a] < tupleCoords[a]) {\n factor = factor * (normalizedCoords[a] - header.intermediateStartTuple[a] + Number.EPSILON) / (tupleCoords[a] - header.intermediateStartTuple[a] + Number.EPSILON);\n } else {\n factor = factor * (header.intermediateEndTuple[a] - normalizedCoords[a] + Number.EPSILON) / (header.intermediateEndTuple[a] - tupleCoords[a] + Number.EPSILON);\n }\n }\n }\n if (factor === 0) {\n continue;\n }\n const tuplePoints = header.privatePoints.length ? header.privatePoints : sharedPoints;\n if (flavor === \"gvar\" && args.glyph && args.glyph.isComposite) {\n this.transformComponents(args.glyph, transformedPoints, coords, tuplePoints, header, factor);\n } else if (tuplePoints.length === 0) {\n for (let i = 0; i < transformedPoints.length; i++) {\n const point = transformedPoints[i];\n if (flavor === \"gvar\") {\n transformedPoints[i] = {\n x: Math.round(point.x + header.deltas[i] * factor),\n y: Math.round(point.y + header.deltasY[i] * factor),\n onCurve: point.onCurve,\n lastPointOfContour: point.lastPointOfContour\n };\n } else if (flavor === \"cvar\") {\n transformedPoints[i] = Math.round(point + header.deltas[i] * factor);\n }\n }\n } else {\n let interpolatedPoints;\n if (flavor === \"gvar\") {\n interpolatedPoints = transformedPoints.map(copyPoint);\n } else if (flavor === \"cvar\") {\n interpolatedPoints = transformedPoints;\n }\n const deltaMap = Array(points.length).fill(false);\n for (let i = 0; i < tuplePoints.length; i++) {\n let pointIndex = tuplePoints[i];\n if (pointIndex < points.length) {\n let point = interpolatedPoints[pointIndex];\n if (flavor === \"gvar\") {\n deltaMap[pointIndex] = true;\n point.x += header.deltas[i] * factor;\n point.y += header.deltasY[i] * factor;\n } else if (flavor === \"cvar\") {\n transformedPoints[pointIndex] = Math.round(point + header.deltas[i] * factor);\n }\n }\n }\n if (flavor === \"gvar\") {\n this.interpolatePoints(interpolatedPoints, transformedPoints, deltaMap);\n for (let i = 0; i < points.length; i++) {\n let deltaX = interpolatedPoints[i].x - transformedPoints[i].x;\n let deltaY = interpolatedPoints[i].y - transformedPoints[i].y;\n transformedPoints[i].x = Math.round(transformedPoints[i].x + deltaX);\n transformedPoints[i].y = Math.round(transformedPoints[i].y + deltaY);\n }\n }\n }\n }\n return transformedPoints;\n }\n /**\n * Retrieves a transformed copy of a glyph based on the provided variation coordinates, or the glyph itself if no variation was applied\n * @param {opentype.Glyph|number} glyph - Glyph or index of glyph to transform.\n * @param {Object} coords - Variation coords object (will fall back to variation coords in the defaultRenderOptions)\n * @returns {opentype.Glyph} - The transformed glyph.\n */\n getTransform(glyph, coords) {\n if (Number.isInteger(glyph)) {\n glyph = this.font.glyphs.get(glyph);\n }\n const hasBlend = glyph.getBlendPath;\n const hasPoints = !!(glyph.points && glyph.points.length);\n let transformedGlyph = glyph;\n if (hasBlend || hasPoints) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n if (hasPoints) {\n const variationData = this.gvar() && this.gvar().glyphVariations[glyph.index];\n if (variationData) {\n const glyphPoints = glyph.points;\n let transformedPoints = this.applyTupleVariationStore(variationData, glyphPoints, coords, \"gvar\", { glyph });\n transformedGlyph = new glyph_default(Object.assign({}, glyph, { points: transformedPoints, path: getPath(transformedPoints) }));\n }\n } else if (hasBlend) {\n const blendPath = glyph.getBlendPath(coords);\n transformedGlyph = new glyph_default(Object.assign({}, glyph, { path: blendPath }));\n }\n }\n if (this.font.tables.hvar) {\n glyph._advanceWidth = typeof glyph._advanceWidth !== \"undefined\" ? glyph._advanceWidth : glyph.advanceWidth;\n glyph.advanceWidth = transformedGlyph.advanceWidth = Math.round(glyph._advanceWidth + this.getVariableAdjustment(transformedGlyph.index, \"hvar\", \"advanceWidth\", coords));\n glyph._leftSideBearing = typeof glyph._leftSideBearing !== \"undefined\" ? glyph._leftSideBearing : glyph.leftSideBearing;\n glyph.leftSideBearing = transformedGlyph.leftSideBearing = Math.round(glyph._leftSideBearing + this.getVariableAdjustment(transformedGlyph.index, \"hvar\", \"lsb\", coords));\n }\n return transformedGlyph;\n }\n getCvarTransform(coords) {\n const cvt = this.font.tables.cvt;\n const variationData = this.cvar();\n if (!cvt || !cvt.length || !variationData || !variationData.headers.length) return cvt;\n return this.applyTupleVariationStore(variationData, cvt, coords, \"cvar\");\n }\n /**\n * Calculates the variable adjustment for a glyph property from variation data.\n * @param {number} gid - Glyph ID.\n * @param {string} tableName - The name of the variation data table.\n * @param {string} parameter - The property to adjust.\n * @param {Object} coords - Variation coordinates.\n * @returns {number} - The calculated adjustment.\n */\n getVariableAdjustment(gid, tableName, parameter, coords) {\n coords = coords || this.font.variation.get();\n let outerIndex, innerIndex;\n const table = this.font.tables[tableName];\n if (!table) {\n throw Error(`trying to get variation adjustment from non-existent table \"${table}\"`);\n }\n if (!table.itemVariationStore) {\n throw Error(`trying to get variation adjustment from table \"${table}\" which does not have an itemVariationStore`);\n }\n const mapSize = table[parameter] && table[parameter].map.length;\n if (mapSize) {\n let i = gid;\n if (i >= mapSize) {\n i = mapSize - 1;\n }\n ({ outerIndex, innerIndex } = table[parameter].map[i]);\n } else {\n outerIndex = 0;\n innerIndex = gid;\n }\n return this.getDelta(table.itemVariationStore, outerIndex, innerIndex, coords);\n }\n /**\n * Retrieves the delta value from a variation store.\n * @param {Object} itemStore - The item variation store.\n * @param {number} outerIndex - The outer index in the variation subtables.\n * @param {number} innerIndex - The inner index in the delta sets.\n * @param {Object} coords - Variation coordinates.\n * @returns {number} - The delta value.\n */\n getDelta(itemStore, outerIndex, innerIndex, coords) {\n if (outerIndex >= itemStore.itemVariationSubtables.length) {\n return 0;\n }\n let varData = itemStore.itemVariationSubtables[outerIndex];\n if (innerIndex >= varData.deltaSets.length) {\n return 0;\n }\n let deltaSet = varData.deltaSets[innerIndex];\n let blendVector = this.getBlendVector(itemStore, outerIndex, coords);\n let netAdjustment = 0;\n for (let master = 0; master < varData.regionIndexes.length; master++) {\n netAdjustment += deltaSet[master] * blendVector[master];\n }\n return netAdjustment;\n }\n /**\n * Calculates the blend vector for a set of variation coordinates.\n * @param {Object} itemStore - The item variation store.\n * @param {number} itemIndex - Index of the current item in the variation subtables.\n * @param {Object} coords - Variation coordinates.\n * @returns {Array<number>} - The blend vector for the given coordinates.\n */\n getBlendVector(itemStore, itemIndex, coords) {\n if (!coords) {\n coords = this.font.variation.get();\n }\n let varData = itemStore.itemVariationSubtables[itemIndex];\n const normalizedCoords = this.getNormalizedCoords(coords);\n let blendVector = [];\n for (let master = 0; master < varData.regionIndexes.length; master++) {\n let scalar = 1;\n let regionIndex = varData.regionIndexes[master];\n let axes = itemStore.variationRegions[regionIndex].regionAxes;\n for (let j = 0; j < axes.length; j++) {\n let axis = axes[j];\n let axisScalar;\n if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {\n axisScalar = 1;\n } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {\n axisScalar = 1;\n } else if (axis.peakCoord === 0) {\n axisScalar = 1;\n } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {\n axisScalar = 0;\n } else {\n if (normalizedCoords[j] === axis.peakCoord) {\n axisScalar = 1;\n } else if (normalizedCoords[j] < axis.peakCoord) {\n axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);\n } else {\n axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);\n }\n }\n scalar *= axisScalar;\n }\n blendVector[master] = scalar;\n }\n return blendVector;\n }\n /**\n * Helper method that returns the font's avar table if present\n * @returns {Object|undefined}\n */\n avar() {\n return this.font.tables.avar;\n }\n /**\n * Helper method that returns the font's cvar table if present\n * @returns {Object|undefined}\n */\n cvar() {\n return this.font.tables.cvar;\n }\n /**\n * Helper method that returns the font's fvar table if present\n * @returns {Object|undefined}\n */\n fvar() {\n return this.font.tables.fvar;\n }\n /**\n * Helper method that returns the font's gvar table if present\n * @returns {Object|undefined}\n */\n gvar() {\n return this.font.tables.gvar;\n }\n /**\n * Helper method that returns the font's hvar table if present\n * @returns {Object|undefined}\n */\n hvar() {\n return this.font.tables.hvar;\n }\n};\n\n// src/variation.mjs\nvar VariationManager = class {\n constructor(font) {\n this.font = font;\n this.process = new VariationProcessor(this.font);\n this.activateDefaultVariation();\n this.getTransform = this.process.getTransform.bind(this.process);\n }\n /**\n * Tries to determine the default instance and sets its variation data as the font.defaultRenderOptions.\n * If not defaultInstance can be determined, the default coordinates of all axes are used.\n */\n activateDefaultVariation() {\n const defaultInstance = this.getDefaultInstanceIndex();\n if (defaultInstance > -1) {\n this.set(defaultInstance);\n } else {\n this.set(this.getDefaultCoordinates());\n }\n }\n /**\n * Retrieves the default coordinates for the font's variation axes.\n * @returns {Object} An object mapping axis tags to their default values.\n */\n getDefaultCoordinates() {\n return this.fvar().axes.reduce((acc, axis) => {\n acc[axis.tag] = axis.defaultValue;\n return acc;\n }, {});\n }\n /**\n * Gets the index of the default variation instance or -1 if not able to determine\n * @returns {integer} default index or -1\n */\n getDefaultInstanceIndex() {\n const defaultCoordinates = this.getDefaultCoordinates();\n let defaultInstanceIndex = this.getInstanceIndex(defaultCoordinates);\n if (defaultInstanceIndex < 0) {\n defaultInstanceIndex = this.fvar().instances.findIndex((instance) => instance.name && instance.name.en === \"Regular\");\n }\n return defaultInstanceIndex;\n }\n /**\n * Retrieves the index of the variation instance matching the coordinates object or -1 if not able to determine\n * @param {integer|Object} coordinates An object where keys are axis tags and values are the corresponding variation values.\n * @returns {integer} The index of the matching instance or -1 if no match is found.\n */\n getInstanceIndex(coordinates) {\n return this.fvar().instances.findIndex(\n (instance) => Object.keys(coordinates).every(\n (axis) => instance.coordinates[axis] === coordinates[axis]\n )\n );\n }\n /**\n * Retrieves a variation instance by its zero-based index\n * @param {integer} index - zero-based index of the variation instance\n * @returns {Object} - variation instance or null if the index is invalid.\n */\n getInstance(index) {\n return this.fvar().instances && this.fvar().instances[index];\n }\n /**\n * Set the variation coordinates to use by default for rendering in the font.defaultRenderOptions\n * @param {integer|Object} instanceIdOrObject Either the zero-based index of a variation instance or an object with axis tags as keys and variation values as values\n */\n set(instanceIdOrObject) {\n let variationData;\n if (Number.isInteger(instanceIdOrObject)) {\n const instance = this.getInstance(instanceIdOrObject);\n if (!instance) {\n throw Error(`Invalid instance index ${instanceIdOrObject}`);\n }\n variationData = { ...instance.coordinates };\n } else {\n variationData = instanceIdOrObject;\n this.process.normalizeCoordTags(variationData);\n }\n variationData = Object.assign(\n {},\n this.font.defaultRenderOptions.variation,\n variationData\n );\n this.font.defaultRenderOptions = Object.assign(\n {},\n this.font.defaultRenderOptions,\n { variation: variationData }\n );\n }\n /**\n * Returns the variation coordinates currently set in the font.defaultRenderOptions\n * @returns {Object}\n */\n get() {\n return Object.assign({}, this.font.defaultRenderOptions.variation);\n }\n /**\n * Helper method that returns the font's avar table if present\n * @returns {Object|undefined}\n */\n avar() {\n return this.font.tables.avar;\n }\n /**\n * Helper method that returns the font's cvar table if present\n * @returns {Object|undefined}\n */\n cvar() {\n return this.font.tables.cvar;\n }\n /**\n * Helper method that returns the font's fvar table if present\n * @returns {Object|undefined}\n */\n fvar() {\n return this.font.tables.fvar;\n }\n /**\n * Helper method that returns the font's gvar table if present\n * @returns {Object|undefined}\n */\n gvar() {\n return this.font.tables.gvar;\n }\n /**\n * Helper method that returns the font's hvar table if present\n * @returns {Object|undefined}\n */\n hvar() {\n return this.font.tables.hvar;\n }\n};\n\n// src/hintingtt.mjs\nvar MAX_INSTRUCTIONS = 1e6;\nvar MAX_CALL_DEPTH2 = 64;\nvar MAX_LOOP_COUNT = 1e4;\nvar instructionTable;\nvar exec;\nvar execGlyph;\nvar execComponent;\nfunction Hinting(font) {\n this.font = font;\n this.getCommands = function(hPoints) {\n return glyf_default.getPath(hPoints).commands;\n };\n this._fpgmState = this._prepState = void 0;\n this._errorState = 0;\n}\nfunction roundOff(v) {\n return v;\n}\nfunction roundToGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v));\n}\nfunction roundToDoubleGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2;\n}\nfunction roundToHalfGrid(v) {\n return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5);\n}\nfunction roundUpToGrid(v) {\n return Math.sign(v) * Math.ceil(Math.abs(v));\n}\nfunction roundDownToGrid(v) {\n return Math.sign(v) * Math.floor(Math.abs(v));\n}\nvar roundSuper = function(v) {\n const period = this.srPeriod;\n let phase = this.srPhase;\n const threshold = this.srThreshold;\n let sign = 1;\n if (v < 0) {\n v = -v;\n sign = -1;\n }\n v += threshold - phase;\n v = Math.trunc(v / period) * period;\n v += phase;\n if (v < 0) return phase * sign;\n return v * sign;\n};\nvar xUnitVector = {\n x: 1,\n y: 0,\n axis: \"x\",\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function(p1, p2, o1, o2) {\n return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);\n },\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function(p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n if (!pv || pv === this) {\n do1 = p.xo - rp1.xo;\n do2 = p.xo - rp2.xo;\n dm1 = rp1.x - rp1.xo;\n dm2 = rp2.x - rp2.xo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n p.x = p.xo + (dm1 + dm2) / 2;\n return;\n }\n p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n // Slope of line normal to this\n normalSlope: Number.NEGATIVE_INFINITY,\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'.\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function(p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.x = (org ? rp.xo : rp.x) + d;\n return;\n }\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n p.x = rpdx + (p.y - rpdy) / pv.normalSlope;\n },\n // Slope of vector line.\n slope: 0,\n // Touches the point p.\n touch: function(p) {\n p.xTouched = true;\n },\n // Tests if a point p is touched.\n touched: function(p) {\n return p.xTouched;\n },\n // Untouches the point p.\n untouch: function(p) {\n p.xTouched = false;\n }\n};\nvar yUnitVector = {\n x: 0,\n y: 1,\n axis: \"y\",\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function(p1, p2, o1, o2) {\n return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);\n },\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function(p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n if (!pv || pv === this) {\n do1 = p.yo - rp1.yo;\n do2 = p.yo - rp2.yo;\n dm1 = rp1.y - rp1.yo;\n dm2 = rp2.y - rp2.yo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n p.y = p.yo + (dm1 + dm2) / 2;\n return;\n }\n p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n // Slope of line normal to this.\n normalSlope: 0,\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function(p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.y = (org ? rp.yo : rp.y) + d;\n return;\n }\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n p.y = rpdy + pv.normalSlope * (p.x - rpdx);\n },\n // Slope of vector line.\n slope: Number.POSITIVE_INFINITY,\n // Touches the point p.\n touch: function(p) {\n p.yTouched = true;\n },\n // Tests if a point p is touched.\n touched: function(p) {\n return p.yTouched;\n },\n // Untouches the point p.\n untouch: function(p) {\n p.yTouched = false;\n }\n};\nObject.freeze(xUnitVector);\nObject.freeze(yUnitVector);\nfunction UnitVector(x, y) {\n this.x = x;\n this.y = y;\n this.axis = void 0;\n this.slope = y / x;\n this.normalSlope = -x / y;\n Object.freeze(this);\n}\nUnitVector.prototype.distance = function(p1, p2, o1, o2) {\n return this.x * xUnitVector.distance(p1, p2, o1, o2) + this.y * yUnitVector.distance(p1, p2, o1, o2);\n};\nUnitVector.prototype.interpolate = function(p, rp1, rp2, pv) {\n let dm1;\n let dm2;\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dt;\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n if (dt === 0) {\n this.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n};\nUnitVector.prototype.setRelative = function(p, rp, d, pv, org) {\n pv = pv || this;\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n const pvns = pv.normalSlope;\n const fvs = this.slope;\n const px = p.x;\n const py = p.y;\n p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);\n p.y = fvs * (p.x - px) + py;\n};\nUnitVector.prototype.touch = function(p) {\n p.xTouched = true;\n p.yTouched = true;\n};\nfunction getUnitVector(x, y) {\n const d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d;\n if (x === 1 && y === 0) return xUnitVector;\n else if (x === 0 && y === 1) return yUnitVector;\n else return new UnitVector(x, y);\n}\nfunction HPoint(x, y, lastPointOfContour, onCurve) {\n this.x = this.xo = Math.round(x * 64) / 64;\n this.y = this.yo = Math.round(y * 64) / 64;\n this.lastPointOfContour = lastPointOfContour;\n this.onCurve = onCurve;\n this.prevPointOnContour = void 0;\n this.nextPointOnContour = void 0;\n this.xTouched = false;\n this.yTouched = false;\n Object.preventExtensions(this);\n}\nHPoint.prototype.nextTouched = function(v) {\n let p = this.nextPointOnContour;\n while (!v.touched(p) && p !== this) p = p.nextPointOnContour;\n return p;\n};\nHPoint.prototype.prevTouched = function(v) {\n let p = this.prevPointOnContour;\n while (!v.touched(p) && p !== this) p = p.prevPointOnContour;\n return p;\n};\nvar HPZero = Object.freeze(new HPoint(0, 0));\nvar defaultState = {\n cvCutIn: 17 / 16,\n // control value cut in\n deltaBase: 9,\n deltaShift: 0.125,\n loop: 1,\n // loops some instructions\n minDis: 1,\n // minimum distance\n autoFlip: true\n};\nfunction State(env, prog) {\n this.env = env;\n this.stack = [];\n this.prog = prog;\n switch (env) {\n case \"glyf\":\n this.zp0 = this.zp1 = this.zp2 = 1;\n this.rp0 = this.rp1 = this.rp2 = 0;\n /* fall through */\n case \"prep\":\n this.fv = this.pv = this.dpv = xUnitVector;\n this.round = roundToGrid;\n }\n}\nHinting.prototype.exec = function(glyph, ppem) {\n if (typeof ppem !== \"number\") {\n throw new Error(\"Point size is not a number!\");\n }\n if (this._errorState > 2) return;\n const font = this.font;\n let prepState = this._prepState;\n if (!prepState || prepState.ppem !== ppem) {\n let fpgmState = this._fpgmState;\n if (!fpgmState) {\n State.prototype = defaultState;\n fpgmState = this._fpgmState = new State(\"fpgm\", font.tables.fpgm);\n fpgmState.funcs = [];\n fpgmState.font = font;\n fpgmState.instructionCount = 0;\n fpgmState.callDepth = 0;\n if (false) {\n console.log(\"---EXEC FPGM---\");\n fpgmState.step = -1;\n }\n try {\n exec(fpgmState);\n } catch (e) {\n console.log(\"Hinting error in FPGM:\" + e);\n this._errorState = 3;\n return;\n }\n }\n State.prototype = fpgmState;\n prepState = this._prepState = new State(\"prep\", font.tables.prep);\n prepState.ppem = ppem;\n prepState.instructionCount = 0;\n prepState.callDepth = 0;\n const oCvt = font.variation && font.variation.process.getCvarTransform() || font.tables.cvt;\n if (oCvt) {\n const cvt = prepState.cvt = new Array(oCvt.length);\n const scale = ppem / font.unitsPerEm;\n for (let c = 0; c < oCvt.length; c++) {\n cvt[c] = oCvt[c] * scale;\n }\n } else {\n prepState.cvt = [];\n }\n if (false) {\n console.log(\"---EXEC PREP---\");\n prepState.step = -1;\n }\n try {\n exec(prepState);\n } catch (e) {\n if (this._errorState < 2) {\n console.log(\"Hinting error in PREP:\" + e);\n }\n this._errorState = 2;\n }\n }\n if (this._errorState > 1) return;\n try {\n return execGlyph(glyph, prepState);\n } catch (e) {\n if (this._errorState < 1) {\n console.log(\"Hinting error:\" + e);\n console.log(\"Note: further hinting errors are silenced\");\n }\n this._errorState = 1;\n return void 0;\n }\n};\nexecGlyph = function(glyph, prepState) {\n const xScale = prepState.ppem / prepState.font.unitsPerEm;\n const yScale = xScale;\n let components = glyph.components;\n let contours;\n let gZone;\n let state;\n State.prototype = prepState;\n if (!components) {\n state = new State(\"glyf\", glyph.instructions);\n state.instructionCount = 0;\n state.callDepth = 0;\n if (false) {\n console.log(\"---EXEC GLYPH---\");\n state.step = -1;\n }\n execComponent(glyph, state, xScale, yScale);\n gZone = state.gZone;\n } else {\n const font = prepState.font;\n gZone = [];\n contours = [];\n for (let i = 0; i < components.length; i++) {\n const c = components[i];\n const cg = font.glyphs.get(c.glyphIndex);\n state = new State(\"glyf\", cg.instructions);\n state.instructionCount = 0;\n state.callDepth = 0;\n if (false) {\n console.log(\"---EXEC COMP \" + i + \"---\");\n state.step = -1;\n }\n execComponent(cg, state, xScale, yScale);\n const dx = Math.round(c.dx * xScale);\n const dy = Math.round(c.dy * yScale);\n const gz = state.gZone;\n const cc = state.contours;\n for (let pi = 0; pi < gz.length; pi++) {\n const p = gz[pi];\n p.xTouched = p.yTouched = false;\n p.xo = p.x = p.x + dx;\n p.yo = p.y = p.y + dy;\n }\n const gLen = gZone.length;\n gZone.push.apply(gZone, gz);\n for (let j = 0; j < cc.length; j++) {\n contours.push(cc[j] + gLen);\n }\n }\n if (glyph.instructions && !state.inhibitGridFit) {\n state = new State(\"glyf\", glyph.instructions);\n state.gZone = state.z0 = state.z1 = state.z2 = gZone;\n state.contours = contours;\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n if (false) {\n console.log(\"---EXEC COMPOSITE---\");\n state.step = -1;\n }\n exec(state);\n gZone.length -= 2;\n }\n }\n return gZone;\n};\nexecComponent = function(glyph, state, xScale, yScale) {\n const points = glyph.points || [];\n const pLen = points.length;\n const gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];\n const contours = state.contours = [];\n let cp;\n for (let i = 0; i < pLen; i++) {\n cp = points[i];\n gZone[i] = new HPoint(\n cp.x * xScale,\n cp.y * yScale,\n cp.lastPointOfContour,\n cp.onCurve\n );\n }\n let sp;\n let np;\n for (let i = 0; i < pLen; i++) {\n cp = gZone[i];\n if (!sp) {\n sp = cp;\n contours.push(i);\n }\n if (cp.lastPointOfContour) {\n cp.nextPointOnContour = sp;\n sp.prevPointOnContour = cp;\n sp = void 0;\n } else {\n np = gZone[i + 1];\n cp.nextPointOnContour = np;\n np.prevPointOnContour = cp;\n }\n }\n if (state.inhibitGridFit) return;\n if (false) {\n console.log(\"PROCESSING GLYPH\", state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n exec(state);\n gZone.length -= 2;\n if (false) {\n console.log(\"FINISHED GLYPH\", state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n};\nexec = function(state) {\n let prog = state.prog;\n if (!prog) return;\n const pLen = prog.length;\n let ins;\n for (state.ip = 0; state.ip < pLen; state.ip++) {\n if (++state.instructionCount > MAX_INSTRUCTIONS) {\n throw new Error(\n \"Hinting instructions exceeded maximum of \" + MAX_INSTRUCTIONS\n );\n }\n if (false) state.step++;\n ins = instructionTable[prog[state.ip]];\n if (!ins) {\n throw new Error(\n \"unknown instruction: 0x\" + Number(prog[state.ip]).toString(16)\n );\n }\n ins(state);\n }\n};\nfunction initTZone(state) {\n const tZone = state.tZone = new Array(state.gZone.length);\n for (let i = 0; i < tZone.length; i++) {\n tZone[i] = new HPoint(0, 0);\n }\n}\nfunction skip(state, handleElse) {\n const prog = state.prog;\n let ip = state.ip;\n let nesting = 1;\n let ins;\n do {\n ins = prog[++ip];\n if (ins === 88)\n nesting++;\n else if (ins === 89)\n nesting--;\n else if (ins === 64)\n ip += prog[ip + 1] + 1;\n else if (ins === 65)\n ip += 2 * prog[ip + 1] + 1;\n else if (ins >= 176 && ins <= 183)\n ip += ins - 176 + 1;\n else if (ins >= 184 && ins <= 191)\n ip += (ins - 184 + 1) * 2;\n else if (handleElse && nesting === 1 && ins === 27)\n break;\n } while (nesting > 0);\n state.ip = ip;\n}\nfunction SVTCA(v, state) {\n if (false) console.log(state.step, \"SVTCA[\" + v.axis + \"]\");\n state.fv = state.pv = state.dpv = v;\n}\nfunction SPVTCA(v, state) {\n if (false) console.log(state.step, \"SPVTCA[\" + v.axis + \"]\");\n state.pv = state.dpv = v;\n}\nfunction SFVTCA(v, state) {\n if (false) console.log(state.step, \"SFVTCA[\" + v.axis + \"]\");\n state.fv = v;\n}\nfunction SPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(\"SPVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.pv = state.dpv = getUnitVector(dx, dy);\n}\nfunction SFVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(\"SFVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.fv = getUnitVector(dx, dy);\n}\nfunction SPVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n if (false) console.log(state.step, \"SPVFS[]\", y, x);\n state.pv = state.dpv = getUnitVector(x, y);\n}\nfunction SFVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n if (false) console.log(state.step, \"SPVFS[]\", y, x);\n state.fv = getUnitVector(x, y);\n}\nfunction GPV(state) {\n const stack = state.stack;\n const pv = state.pv;\n if (false) console.log(state.step, \"GPV[]\");\n stack.push(pv.x * 16384);\n stack.push(pv.y * 16384);\n}\nfunction GFV(state) {\n const stack = state.stack;\n const fv = state.fv;\n if (false) console.log(state.step, \"GFV[]\");\n stack.push(fv.x * 16384);\n stack.push(fv.y * 16384);\n}\nfunction SFVTPV(state) {\n state.fv = state.pv;\n if (false) console.log(state.step, \"SFVTPV[]\");\n}\nfunction ISECT(state) {\n const stack = state.stack;\n const pa0i = stack.pop();\n const pa1i = stack.pop();\n const pb0i = stack.pop();\n const pb1i = stack.pop();\n const pi = stack.pop();\n const z0 = state.z0;\n const z1 = state.z1;\n const pa0 = z0[pa0i];\n const pa1 = z0[pa1i];\n const pb0 = z1[pb0i];\n const pb1 = z1[pb1i];\n const p = state.z2[pi];\n if (false) console.log(\"ISECT[], \", pa0i, pa1i, pb0i, pb1i, pi);\n const x1 = pa0.x;\n const y1 = pa0.y;\n const x2 = pa1.x;\n const y2 = pa1.y;\n const x3 = pb0.x;\n const y3 = pb0.y;\n const x4 = pb1.x;\n const y4 = pb1.y;\n const div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n const f1 = x1 * y2 - y1 * x2;\n const f2 = x3 * y4 - y3 * x4;\n p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div;\n p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div;\n}\nfunction SRP0(state) {\n state.rp0 = state.stack.pop();\n if (false) console.log(state.step, \"SRP0[]\", state.rp0);\n}\nfunction SRP1(state) {\n state.rp1 = state.stack.pop();\n if (false) console.log(state.step, \"SRP1[]\", state.rp1);\n}\nfunction SRP2(state) {\n state.rp2 = state.stack.pop();\n if (false) console.log(state.step, \"SRP2[]\", state.rp2);\n}\nfunction SZP0(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP0[]\", n);\n state.zp0 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.tZone;\n break;\n case 1:\n state.z0 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n}\nfunction SZP1(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP1[]\", n);\n state.zp1 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z1 = state.tZone;\n break;\n case 1:\n state.z1 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n}\nfunction SZP2(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZP2[]\", n);\n state.zp2 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z2 = state.tZone;\n break;\n case 1:\n state.z2 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n}\nfunction SZPS(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SZPS[]\", n);\n state.zp0 = state.zp1 = state.zp2 = n;\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.z1 = state.z2 = state.tZone;\n break;\n case 1:\n state.z0 = state.z1 = state.z2 = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone pointer\");\n }\n}\nfunction SLOOP(state) {\n state.loop = state.stack.pop();\n if (state.loop > MAX_LOOP_COUNT) {\n state.loop = MAX_LOOP_COUNT;\n }\n if (false) console.log(state.step, \"SLOOP[]\", state.loop);\n}\nfunction RTG(state) {\n if (false) console.log(state.step, \"RTG[]\");\n state.round = roundToGrid;\n}\nfunction RTHG(state) {\n if (false) console.log(state.step, \"RTHG[]\");\n state.round = roundToHalfGrid;\n}\nfunction SMD(state) {\n const d = state.stack.pop();\n if (false) console.log(state.step, \"SMD[]\", d);\n state.minDis = d / 64;\n}\nfunction ELSE(state) {\n if (false) console.log(state.step, \"ELSE[]\");\n skip(state, false);\n}\nfunction JMPR(state) {\n const o = state.stack.pop();\n if (false) console.log(state.step, \"JMPR[]\", o);\n state.ip += o - 1;\n}\nfunction SCVTCI(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCVTCI[]\", n);\n state.cvCutIn = n / 64;\n}\nfunction DUP(state) {\n const stack = state.stack;\n if (false) console.log(state.step, \"DUP[]\");\n stack.push(stack[stack.length - 1]);\n}\nfunction POP(state) {\n if (false) console.log(state.step, \"POP[]\");\n state.stack.pop();\n}\nfunction CLEAR(state) {\n if (false) console.log(state.step, \"CLEAR[]\");\n state.stack.length = 0;\n}\nfunction SWAP(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n if (false) console.log(state.step, \"SWAP[]\");\n stack.push(a);\n stack.push(b);\n}\nfunction DEPTH(state) {\n const stack = state.stack;\n if (false) console.log(state.step, \"DEPTH[]\");\n stack.push(stack.length);\n}\nfunction LOOPCALL(state) {\n const stack = state.stack;\n const fn = stack.pop();\n let c = stack.pop();\n if (c > MAX_LOOP_COUNT) c = MAX_LOOP_COUNT;\n if (false) console.log(state.step, \"LOOPCALL[]\", fn, c);\n if (++state.callDepth > MAX_CALL_DEPTH2) {\n throw new Error(\"Hinting call depth exceeded maximum of \" + MAX_CALL_DEPTH2);\n }\n const cip = state.ip;\n const cprog = state.prog;\n state.prog = state.funcs[fn];\n for (let i = 0; i < c; i++) {\n exec(state);\n if (false) console.log(\n ++state.step,\n i + 1 < c ? \"next loopcall\" : \"done loopcall\",\n i\n );\n }\n state.ip = cip;\n state.prog = cprog;\n state.callDepth--;\n}\nfunction CALL(state) {\n const fn = state.stack.pop();\n if (false) console.log(state.step, \"CALL[]\", fn);\n if (++state.callDepth > MAX_CALL_DEPTH2) {\n throw new Error(\"Hinting call depth exceeded maximum of \" + MAX_CALL_DEPTH2);\n }\n const cip = state.ip;\n const cprog = state.prog;\n state.prog = state.funcs[fn];\n exec(state);\n state.ip = cip;\n state.prog = cprog;\n state.callDepth--;\n if (false) console.log(++state.step, \"returning from\", fn);\n}\nfunction CINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n if (false) console.log(state.step, \"CINDEX[]\", k);\n stack.push(stack[stack.length - k]);\n}\nfunction MINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n if (false) console.log(state.step, \"MINDEX[]\", k);\n stack.push(stack.splice(stack.length - k, 1)[0]);\n}\nfunction FDEF(state) {\n if (state.env !== \"fpgm\") throw new Error(\"FDEF not allowed here\");\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n const fn = stack.pop();\n const ipBegin = ip;\n if (false) console.log(state.step, \"FDEF[]\", fn);\n while (prog[++ip] !== 45) ;\n state.ip = ip;\n state.funcs[fn] = prog.slice(ipBegin + 1, ip);\n}\nfunction MDAP(round, state) {\n const pi = state.stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n if (false) console.log(state.step, \"MDAP[\" + round + \"]\", pi);\n let d = pv.distance(p, HPZero);\n if (round) d = state.round(d);\n fv.setRelative(p, HPZero, d, pv);\n fv.touch(p);\n state.rp0 = state.rp1 = pi;\n}\nfunction IUP(v, state) {\n const z2 = state.z2;\n const pLen = z2.length - 2;\n let cp;\n let pp;\n let np;\n if (false) console.log(state.step, \"IUP[\" + v.axis + \"]\");\n for (let i = 0; i < pLen; i++) {\n cp = z2[i];\n if (v.touched(cp)) continue;\n pp = cp.prevTouched(v);\n if (pp === cp) continue;\n np = cp.nextTouched(v);\n if (pp === np) {\n v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true);\n }\n v.interpolate(cp, pp, np, v);\n }\n}\nfunction SHP(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n let loop = state.loop;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n const d = pv.distance(rp, rp, false, true);\n fv.setRelative(p, p, d, pv);\n fv.touch(p);\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"SHP[\" + (a ? \"rp1\" : \"rp2\") + \"]\",\n pi\n );\n }\n }\n state.loop = 1;\n}\nfunction SHC(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const ci = stack.pop();\n const sp = state.z2[state.contours[ci]];\n let p = sp;\n if (false) console.log(state.step, \"SHC[\" + a + \"]\", ci);\n const d = pv.distance(rp, rp, false, true);\n do {\n if (p !== rp) fv.setRelative(p, p, d, pv);\n p = p.nextPointOnContour;\n } while (p !== sp);\n}\nfunction SHZ(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const e = stack.pop();\n if (false) console.log(state.step, \"SHZ[\" + a + \"]\", e);\n let z;\n switch (e) {\n case 0:\n z = state.tZone;\n break;\n case 1:\n z = state.gZone;\n break;\n default:\n throw new Error(\"Invalid zone\");\n }\n let p;\n const d = pv.distance(rp, rp, false, true);\n const pLen = z.length - 2;\n for (let i = 0; i < pLen; i++) {\n p = z[i];\n fv.setRelative(p, p, d, pv);\n }\n}\nfunction SHPIX(state) {\n const stack = state.stack;\n let loop = state.loop;\n const fv = state.fv;\n const d = stack.pop() / 64;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"SHPIX[]\",\n pi,\n d\n );\n }\n fv.setRelative(p, p, d);\n fv.touch(p);\n }\n state.loop = 1;\n}\nfunction IP(state) {\n const stack = state.stack;\n const rp1i = state.rp1;\n const rp2i = state.rp2;\n let loop = state.loop;\n const rp1 = state.z0[rp1i];\n const rp2 = state.z1[rp2i];\n const fv = state.fv;\n const pv = state.dpv;\n const z2 = state.z2;\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"IP[]\",\n pi,\n rp1i,\n \"<->\",\n rp2i\n );\n }\n fv.interpolate(p, rp1, rp2, pv);\n fv.touch(p);\n }\n state.loop = 1;\n}\nfunction MSIRP(a, state) {\n const stack = state.stack;\n const d = stack.pop() / 64;\n const pi = stack.pop();\n const p = state.z1[pi];\n const rp0 = state.z0[state.rp0];\n const fv = state.fv;\n const pv = state.pv;\n fv.setRelative(p, rp0, d, pv);\n fv.touch(p);\n if (false) console.log(state.step, \"MSIRP[\" + a + \"]\", d, pi);\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (a) state.rp0 = pi;\n}\nfunction ALIGNRP(state) {\n const stack = state.stack;\n const rp0i = state.rp0;\n const rp0 = state.z0[rp0i];\n let loop = state.loop;\n const fv = state.fv;\n const pv = state.pv;\n const z1 = state.z1;\n while (loop--) {\n const pi = stack.pop();\n const p = z1[pi];\n if (false) {\n console.log(\n state.step,\n (state.loop > 1 ? \"loop \" + (state.loop - loop) + \": \" : \"\") + \"ALIGNRP[]\",\n pi\n );\n }\n fv.setRelative(p, rp0, 0, pv);\n fv.touch(p);\n }\n state.loop = 1;\n}\nfunction RTDG(state) {\n if (false) console.log(state.step, \"RTDG[]\");\n state.round = roundToDoubleGrid;\n}\nfunction MIAP(round, state) {\n const stack = state.stack;\n const n = stack.pop();\n const pi = stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n let cv = state.cvt[n];\n if (false) {\n console.log(\n state.step,\n \"MIAP[\" + round + \"]\",\n n,\n \"(\",\n cv,\n \")\",\n pi\n );\n }\n let d = pv.distance(p, HPZero);\n if (round) {\n if (Math.abs(d - cv) < state.cvCutIn) d = cv;\n d = state.round(d);\n }\n fv.setRelative(p, HPZero, d, pv);\n if (state.zp0 === 0) {\n p.xo = p.x;\n p.yo = p.y;\n }\n fv.touch(p);\n state.rp0 = state.rp1 = pi;\n}\nfunction NPUSHB(state) {\n const prog = state.prog;\n let ip = state.ip;\n const stack = state.stack;\n const n = prog[++ip];\n if (false) console.log(state.step, \"NPUSHB[]\", n);\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n state.ip = ip;\n}\nfunction NPUSHW(state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n const n = prog[++ip];\n if (false) console.log(state.step, \"NPUSHW[]\", n);\n for (let i = 0; i < n; i++) {\n let w = prog[++ip] << 8 | prog[++ip];\n if (w & 32768) w = -((w ^ 65535) + 1);\n stack.push(w);\n }\n state.ip = ip;\n}\nfunction WS(state) {\n const stack = state.stack;\n let store = state.store;\n if (!store) store = state.store = [];\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WS\", v, l);\n store[l] = v;\n}\nfunction RS(state) {\n const stack = state.stack;\n const store = state.store;\n const l = stack.pop();\n if (false) console.log(state.step, \"RS\", l);\n const v = store && store[l] || 0;\n stack.push(v);\n}\nfunction WCVTP(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WCVTP\", v, l);\n state.cvt[l] = v / 64;\n}\nfunction RCVT(state) {\n const stack = state.stack;\n const cvte = stack.pop();\n if (false) console.log(state.step, \"RCVT\", cvte);\n stack.push(state.cvt[cvte] * 64);\n}\nfunction GC(a, state) {\n const stack = state.stack;\n const pi = stack.pop();\n const p = state.z2[pi];\n if (false) console.log(state.step, \"GC[\" + a + \"]\", pi);\n stack.push(state.dpv.distance(p, HPZero, a, false) * 64);\n}\nfunction MD(a, state) {\n const stack = state.stack;\n const pi2 = stack.pop();\n const pi1 = stack.pop();\n const p2 = state.z1[pi2];\n const p1 = state.z0[pi1];\n const d = state.dpv.distance(p1, p2, a, a);\n if (false) console.log(state.step, \"MD[\" + a + \"]\", pi2, pi1, \"->\", d);\n state.stack.push(Math.round(d * 64));\n}\nfunction MPPEM(state) {\n if (false) console.log(state.step, \"MPPEM[]\");\n state.stack.push(state.ppem);\n}\nfunction FLIPON(state) {\n if (false) console.log(state.step, \"FLIPON[]\");\n state.autoFlip = true;\n}\nfunction LT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"LT[]\", e2, e1);\n stack.push(e1 < e2 ? 1 : 0);\n}\nfunction LTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"LTEQ[]\", e2, e1);\n stack.push(e1 <= e2 ? 1 : 0);\n}\nfunction GT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"GT[]\", e2, e1);\n stack.push(e1 > e2 ? 1 : 0);\n}\nfunction GTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"GTEQ[]\", e2, e1);\n stack.push(e1 >= e2 ? 1 : 0);\n}\nfunction EQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"EQ[]\", e2, e1);\n stack.push(e2 === e1 ? 1 : 0);\n}\nfunction NEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"NEQ[]\", e2, e1);\n stack.push(e2 !== e1 ? 1 : 0);\n}\nfunction ODD(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ODD[]\", n);\n stack.push(Math.trunc(n) & 1 ? 1 : 0);\n}\nfunction EVEN(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"EVEN[]\", n);\n stack.push(Math.trunc(n) & 1 ? 0 : 1);\n}\nfunction IF(state) {\n let test = state.stack.pop();\n let ins;\n if (false) console.log(state.step, \"IF[]\", test);\n if (!test) {\n skip(state, true);\n if (false) console.log(state.step, ins === 27 ? \"ELSE[]\" : \"EIF[]\");\n }\n}\nfunction EIF(state) {\n if (false) console.log(state.step, \"EIF[]\");\n}\nfunction AND(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"AND[]\", e2, e1);\n stack.push(e2 && e1 ? 1 : 0);\n}\nfunction OR(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"OR[]\", e2, e1);\n stack.push(e2 || e1 ? 1 : 0);\n}\nfunction NOT(state) {\n const stack = state.stack;\n const e = stack.pop();\n if (false) console.log(state.step, \"NOT[]\", e);\n stack.push(e ? 0 : 1);\n}\nfunction DELTAP123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const fv = state.fv;\n const pv = state.pv;\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n const z0 = state.z0;\n if (false) console.log(state.step, \"DELTAP[\" + b + \"]\", n, stack);\n for (let i = 0; i < n; i++) {\n const pi = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 240) >> 4);\n if (appem !== ppem) continue;\n let mag = (arg & 15) - 8;\n if (mag >= 0) mag++;\n if (false) console.log(state.step, \"DELTAPFIX\", pi, \"by\", mag * ds);\n const p = z0[pi];\n fv.setRelative(p, p, mag * ds, pv);\n }\n}\nfunction SDB(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"SDB[]\", n);\n state.deltaBase = n;\n}\nfunction SDS(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"SDS[]\", n);\n state.deltaShift = Math.pow(0.5, n);\n}\nfunction ADD(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"ADD[]\", n2, n1);\n stack.push(n1 + n2);\n}\nfunction SUB(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"SUB[]\", n2, n1);\n stack.push(n1 - n2);\n}\nfunction DIV(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"DIV[]\", n2, n1);\n stack.push(n1 * 64 / n2);\n}\nfunction MUL(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n if (false) console.log(state.step, \"MUL[]\", n2, n1);\n stack.push(n1 * n2 / 64);\n}\nfunction ABS(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ABS[]\", n);\n stack.push(Math.abs(n));\n}\nfunction NEG(state) {\n const stack = state.stack;\n let n = stack.pop();\n if (false) console.log(state.step, \"NEG[]\", n);\n stack.push(-n);\n}\nfunction FLOOR(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"FLOOR[]\", n);\n stack.push(Math.floor(n / 64) * 64);\n}\nfunction CEILING(state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"CEILING[]\", n);\n stack.push(Math.ceil(n / 64) * 64);\n}\nfunction ROUND(dt, state) {\n const stack = state.stack;\n const n = stack.pop();\n if (false) console.log(state.step, \"ROUND[]\");\n stack.push(state.round(n / 64) * 64);\n}\nfunction WCVTF(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n if (false) console.log(state.step, \"WCVTF[]\", v, l);\n state.cvt[l] = v * state.ppem / state.font.unitsPerEm;\n}\nfunction DELTAC123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n if (false) console.log(state.step, \"DELTAC[\" + b + \"]\", n, stack);\n for (let i = 0; i < n; i++) {\n const c = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 240) >> 4);\n if (appem !== ppem) continue;\n let mag = (arg & 15) - 8;\n if (mag >= 0) mag++;\n const delta = mag * ds;\n if (false) console.log(state.step, \"DELTACFIX\", c, \"by\", delta);\n state.cvt[c] += delta;\n }\n}\nfunction SROUND(state) {\n let n = state.stack.pop();\n if (false) console.log(state.step, \"SROUND[]\", n);\n state.round = roundSuper;\n let period;\n switch (n & 192) {\n case 0:\n period = 0.5;\n break;\n case 64:\n period = 1;\n break;\n case 128:\n period = 2;\n break;\n default:\n throw new Error(\"invalid SROUND value\");\n }\n state.srPeriod = period;\n switch (n & 48) {\n case 0:\n state.srPhase = 0;\n break;\n case 16:\n state.srPhase = 0.25 * period;\n break;\n case 32:\n state.srPhase = 0.5 * period;\n break;\n case 48:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error(\"invalid SROUND value\");\n }\n n &= 15;\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\nfunction S45ROUND(state) {\n let n = state.stack.pop();\n if (false) console.log(state.step, \"S45ROUND[]\", n);\n state.round = roundSuper;\n let period;\n switch (n & 192) {\n case 0:\n period = Math.sqrt(2) / 2;\n break;\n case 64:\n period = Math.sqrt(2);\n break;\n case 128:\n period = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error(\"invalid S45ROUND value\");\n }\n state.srPeriod = period;\n switch (n & 48) {\n case 0:\n state.srPhase = 0;\n break;\n case 16:\n state.srPhase = 0.25 * period;\n break;\n case 32:\n state.srPhase = 0.5 * period;\n break;\n case 48:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error(\"invalid S45ROUND value\");\n }\n n &= 15;\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\nfunction ROFF(state) {\n if (false) console.log(state.step, \"ROFF[]\");\n state.round = roundOff;\n}\nfunction RUTG(state) {\n if (false) console.log(state.step, \"RUTG[]\");\n state.round = roundUpToGrid;\n}\nfunction RDTG(state) {\n if (false) console.log(state.step, \"RDTG[]\");\n state.round = roundDownToGrid;\n}\nfunction SCANCTRL(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCANCTRL[]\", n);\n}\nfunction SDPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n if (false) console.log(state.step, \"SDPVTL[\" + a + \"]\", p2i, p1i);\n let dx;\n let dy;\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n state.dpv = getUnitVector(dx, dy);\n}\nfunction GETINFO(state) {\n const stack = state.stack;\n const sel = stack.pop();\n let r = 0;\n if (false) console.log(state.step, \"GETINFO[]\", sel);\n if (sel & 1) r = 35;\n if (sel & 32) r |= 4096;\n stack.push(r);\n}\nfunction ROLL(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n const c = stack.pop();\n if (false) console.log(state.step, \"ROLL[]\");\n stack.push(b);\n stack.push(a);\n stack.push(c);\n}\nfunction MAX(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"MAX[]\", e2, e1);\n stack.push(Math.max(e1, e2));\n}\nfunction MIN(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n if (false) console.log(state.step, \"MIN[]\", e2, e1);\n stack.push(Math.min(e1, e2));\n}\nfunction SCANTYPE(state) {\n const n = state.stack.pop();\n if (false) console.log(state.step, \"SCANTYPE[]\", n);\n}\nfunction INSTCTRL(state) {\n const s = state.stack.pop();\n let v = state.stack.pop();\n if (false) console.log(state.step, \"INSTCTRL[]\", s, v);\n switch (s) {\n case 1:\n state.inhibitGridFit = !!v;\n return;\n case 2:\n state.ignoreCvt = !!v;\n return;\n default:\n throw new Error(\"invalid INSTCTRL[] selector\");\n }\n}\nfunction PUSHB(n, state) {\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n if (false) console.log(state.step, \"PUSHB[\" + n + \"]\");\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n state.ip = ip;\n}\nfunction PUSHW(n, state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n if (false) console.log(state.ip, \"PUSHW[\" + n + \"]\");\n for (let i = 0; i < n; i++) {\n let w = prog[++ip] << 8 | prog[++ip];\n if (w & 32768) w = -((w ^ 65535) + 1);\n stack.push(w);\n }\n state.ip = ip;\n}\nfunction MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) {\n const stack = state.stack;\n const cvte = indirect && stack.pop();\n const pi = stack.pop();\n const rp0i = state.rp0;\n const rp = state.z0[rp0i];\n const p = state.z1[pi];\n const md = state.minDis;\n const fv = state.fv;\n const pv = state.dpv;\n let od;\n let d;\n let sign;\n let cv;\n d = od = pv.distance(p, rp, true, true);\n sign = d >= 0 ? 1 : -1;\n d = Math.abs(d);\n if (indirect) {\n cv = state.cvt[cvte];\n if (ro && Math.abs(d - cv) < state.cvCutIn) d = cv;\n }\n if (keepD && d < md) d = md;\n if (ro) d = state.round(d);\n fv.setRelative(p, rp, sign * d, pv);\n fv.touch(p);\n if (false) {\n console.log(\n state.step,\n (indirect ? \"MIRP[\" : \"MDRP[\") + (setRp0 ? \"M\" : \"m\") + (keepD ? \">\" : \"_\") + (ro ? \"R\" : \"_\") + (dt === 0 ? \"Gr\" : dt === 1 ? \"Bl\" : dt === 2 ? \"Wh\" : \"\") + \"]\",\n indirect ? cvte + \"(\" + state.cvt[cvte] + \",\" + cv + \")\" : \"\",\n pi,\n \"(d =\",\n od,\n \"->\",\n sign * d,\n \")\"\n );\n }\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (setRp0) state.rp0 = pi;\n}\ninstructionTable = [\n /* 0x00 */\n SVTCA.bind(void 0, yUnitVector),\n /* 0x01 */\n SVTCA.bind(void 0, xUnitVector),\n /* 0x02 */\n SPVTCA.bind(void 0, yUnitVector),\n /* 0x03 */\n SPVTCA.bind(void 0, xUnitVector),\n /* 0x04 */\n SFVTCA.bind(void 0, yUnitVector),\n /* 0x05 */\n SFVTCA.bind(void 0, xUnitVector),\n /* 0x06 */\n SPVTL.bind(void 0, 0),\n /* 0x07 */\n SPVTL.bind(void 0, 1),\n /* 0x08 */\n SFVTL.bind(void 0, 0),\n /* 0x09 */\n SFVTL.bind(void 0, 1),\n /* 0x0A */\n SPVFS,\n /* 0x0B */\n SFVFS,\n /* 0x0C */\n GPV,\n /* 0x0D */\n GFV,\n /* 0x0E */\n SFVTPV,\n /* 0x0F */\n ISECT,\n /* 0x10 */\n SRP0,\n /* 0x11 */\n SRP1,\n /* 0x12 */\n SRP2,\n /* 0x13 */\n SZP0,\n /* 0x14 */\n SZP1,\n /* 0x15 */\n SZP2,\n /* 0x16 */\n SZPS,\n /* 0x17 */\n SLOOP,\n /* 0x18 */\n RTG,\n /* 0x19 */\n RTHG,\n /* 0x1A */\n SMD,\n /* 0x1B */\n ELSE,\n /* 0x1C */\n JMPR,\n /* 0x1D */\n SCVTCI,\n /* 0x1E */\n void 0,\n // TODO SSWCI\n /* 0x1F */\n void 0,\n // TODO SSW\n /* 0x20 */\n DUP,\n /* 0x21 */\n POP,\n /* 0x22 */\n CLEAR,\n /* 0x23 */\n SWAP,\n /* 0x24 */\n DEPTH,\n /* 0x25 */\n CINDEX,\n /* 0x26 */\n MINDEX,\n /* 0x27 */\n void 0,\n // TODO ALIGNPTS\n /* 0x28 */\n void 0,\n /* 0x29 */\n void 0,\n // TODO UTP\n /* 0x2A */\n LOOPCALL,\n /* 0x2B */\n CALL,\n /* 0x2C */\n FDEF,\n /* 0x2D */\n void 0,\n // ENDF (eaten by FDEF)\n /* 0x2E */\n MDAP.bind(void 0, 0),\n /* 0x2F */\n MDAP.bind(void 0, 1),\n /* 0x30 */\n IUP.bind(void 0, yUnitVector),\n /* 0x31 */\n IUP.bind(void 0, xUnitVector),\n /* 0x32 */\n SHP.bind(void 0, 0),\n /* 0x33 */\n SHP.bind(void 0, 1),\n /* 0x34 */\n SHC.bind(void 0, 0),\n /* 0x35 */\n SHC.bind(void 0, 1),\n /* 0x36 */\n SHZ.bind(void 0, 0),\n /* 0x37 */\n SHZ.bind(void 0, 1),\n /* 0x38 */\n SHPIX,\n /* 0x39 */\n IP,\n /* 0x3A */\n MSIRP.bind(void 0, 0),\n /* 0x3B */\n MSIRP.bind(void 0, 1),\n /* 0x3C */\n ALIGNRP,\n /* 0x3D */\n RTDG,\n /* 0x3E */\n MIAP.bind(void 0, 0),\n /* 0x3F */\n MIAP.bind(void 0, 1),\n /* 0x40 */\n NPUSHB,\n /* 0x41 */\n NPUSHW,\n /* 0x42 */\n WS,\n /* 0x43 */\n RS,\n /* 0x44 */\n WCVTP,\n /* 0x45 */\n RCVT,\n /* 0x46 */\n GC.bind(void 0, 0),\n /* 0x47 */\n GC.bind(void 0, 1),\n /* 0x48 */\n void 0,\n // TODO SCFS\n /* 0x49 */\n MD.bind(void 0, 0),\n /* 0x4A */\n MD.bind(void 0, 1),\n /* 0x4B */\n MPPEM,\n /* 0x4C */\n void 0,\n // TODO MPS\n /* 0x4D */\n FLIPON,\n /* 0x4E */\n void 0,\n // TODO FLIPOFF\n /* 0x4F */\n void 0,\n // TODO DEBUG\n /* 0x50 */\n LT,\n /* 0x51 */\n LTEQ,\n /* 0x52 */\n GT,\n /* 0x53 */\n GTEQ,\n /* 0x54 */\n EQ,\n /* 0x55 */\n NEQ,\n /* 0x56 */\n ODD,\n /* 0x57 */\n EVEN,\n /* 0x58 */\n IF,\n /* 0x59 */\n EIF,\n /* 0x5A */\n AND,\n /* 0x5B */\n OR,\n /* 0x5C */\n NOT,\n /* 0x5D */\n DELTAP123.bind(void 0, 1),\n /* 0x5E */\n SDB,\n /* 0x5F */\n SDS,\n /* 0x60 */\n ADD,\n /* 0x61 */\n SUB,\n /* 0x62 */\n DIV,\n /* 0x63 */\n MUL,\n /* 0x64 */\n ABS,\n /* 0x65 */\n NEG,\n /* 0x66 */\n FLOOR,\n /* 0x67 */\n CEILING,\n /* 0x68 */\n ROUND.bind(void 0, 0),\n /* 0x69 */\n ROUND.bind(void 0, 1),\n /* 0x6A */\n ROUND.bind(void 0, 2),\n /* 0x6B */\n ROUND.bind(void 0, 3),\n /* 0x6C */\n void 0,\n // TODO NROUND[ab]\n /* 0x6D */\n void 0,\n // TODO NROUND[ab]\n /* 0x6E */\n void 0,\n // TODO NROUND[ab]\n /* 0x6F */\n void 0,\n // TODO NROUND[ab]\n /* 0x70 */\n WCVTF,\n /* 0x71 */\n DELTAP123.bind(void 0, 2),\n /* 0x72 */\n DELTAP123.bind(void 0, 3),\n /* 0x73 */\n DELTAC123.bind(void 0, 1),\n /* 0x74 */\n DELTAC123.bind(void 0, 2),\n /* 0x75 */\n DELTAC123.bind(void 0, 3),\n /* 0x76 */\n SROUND,\n /* 0x77 */\n S45ROUND,\n /* 0x78 */\n void 0,\n // TODO JROT[]\n /* 0x79 */\n void 0,\n // TODO JROF[]\n /* 0x7A */\n ROFF,\n /* 0x7B */\n void 0,\n /* 0x7C */\n RUTG,\n /* 0x7D */\n RDTG,\n /* 0x7E */\n POP,\n // actually SANGW, supposed to do only a pop though\n /* 0x7F */\n POP,\n // actually AA, supposed to do only a pop though\n /* 0x80 */\n void 0,\n // TODO FLIPPT\n /* 0x81 */\n void 0,\n // TODO FLIPRGON\n /* 0x82 */\n void 0,\n // TODO FLIPRGOFF\n /* 0x83 */\n void 0,\n /* 0x84 */\n void 0,\n /* 0x85 */\n SCANCTRL,\n /* 0x86 */\n SDPVTL.bind(void 0, 0),\n /* 0x87 */\n SDPVTL.bind(void 0, 1),\n /* 0x88 */\n GETINFO,\n /* 0x89 */\n void 0,\n // TODO IDEF\n /* 0x8A */\n ROLL,\n /* 0x8B */\n MAX,\n /* 0x8C */\n MIN,\n /* 0x8D */\n SCANTYPE,\n /* 0x8E */\n INSTCTRL,\n /* 0x8F */\n void 0,\n /* 0x90 */\n void 0,\n /* 0x91 */\n void 0,\n /* 0x92 */\n void 0,\n /* 0x93 */\n void 0,\n /* 0x94 */\n void 0,\n /* 0x95 */\n void 0,\n /* 0x96 */\n void 0,\n /* 0x97 */\n void 0,\n /* 0x98 */\n void 0,\n /* 0x99 */\n void 0,\n /* 0x9A */\n void 0,\n /* 0x9B */\n void 0,\n /* 0x9C */\n void 0,\n /* 0x9D */\n void 0,\n /* 0x9E */\n void 0,\n /* 0x9F */\n void 0,\n /* 0xA0 */\n void 0,\n /* 0xA1 */\n void 0,\n /* 0xA2 */\n void 0,\n /* 0xA3 */\n void 0,\n /* 0xA4 */\n void 0,\n /* 0xA5 */\n void 0,\n /* 0xA6 */\n void 0,\n /* 0xA7 */\n void 0,\n /* 0xA8 */\n void 0,\n /* 0xA9 */\n void 0,\n /* 0xAA */\n void 0,\n /* 0xAB */\n void 0,\n /* 0xAC */\n void 0,\n /* 0xAD */\n void 0,\n /* 0xAE */\n void 0,\n /* 0xAF */\n void 0,\n /* 0xB0 */\n PUSHB.bind(void 0, 1),\n /* 0xB1 */\n PUSHB.bind(void 0, 2),\n /* 0xB2 */\n PUSHB.bind(void 0, 3),\n /* 0xB3 */\n PUSHB.bind(void 0, 4),\n /* 0xB4 */\n PUSHB.bind(void 0, 5),\n /* 0xB5 */\n PUSHB.bind(void 0, 6),\n /* 0xB6 */\n PUSHB.bind(void 0, 7),\n /* 0xB7 */\n PUSHB.bind(void 0, 8),\n /* 0xB8 */\n PUSHW.bind(void 0, 1),\n /* 0xB9 */\n PUSHW.bind(void 0, 2),\n /* 0xBA */\n PUSHW.bind(void 0, 3),\n /* 0xBB */\n PUSHW.bind(void 0, 4),\n /* 0xBC */\n PUSHW.bind(void 0, 5),\n /* 0xBD */\n PUSHW.bind(void 0, 6),\n /* 0xBE */\n PUSHW.bind(void 0, 7),\n /* 0xBF */\n PUSHW.bind(void 0, 8),\n /* 0xC0 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 0),\n /* 0xC1 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 1),\n /* 0xC2 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 2),\n /* 0xC3 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 0, 3),\n /* 0xC4 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 0),\n /* 0xC5 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 1),\n /* 0xC6 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 2),\n /* 0xC7 */\n MDRP_MIRP.bind(void 0, 0, 0, 0, 1, 3),\n /* 0xC8 */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 0),\n /* 0xC9 */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 1),\n /* 0xCA */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 2),\n /* 0xCB */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 0, 3),\n /* 0xCC */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 0),\n /* 0xCD */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 1),\n /* 0xCE */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 2),\n /* 0xCF */\n MDRP_MIRP.bind(void 0, 0, 0, 1, 1, 3),\n /* 0xD0 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 0),\n /* 0xD1 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 1),\n /* 0xD2 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 2),\n /* 0xD3 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 0, 3),\n /* 0xD4 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 0),\n /* 0xD5 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 1),\n /* 0xD6 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 2),\n /* 0xD7 */\n MDRP_MIRP.bind(void 0, 0, 1, 0, 1, 3),\n /* 0xD8 */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 0),\n /* 0xD9 */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 1),\n /* 0xDA */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 2),\n /* 0xDB */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 0, 3),\n /* 0xDC */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 0),\n /* 0xDD */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 1),\n /* 0xDE */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 2),\n /* 0xDF */\n MDRP_MIRP.bind(void 0, 0, 1, 1, 1, 3),\n /* 0xE0 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 0),\n /* 0xE1 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 1),\n /* 0xE2 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 2),\n /* 0xE3 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 0, 3),\n /* 0xE4 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 0),\n /* 0xE5 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 1),\n /* 0xE6 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 2),\n /* 0xE7 */\n MDRP_MIRP.bind(void 0, 1, 0, 0, 1, 3),\n /* 0xE8 */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 0),\n /* 0xE9 */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 1),\n /* 0xEA */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 2),\n /* 0xEB */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 0, 3),\n /* 0xEC */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 0),\n /* 0xED */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 1),\n /* 0xEE */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 2),\n /* 0xEF */\n MDRP_MIRP.bind(void 0, 1, 0, 1, 1, 3),\n /* 0xF0 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 0),\n /* 0xF1 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 1),\n /* 0xF2 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 2),\n /* 0xF3 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 0, 3),\n /* 0xF4 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 0),\n /* 0xF5 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 1),\n /* 0xF6 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 2),\n /* 0xF7 */\n MDRP_MIRP.bind(void 0, 1, 1, 0, 1, 3),\n /* 0xF8 */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 0),\n /* 0xF9 */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 1),\n /* 0xFA */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 2),\n /* 0xFB */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 0, 3),\n /* 0xFC */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 0),\n /* 0xFD */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 1),\n /* 0xFE */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 2),\n /* 0xFF */\n MDRP_MIRP.bind(void 0, 1, 1, 1, 1, 3)\n];\nvar hintingtt_default = Hinting;\n\n// src/tokenizer.mjs\nfunction Token(char) {\n this.char = char;\n this.state = {};\n this.activeState = null;\n}\nfunction ContextRange(startIndex, endOffset, contextName) {\n this.contextName = contextName;\n this.startIndex = startIndex;\n this.endOffset = endOffset;\n}\nfunction ContextChecker(contextName, checkStart, checkEnd) {\n this.contextName = contextName;\n this.openRange = null;\n this.ranges = [];\n this.checkStart = checkStart;\n this.checkEnd = checkEnd;\n}\nfunction ContextParams(context, currentIndex) {\n this.context = context;\n this.index = currentIndex;\n this.length = context.length;\n this.current = context[currentIndex];\n this.backtrack = context.slice(0, currentIndex);\n this.lookahead = context.slice(currentIndex + 1);\n}\nfunction Event(eventId) {\n this.eventId = eventId;\n this.subscribers = [];\n}\nfunction initializeCoreEvents(events) {\n const coreEvents = [\n \"start\",\n \"end\",\n \"next\",\n \"newToken\",\n \"contextStart\",\n \"contextEnd\",\n \"insertToken\",\n \"removeToken\",\n \"removeRange\",\n \"replaceToken\",\n \"replaceRange\",\n \"composeRUD\",\n \"updateContextsRanges\"\n ];\n for (let i = 0; i < coreEvents.length; i++) {\n const eventId = coreEvents[i];\n Object.defineProperty(this.events, eventId, {\n value: new Event(eventId)\n });\n }\n if (events) {\n for (let i = 0; i < coreEvents.length; i++) {\n const eventId = coreEvents[i];\n const event = events[eventId];\n if (typeof event === \"function\") {\n this.events[eventId].subscribe(event);\n }\n }\n }\n const requiresContextUpdate = [\n \"insertToken\",\n \"removeToken\",\n \"removeRange\",\n \"replaceToken\",\n \"replaceRange\",\n \"composeRUD\"\n ];\n for (let i = 0; i < requiresContextUpdate.length; i++) {\n const eventId = requiresContextUpdate[i];\n this.events[eventId].subscribe(\n this.updateContextsRanges\n );\n }\n}\nfunction Tokenizer(events) {\n this.tokens = [];\n this.registeredContexts = {};\n this.contextCheckers = [];\n this.events = {};\n this.registeredModifiers = [];\n initializeCoreEvents.call(this, events);\n}\nToken.prototype.setState = function(key, value) {\n this.state[key] = value;\n this.activeState = { key, value: this.state[key] };\n return this.activeState;\n};\nToken.prototype.getState = function(stateId) {\n return this.state[stateId] || null;\n};\nTokenizer.prototype.inboundIndex = function(index) {\n return index >= 0 && index < this.tokens.length;\n};\nTokenizer.prototype.composeRUD = function(RUDs) {\n const silent = true;\n const state = RUDs.map((RUD) => this[RUD[0]].apply(this, RUD.slice(1).concat(silent)));\n const hasFAILObject = (obj) => typeof obj === \"object\" && Object.prototype.hasOwnProperty.call(obj, \"FAIL\");\n if (state.every(hasFAILObject)) {\n return {\n FAIL: \"composeRUD: one or more operations hasn't completed successfully\",\n report: state.filter(hasFAILObject)\n };\n }\n this.dispatch(\"composeRUD\", [state.filter((op) => !hasFAILObject(op))]);\n};\nTokenizer.prototype.replaceRange = function(startIndex, offset, tokens, silent) {\n offset = offset !== null ? offset : this.tokens.length;\n const isTokenType = tokens.every((token) => token instanceof Token);\n if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {\n const replaced = this.tokens.splice.apply(\n this.tokens,\n [startIndex, offset].concat(tokens)\n );\n if (!silent) this.dispatch(\"replaceToken\", [startIndex, offset, tokens]);\n return [replaced, tokens];\n } else {\n return { FAIL: \"replaceRange: invalid tokens or startIndex.\" };\n }\n};\nTokenizer.prototype.replaceToken = function(index, token, silent) {\n if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) {\n const replaced = this.tokens.splice(index, 1, token);\n if (!silent) this.dispatch(\"replaceToken\", [index, token]);\n return [replaced[0], token];\n } else {\n return { FAIL: \"replaceToken: invalid token or index.\" };\n }\n};\nTokenizer.prototype.removeRange = function(startIndex, offset, silent) {\n offset = !isNaN(offset) ? offset : this.tokens.length;\n const tokens = this.tokens.splice(startIndex, offset);\n if (!silent) this.dispatch(\"removeRange\", [tokens, startIndex, offset]);\n return tokens;\n};\nTokenizer.prototype.removeToken = function(index, silent) {\n if (!isNaN(index) && this.inboundIndex(index)) {\n const token = this.tokens.splice(index, 1);\n if (!silent) this.dispatch(\"removeToken\", [token, index]);\n return token;\n } else {\n return { FAIL: \"removeToken: invalid token index.\" };\n }\n};\nTokenizer.prototype.insertToken = function(tokens, index, silent) {\n const tokenType = tokens.every(\n (token) => token instanceof Token\n );\n if (tokenType) {\n this.tokens.splice.apply(\n this.tokens,\n [index, 0].concat(tokens)\n );\n if (!silent) this.dispatch(\"insertToken\", [tokens, index]);\n return tokens;\n } else {\n return { FAIL: \"insertToken: invalid token(s).\" };\n }\n};\nTokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.events.newToken.subscribe(function(token, contextParams) {\n const conditionParams = [token, contextParams];\n const canApplyModifier = condition === null || condition.apply(this, conditionParams) === true;\n const modifierParams = [token, contextParams];\n if (canApplyModifier) {\n let newStateValue = modifier.apply(this, modifierParams);\n token.setState(modifierId, newStateValue);\n }\n });\n this.registeredModifiers.push(modifierId);\n};\nEvent.prototype.subscribe = function(eventHandler) {\n if (typeof eventHandler === \"function\") {\n return this.subscribers.push(eventHandler) - 1;\n } else {\n return { FAIL: `invalid '${this.eventId}' event handler` };\n }\n};\nEvent.prototype.unsubscribe = function(subsId) {\n this.subscribers.splice(subsId, 1);\n};\nContextParams.prototype.setCurrentIndex = function(index) {\n this.index = index;\n this.current = this.context[index];\n this.backtrack = this.context.slice(0, index);\n this.lookahead = this.context.slice(index + 1);\n};\nContextParams.prototype.get = function(offset) {\n switch (true) {\n case offset === 0:\n return this.current;\n case (offset < 0 && Math.abs(offset) <= this.backtrack.length):\n return this.backtrack.slice(offset)[0];\n case (offset > 0 && offset <= this.lookahead.length):\n return this.lookahead[offset - 1];\n default:\n return null;\n }\n};\nTokenizer.prototype.rangeToText = function(range) {\n if (range instanceof ContextRange) {\n return this.getRangeTokens(range).map((token) => token.char).join(\"\");\n }\n};\nTokenizer.prototype.getText = function() {\n return this.tokens.map((token) => token.char).join(\"\");\n};\nTokenizer.prototype.getContext = function(contextName) {\n let context = this.registeredContexts[contextName];\n return context ? context : null;\n};\nTokenizer.prototype.on = function(eventName, eventHandler) {\n const event = this.events[eventName];\n if (event) {\n return event.subscribe(eventHandler);\n } else {\n return null;\n }\n};\nTokenizer.prototype.dispatch = function(eventName, args) {\n const event = this.events[eventName];\n if (event instanceof Event) {\n for (let i = 0; i < event.subscribers.length; i++) {\n const subscriber = event.subscribers[i];\n subscriber.apply(this, args || []);\n }\n }\n};\nTokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {\n if (this.getContext(contextName)) return {\n FAIL: `context name '${contextName}' is already registered.`\n };\n if (typeof contextStartCheck !== \"function\") return {\n FAIL: \"missing context start check.\"\n };\n if (typeof contextEndCheck !== \"function\") return {\n FAIL: \"missing context end check.\"\n };\n const contextCheckers = new ContextChecker(\n contextName,\n contextStartCheck,\n contextEndCheck\n );\n this.registeredContexts[contextName] = contextCheckers;\n this.contextCheckers.push(contextCheckers);\n return contextCheckers;\n};\nTokenizer.prototype.getRangeTokens = function(range) {\n const endIndex = range.startIndex + range.endOffset;\n return [].concat(\n this.tokens.slice(range.startIndex, endIndex)\n );\n};\nTokenizer.prototype.getContextRanges = function(contextName) {\n const context = this.getContext(contextName);\n if (context) {\n return context.ranges;\n } else {\n return { FAIL: `context checker '${contextName}' is not registered.` };\n }\n};\nTokenizer.prototype.resetContextsRanges = function() {\n const registeredContexts = this.registeredContexts;\n for (const contextName in registeredContexts) {\n if (Object.prototype.hasOwnProperty.call(registeredContexts, contextName)) {\n const context = registeredContexts[contextName];\n context.ranges = [];\n }\n }\n};\nTokenizer.prototype.updateContextsRanges = function() {\n this.resetContextsRanges();\n const chars = this.tokens.map((token) => token.char);\n for (let i = 0; i < chars.length; i++) {\n const contextParams = new ContextParams(chars, i);\n this.runContextCheck(contextParams);\n }\n this.dispatch(\"updateContextsRanges\", [this.registeredContexts]);\n};\nTokenizer.prototype.setEndOffset = function(offset, contextName) {\n const startIndex = this.getContext(contextName).openRange.startIndex;\n let range = new ContextRange(startIndex, offset, contextName);\n const ranges = this.getContext(contextName).ranges;\n range.rangeId = `${contextName}.${ranges.length}`;\n ranges.push(range);\n this.getContext(contextName).openRange = null;\n return range;\n};\nTokenizer.prototype.runContextCheck = function(contextParams) {\n const index = contextParams.index;\n for (let i = 0; i < this.contextCheckers.length; i++) {\n const contextChecker = this.contextCheckers[i];\n let contextName = contextChecker.contextName;\n let openRange = this.getContext(contextName).openRange;\n if (!openRange && contextChecker.checkStart(contextParams)) {\n openRange = new ContextRange(index, null, contextName);\n this.getContext(contextName).openRange = openRange;\n this.dispatch(\"contextStart\", [contextName, index]);\n }\n if (!!openRange && contextChecker.checkEnd(contextParams)) {\n const offset = index - openRange.startIndex + 1;\n const range = this.setEndOffset(offset, contextName);\n this.dispatch(\"contextEnd\", [contextName, range]);\n }\n }\n};\nTokenizer.prototype.tokenize = function(text) {\n this.tokens = [];\n this.resetContextsRanges();\n let chars = Array.from(text);\n this.dispatch(\"start\");\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const contextParams = new ContextParams(chars, i);\n this.dispatch(\"next\", [contextParams]);\n this.runContextCheck(contextParams);\n let token = new Token(char);\n this.tokens.push(token);\n this.dispatch(\"newToken\", [token, contextParams]);\n }\n this.dispatch(\"end\", [this.tokens]);\n return this.tokens;\n};\nvar tokenizer_default = Tokenizer;\n\n// src/char.mjs\nfunction isArabicChar(c) {\n return /[\\u0600-\\u065F\\u066A-\\u06D2\\u06FA-\\u06FF]/.test(c);\n}\nfunction isIsolatedArabicChar(char) {\n return /[\\u0630\\u0690\\u0621\\u0631\\u0661\\u0671\\u0622\\u0632\\u0672\\u0692\\u06C2\\u0623\\u0673\\u0693\\u06C3\\u0624\\u0694\\u06C4\\u0625\\u0675\\u0695\\u06C5\\u06E5\\u0676\\u0696\\u06C6\\u0627\\u0677\\u0697\\u06C7\\u0648\\u0688\\u0698\\u06C8\\u0689\\u0699\\u06C9\\u068A\\u06CA\\u066B\\u068B\\u06CB\\u068C\\u068D\\u06CD\\u06FD\\u068E\\u06EE\\u06FE\\u062F\\u068F\\u06CF\\u06EF]/.test(char);\n}\nfunction isTashkeelArabicChar(char) {\n return /[\\u0600-\\u0605\\u060C-\\u060E\\u0610-\\u061B\\u061E\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]/.test(char);\n}\nfunction isThaiChar(c) {\n return /[\\u0E00-\\u0E7F]/.test(c);\n}\nfunction isLatinChar(c) {\n return /[A-z]/.test(c);\n}\nfunction isWhiteSpace(c) {\n return /\\s/.test(c);\n}\n\n// src/features/featureQuery.mjs\nfunction FeatureQuery(font) {\n this.font = font;\n this.features = {};\n}\nfunction SubstitutionAction(action) {\n this.id = action.id;\n this.tag = action.tag;\n this.substitution = action.substitution;\n}\nfunction lookupCoverage(glyphIndex, coverage) {\n if (!glyphIndex) return -1;\n switch (coverage.format) {\n case 1:\n return coverage.glyphs.indexOf(glyphIndex);\n case 2: {\n let ranges = coverage.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (glyphIndex >= range.start && glyphIndex <= range.end) {\n let offset = glyphIndex - range.start;\n return range.index + offset;\n }\n }\n break;\n }\n default:\n return -1;\n }\n return -1;\n}\nfunction singleSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return glyphIndex + subtable.deltaGlyphId;\n}\nfunction singleSubstitutionFormat2(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.substitute[substituteIndex];\n}\nfunction lookupCoverageList(coverageList, contextParams) {\n let lookupList = [];\n for (let i = 0; i < coverageList.length; i++) {\n const coverage = coverageList[i];\n let glyphIndex = contextParams.current;\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n const lookupIndex = lookupCoverage(glyphIndex, coverage);\n if (lookupIndex !== -1) {\n lookupList.push(lookupIndex);\n }\n }\n if (lookupList.length !== coverageList.length) return -1;\n return lookupList;\n}\nfunction chainingSubstitutionFormat3(contextParams, subtable) {\n const lookupsCount = subtable.inputCoverage.length + subtable.lookaheadCoverage.length + subtable.backtrackCoverage.length;\n if (contextParams.context.length < lookupsCount) return [];\n let inputLookups = lookupCoverageList(\n subtable.inputCoverage,\n contextParams\n );\n if (inputLookups === -1) return [];\n const lookaheadOffset = subtable.inputCoverage.length - 1;\n if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) return [];\n let lookaheadContext = contextParams.lookahead.slice(lookaheadOffset);\n while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) {\n lookaheadContext.shift();\n }\n const lookaheadParams = new ContextParams(lookaheadContext, 0);\n let lookaheadLookups = lookupCoverageList(\n subtable.lookaheadCoverage,\n lookaheadParams\n );\n let backtrackContext = [].concat(contextParams.backtrack);\n backtrackContext.reverse();\n while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) {\n backtrackContext.shift();\n }\n if (backtrackContext.length < subtable.backtrackCoverage.length) return [];\n const backtrackParams = new ContextParams(backtrackContext, 0);\n let backtrackLookups = lookupCoverageList(\n subtable.backtrackCoverage,\n backtrackParams\n );\n const contextRulesMatch = inputLookups.length === subtable.inputCoverage.length && lookaheadLookups.length === subtable.lookaheadCoverage.length && backtrackLookups.length === subtable.backtrackCoverage.length;\n let substitutions = [];\n if (contextRulesMatch) {\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n let subtable2 = lookupTable.subtables[s];\n let lookup;\n let substitutionType = this.getSubstitutionType(lookupTable, subtable2);\n if (substitutionType === \"71\") {\n substitutionType = this.getSubstitutionType(subtable2, subtable2.extension);\n lookup = this.getLookupMethod(subtable2, subtable2.extension);\n subtable2 = subtable2.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable2);\n }\n if (substitutionType === \"12\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else if (substitutionType === \"21\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else {\n throw new Error(`Substitution type ${substitutionType} is not supported in chaining substitution`);\n }\n }\n }\n }\n return substitutions;\n}\nfunction ligatureSubstitutionFormat1(contextParams, subtable) {\n let glyphIndex = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (ligSetIndex === -1) return null;\n let ligature;\n let ligatureSet = subtable.ligatureSets[ligSetIndex];\n for (let s = 0; s < ligatureSet.length; s++) {\n ligature = ligatureSet[s];\n for (let l = 0; l < ligature.components.length; l++) {\n const lookaheadItem = contextParams.lookahead[l];\n const component = ligature.components[l];\n if (lookaheadItem !== component) break;\n if (l === ligature.components.length - 1) return ligature;\n }\n }\n return null;\n}\nfunction contextSubstitutionFormat1(contextParams, subtable) {\n let glyphId = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphId, subtable.coverage);\n if (ligSetIndex === -1)\n return null;\n for (const ruleSet of subtable.ruleSets) {\n for (const rule of ruleSet) {\n let matched = true;\n for (let i = 0; i < rule.input.length; i++) {\n if (contextParams.lookahead[i] !== rule.input[i]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n let substitutions = [];\n substitutions.push(glyphId);\n for (let i = 0; i < rule.input.length; i++) {\n substitutions.push(rule.input[i]);\n }\n const parser = (substitutions2, lookupRecord) => {\n const { lookupListIndex, sequenceIndex } = lookupRecord;\n const { subtables } = this.getLookupByIndex(lookupListIndex);\n for (const subtable2 of subtables) {\n let ligSetIndex2 = lookupCoverage(substitutions2[sequenceIndex], subtable2.coverage);\n if (ligSetIndex2 !== -1) {\n substitutions2[sequenceIndex] = subtable2.deltaGlyphId;\n }\n }\n };\n for (let i = 0; i < rule.lookupRecords.length; i++) {\n const lookupRecord = rule.lookupRecords[i];\n parser(substitutions, lookupRecord);\n }\n return substitutions;\n }\n }\n }\n return null;\n}\nfunction contextSubstitutionFormat3(contextParams, subtable) {\n if (contextParams.context.length < subtable.coverages.length) {\n return [];\n }\n for (let i = 0; i < subtable.coverages.length; i++) {\n let glyphIndex = contextParams.get(i);\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n if (lookupCoverage(glyphIndex, subtable.coverages[i]) === -1) {\n return [];\n }\n }\n let substitutions = [];\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n let subtable2 = lookupTable.subtables[s];\n let lookup;\n let substitutionType = this.getSubstitutionType(lookupTable, subtable2);\n if (substitutionType === \"71\") {\n substitutionType = this.getSubstitutionType(subtable2, subtable2.extension);\n lookup = this.getLookupMethod(subtable2, subtable2.extension);\n subtable2 = subtable2.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable2);\n }\n if (substitutionType === \"12\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n } else if (substitutionType === \"21\") {\n const glyphIndex = contextParams.get(lookupRecord.sequenceIndex);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n }\n }\n }\n return substitutions;\n}\nfunction decompositionSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.sequences[substituteIndex];\n}\nFeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function() {\n const scripts = this.font.tables.gsub.scripts;\n for (let s = 0; s < scripts.length; s++) {\n const script = scripts[s];\n if (script.tag === \"DFLT\") return script.script.defaultLangSys.featureIndexes;\n }\n return [];\n};\nFeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {\n const tables = this.font.tables;\n if (!tables.gsub) return [];\n if (!scriptTag) return this.getDefaultScriptFeaturesIndexes();\n const scripts = this.font.tables.gsub.scripts;\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.tag === scriptTag && script.script.defaultLangSys) {\n return script.script.defaultLangSys.featureIndexes;\n } else {\n let langSysRecords = script.langSysRecords;\n if (langSysRecords) {\n for (let j = 0; j < langSysRecords.length; j++) {\n const langSysRecord = langSysRecords[j];\n if (langSysRecord.tag === scriptTag) {\n let langSys = langSysRecord.langSys;\n return langSys.featureIndexes;\n }\n }\n }\n }\n }\n return this.getDefaultScriptFeaturesIndexes();\n};\nFeatureQuery.prototype.mapTagsToFeatures = function(features, scriptTag) {\n let tags = {};\n for (let i = 0; i < features.length; i++) {\n const tag = features[i].tag;\n const feature = features[i].feature;\n tags[tag] = feature;\n }\n this.features[scriptTag].tags = tags;\n};\nFeatureQuery.prototype.getScriptFeatures = function(scriptTag) {\n let features = this.features[scriptTag];\n if (Object.prototype.hasOwnProperty.call(this.features, scriptTag)) return features;\n const featuresIndexes = this.getScriptFeaturesIndexes(scriptTag);\n if (!featuresIndexes) return null;\n const gsub = this.font.tables.gsub;\n features = featuresIndexes.map((index) => gsub.features[index]);\n this.features[scriptTag] = features;\n this.mapTagsToFeatures(features, scriptTag);\n return features;\n};\nFeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {\n const lookupType = lookupTable.lookupType.toString();\n const substFormat = subtable.substFormat.toString();\n return lookupType + substFormat;\n};\nFeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {\n let substitutionType = this.getSubstitutionType(lookupTable, subtable);\n switch (substitutionType) {\n case \"11\":\n return (glyphIndex) => singleSubstitutionFormat1.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"12\":\n return (glyphIndex) => singleSubstitutionFormat2.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"63\":\n return (contextParams) => chainingSubstitutionFormat3.apply(\n this,\n [contextParams, subtable]\n );\n case \"41\":\n return (contextParams) => ligatureSubstitutionFormat1.apply(\n this,\n [contextParams, subtable]\n );\n case \"21\":\n return (glyphIndex) => decompositionSubstitutionFormat1.apply(\n this,\n [glyphIndex, subtable]\n );\n case \"51\":\n return (contextParams) => contextSubstitutionFormat1.apply(\n this,\n [contextParams, subtable]\n );\n case \"53\":\n return (contextParams) => contextSubstitutionFormat3.apply(\n this,\n [contextParams, subtable]\n );\n default:\n throw new Error(\n `substitutionType : ${substitutionType} lookupType: ${lookupTable.lookupType} - substFormat: ${subtable.substFormat} is not yet supported`\n );\n }\n};\nFeatureQuery.prototype.lookupFeature = function(query) {\n let contextParams = query.contextParams;\n let currentIndex = contextParams.index;\n const feature = this.getFeature({\n tag: query.tag,\n script: query.script\n });\n if (!feature) return new Error(\n `font '${(this.font.names.unicode || this.font.names.windows || this.font.names.macintosh).fullName.en}' doesn't support feature '${query.tag}' for script '${query.script}'.`\n );\n const lookups = this.getFeatureLookups(feature);\n const substitutions = [].concat(contextParams.context);\n for (let l = 0; l < lookups.length; l++) {\n const lookupTable = lookups[l];\n const subtables = this.getLookupSubtables(lookupTable);\n for (let s = 0; s < subtables.length; s++) {\n let subtable = subtables[s];\n let substType = this.getSubstitutionType(lookupTable, subtable);\n let lookup;\n if (substType === \"71\") {\n substType = this.getSubstitutionType(subtable, subtable.extension);\n lookup = this.getLookupMethod(subtable, subtable.extension);\n subtable = subtable.extension;\n } else {\n lookup = this.getLookupMethod(lookupTable, subtable);\n }\n let substitution;\n switch (substType) {\n case \"11\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 11,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"12\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 12,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"63\":\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 63,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"41\":\n substitution = lookup(contextParams);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 41,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"21\":\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 21,\n tag: query.tag,\n substitution\n }));\n }\n break;\n case \"51\":\n case \"53\":\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: parseInt(substType),\n tag: query.tag,\n substitution\n }));\n }\n break;\n }\n contextParams = new ContextParams(substitutions, currentIndex);\n if (Array.isArray(substitution) && !substitution.length) continue;\n substitution = null;\n }\n }\n return substitutions.length ? substitutions : null;\n};\nFeatureQuery.prototype.supports = function(query) {\n if (!query.script) return false;\n this.getScriptFeatures(query.script);\n const supportedScript = Object.prototype.hasOwnProperty.call(this.features, query.script);\n if (!query.tag) return supportedScript;\n const supportedFeature = this.features[query.script].some((feature) => feature.tag === query.tag);\n return supportedScript && supportedFeature;\n};\nFeatureQuery.prototype.getLookupSubtables = function(lookupTable) {\n return lookupTable.subtables || null;\n};\nFeatureQuery.prototype.getLookupByIndex = function(index) {\n const lookups = this.font.tables.gsub.lookups;\n return lookups[index] || null;\n};\nFeatureQuery.prototype.getFeatureLookups = function(feature) {\n return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));\n};\nFeatureQuery.prototype.getFeature = function getFeature(query) {\n if (!this.font) return { FAIL: \"No font was found\" };\n if (!Object.prototype.hasOwnProperty.call(this.features, query.script)) {\n this.getScriptFeatures(query.script);\n }\n const scriptFeatures = this.features[query.script];\n if (!scriptFeatures) return { FAIL: `No feature for script ${query.script}` };\n if (!scriptFeatures.tags[query.tag]) return null;\n return this.features[query.script].tags[query.tag];\n};\nvar featureQuery_default = FeatureQuery;\n\n// src/features/arab/contextCheck/arabicWord.mjs\nfunction arabicWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? arabic first char\n prevChar === null && isArabicChar(char) || // ? arabic char preceded with a non arabic char\n !isArabicChar(prevChar) && isArabicChar(char)\n );\n}\nfunction arabicWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last arabic char\n nextChar === null || // ? next char is not arabic\n !isArabicChar(nextChar)\n );\n}\nvar arabicWord_default = {\n startCheck: arabicWordStartCheck,\n endCheck: arabicWordEndCheck\n};\n\n// src/features/arab/contextCheck/arabicSentence.mjs\nfunction arabicSentenceStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? an arabic char preceded with a non arabic char\n (isArabicChar(char) || isTashkeelArabicChar(char)) && !isArabicChar(prevChar)\n );\n}\nfunction arabicSentenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n switch (true) {\n case nextChar === null:\n return true;\n case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)): {\n const nextIsWhitespace = isWhiteSpace(nextChar);\n if (!nextIsWhitespace) return true;\n if (nextIsWhitespace) {\n let arabicCharAhead = false;\n arabicCharAhead = contextParams.lookahead.some(\n (c) => isArabicChar(c) || isTashkeelArabicChar(c)\n );\n if (!arabicCharAhead) return true;\n }\n break;\n }\n default:\n return false;\n }\n}\nvar arabicSentence_default = {\n startCheck: arabicSentenceStartCheck,\n endCheck: arabicSentenceEndCheck\n};\n\n// src/features/applySubstitution.mjs\nfunction singleSubstitutionFormat12(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\nfunction singleSubstitutionFormat22(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\nfunction chainingSubstitutionFormat32(action, tokens, index) {\n for (let i = 0; i < action.substitution.length; i++) {\n const subst = action.substitution[i];\n const token = tokens[index + i];\n if (Array.isArray(subst)) {\n if (subst.length) {\n token.setState(action.tag, subst[0]);\n } else {\n token.setState(\"deleted\", true);\n }\n continue;\n }\n token.setState(action.tag, subst);\n }\n}\nfunction ligatureSubstitutionFormat12(action, tokens, index) {\n let token = tokens[index];\n token.setState(action.tag, action.substitution.ligGlyph);\n const compsCount = action.substitution.components.length;\n for (let i = 0; i < compsCount; i++) {\n token = tokens[index + i + 1];\n token.setState(\"deleted\", true);\n }\n}\nvar SUBSTITUTIONS = {\n 11: singleSubstitutionFormat12,\n 12: singleSubstitutionFormat22,\n 63: chainingSubstitutionFormat32,\n 41: ligatureSubstitutionFormat12,\n 51: chainingSubstitutionFormat32,\n 53: chainingSubstitutionFormat32\n};\nfunction applySubstitution(action, tokens, index) {\n if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) {\n SUBSTITUTIONS[action.id](action, tokens, index);\n }\n}\nvar applySubstitution_default = applySubstitution;\n\n// src/features/arab/arabicPresentationForms.mjs\nfunction willConnectPrev(charContextParams) {\n let backtrack = [].concat(charContextParams.backtrack);\n for (let i = backtrack.length - 1; i >= 0; i--) {\n const prevChar = backtrack[i];\n const isolated = isIsolatedArabicChar(prevChar);\n const tashkeel = isTashkeelArabicChar(prevChar);\n if (!isolated && !tashkeel) return true;\n if (isolated) return false;\n }\n return false;\n}\nfunction willConnectNext(charContextParams) {\n if (isIsolatedArabicChar(charContextParams.current)) return false;\n for (let i = 0; i < charContextParams.lookahead.length; i++) {\n const nextChar = charContextParams.lookahead[i];\n const tashkeel = isTashkeelArabicChar(nextChar);\n if (!tashkeel) return true;\n }\n return false;\n}\nfunction arabicPresentationForms(range) {\n const script = \"arab\";\n const tags = this.featuresTags[script];\n const tokens = this.tokenizer.getRangeTokens(range);\n if (tokens.length === 1) return;\n let contextParams = new ContextParams(\n tokens.map(\n (token) => token.getState(\"glyphIndex\")\n ),\n 0\n );\n const charContextParams = new ContextParams(\n tokens.map(\n (token) => token.char\n ),\n 0\n );\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (isTashkeelArabicChar(token.char)) continue;\n contextParams.setCurrentIndex(i);\n charContextParams.setCurrentIndex(i);\n let CONNECT = 0;\n if (willConnectPrev(charContextParams)) CONNECT |= 1;\n if (willConnectNext(charContextParams)) CONNECT |= 2;\n let tag;\n switch (CONNECT) {\n case 1:\n tag = \"fina\";\n break;\n case 2:\n tag = \"init\";\n break;\n case 3:\n tag = \"medi\";\n break;\n }\n if (tags.indexOf(tag) === -1) continue;\n let substitutions = this.query.lookupFeature({\n tag,\n script,\n contextParams\n });\n if (substitutions instanceof Error) {\n console.info(substitutions.message);\n continue;\n }\n for (let j = 0; j < substitutions.length; j++) {\n const action = substitutions[j];\n if (action instanceof SubstitutionAction) {\n applySubstitution_default(action, tokens, j);\n contextParams.context[j] = action.substitution;\n }\n }\n }\n}\nvar arabicPresentationForms_default = arabicPresentationForms;\n\n// src/features/arab/arabicRequiredLigatures.mjs\nfunction getContextParams(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction arabicRequiredLigatures(range) {\n const script = \"arab\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"rlig\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams(tokens);\n }\n }\n}\nvar arabicRequiredLigatures_default = arabicRequiredLigatures;\n\n// src/features/ccmp/contextCheck/ccmpReplacement.mjs\nfunction ccmpReplacementStartCheck(contextParams) {\n return contextParams.index === 0 && contextParams.context.length > 1;\n}\nfunction ccmpReplacementEndCheck(contextParams) {\n return contextParams.index === contextParams.context.length - 1;\n}\nvar ccmpReplacement_default = {\n startCheck: ccmpReplacementStartCheck,\n endCheck: ccmpReplacementEndCheck\n};\n\n// src/features/ccmp/ccmpReplacementLigatures.mjs\nfunction getContextParams2(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction ccmpReplacementLigatures(range) {\n const script = \"delf\";\n const tag = \"ccmp\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams2(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n if (!this.query.getFeature({ tag, script, contextParams })) {\n continue;\n }\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag,\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams2(tokens);\n }\n }\n}\nvar ccmpReplacementLigatures_default = ccmpReplacementLigatures;\n\n// src/features/latn/contextCheck/latinWord.mjs\nfunction latinWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? latin first char\n prevChar === null && isLatinChar(char) || // ? latin char preceded with a non latin char\n !isLatinChar(prevChar) && isLatinChar(char)\n );\n}\nfunction latinWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last latin char\n nextChar === null || // ? next char is not latin\n !isLatinChar(nextChar)\n );\n}\nvar latinWord_default = {\n startCheck: latinWordStartCheck,\n endCheck: latinWordEndCheck\n};\n\n// src/features/latn/latinLigatures.mjs\nfunction getContextParams3(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction latinLigature(range) {\n const script = \"latn\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams3(tokens);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"liga\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams3(tokens);\n }\n }\n}\nvar latinLigatures_default = latinLigature;\n\n// src/features/thai/contextCheck/thaiWord.mjs\nfunction thaiWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? thai first char\n prevChar === null && isThaiChar(char) || // ? thai char preceded with a non thai char\n !isThaiChar(prevChar) && isThaiChar(char)\n );\n}\nfunction thaiWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last thai char\n nextChar === null || // ? next char is not thai\n !isThaiChar(nextChar)\n );\n}\nvar thaiWord_default = {\n startCheck: thaiWordStartCheck,\n endCheck: thaiWordEndCheck\n};\n\n// src/features/thai/thaiGlyphComposition.mjs\nfunction getContextParams4(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction thaiGlyphComposition(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams4(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"ccmp\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams4(tokens, index);\n }\n }\n}\nvar thaiGlyphComposition_default = thaiGlyphComposition;\n\n// src/features/thai/thaiLigatures.mjs\nfunction getContextParams5(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction thaiLigatures(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams5(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"liga\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams5(tokens, index);\n }\n }\n}\nvar thaiLigatures_default = thaiLigatures;\n\n// src/features/thai/thaiRequiredLigatures.mjs\nfunction getContextParams6(tokens, index) {\n const context = tokens.map((token) => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\nfunction thaiRequiredLigatures(range) {\n const script = \"thai\";\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams6(tokens, 0);\n for (let index = 0; index < contextParams.context.length; index++) {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: \"rlig\",\n script,\n contextParams\n });\n if (substitutions.length) {\n for (let i = 0; i < substitutions.length; i++) {\n const action = substitutions[i];\n applySubstitution_default(action, tokens, index);\n }\n contextParams = getContextParams6(tokens, index);\n }\n }\n}\nvar thaiRequiredLigatures_default = thaiRequiredLigatures;\n\n// src/features/unicode/contextCheck/variationSequenceCheck.mjs\nfunction isVariationSequenceSelector(char) {\n if (char === null) return false;\n const charCode = char.codePointAt(0);\n return (\n // Mongolian Variation Selectors\n charCode >= 6155 && charCode <= 6157 || // Generic Variation Selectors\n charCode >= 65024 && charCode <= 65039 || // Ideographic Variation Sequences\n charCode >= 917760 && charCode <= 917999\n );\n}\nfunction unicodeVariationSequenceStartCheck(contextParams) {\n const char = contextParams.current;\n const nextChar = contextParams.get(1);\n return nextChar === null && isVariationSequenceSelector(char) || isVariationSequenceSelector(nextChar);\n}\nfunction unicodeVariationSequenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return nextChar === null || !isVariationSequenceSelector(nextChar);\n}\nvar variationSequenceCheck_default = {\n startCheck: unicodeVariationSequenceStartCheck,\n endCheck: unicodeVariationSequenceEndCheck\n};\n\n// src/features/unicode/variationSequences.mjs\nfunction unicodeVariationSequence(range) {\n const font = this.query.font;\n const tokens = this.tokenizer.getRangeTokens(range);\n tokens[1].setState(\"deleted\", true);\n if (font.tables.cmap && font.tables.cmap.varSelectorList) {\n const baseCodePoint = tokens[0].char.codePointAt(0);\n const vsCodePoint = tokens[1].char.codePointAt(0);\n const selectorLookup = font.tables.cmap.varSelectorList[vsCodePoint];\n if (selectorLookup !== void 0) {\n if (selectorLookup.nonDefaultUVS) {\n const mappings = selectorLookup.nonDefaultUVS.uvsMappings;\n if (mappings[baseCodePoint]) {\n const replacementGlyphId = mappings[baseCodePoint].glyphID;\n if (font.glyphs.glyphs[replacementGlyphId] !== void 0) {\n tokens[0].setState(\"glyphIndex\", replacementGlyphId);\n }\n }\n }\n }\n }\n}\nvar variationSequences_default = unicodeVariationSequence;\n\n// src/bidi.mjs\nfunction Bidi(baseDir) {\n this.baseDir = baseDir || \"ltr\";\n this.tokenizer = new tokenizer_default();\n this.featuresTags = {};\n}\nBidi.prototype.setText = function(text) {\n this.text = text;\n};\nBidi.prototype.contextChecks = {\n ccmpReplacementCheck: ccmpReplacement_default,\n latinWordCheck: latinWord_default,\n arabicWordCheck: arabicWord_default,\n arabicSentenceCheck: arabicSentence_default,\n thaiWordCheck: thaiWord_default,\n unicodeVariationSequenceCheck: variationSequenceCheck_default\n};\nfunction registerContextChecker(checkId) {\n const check = this.contextChecks[`${checkId}Check`];\n return this.tokenizer.registerContextChecker(\n checkId,\n check.startCheck,\n check.endCheck\n );\n}\nfunction tokenizeText() {\n registerContextChecker.call(this, \"ccmpReplacement\");\n registerContextChecker.call(this, \"latinWord\");\n registerContextChecker.call(this, \"arabicWord\");\n registerContextChecker.call(this, \"arabicSentence\");\n registerContextChecker.call(this, \"thaiWord\");\n registerContextChecker.call(this, \"unicodeVariationSequence\");\n return this.tokenizer.tokenize(this.text);\n}\nfunction reverseArabicSentences() {\n const ranges = this.tokenizer.getContextRanges(\"arabicSentence\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n let rangeTokens = this.tokenizer.getRangeTokens(range);\n this.tokenizer.replaceRange(\n range.startIndex,\n range.endOffset,\n rangeTokens.reverse()\n );\n }\n}\nBidi.prototype.registerFeatures = function(script, tags) {\n const supportedTags = tags.filter(\n (tag) => this.query.supports({ script, tag })\n );\n if (!Object.prototype.hasOwnProperty.call(this.featuresTags, script)) {\n this.featuresTags[script] = supportedTags;\n } else {\n this.featuresTags[script] = this.featuresTags[script].concat(supportedTags);\n }\n};\nBidi.prototype.applyFeatures = function(font, features) {\n if (!font) throw new Error(\n \"No valid font was provided to apply features\"\n );\n if (!this.query) this.query = new featureQuery_default(font);\n for (let f = 0; f < features.length; f++) {\n const feature = features[f];\n if (!this.query.supports({ script: feature.script })) continue;\n this.registerFeatures(feature.script, feature.tags);\n }\n};\nBidi.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.tokenizer.registerModifier(modifierId, condition, modifier);\n};\nfunction checkGlyphIndexStatus() {\n if (this.tokenizer.registeredModifiers.indexOf(\"glyphIndex\") === -1) {\n throw new Error(\n \"glyphIndex modifier is required to apply arabic presentation features.\"\n );\n }\n}\nfunction applyArabicPresentationForms() {\n const script = \"arab\";\n if (!Object.prototype.hasOwnProperty.call(this.featuresTags, script)) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"arabicWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n arabicPresentationForms_default.call(this, range);\n }\n}\nfunction applyCcmpReplacement() {\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"ccmpReplacement\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n ccmpReplacementLigatures_default.call(this, range);\n }\n}\nfunction applyArabicRequireLigatures() {\n if (!this.hasFeatureEnabled(\"arab\", \"rlig\")) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"arabicWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n arabicRequiredLigatures_default.call(this, range);\n }\n}\nfunction applyLatinLigatures() {\n if (!this.hasFeatureEnabled(\"latn\", \"liga\")) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"latinWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n latinLigatures_default.call(this, range);\n }\n}\nfunction applyUnicodeVariationSequences() {\n const ranges = this.tokenizer.getContextRanges(\"unicodeVariationSequence\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n variationSequences_default.call(this, range);\n }\n}\nfunction applyThaiFeatures() {\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges(\"thaiWord\");\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (this.hasFeatureEnabled(\"thai\", \"liga\")) thaiLigatures_default.call(this, range);\n if (this.hasFeatureEnabled(\"thai\", \"rlig\")) thaiRequiredLigatures_default.call(this, range);\n if (this.hasFeatureEnabled(\"thai\", \"ccmp\")) thaiGlyphComposition_default.call(this, range);\n }\n}\nBidi.prototype.checkContextReady = function(contextId) {\n return !!this.tokenizer.getContext(contextId);\n};\nBidi.prototype.applyFeaturesToContexts = function() {\n if (this.checkContextReady(\"ccmpReplacement\")) {\n applyCcmpReplacement.call(this);\n }\n if (this.checkContextReady(\"arabicWord\")) {\n applyArabicPresentationForms.call(this);\n applyArabicRequireLigatures.call(this);\n }\n if (this.checkContextReady(\"latinWord\")) {\n applyLatinLigatures.call(this);\n }\n if (this.checkContextReady(\"arabicSentence\")) {\n reverseArabicSentences.call(this);\n }\n if (this.checkContextReady(\"thaiWord\")) {\n applyThaiFeatures.call(this);\n }\n if (this.checkContextReady(\"unicodeVariationSequence\")) {\n applyUnicodeVariationSequences.call(this);\n }\n};\nBidi.prototype.hasFeatureEnabled = function(script, tag) {\n return (this.featuresTags[script] || []).indexOf(tag) !== -1;\n};\nBidi.prototype.processText = function(text) {\n if (!this.text || this.text !== text) {\n this.setText(text);\n tokenizeText.call(this);\n this.applyFeaturesToContexts();\n }\n};\nBidi.prototype.getBidiText = function(text) {\n this.processText(text);\n return this.tokenizer.getText();\n};\nBidi.prototype.getTextGlyphs = function(text) {\n this.processText(text);\n let indexes = [];\n for (let i = 0; i < this.tokenizer.tokens.length; i++) {\n const token = this.tokenizer.tokens[i];\n if (token.state.deleted) continue;\n const index = token.activeState.value;\n indexes.push(Array.isArray(index) ? index[0] : index);\n }\n return indexes;\n};\nvar bidi_default = Bidi;\n\n// src/font.mjs\nfunction createDefaultNamesInfo(options) {\n return {\n fontFamily: { en: options.familyName || \" \" },\n fontSubfamily: { en: options.styleName || \" \" },\n fullName: { en: options.fullName || options.familyName + \" \" + options.styleName },\n // postScriptName may not contain any whitespace\n postScriptName: { en: options.postScriptName || (options.familyName + options.styleName).replace(/\\s/g, \"\") },\n designer: { en: options.designer || \" \" },\n designerURL: { en: options.designerURL || \" \" },\n manufacturer: { en: options.manufacturer || \" \" },\n manufacturerURL: { en: options.manufacturerURL || \" \" },\n license: { en: options.license || \" \" },\n licenseURL: { en: options.licenseURL || \" \" },\n version: { en: options.version || \"Version 0.1\" },\n description: { en: options.description || \" \" },\n copyright: { en: options.copyright || \" \" },\n trademark: { en: options.trademark || \" \" }\n };\n}\nfunction Font(options) {\n options = options || {};\n options.tables = options.tables || {};\n if (!options.empty) {\n if (!options.familyName) throw new Error(\"When creating a new Font object, familyName is required.\");\n if (!options.styleName) throw new Error(\"When creating a new Font object, styleName is required.\");\n if (!options.unitsPerEm) throw new Error(\"When creating a new Font object, unitsPerEm is required.\");\n if (!options.ascender) throw new Error(\"When creating a new Font object, ascender is required.\");\n if (options.descender > 0) throw new Error(\"When creating a new Font object, negative descender value is required.\");\n this.names = {};\n this.names.unicode = createDefaultNamesInfo(options);\n this.names.macintosh = createDefaultNamesInfo(options);\n this.names.windows = createDefaultNamesInfo(options);\n this.unitsPerEm = options.unitsPerEm || 1e3;\n this.ascender = options.ascender;\n this.descender = options.descender;\n this.createdTimestamp = options.createdTimestamp;\n this.italicAngle = options.italicAngle || 0;\n this.weightClass = options.weightClass || 0;\n let selection = 0;\n if (options.fsSelection) {\n selection = options.fsSelection;\n } else {\n if (this.italicAngle < 0) {\n selection |= this.fsSelectionValues.ITALIC;\n } else if (this.italicAngle > 0) {\n selection |= this.fsSelectionValues.OBLIQUE;\n }\n if (this.weightClass >= 600) {\n selection |= this.fsSelectionValues.BOLD;\n }\n if (selection === 0) {\n selection = this.fsSelectionValues.REGULAR;\n }\n }\n if (!options.panose || !Array.isArray(options.panose)) {\n options.panose = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n this.tables = Object.assign(options.tables, {\n os2: Object.assign({\n usWeightClass: options.weightClass || this.usWeightClasses.MEDIUM,\n usWidthClass: options.widthClass || this.usWidthClasses.MEDIUM,\n bFamilyType: options.panose[0] || 0,\n bSerifStyle: options.panose[1] || 0,\n bWeight: options.panose[2] || 0,\n bProportion: options.panose[3] || 0,\n bContrast: options.panose[4] || 0,\n bStrokeVariation: options.panose[5] || 0,\n bArmStyle: options.panose[6] || 0,\n bLetterform: options.panose[7] || 0,\n bMidline: options.panose[8] || 0,\n bXHeight: options.panose[9] || 0,\n fsSelection: selection\n }, options.tables.os2)\n });\n }\n this.supported = true;\n this.glyphs = new glyphset_default.GlyphSet(this, options.glyphs || []);\n this.encoding = new DefaultEncoding(this);\n this.position = new position_default(this);\n this.substitution = new substitution_default(this);\n this.tables = this.tables || {};\n this.tables = new Proxy(this.tables, {\n set: (tables, tableName, tableData) => {\n tables[tableName] = tableData;\n if (tables.fvar && (tables.gvar || tables.cff2) && !this.variation) {\n this.variation = new VariationManager(this);\n }\n return true;\n }\n });\n this.palettes = new PaletteManager(this);\n this.layers = new LayerManager(this);\n this.svgImages = new SVGImageManager(this);\n this._push = null;\n this._hmtxTableData = {};\n Object.defineProperty(this, \"hinting\", {\n get: function() {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === \"truetype\") {\n return this._hinting = new hintingtt_default(this);\n }\n return null;\n }\n });\n}\nFont.prototype.hasChar = function(c) {\n return this.encoding.charToGlyphIndex(c) > 0;\n};\nFont.prototype.charToGlyphIndex = function(s) {\n return this.encoding.charToGlyphIndex(s);\n};\nFont.prototype.charToGlyph = function(c) {\n const glyphIndex = this.charToGlyphIndex(c);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n glyph = this.glyphs.get(0);\n }\n return glyph;\n};\nFont.prototype.updateFeatures = function(options) {\n return this.defaultRenderOptions.features.map((feature) => {\n if (feature.script === \"latn\") {\n return {\n script: \"latn\",\n tags: feature.tags.filter((tag) => options[tag])\n };\n } else {\n return feature;\n }\n });\n};\nFont.prototype.stringToGlyphIndexes = function(s, options) {\n const bidi = new bidi_default();\n const charToGlyphIndexMod = (token) => this.charToGlyphIndex(token.char);\n bidi.registerModifier(\"glyphIndex\", null, charToGlyphIndexMod);\n let features = options ? this.updateFeatures(options.features) : this.defaultRenderOptions.features;\n bidi.applyFeatures(this, features);\n return bidi.getTextGlyphs(s);\n};\nFont.prototype.stringToGlyphs = function(s, options) {\n const indexes = this.stringToGlyphIndexes(s, options);\n let length = indexes.length;\n const glyphs = new Array(length);\n const notdef = this.glyphs.get(0);\n for (let i = 0; i < length; i += 1) {\n glyphs[i] = this.glyphs.get(indexes[i]) || notdef;\n }\n return glyphs;\n};\nFont.prototype.nameToGlyphIndex = function(name) {\n return this.glyphNames.nameToGlyphIndex(name);\n};\nFont.prototype.nameToGlyph = function(name) {\n const glyphIndex = this.nameToGlyphIndex(name);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n glyph = this.glyphs.get(0);\n }\n return glyph;\n};\nFont.prototype.glyphIndexToName = function(gid) {\n if (!this.glyphNames.glyphIndexToName) {\n return \"\";\n }\n return this.glyphNames.glyphIndexToName(gid);\n};\nFont.prototype.getKerningValue = function(leftGlyph, rightGlyph) {\n leftGlyph = leftGlyph.index || leftGlyph;\n rightGlyph = rightGlyph.index || rightGlyph;\n const gposKerning = this.position.defaultKerningTables;\n if (gposKerning) {\n return this.position.getKerningValue(gposKerning, leftGlyph, rightGlyph);\n }\n return this.kerningPairs[leftGlyph + \",\" + rightGlyph] || 0;\n};\nFont.prototype.defaultRenderOptions = {\n kerning: true,\n features: [\n /**\n * these 4 features are required to render Arabic text properly\n * and shouldn't be turned off when rendering arabic text.\n */\n { script: \"arab\", tags: [\"init\", \"medi\", \"fina\", \"rlig\"] },\n { script: \"latn\", tags: [\"liga\", \"rlig\"] },\n { script: \"thai\", tags: [\"liga\", \"rlig\", \"ccmp\"] }\n ],\n hinting: false,\n usePalette: 0,\n drawLayers: true,\n drawSVG: true\n};\nFont.prototype.forEachGlyph = function(text, x, y, fontSize, options, callback) {\n x = x !== void 0 ? x : 0;\n y = y !== void 0 ? y : 0;\n fontSize = fontSize !== void 0 ? fontSize : 72;\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fontScale = 1 / this.unitsPerEm * fontSize;\n const glyphs = this.stringToGlyphs(text, options);\n let kerningLookups;\n if (options.kerning) {\n const script = options.script || this.position.getDefaultScriptName();\n kerningLookups = this.position.getKerningTables(script, options.language);\n }\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs[i];\n callback.call(this, glyph, x, y, fontSize, options);\n if (glyph.advanceWidth) {\n x += glyph.advanceWidth * fontScale;\n }\n if (options.kerning && i < glyphs.length - 1) {\n const kerningValue = kerningLookups ? this.position.getKerningValue(kerningLookups, glyph.index, glyphs[i + 1].index) : this.getKerningValue(glyph, glyphs[i + 1]);\n x += kerningValue * fontScale;\n }\n if (options.letterSpacing) {\n x += options.letterSpacing * fontSize;\n } else if (options.tracking) {\n x += options.tracking / 1e3 * fontSize;\n }\n }\n return x;\n};\nFont.prototype.getPath = function(text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fullPath = new path_default();\n fullPath._layers = [];\n applyPaintType(this, fullPath, fontSize);\n if (fullPath.stroke) {\n const scale = 1 / (fullPath.unitsPerEm || 1e3) * fontSize;\n fullPath.strokeWidth *= scale;\n }\n this.forEachGlyph(text, x, y, fontSize, options, (glyph, gX, gY, gFontSize) => {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n if (options.drawSVG || options.drawLayers) {\n const layers = glyphPath._layers;\n if (layers && layers.length) {\n for (let l = 0; l < layers.length; l++) {\n const layer = layers[l];\n fullPath._layers.push(layer);\n }\n return;\n }\n }\n fullPath.extend(glyphPath);\n });\n return fullPath;\n};\nFont.prototype.getPaths = function(text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n const glyphPaths = [];\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n glyphPaths.push(glyphPath);\n });\n return glyphPaths;\n};\nFont.prototype.getAdvanceWidth = function(text, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n return this.forEachGlyph(text, 0, 0, fontSize, options, function() {\n });\n};\nFont.prototype.draw = function(ctx, text, x, y, fontSize, options) {\n const path = this.getPath(text, x, y, fontSize, options);\n path.draw(ctx);\n};\nFont.prototype.drawPoints = function(ctx, text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawPoints(ctx, gX, gY, gFontSize, options, this);\n });\n};\nFont.prototype.drawMetrics = function(ctx, text, x, y, fontSize, options) {\n options = Object.assign({}, this.defaultRenderOptions, options);\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawMetrics(ctx, gX, gY, gFontSize);\n });\n};\nFont.prototype.getEnglishName = function(name) {\n const translations = (this.names.unicode || this.names.macintosh || this.names.windows)[name];\n if (translations) {\n return translations.en;\n }\n};\nFont.prototype.validate = function() {\n const warnings = [];\n const _this = this;\n function assert(predicate, message) {\n if (!predicate) {\n console.warn(`[opentype.js] ${message}`);\n warnings.push(message);\n }\n }\n function assertNamePresent(name) {\n const englishName = _this.getEnglishName(name);\n assert(\n englishName && englishName.trim().length > 0,\n \"No English \" + name + \" specified.\"\n );\n }\n assertNamePresent(\"fontFamily\");\n assertNamePresent(\"weightName\");\n assertNamePresent(\"manufacturer\");\n assertNamePresent(\"copyright\");\n assertNamePresent(\"version\");\n assert(this.unitsPerEm > 0, \"No unitsPerEm specified.\");\n if (this.tables.colr) {\n const baseGlyphs = this.tables.colr.baseGlyphRecords;\n let previousID = -1;\n for (let b = 0; b < baseGlyphs.length; b++) {\n const currentGlyphID = baseGlyphs[b].glyphID;\n assert(previousID < baseGlyphs[b].glyphID, `baseGlyphs must be sorted by GlyphID in ascending order, but glyphID ${currentGlyphID} comes after ${previousID}`);\n if (previousID > baseGlyphs[b].glyphID) {\n break;\n }\n previousID = currentGlyphID;\n }\n }\n return warnings;\n};\nFont.prototype.toTables = function() {\n return sfnt_default.fontToTable(this);\n};\nFont.prototype.toBuffer = function() {\n console.warn(\"Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.\");\n return this.toArrayBuffer();\n};\nFont.prototype.toArrayBuffer = function() {\n const sfntTable = this.toTables();\n const bytes = sfntTable.encode();\n const buffer = new ArrayBuffer(bytes.length);\n const intArray = new Uint8Array(buffer);\n for (let i = 0; i < bytes.length; i++) {\n intArray[i] = bytes[i];\n }\n return buffer;\n};\nFont.prototype.download = function() {\n console.error(\"DEPRECATED: platform-specific actions are to be implemented on user-side\");\n};\nFont.prototype.fsSelectionValues = {\n ITALIC: 1,\n //1\n UNDERSCORE: 2,\n //2\n NEGATIVE: 4,\n //4\n OUTLINED: 8,\n //8\n STRIKEOUT: 16,\n //16\n BOLD: 32,\n //32\n REGULAR: 64,\n //64\n USER_TYPO_METRICS: 128,\n //128\n WWS: 256,\n //256\n OBLIQUE: 512\n //512\n};\nFont.prototype.macStyleValues = {\n BOLD: 1,\n //1\n ITALIC: 2,\n //2\n UNDERLINE: 4,\n //4\n OUTLINED: 8,\n //8\n SHADOW: 16,\n //16\n CONDENSED: 32,\n //32\n EXTENDED: 64\n //64\n};\nFont.prototype.usWidthClasses = {\n ULTRA_CONDENSED: 1,\n EXTRA_CONDENSED: 2,\n CONDENSED: 3,\n SEMI_CONDENSED: 4,\n MEDIUM: 5,\n SEMI_EXPANDED: 6,\n EXPANDED: 7,\n EXTRA_EXPANDED: 8,\n ULTRA_EXPANDED: 9\n};\nFont.prototype.usWeightClasses = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900\n};\nvar font_default = Font;\n\n// src/tables/hvar.mjs\nfunction parseHvarTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersionMajor = p.parseUShort();\n const tableVersionMinor = p.parseUShort();\n if (tableVersionMajor !== 1) {\n console.warn(`Unsupported hvar table version ${tableVersionMajor}.${tableVersionMinor}`);\n }\n const version = [\n tableVersionMajor,\n tableVersionMinor\n ];\n const itemVariationStore = p.parsePointer32(function() {\n return this.parseItemVariationStore();\n });\n const advanceWidth = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n const lsb = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n const rsb = p.parsePointer32(function() {\n return this.parseDeltaSetIndexMap();\n });\n return {\n version,\n itemVariationStore,\n advanceWidth,\n lsb,\n rsb\n };\n}\nfunction makeHvarTable() {\n console.warn(\"Writing of hvar tables is not yet supported.\");\n}\nvar hvar_default = { make: makeHvarTable, parse: parseHvarTable };\n\n// src/tables/gdef.mjs\nvar attachList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n attachPoints: this.parseList(Parser.pointer(Parser.uShortList))\n };\n};\nvar caretValue = function() {\n var format = this.parseUShort();\n check_default.argument(\n format === 1 || format === 2 || format === 3,\n \"Unsupported CaretValue table version.\"\n );\n if (format === 1) {\n return { coordinate: this.parseShort() };\n } else if (format === 2) {\n return { pointindex: this.parseShort() };\n } else if (format === 3) {\n return { coordinate: this.parseShort() };\n }\n};\nvar ligGlyph = function() {\n return this.parseList(Parser.pointer(caretValue));\n};\nvar ligCaretList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n ligGlyphs: this.parseList(Parser.pointer(ligGlyph))\n };\n};\nvar markGlyphSets = function() {\n this.parseUShort();\n return this.parseList(Parser.pointer(Parser.coverage));\n};\nfunction parseGDEFTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(\n tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3,\n \"Unsupported GDEF table version.\"\n );\n var gdef = {\n version: tableVersion,\n classDef: p.parsePointer(Parser.classDef),\n attachList: p.parsePointer(attachList),\n ligCaretList: p.parsePointer(ligCaretList),\n markAttachClassDef: p.parsePointer(Parser.classDef)\n };\n if (tableVersion >= 1.2) {\n gdef.markGlyphSets = p.parsePointer(markGlyphSets);\n }\n return gdef;\n}\nvar gdef_default = { parse: parseGDEFTable };\n\n// src/tables/gpos.mjs\nvar subtableParsers2 = new Array(10);\nsubtableParsers2[1] = function parseLookup12() {\n const start = this.offset + this.relativeOffset;\n const posformat = this.parseUShort();\n if (posformat === 1) {\n return {\n posFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n value: this.parseValueRecord()\n };\n } else if (posformat === 2) {\n return {\n posFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n values: this.parseValueRecordList()\n };\n }\n check_default.assert(false, \"0x\" + start.toString(16) + \": GPOS lookup type 1 format must be 1 or 2.\");\n};\nsubtableParsers2[2] = function parseLookup22() {\n const start = this.offset + this.relativeOffset;\n const posFormat = this.parseUShort();\n check_default.assert(posFormat === 1 || posFormat === 2, \"0x\" + start.toString(16) + \": GPOS lookup type 2 format must be 1 or 2.\");\n const coverage = this.parsePointer(Parser.coverage);\n const valueFormat1 = this.parseUShort();\n const valueFormat2 = this.parseUShort();\n if (posFormat === 1) {\n return {\n posFormat,\n coverage,\n valueFormat1,\n valueFormat2,\n pairSets: this.parseList(Parser.pointer(Parser.list(function() {\n return {\n // pairValueRecord\n secondGlyph: this.parseUShort(),\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n })))\n };\n } else if (posFormat === 2) {\n const classDef1 = this.parsePointer(Parser.classDef);\n const classDef2 = this.parsePointer(Parser.classDef);\n const class1Count = this.parseUShort();\n const class2Count = this.parseUShort();\n return {\n // Class Pair Adjustment\n posFormat,\n coverage,\n valueFormat1,\n valueFormat2,\n classDef1,\n classDef2,\n class1Count,\n class2Count,\n classRecords: this.parseList(class1Count, Parser.list(class2Count, function() {\n return {\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n }))\n };\n }\n};\nsubtableParsers2[3] = function parseLookup32() {\n return { error: \"GPOS Lookup 3 not supported\" };\n};\nsubtableParsers2[4] = function parseLookup42() {\n return { error: \"GPOS Lookup 4 not supported\" };\n};\nsubtableParsers2[5] = function parseLookup52() {\n return { error: \"GPOS Lookup 5 not supported\" };\n};\nsubtableParsers2[6] = function parseLookup62() {\n return { error: \"GPOS Lookup 6 not supported\" };\n};\nsubtableParsers2[7] = function parseLookup72() {\n return { error: \"GPOS Lookup 7 not supported\" };\n};\nsubtableParsers2[8] = function parseLookup82() {\n return { error: \"GPOS Lookup 8 not supported\" };\n};\nsubtableParsers2[9] = function parseLookup9() {\n return { error: \"GPOS Lookup 9 not supported\" };\n};\nfunction parseGposTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check_default.argument(tableVersion === 1 || tableVersion === 1.1, \"Unsupported GPOS table version \" + tableVersion);\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers2)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers2),\n variations: p.parseFeatureVariationsList()\n };\n }\n}\nvar subtableMakers2 = new Array(10);\nfunction makeGposTable(gpos) {\n return new table_default.Table(\"GPOS\", [\n { name: \"version\", type: \"ULONG\", value: 65536 },\n { name: \"scripts\", type: \"TABLE\", value: new table_default.ScriptList(gpos.scripts) },\n { name: \"features\", type: \"TABLE\", value: new table_default.FeatureList(gpos.features) },\n { name: \"lookups\", type: \"TABLE\", value: new table_default.LookupList(gpos.lookups, subtableMakers2) }\n ]);\n}\nvar gpos_default = { parse: parseGposTable, make: makeGposTable };\n\n// src/tables/kern.mjs\nfunction parseWindowsKernTable(p) {\n const pairs = {};\n p.skip(\"uShort\");\n const subtableVersion = p.parseUShort();\n check_default.argument(subtableVersion === 0, \"Unsupported kern sub-table version.\");\n p.skip(\"uShort\", 2);\n const nPairs = p.parseUShort();\n p.skip(\"uShort\", 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + \",\" + rightIndex] = value;\n }\n return pairs;\n}\nfunction parseMacKernTable(p) {\n const pairs = {};\n p.skip(\"uShort\");\n const nTables = p.parseULong();\n if (nTables > 1) {\n console.warn(\"Only the first kern subtable is supported.\");\n }\n p.skip(\"uLong\");\n const coverage = p.parseUShort();\n const subtableVersion = coverage & 255;\n p.skip(\"uShort\");\n if (subtableVersion === 0) {\n const nPairs = p.parseUShort();\n p.skip(\"uShort\", 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + \",\" + rightIndex] = value;\n }\n }\n return pairs;\n}\nfunction parseKernTable(data, start) {\n const p = new parse_default.Parser(data, start);\n const tableVersion = p.parseUShort();\n if (tableVersion === 0) {\n return parseWindowsKernTable(p);\n } else if (tableVersion === 1) {\n return parseMacKernTable(p);\n } else {\n throw new Error(\"Unsupported kern table version (\" + tableVersion + \").\");\n }\n}\nvar kern_default = { parse: parseKernTable };\n\n// src/tables/loca.mjs\nfunction parseLocaTable(data, start, numGlyphs, shortVersion) {\n const p = new parse_default.Parser(data, start);\n const parseFn = shortVersion ? p.parseUShort : p.parseULong;\n const glyphOffsets = [];\n for (let i = 0; i < numGlyphs + 1; i += 1) {\n let glyphOffset = parseFn.call(p);\n if (shortVersion) {\n glyphOffset *= 2;\n }\n glyphOffsets.push(glyphOffset);\n }\n return glyphOffsets;\n}\nvar loca_default = { parse: parseLocaTable };\n\n// src/opentype.mjs\nfunction parseOpenTypeTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 12;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse_default.getTag(data, p);\n const checksum = parse_default.getULong(data, p + 4);\n const offset = parse_default.getULong(data, p + 8);\n const length = parse_default.getULong(data, p + 12);\n tableEntries.push({ tag, checksum, offset, length, compression: false });\n p += 16;\n }\n return tableEntries;\n}\nfunction parseWOFFTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 44;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse_default.getTag(data, p);\n const offset = parse_default.getULong(data, p + 4);\n const compLength = parse_default.getULong(data, p + 8);\n const origLength = parse_default.getULong(data, p + 12);\n let compression;\n if (compLength < origLength) {\n compression = \"WOFF\";\n } else {\n compression = false;\n }\n tableEntries.push({\n tag,\n offset,\n compression,\n compressedLength: compLength,\n length: origLength\n });\n p += 20;\n }\n return tableEntries;\n}\nfunction uncompressTable(data, tableEntry) {\n if (tableEntry.compression === \"WOFF\") {\n const inBuffer = new Uint8Array(data.buffer, tableEntry.offset + 2, tableEntry.compressedLength - 2);\n const outBuffer = new Uint8Array(tableEntry.length);\n tinf_uncompress(inBuffer, outBuffer);\n if (outBuffer.byteLength !== tableEntry.length) {\n throw new Error(\"Decompression error: \" + tableEntry.tag + \" decompressed length doesn't match recorded length\");\n }\n const view = new DataView(outBuffer.buffer, 0);\n return { data: view, offset: 0 };\n } else {\n return { data, offset: tableEntry.offset };\n }\n}\nfunction parseBuffer(buffer, opt = {}) {\n let indexToLocFormat;\n let ltagTable;\n const font = new font_default({ empty: true });\n if (buffer.constructor !== ArrayBuffer) {\n buffer = new Uint8Array(buffer).buffer;\n }\n const data = new DataView(buffer, 0);\n let numTables;\n let tableEntries = [];\n const signature = parse_default.getTag(data, 0);\n if (signature === String.fromCharCode(0, 1, 0, 0) || signature === \"true\" || signature === \"typ1\") {\n font.outlinesFormat = \"truetype\";\n numTables = parse_default.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === \"OTTO\") {\n font.outlinesFormat = \"cff\";\n numTables = parse_default.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === \"wOFF\") {\n const flavor = parse_default.getTag(data, 4);\n if (flavor === String.fromCharCode(0, 1, 0, 0)) {\n font.outlinesFormat = \"truetype\";\n } else if (flavor === \"OTTO\") {\n font.outlinesFormat = \"cff\";\n } else {\n throw new Error(\"Unsupported OpenType flavor \" + signature);\n }\n numTables = parse_default.getUShort(data, 12);\n tableEntries = parseWOFFTableEntries(data, numTables);\n } else if (signature === \"wOF2\") {\n const issue = \"https://github.com/opentypejs/opentype.js/issues/183#issuecomment-1147228025\";\n throw new Error(\"WOFF2 require an external decompressor library, see examples at: \" + issue);\n } else {\n throw new Error(\"Unsupported OpenType signature \" + signature);\n }\n let cffTableEntry;\n let cff2TableEntry;\n let fvarTableEntry;\n let statTableEntry;\n let gvarTableEntry;\n let cvarTableEntry;\n let avarTableEntry;\n let glyfTableEntry;\n let gdefTableEntry;\n let gposTableEntry;\n let gsubTableEntry;\n let hmtxTableEntry;\n let hvarTableEntry;\n let kernTableEntry;\n let locaTableEntry;\n let nameTableEntry;\n let metaTableEntry;\n let p;\n for (let i = 0; i < numTables; i += 1) {\n const tableEntry = tableEntries[i];\n let table;\n switch (tableEntry.tag) {\n case \"avar\":\n avarTableEntry = tableEntry;\n break;\n case \"cmap\":\n table = uncompressTable(data, tableEntry);\n font.tables.cmap = cmap_default.parse(table.data, table.offset);\n font.encoding = new CmapEncoding(font.tables.cmap);\n break;\n case \"cvt \":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.cvt = p.parseShortList(tableEntry.length / 2);\n break;\n case \"fvar\":\n fvarTableEntry = tableEntry;\n break;\n case \"STAT\":\n statTableEntry = tableEntry;\n break;\n case \"gvar\":\n gvarTableEntry = tableEntry;\n break;\n case \"cvar\":\n cvarTableEntry = tableEntry;\n break;\n case \"fpgm\":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.fpgm = p.parseByteList(tableEntry.length);\n break;\n case \"head\":\n table = uncompressTable(data, tableEntry);\n font.tables.head = head_default.parse(table.data, table.offset);\n font.unitsPerEm = font.tables.head.unitsPerEm;\n indexToLocFormat = font.tables.head.indexToLocFormat;\n break;\n case \"hhea\":\n table = uncompressTable(data, tableEntry);\n font.tables.hhea = hhea_default.parse(table.data, table.offset);\n font.ascender = font.tables.hhea.ascender;\n font.descender = font.tables.hhea.descender;\n font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics;\n break;\n case \"HVAR\":\n hvarTableEntry = tableEntry;\n break;\n case \"hmtx\":\n hmtxTableEntry = tableEntry;\n break;\n case \"ltag\":\n table = uncompressTable(data, tableEntry);\n ltagTable = ltag_default.parse(table.data, table.offset);\n break;\n case \"COLR\":\n table = uncompressTable(data, tableEntry);\n font.tables.colr = colr_default.parse(table.data, table.offset);\n break;\n case \"CPAL\":\n table = uncompressTable(data, tableEntry);\n font.tables.cpal = cpal_default.parse(table.data, table.offset);\n break;\n case \"maxp\":\n table = uncompressTable(data, tableEntry);\n font.tables.maxp = maxp_default.parse(table.data, table.offset);\n font.numGlyphs = font.tables.maxp.numGlyphs;\n break;\n case \"name\":\n nameTableEntry = tableEntry;\n break;\n case \"OS/2\":\n table = uncompressTable(data, tableEntry);\n font.tables.os2 = os2_default.parse(table.data, table.offset);\n break;\n case \"post\":\n table = uncompressTable(data, tableEntry);\n font.tables.post = post_default.parse(table.data, table.offset);\n font.glyphNames = new GlyphNames(font.tables.post);\n break;\n case \"prep\":\n table = uncompressTable(data, tableEntry);\n p = new parse_default.Parser(table.data, table.offset);\n font.tables.prep = p.parseByteList(tableEntry.length);\n break;\n case \"glyf\":\n glyfTableEntry = tableEntry;\n break;\n case \"loca\":\n locaTableEntry = tableEntry;\n break;\n case \"CFF \":\n cffTableEntry = tableEntry;\n break;\n case \"CFF2\":\n cff2TableEntry = tableEntry;\n break;\n case \"kern\":\n kernTableEntry = tableEntry;\n break;\n case \"GDEF\":\n gdefTableEntry = tableEntry;\n break;\n case \"GPOS\":\n gposTableEntry = tableEntry;\n break;\n case \"GSUB\":\n gsubTableEntry = tableEntry;\n break;\n case \"meta\":\n metaTableEntry = tableEntry;\n break;\n case \"gasp\":\n try {\n table = uncompressTable(data, tableEntry);\n font.tables.gasp = gasp_default.parse(table.data, table.offset);\n } catch (e) {\n console.warn(\"Failed to parse gasp table, skipping.\");\n console.warn(e);\n }\n break;\n case \"SVG \":\n table = uncompressTable(data, tableEntry);\n font.tables.svg = svg_default.parse(table.data, table.offset);\n break;\n default:\n break;\n }\n }\n const nameTable = uncompressTable(data, nameTableEntry);\n font.tables.name = name_default.parse(nameTable.data, nameTable.offset, ltagTable);\n font.names = font.tables.name;\n if (glyfTableEntry && locaTableEntry) {\n const shortVersion = indexToLocFormat === 0;\n const locaTable = uncompressTable(data, locaTableEntry);\n const locaOffsets = loca_default.parse(locaTable.data, locaTable.offset, font.numGlyphs, shortVersion);\n const glyfTable = uncompressTable(data, glyfTableEntry);\n font.glyphs = glyf_default.parse(glyfTable.data, glyfTable.offset, locaOffsets, font, opt);\n } else if (cffTableEntry) {\n const cffTable = uncompressTable(data, cffTableEntry);\n cff_default.parse(cffTable.data, cffTable.offset, font, opt);\n } else if (cff2TableEntry) {\n const cffTable2 = uncompressTable(data, cff2TableEntry);\n cff_default.parse(cffTable2.data, cffTable2.offset, font, opt);\n } else {\n throw new Error(\"Font doesn't contain TrueType, CFF or CFF2 outlines.\");\n }\n const hmtxTable = uncompressTable(data, hmtxTableEntry);\n hmtx_default.parse(font, hmtxTable.data, hmtxTable.offset, font.numberOfHMetrics, font.numGlyphs, font.glyphs, opt);\n addGlyphNames(font, opt);\n if (kernTableEntry) {\n const kernTable = uncompressTable(data, kernTableEntry);\n font.kerningPairs = kern_default.parse(kernTable.data, kernTable.offset);\n } else {\n font.kerningPairs = {};\n }\n if (gdefTableEntry) {\n const gdefTable = uncompressTable(data, gdefTableEntry);\n font.tables.gdef = gdef_default.parse(gdefTable.data, gdefTable.offset);\n }\n if (gposTableEntry) {\n const gposTable = uncompressTable(data, gposTableEntry);\n font.tables.gpos = gpos_default.parse(gposTable.data, gposTable.offset);\n font.position.init();\n }\n if (gsubTableEntry) {\n const gsubTable = uncompressTable(data, gsubTableEntry);\n font.tables.gsub = gsub_default.parse(gsubTable.data, gsubTable.offset);\n }\n if (fvarTableEntry) {\n const fvarTable = uncompressTable(data, fvarTableEntry);\n font.tables.fvar = fvar_default.parse(fvarTable.data, fvarTable.offset, font.names);\n }\n if (statTableEntry) {\n const statTable = uncompressTable(data, statTableEntry);\n font.tables.stat = stat_default.parse(statTable.data, statTable.offset, font.tables.fvar);\n }\n if (gvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides a gvar table, but no fvar table, which is required for variable fonts.\");\n }\n if (!glyfTableEntry) {\n console.warn(\"This font provides a gvar table, but no glyf table. Glyph variation only works with TrueType outlines.\");\n }\n const gvarTable = uncompressTable(data, gvarTableEntry);\n font.tables.gvar = gvar_default.parse(gvarTable.data, gvarTable.offset, font.tables.fvar, font.glyphs);\n }\n if (cvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides a cvar table, but no fvar table, which is required for variable fonts.\");\n }\n if (!font.tables.cvt) {\n console.warn(\"This font provides a cvar table, but no cvt table which could be made variable.\");\n }\n if (!glyfTableEntry) {\n console.warn(\"This font provides a gvar table, but no glyf table. Glyph variation only works with TrueType outlines.\");\n }\n const cvarTable = uncompressTable(data, cvarTableEntry);\n font.tables.cvar = cvar_default.parse(cvarTable.data, cvarTable.offset, font.tables.fvar, font.tables.cvt || []);\n }\n if (avarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides an avar table, but no fvar table, which is required for variable fonts.\");\n }\n const avarTable = uncompressTable(data, avarTableEntry);\n font.tables.avar = avar_default.parse(avarTable.data, avarTable.offset, font.tables.fvar);\n }\n if (hvarTableEntry) {\n if (!fvarTableEntry) {\n console.warn(\"This font provides an HVAR table, but no fvar table, which is required for variable fonts.\");\n }\n if (!hmtxTableEntry) {\n console.warn(\"This font provides an HVAR table, but no hmtx table to vary.\");\n }\n const hvarTable = uncompressTable(data, hvarTableEntry);\n font.tables.hvar = hvar_default.parse(hvarTable.data, hvarTable.offset, font.tables.fvar);\n }\n if (metaTableEntry) {\n const metaTable = uncompressTable(data, metaTableEntry);\n font.tables.meta = meta_default.parse(metaTable.data, metaTable.offset);\n font.metas = font.tables.meta;\n }\n font.palettes = new PaletteManager(font);\n return font;\n}\nfunction load() {\n console.error(\"DEPRECATED! migrate to: opentype.parse(buffer, opt) See: https://github.com/opentypejs/opentype.js/issues/675\");\n}\nfunction loadSync() {\n console.error('DEPRECATED! migrate to: opentype.parse(require(\"fs\").readFileSync(url), opt)');\n}\nexport {\n bbox_default as BoundingBox,\n font_default as Font,\n glyph_default as Glyph,\n path_default as Path,\n parse_default as _parse,\n load,\n loadSync,\n parseBuffer as parse\n};\n"]}
|